mattermost/webapp/package.json
Harrison Healey 34ef034dd9
MM-68261 Add Button component to shared package (#36191)
* Add initial version of Button

* Use Button in ConfirmModal

* Use Button in easy places that use className='btn btn-primary'

This is everywhere that I could just replace `<button className='btn
btn-primary'>` with `<Button emphasis='primary'>` (and some other
emphasis versions) without any additional changes. There's still more
places where this could be used which require more in-depth changes that
will be in a following commit.

* Use Button in place of divs with className='btn btn-primary'

This is a minor functional change because these elements are now
accessible.

* Use Button in SpinnerButton

This is removing some usage of a save-button CSS class
that doesn't seem to affect these components.

* Replace RB Button with our Button

There's a small functional change here because the copy button in the
header of the FullLogEventModal is now styled when it wasn't before.

* Use Button in many places which used btn-secondary, btn-tertiary, and btn-danger

This removes some CSS classes from some different elements, but as
elsewhere, those CSS classes don't actually do anything. I think some
might have had a purpose once, but there seems to be quite a few that
were copied around during previous, possibly AI-assisted refactors.

* Use Button in many places in System Console

Notably, this includes:
1. Cleaning up some complicated logic in PurchaseLink/RenewalLink for
   determining their styling.
2. Making some minor functional changes in ChannelProfile/TeamProfile
   because they didn't use standard CSS classes previously. The styles
   mostly match a secondary button, but they had slightly different
   padding and colours previously.
3. I also removed a workaround for an old issue with OverlayTrigger and
   disabled buttons in favour of just using the disabled attribute. For
   more information on the previous code, see
   https://github.com/mattermost/mattermost-webapp/pull/10387. Based on
   some brief testing, that's no longer needed.

* Use Button in MultiSelect and remove unneeded backButtonClass prop

Everything that used that prop either passed the tertiary class that
was the default or passed a class that didn't exist.

* Use Button in more places that used btn-primary/secondary/tertiary/quaternary

* Use Button in more places that used btn-danger

* Use Button for all buttons with a className starting with 'btn btn-...'

* Migrate anchors that really should've been buttons to Buttons

All of these are anchors with click handlers and the btn class, so
they'd appear as buttons anyway.

* Migrate SettingItemMax and SettingPicture to Button

* Use Button in BrowseChannels

* Use Button in TourTip

* Migrate GenericModal to Button

There's a minor UX change due to the old `delete` class having a slightly
different colour from `btn-danger`, but I think that was from an older
version of the default themes.

Ideally, we'd remove the `GenericModal__button`, `confirm`, and `delete`
classes from the buttons on that modal, but doing that would require
changes to a large number of E2E tests that I'd rather not do now.

* Change order of building packages in postinstall

* Fix move_thread E2E tests

* Coderabbit feedback

* Address feedback

* Add JSDoc comments and remove width prop

I don't think we need this since this should be set by a parent with
`display: flex`, so I'm not going to add it to the Button.

* Share Button with plugins
2026-05-06 09:38:16 -04:00

96 lines
3 KiB
JSON

{
"name": "@mattermost/webapp",
"private": true,
"engines": {
"node": "^24",
"npm": "^11"
},
"scripts": {
"postinstall": "patch-package && npm run build --workspace platform/types --workspace platform/client --workspace platform/shared --workspace platform/components",
"build": "node scripts/build.mjs",
"run": "node scripts/run.mjs",
"dev-server": "node scripts/dev-server.mjs",
"test": "npm run test --workspaces --if-present",
"test:updatesnapshot": "npm run test:updatesnapshot --workspaces --if-present",
"test-ci": "npm run test-ci --workspaces --if-present",
"check": "npm run check --workspaces --if-present",
"fix": "npm run fix --workspaces --if-present",
"check-types": "npm run check-types --workspaces --if-present",
"i18n-extract": "npm run i18n-extract --workspaces --if-present",
"i18n-extract:check": "npm run i18n-extract:check --workspaces --if-present",
"clean": "npm run clean --workspaces --if-present && rm -rf node_modules .parcel-cache",
"gen-lang-imports": "node scripts/gen_lang_imports.mjs",
"check-external-links": "node scripts/check-external-links.mjs"
},
"dependencies": {
"@mattermost/compass-icons": "0.1.53",
"react-intl": "7.1.14",
"typescript": "5.6.3"
},
"devDependencies": {
"@babel/core": "7.28.5",
"@babel/preset-env": "7.29.2",
"@babel/preset-react": "7.28.5",
"@babel/preset-typescript": "7.28.5",
"@formatjs/cli": "6.7.4",
"@types/node": "24.10.4",
"babel-loader": "9.1.2",
"babel-plugin-formatjs": "10.5.1",
"blessed": "0.1.81",
"chalk": "5.3.0",
"concurrently": "9.0.1",
"cross-env": "7.0.3",
"css-loader": "6.7.3",
"eslint": "8.57.0",
"eslint-import-resolver-webpack": "0.13.8",
"eslint-plugin-formatjs": "4.13.3",
"eslint-plugin-react": "7.34.0",
"eslint-plugin-react-hooks": "4.6.0",
"mini-css-extract-plugin": "2.7.5",
"patch-package": "8.0.0",
"sass": "1.80.5",
"sass-loader": "16.0.2",
"strip-ansi": "7.1.0",
"style-loader": "4.0.0",
"typescript-eslint-language-service": "5.0.5",
"webpack": "5.103.0",
"webpack-cli": "6.0.1",
"webpack-dev-server": "5.2.2"
},
"overrides": {
"@deanwhillier/jest-matchmedia-mock": {
"jest": "30.1.3"
},
"@giphy/react-components": {
"styled-components": "5.3.6"
},
"@types/redux-mock-store": {
"redux": "5.0.1"
},
"braces": "3.0.3",
"cheerio": "1.0.0-rc.12",
"@testing-library/dom": {
"dom-accessibility-api": "0.6.3"
},
"@testing-library/jest-dom": {
"dom-accessibility-api": "0.6.3"
},
"@types/estree": "0.0.51",
"asn1.js": "5.4.1",
"react-beautiful-dnd": {
"react-redux": "9.2.0"
},
"redux-persist": {
"redux": "5.0.1"
}
},
"workspaces": [
"channels",
"platform/client",
"platform/components",
"platform/eslint-plugin",
"platform/mattermost-redux",
"platform/shared",
"platform/types"
]
}