@scality/core-ui 0.115.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +17 -0
- package/.eslintrc.json +7 -0
- package/.flowconfig +21 -0
- package/.github/ISSUE_TEMPLATE/bug.md +18 -0
- package/.github/ISSUE_TEMPLATE/improvement.md +18 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- package/.github/workflows/codeql.yaml +25 -0
- package/.github/workflows/dependency-review.yaml +16 -0
- package/.github/workflows/github-pages.yml +17 -0
- package/.github/workflows/post-release.yml +52 -0
- package/.github/workflows/tests.yaml +32 -0
- package/.prettierrc +5 -0
- package/.storybook/main.ts +38 -0
- package/.storybook/manager.ts +6 -0
- package/.storybook/preview-head.html +99 -0
- package/.storybook/preview.js +68 -0
- package/.storybook/public/favicon.ico +0 -0
- package/.storybook/public/logo-core-ui.png +0 -0
- package/.storybook/theme.storybook.ts +13 -0
- package/LICENSE +201 -0
- package/README.md +296 -0
- package/__mocks__/fileMock.js +2 -0
- package/__mocks__/styleMock.js +2 -0
- package/dist/components/IconHelper.d.ts +10 -0
- package/dist/components/IconHelper.d.ts.map +1 -0
- package/dist/components/IconHelper.js +4 -0
- package/dist/components/areachart/AreaChart.component.d.ts +14 -0
- package/dist/components/areachart/AreaChart.component.d.ts.map +1 -0
- package/dist/components/areachart/AreaChart.component.js +27 -0
- package/dist/components/banner/Banner.component.d.ts +11 -0
- package/dist/components/banner/Banner.component.d.ts.map +1 -0
- package/dist/components/banner/Banner.component.js +40 -0
- package/dist/components/barchart/BarChart.component.d.ts +13 -0
- package/dist/components/barchart/BarChart.component.d.ts.map +1 -0
- package/dist/components/barchart/BarChart.component.js +22 -0
- package/dist/components/box/Box.d.ts +9 -0
- package/dist/components/box/Box.d.ts.map +1 -0
- package/dist/components/box/Box.js +21 -0
- package/dist/components/breadcrumb/Breadcrumb.component.d.ts +7 -0
- package/dist/components/breadcrumb/Breadcrumb.component.d.ts.map +1 -0
- package/dist/components/breadcrumb/Breadcrumb.component.js +77 -0
- package/dist/components/button/Button.component.d.ts +28 -0
- package/dist/components/button/Button.component.d.ts.map +1 -0
- package/dist/components/button/Button.component.js +227 -0
- package/dist/components/buttonv2/Buttonv2.component.d.ts +34 -0
- package/dist/components/buttonv2/Buttonv2.component.d.ts.map +1 -0
- package/dist/components/buttonv2/Buttonv2.component.js +198 -0
- package/dist/components/buttonv2/CopyButton.component.d.ts +24 -0
- package/dist/components/buttonv2/CopyButton.component.d.ts.map +1 -0
- package/dist/components/buttonv2/CopyButton.component.js +52 -0
- package/dist/components/card/Card.component.d.ts +28 -0
- package/dist/components/card/Card.component.d.ts.map +1 -0
- package/dist/components/card/Card.component.js +105 -0
- package/dist/components/checkbox/Checkbox.component.d.ts +10 -0
- package/dist/components/checkbox/Checkbox.component.d.ts.map +1 -0
- package/dist/components/checkbox/Checkbox.component.js +94 -0
- package/dist/components/chips/Chips.component.d.ts +22 -0
- package/dist/components/chips/Chips.component.d.ts.map +1 -0
- package/dist/components/chips/Chips.component.js +105 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.d.ts +13 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.d.ts.map +1 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.js +9 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.style.d.ts +11 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.style.d.ts.map +1 -0
- package/dist/components/circularprogressbar/CircularProgressBar.component.style.js +27 -0
- package/dist/components/cloudprogressbar/CloudProgressBar.component.d.ts +11 -0
- package/dist/components/cloudprogressbar/CloudProgressBar.component.d.ts.map +1 -0
- package/dist/components/cloudprogressbar/CloudProgressBar.component.js +38 -0
- package/dist/components/collapsiblepanel/CollapsiblePanel.component.d.ts +10 -0
- package/dist/components/collapsiblepanel/CollapsiblePanel.component.d.ts.map +1 -0
- package/dist/components/collapsiblepanel/CollapsiblePanel.component.js +44 -0
- package/dist/components/constants.d.ts +27 -0
- package/dist/components/constants.d.ts.map +1 -0
- package/dist/components/constants.js +47 -0
- package/dist/components/constrainedtext/Constrainedtext.component.d.ts +12 -0
- package/dist/components/constrainedtext/Constrainedtext.component.d.ts.map +1 -0
- package/dist/components/constrainedtext/Constrainedtext.component.js +46 -0
- package/dist/components/coreuithemeprovider/CoreUiThemeProvider.d.ts +9 -0
- package/dist/components/coreuithemeprovider/CoreUiThemeProvider.d.ts.map +1 -0
- package/dist/components/coreuithemeprovider/CoreUiThemeProvider.js +13 -0
- package/dist/components/date/FormattedDateTime.d.ts +11 -0
- package/dist/components/date/FormattedDateTime.d.ts.map +1 -0
- package/dist/components/date/FormattedDateTime.js +66 -0
- package/dist/components/date/FormattedDateTime.spec.d.ts +2 -0
- package/dist/components/date/FormattedDateTime.spec.d.ts.map +1 -0
- package/dist/components/date/FormattedDateTime.spec.js +140 -0
- package/dist/components/date/dateDiffer.d.ts +2 -0
- package/dist/components/date/dateDiffer.d.ts.map +1 -0
- package/dist/components/date/dateDiffer.js +7 -0
- package/dist/components/date/dateDiffer.spec.d.ts +2 -0
- package/dist/components/date/dateDiffer.spec.d.ts.map +1 -0
- package/dist/components/date/dateDiffer.spec.js +6 -0
- package/dist/components/dropdown/Dropdown.component.d.ts +20 -0
- package/dist/components/dropdown/Dropdown.component.d.ts.map +1 -0
- package/dist/components/dropdown/Dropdown.component.js +99 -0
- package/dist/components/dropzone/Dropzone.d.ts +16 -0
- package/dist/components/dropzone/Dropzone.d.ts.map +1 -0
- package/dist/components/dropzone/Dropzone.js +79 -0
- package/dist/components/emptystate/Emptystate.component.d.ts +13 -0
- package/dist/components/emptystate/Emptystate.component.d.ts.map +1 -0
- package/dist/components/emptystate/Emptystate.component.js +32 -0
- package/dist/components/emptytable/Emptytable.component.d.ts +8 -0
- package/dist/components/emptytable/Emptytable.component.d.ts.map +1 -0
- package/dist/components/emptytable/Emptytable.component.js +62 -0
- package/dist/components/error-pages/ErrorPage401.component.d.ts +9 -0
- package/dist/components/error-pages/ErrorPage401.component.d.ts.map +1 -0
- package/dist/components/error-pages/ErrorPage401.component.js +28 -0
- package/dist/components/error-pages/ErrorPage404.component.d.ts +8 -0
- package/dist/components/error-pages/ErrorPage404.component.d.ts.map +1 -0
- package/dist/components/error-pages/ErrorPage404.component.js +26 -0
- package/dist/components/error-pages/ErrorPage500.component.d.ts +13 -0
- package/dist/components/error-pages/ErrorPage500.component.d.ts.map +1 -0
- package/dist/components/error-pages/ErrorPage500.component.js +32 -0
- package/dist/components/error-pages/ErrorPageAuth.component.d.ts +8 -0
- package/dist/components/error-pages/ErrorPageAuth.component.d.ts.map +1 -0
- package/dist/components/error-pages/ErrorPageAuth.component.js +27 -0
- package/dist/components/error-pages/ErrorPageStyle.d.ts +7 -0
- package/dist/components/error-pages/ErrorPageStyle.d.ts.map +1 -0
- package/dist/components/error-pages/ErrorPageStyle.js +34 -0
- package/dist/components/form/Form.component.d.ts +61 -0
- package/dist/components/form/Form.component.d.ts.map +1 -0
- package/dist/components/form/Form.component.js +115 -0
- package/dist/components/globalhealthbar/GlobalHealthBar.component.d.ts +20 -0
- package/dist/components/globalhealthbar/GlobalHealthBar.component.d.ts.map +1 -0
- package/dist/components/globalhealthbar/GlobalHealthBar.component.js +169 -0
- package/dist/components/globalhealthbar/tooltip/index.d.ts +8 -0
- package/dist/components/globalhealthbar/tooltip/index.d.ts.map +1 -0
- package/dist/components/globalhealthbar/tooltip/index.js +55 -0
- package/dist/components/healthselectorv2/HealthSelector.component.d.ts +61 -0
- package/dist/components/healthselectorv2/HealthSelector.component.d.ts.map +1 -0
- package/dist/components/healthselectorv2/HealthSelector.component.js +70 -0
- package/dist/components/icon/Icon.component.d.ts +134 -0
- package/dist/components/icon/Icon.component.d.ts.map +1 -0
- package/dist/components/icon/Icon.component.js +209 -0
- package/dist/components/infomessage/InfoMessage.component.d.ts +9 -0
- package/dist/components/infomessage/InfoMessage.component.d.ts.map +1 -0
- package/dist/components/infomessage/InfoMessage.component.js +20 -0
- package/dist/components/infomessage/InfoMessageUtils.d.ts +8 -0
- package/dist/components/infomessage/InfoMessageUtils.d.ts.map +1 -0
- package/dist/components/infomessage/InfoMessageUtils.js +32 -0
- package/dist/components/input/Input.component.d.ts +24 -0
- package/dist/components/input/Input.component.d.ts.map +1 -0
- package/dist/components/input/Input.component.js +55 -0
- package/dist/components/input/Input.component.style.d.ts +9 -0
- package/dist/components/input/Input.component.style.d.ts.map +1 -0
- package/dist/components/input/Input.component.style.js +136 -0
- package/dist/components/inputlist/InputButtons.d.ts +20 -0
- package/dist/components/inputlist/InputButtons.d.ts.map +1 -0
- package/dist/components/inputlist/InputButtons.js +48 -0
- package/dist/components/inputlist/InputList.component.d.ts +27 -0
- package/dist/components/inputlist/InputList.component.d.ts.map +1 -0
- package/dist/components/inputlist/InputList.component.js +30 -0
- package/dist/components/inputv2/inputv2.d.ts +12 -0
- package/dist/components/inputv2/inputv2.d.ts.map +1 -0
- package/dist/components/inputv2/inputv2.js +80 -0
- package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.d.ts +9 -0
- package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.d.ts.map +1 -0
- package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.js +23 -0
- package/dist/components/layout/Layout.component.d.ts +12 -0
- package/dist/components/layout/Layout.component.d.ts.map +1 -0
- package/dist/components/layout/Layout.component.js +26 -0
- package/dist/components/layout/v2/AppContainer.d.ts +28 -0
- package/dist/components/layout/v2/AppContainer.d.ts.map +1 -0
- package/dist/components/layout/v2/AppContainer.js +63 -0
- package/dist/components/layout/v2/index.d.ts +6 -0
- package/dist/components/layout/v2/index.d.ts.map +1 -0
- package/dist/components/layout/v2/index.js +16 -0
- package/dist/components/layout/v2/panels.d.ts +17 -0
- package/dist/components/layout/v2/panels.d.ts.map +1 -0
- package/dist/components/layout/v2/panels.js +52 -0
- package/dist/components/linechart/LineChart.component.d.ts +22 -0
- package/dist/components/linechart/LineChart.component.d.ts.map +1 -0
- package/dist/components/linechart/LineChart.component.js +109 -0
- package/dist/components/linetemporalchart/ChartUtil.d.ts +40 -0
- package/dist/components/linetemporalchart/ChartUtil.d.ts.map +1 -0
- package/dist/components/linetemporalchart/ChartUtil.js +126 -0
- package/dist/components/linetemporalchart/LineTemporalChart.component.d.ts +43 -0
- package/dist/components/linetemporalchart/LineTemporalChart.component.d.ts.map +1 -0
- package/dist/components/linetemporalchart/LineTemporalChart.component.js +576 -0
- package/dist/components/linetemporalchart/MetricTimespanProvider.d.ts +8 -0
- package/dist/components/linetemporalchart/MetricTimespanProvider.d.ts.map +1 -0
- package/dist/components/linetemporalchart/MetricTimespanProvider.js +31 -0
- package/dist/components/linetemporalchart/tooltip/index.d.ts +30 -0
- package/dist/components/linetemporalchart/tooltip/index.d.ts.map +1 -0
- package/dist/components/linetemporalchart/tooltip/index.js +104 -0
- package/dist/components/loader/Loader.component.d.ts +11 -0
- package/dist/components/loader/Loader.component.d.ts.map +1 -0
- package/dist/components/loader/Loader.component.js +41 -0
- package/dist/components/modal/Modal.component.d.ts +13 -0
- package/dist/components/modal/Modal.component.d.ts.map +1 -0
- package/dist/components/modal/Modal.component.js +64 -0
- package/dist/components/multiselect/MultiSelect.component.d.ts +29 -0
- package/dist/components/multiselect/MultiSelect.component.d.ts.map +1 -0
- package/dist/components/multiselect/MultiSelect.component.js +73 -0
- package/dist/components/navbar/Navbar.component.d.ts +23 -0
- package/dist/components/navbar/Navbar.component.d.ts.map +1 -0
- package/dist/components/navbar/Navbar.component.js +151 -0
- package/dist/components/notifications/Notification.component.d.ts +13 -0
- package/dist/components/notifications/Notification.component.d.ts.map +1 -0
- package/dist/components/notifications/Notification.component.js +107 -0
- package/dist/components/notifications/Notifications.component.d.ts +15 -0
- package/dist/components/notifications/Notifications.component.d.ts.map +1 -0
- package/dist/components/notifications/Notifications.component.js +42 -0
- package/dist/components/prettybytes/PrettyBytes.component.d.ts +9 -0
- package/dist/components/prettybytes/PrettyBytes.component.d.ts.map +1 -0
- package/dist/components/prettybytes/PrettyBytes.component.js +24 -0
- package/dist/components/progressbar/ProgressBar.component.d.ts +18 -0
- package/dist/components/progressbar/ProgressBar.component.d.ts.map +1 -0
- package/dist/components/progressbar/ProgressBar.component.js +129 -0
- package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.d.ts +7 -0
- package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.d.ts.map +1 -0
- package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.js +54 -0
- package/dist/components/searchinput/SearchInput.component.d.ts +12 -0
- package/dist/components/searchinput/SearchInput.component.d.ts.map +1 -0
- package/dist/components/searchinput/SearchInput.component.js +91 -0
- package/dist/components/select/Select.component.d.ts +15 -0
- package/dist/components/select/Select.component.d.ts.map +1 -0
- package/dist/components/select/Select.component.js +71 -0
- package/dist/components/selectv2/SelectStyle.d.ts +3 -0
- package/dist/components/selectv2/SelectStyle.d.ts.map +1 -0
- package/dist/components/selectv2/SelectStyle.js +238 -0
- package/dist/components/selectv2/Selectv2.component.d.ts +32 -0
- package/dist/components/selectv2/Selectv2.component.d.ts.map +1 -0
- package/dist/components/selectv2/Selectv2.component.js +267 -0
- package/dist/components/sidebar/Sidebar.component.d.ts +22 -0
- package/dist/components/sidebar/Sidebar.component.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.component.js +136 -0
- package/dist/components/spacedbox/SpacedBox.d.ts +34 -0
- package/dist/components/spacedbox/SpacedBox.d.ts.map +1 -0
- package/dist/components/spacedbox/SpacedBox.js +64 -0
- package/dist/components/sparkline/SparkLine.component.d.ts +19 -0
- package/dist/components/sparkline/SparkLine.component.d.ts.map +1 -0
- package/dist/components/sparkline/SparkLine.component.js +148 -0
- package/dist/components/statuswrapper/Statuswrapper.component.d.ts +9 -0
- package/dist/components/statuswrapper/Statuswrapper.component.d.ts.map +1 -0
- package/dist/components/statuswrapper/Statuswrapper.component.js +44 -0
- package/dist/components/steppers/Stepper.component.d.ts +14 -0
- package/dist/components/steppers/Stepper.component.d.ts.map +1 -0
- package/dist/components/steppers/Stepper.component.js +33 -0
- package/dist/components/steppers/Steppers.component.d.ts +18 -0
- package/dist/components/steppers/Steppers.component.d.ts.map +1 -0
- package/dist/components/steppers/Steppers.component.js +96 -0
- package/dist/components/tablev2/MultiSelectableContent.d.ts +22 -0
- package/dist/components/tablev2/MultiSelectableContent.d.ts.map +1 -0
- package/dist/components/tablev2/MultiSelectableContent.js +129 -0
- package/dist/components/tablev2/Search.d.ts +29 -0
- package/dist/components/tablev2/Search.d.ts.map +1 -0
- package/dist/components/tablev2/Search.js +49 -0
- package/dist/components/tablev2/SearchWithQueryParams.d.ts +7 -0
- package/dist/components/tablev2/SearchWithQueryParams.d.ts.map +1 -0
- package/dist/components/tablev2/SearchWithQueryParams.js +24 -0
- package/dist/components/tablev2/SingleSelectableContent.d.ts +17 -0
- package/dist/components/tablev2/SingleSelectableContent.d.ts.map +1 -0
- package/dist/components/tablev2/SingleSelectableContent.js +75 -0
- package/dist/components/tablev2/TableCommon.d.ts +24 -0
- package/dist/components/tablev2/TableCommon.d.ts.map +1 -0
- package/dist/components/tablev2/TableCommon.js +35 -0
- package/dist/components/tablev2/TableUtils.d.ts +18 -0
- package/dist/components/tablev2/TableUtils.d.ts.map +1 -0
- package/dist/components/tablev2/TableUtils.js +32 -0
- package/dist/components/tablev2/Tablestyle.d.ts +36 -0
- package/dist/components/tablev2/Tablestyle.d.ts.map +1 -0
- package/dist/components/tablev2/Tablestyle.js +136 -0
- package/dist/components/tablev2/Tablev2.component.d.ts +71 -0
- package/dist/components/tablev2/Tablev2.component.d.ts.map +1 -0
- package/dist/components/tablev2/Tablev2.component.js +144 -0
- package/dist/components/tablev2/react-table-config.d.ts +28 -0
- package/dist/components/tablev2/react-table-config.d.ts.map +1 -0
- package/dist/components/tablev2/react-table-config.js +1 -0
- package/dist/components/tablev2/useCheckbox.d.ts +6 -0
- package/dist/components/tablev2/useCheckbox.d.ts.map +1 -0
- package/dist/components/tablev2/useCheckbox.js +40 -0
- package/dist/components/tablev2/useSyncedScroll.d.ts +7 -0
- package/dist/components/tablev2/useSyncedScroll.d.ts.map +1 -0
- package/dist/components/tablev2/useSyncedScroll.js +43 -0
- package/dist/components/tabsv2/ScrollButton.d.ts +8 -0
- package/dist/components/tabsv2/ScrollButton.d.ts.map +1 -0
- package/dist/components/tabsv2/ScrollButton.js +32 -0
- package/dist/components/tabsv2/StyledTabs.d.ts +18 -0
- package/dist/components/tabsv2/StyledTabs.d.ts.map +1 -0
- package/dist/components/tabsv2/StyledTabs.js +96 -0
- package/dist/components/tabsv2/Tab.d.ts +17 -0
- package/dist/components/tabsv2/Tab.d.ts.map +1 -0
- package/dist/components/tabsv2/Tab.js +10 -0
- package/dist/components/tabsv2/Tabsv2.component.d.ts +21 -0
- package/dist/components/tabsv2/Tabsv2.component.d.ts.map +1 -0
- package/dist/components/tabsv2/Tabsv2.component.js +89 -0
- package/dist/components/tabsv2/useScrollingTabs.d.ts +17 -0
- package/dist/components/tabsv2/useScrollingTabs.d.ts.map +1 -0
- package/dist/components/tabsv2/useScrollingTabs.js +261 -0
- package/dist/components/text/Text.component.d.ts +33 -0
- package/dist/components/text/Text.component.d.ts.map +1 -0
- package/dist/components/text/Text.component.js +154 -0
- package/dist/components/textarea/TextArea.component.d.ts +10 -0
- package/dist/components/textarea/TextArea.component.d.ts.map +1 -0
- package/dist/components/textarea/TextArea.component.js +60 -0
- package/dist/components/textbadge/TextBadge.component.d.ts +9 -0
- package/dist/components/textbadge/TextBadge.component.d.ts.map +1 -0
- package/dist/components/textbadge/TextBadge.component.js +19 -0
- package/dist/components/toast/DurationBasedProgressBar.d.ts +6 -0
- package/dist/components/toast/DurationBasedProgressBar.d.ts.map +1 -0
- package/dist/components/toast/DurationBasedProgressBar.js +24 -0
- package/dist/components/toast/Toast.component.d.ts +20 -0
- package/dist/components/toast/Toast.component.d.ts.map +1 -0
- package/dist/components/toast/Toast.component.js +106 -0
- package/dist/components/toast/ToastPositionHelpers.d.ts +4 -0
- package/dist/components/toast/ToastPositionHelpers.d.ts.map +1 -0
- package/dist/components/toast/ToastPositionHelpers.js +28 -0
- package/dist/components/toast/ToastProvider.d.ts +14 -0
- package/dist/components/toast/ToastProvider.d.ts.map +1 -0
- package/dist/components/toast/ToastProvider.js +18 -0
- package/dist/components/toast/useMutationsHandler.d.ts +40 -0
- package/dist/components/toast/useMutationsHandler.d.ts.map +1 -0
- package/dist/components/toast/useMutationsHandler.js +66 -0
- package/dist/components/toast/useToastParameters.d.ts +10 -0
- package/dist/components/toast/useToastParameters.d.ts.map +1 -0
- package/dist/components/toast/useToastParameters.js +39 -0
- package/dist/components/toggle/Toggle.component.d.ts +11 -0
- package/dist/components/toggle/Toggle.component.d.ts.map +1 -0
- package/dist/components/toggle/Toggle.component.js +80 -0
- package/dist/components/tooltip/Tooltip.component.d.ts +23 -0
- package/dist/components/tooltip/Tooltip.component.d.ts.map +1 -0
- package/dist/components/tooltip/Tooltip.component.js +82 -0
- package/dist/components/vegachart/VegaChart.component.d.ts +14 -0
- package/dist/components/vegachart/VegaChart.component.d.ts.map +1 -0
- package/dist/components/vegachart/VegaChart.component.js +120 -0
- package/dist/components/vegachartv2/SyncedCursorCharts.d.ts +13 -0
- package/dist/components/vegachartv2/SyncedCursorCharts.d.ts.map +1 -0
- package/dist/components/vegachartv2/SyncedCursorCharts.js +17 -0
- package/dist/components/vegachartv2/VegaChartV2.component.d.ts +16 -0
- package/dist/components/vegachartv2/VegaChartV2.component.d.ts.map +1 -0
- package/dist/components/vegachartv2/VegaChartV2.component.js +216 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +19 -0
- package/dist/icons/branding.d.ts +4 -0
- package/dist/icons/branding.d.ts.map +1 -0
- package/dist/icons/branding.js +3 -0
- package/dist/icons/scality-loading.d.ts +4 -0
- package/dist/icons/scality-loading.d.ts.map +1 -0
- package/dist/icons/scality-loading.js +3 -0
- package/dist/index.css +25 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/next.d.ts +15 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +14 -0
- package/dist/organisms/attachments/AttachmentConfirmationModal.d.ts +22 -0
- package/dist/organisms/attachments/AttachmentConfirmationModal.d.ts.map +1 -0
- package/dist/organisms/attachments/AttachmentConfirmationModal.js +142 -0
- package/dist/organisms/attachments/AttachmentTable.d.ts +37 -0
- package/dist/organisms/attachments/AttachmentTable.d.ts.map +1 -0
- package/dist/organisms/attachments/AttachmentTable.js +375 -0
- package/dist/organisms/attachments/AttachmentTypes.d.ts +15 -0
- package/dist/organisms/attachments/AttachmentTypes.d.ts.map +1 -0
- package/dist/organisms/attachments/AttachmentTypes.js +5 -0
- package/dist/spacing.d.ts +44 -0
- package/dist/spacing.d.ts.map +1 -0
- package/dist/spacing.js +60 -0
- package/dist/style/fonts/Lato-Bold.woff +0 -0
- package/dist/style/fonts/Lato-Bold.woff2 +0 -0
- package/dist/style/fonts/Lato-Regular.woff +0 -0
- package/dist/style/fonts/Lato-Regular.woff2 +0 -0
- package/dist/style/theme.d.ts +160 -0
- package/dist/style/theme.d.ts.map +1 -0
- package/dist/style/theme.js +234 -0
- package/dist/testUtils.d.ts +9 -0
- package/dist/testUtils.d.ts.map +1 -0
- package/dist/testUtils.js +11 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +46 -0
- package/global-setup.js +3 -0
- package/jest.config.js +8 -0
- package/package.json +161 -0
- package/plop-templates/component.hbs +18 -0
- package/plop-templates/component.test.hbs +10 -0
- package/plop-templates/stories.hbs +18 -0
- package/plopfile.js +38 -0
- package/setupTests.js +3 -0
- package/src/lib/components/IconHelper.tsx +23 -0
- package/src/lib/components/areachart/AreaChart.component.tsx +49 -0
- package/src/lib/components/banner/Banner.component.tsx +59 -0
- package/src/lib/components/barchart/BarChart.component.tsx +46 -0
- package/src/lib/components/box/Box.ts +57 -0
- package/src/lib/components/breadcrumb/Breadcrumb.component.tsx +101 -0
- package/src/lib/components/button/Button.component.tsx +312 -0
- package/src/lib/components/buttonv2/Buttonv2.component.tsx +270 -0
- package/src/lib/components/buttonv2/CopyButton.component.tsx +89 -0
- package/src/lib/components/card/Card.component.tsx +196 -0
- package/src/lib/components/checkbox/Checkbox.component.tsx +131 -0
- package/src/lib/components/chips/Chips.component.tsx +169 -0
- package/src/lib/components/circularprogressbar/CircularProgressBar.component.style.ts +31 -0
- package/src/lib/components/circularprogressbar/CircularProgressBar.component.tsx +58 -0
- package/src/lib/components/cloudprogressbar/CloudProgressBar.component.tsx +105 -0
- package/src/lib/components/collapsiblepanel/CollapsiblePanel.component.tsx +77 -0
- package/src/lib/components/constants.ts +67 -0
- package/src/lib/components/constrainedtext/Constrainedtext.component.tsx +93 -0
- package/src/lib/components/coreuithemeprovider/CoreUiThemeProvider.tsx +21 -0
- package/src/lib/components/date/FormattedDateTime.spec.tsx +217 -0
- package/src/lib/components/date/FormattedDateTime.tsx +150 -0
- package/src/lib/components/date/dateDiffer.spec.ts +13 -0
- package/src/lib/components/date/dateDiffer.ts +12 -0
- package/src/lib/components/dropdown/Dropdown.component.tsx +184 -0
- package/src/lib/components/dropzone/Dropzone.tsx +181 -0
- package/src/lib/components/emptystate/Emptystate.component.tsx +66 -0
- package/src/lib/components/emptytable/Emptytable.component.tsx +79 -0
- package/src/lib/components/error-pages/ErrorPage401.component.tsx +77 -0
- package/src/lib/components/error-pages/ErrorPage404.component.tsx +64 -0
- package/src/lib/components/error-pages/ErrorPage500.component.tsx +88 -0
- package/src/lib/components/error-pages/ErrorPageAuth.component.tsx +70 -0
- package/src/lib/components/error-pages/ErrorPageStyle.ts +34 -0
- package/src/lib/components/form/Form.component.tsx +416 -0
- package/src/lib/components/globalhealthbar/GlobalHealthBar.component.tsx +201 -0
- package/src/lib/components/globalhealthbar/tooltip/index.ts +72 -0
- package/src/lib/components/healthselectorv2/HealthSelector.component.test.tsx +62 -0
- package/src/lib/components/healthselectorv2/HealthSelector.component.tsx +103 -0
- package/src/lib/components/icon/Icon.component.tsx +280 -0
- package/src/lib/components/infomessage/InfoMessage.component.tsx +47 -0
- package/src/lib/components/infomessage/InfoMessageUtils.test.tsx +110 -0
- package/src/lib/components/infomessage/InfoMessageUtils.ts +39 -0
- package/src/lib/components/input/Input.component.style.ts +141 -0
- package/src/lib/components/input/Input.component.tsx +174 -0
- package/src/lib/components/inputlist/InputButtons.tsx +111 -0
- package/src/lib/components/inputlist/InputList.component.tsx +98 -0
- package/src/lib/components/inputlist/InputList.test.tsx +102 -0
- package/src/lib/components/inputv2/inputv2.tsx +155 -0
- package/src/lib/components/lateralnavbarlayout/LateralNavbarLayout.component.tsx +38 -0
- package/src/lib/components/layout/Layout.component.tsx +46 -0
- package/src/lib/components/layout/v2/AppContainer.tsx +160 -0
- package/src/lib/components/layout/v2/index.tsx +30 -0
- package/src/lib/components/layout/v2/panels.tsx +105 -0
- package/src/lib/components/linechart/LineChart.component.tsx +152 -0
- package/src/lib/components/linetemporalchart/ChartUtil.test.ts +261 -0
- package/src/lib/components/linetemporalchart/ChartUtil.ts +187 -0
- package/src/lib/components/linetemporalchart/LineTemporalChart.component.tsx +797 -0
- package/src/lib/components/linetemporalchart/MetricTimespanProvider.tsx +50 -0
- package/src/lib/components/linetemporalchart/tooltip/index.ts +178 -0
- package/src/lib/components/loader/Loader.component.tsx +71 -0
- package/src/lib/components/modal/Modal.component.tsx +121 -0
- package/src/lib/components/multiselect/MultiSelect.component.tsx +158 -0
- package/src/lib/components/navbar/Navbar.component.tsx +238 -0
- package/src/lib/components/notifications/Notification.component.tsx +160 -0
- package/src/lib/components/notifications/Notifications.component.tsx +73 -0
- package/src/lib/components/prettybytes/PrettyBytes.component.tsx +39 -0
- package/src/lib/components/prettybytes/prettybytes.test.tsx +217 -0
- package/src/lib/components/progressbar/ProgressBar.component.tsx +217 -0
- package/src/lib/components/scrollbarwrapper/ScrollbarWrapper.component.tsx +66 -0
- package/src/lib/components/searchinput/SearchInput.component.tsx +146 -0
- package/src/lib/components/select/Select.component.tsx +98 -0
- package/src/lib/components/selectv2/SelectStyle.ts +267 -0
- package/src/lib/components/selectv2/Selectv2.component.tsx +487 -0
- package/src/lib/components/selectv2/selectv2.test.tsx +277 -0
- package/src/lib/components/sidebar/Sidebar.component.tsx +217 -0
- package/src/lib/components/spacedbox/SpacedBox.ts +116 -0
- package/src/lib/components/sparkline/SparkLine.component.tsx +176 -0
- package/src/lib/components/statuswrapper/Statuswrapper.component.tsx +66 -0
- package/src/lib/components/steppers/Stepper.component.d.ts +70 -0
- package/src/lib/components/steppers/Stepper.component.tsx +62 -0
- package/src/lib/components/steppers/Steppers.component.tsx +157 -0
- package/src/lib/components/tablev2/MultiSelectableContent.tsx +318 -0
- package/src/lib/components/tablev2/Search.tsx +112 -0
- package/src/lib/components/tablev2/SearchWithQueryParams.tsx +38 -0
- package/src/lib/components/tablev2/SingleSelectableContent.tsx +222 -0
- package/src/lib/components/tablev2/TableCommon.tsx +102 -0
- package/src/lib/components/tablev2/TableUtils.test.ts +17 -0
- package/src/lib/components/tablev2/TableUtils.ts +60 -0
- package/src/lib/components/tablev2/Tablestyle.tsx +184 -0
- package/src/lib/components/tablev2/Tablev2.component.tsx +316 -0
- package/src/lib/components/tablev2/Tablev2.test.tsx +136 -0
- package/src/lib/components/tablev2/react-table-config.ts +90 -0
- package/src/lib/components/tablev2/useCheckbox.tsx +62 -0
- package/src/lib/components/tablev2/useSyncedScroll.ts +64 -0
- package/src/lib/components/tabsv2/ScrollButton.tsx +39 -0
- package/src/lib/components/tabsv2/StyledTabs.ts +108 -0
- package/src/lib/components/tabsv2/Tab.ts +27 -0
- package/src/lib/components/tabsv2/Tabsv2.component.tsx +247 -0
- package/src/lib/components/tabsv2/useScrollingTabs.ts +335 -0
- package/src/lib/components/text/Text.component.tsx +194 -0
- package/src/lib/components/textarea/TextArea.component.tsx +106 -0
- package/src/lib/components/textbadge/TextBadge.component.tsx +44 -0
- package/src/lib/components/toast/DurationBasedProgressBar.tsx +45 -0
- package/src/lib/components/toast/Toast.component.tsx +181 -0
- package/src/lib/components/toast/ToastPositionHelpers.ts +38 -0
- package/src/lib/components/toast/ToastProvider.tsx +40 -0
- package/src/lib/components/toast/useMutationsHandler.test.tsx +238 -0
- package/src/lib/components/toast/useMutationsHandler.ts +172 -0
- package/src/lib/components/toast/useToastParameters.ts +59 -0
- package/src/lib/components/toggle/Toggle.component.tsx +128 -0
- package/src/lib/components/tooltip/Tooltip.component.tsx +136 -0
- package/src/lib/components/vegachart/VegaChart.component.tsx +146 -0
- package/src/lib/components/vegachartv2/SyncedCursorCharts.tsx +30 -0
- package/src/lib/components/vegachartv2/VegaChartV2.component.tsx +279 -0
- package/src/lib/hooks.ts +26 -0
- package/src/lib/icons/branding.tsx +55 -0
- package/src/lib/icons/scality-loading.tsx +118 -0
- package/src/lib/index.css +25 -0
- package/src/lib/index.ts +75 -0
- package/src/lib/next.ts +17 -0
- package/src/lib/organisms/attachments/AttachmentConfirmationModal.tsx +311 -0
- package/src/lib/organisms/attachments/AttachmentTable.tsx +728 -0
- package/src/lib/organisms/attachments/AttachmentTypes.ts +16 -0
- package/src/lib/spacing.tsx +108 -0
- package/src/lib/style/fonts/Lato-Bold.woff +0 -0
- package/src/lib/style/fonts/Lato-Bold.woff2 +0 -0
- package/src/lib/style/fonts/Lato-Regular.woff +0 -0
- package/src/lib/style/fonts/Lato-Regular.woff2 +0 -0
- package/src/lib/style/theme.ts +270 -0
- package/src/lib/testUtils.tsx +18 -0
- package/src/lib/utils.ts +57 -0
- package/stories/Button/button.guideline.mdx +199 -0
- package/stories/Button/button.stories.tsx +299 -0
- package/stories/Icon.mdx +31 -0
- package/stories/InfoMessage/infomessage.guideline.mdx +32 -0
- package/stories/InfoMessage/infomessage.stories.tsx +124 -0
- package/stories/Introduction.mdx +32 -0
- package/stories/Select/select.guideline.mdx +91 -0
- package/stories/Select/selectv2.stories.tsx +169 -0
- package/stories/areachart.stories.tsx +121 -0
- package/stories/banner.stories.tsx +75 -0
- package/stories/barchart.stories.tsx +148 -0
- package/stories/box.stories.tsx +114 -0
- package/stories/breadcrumb.stories.tsx +42 -0
- package/stories/card.stories.tsx +195 -0
- package/stories/checkbox.stories.tsx +63 -0
- package/stories/chips.stories.tsx +107 -0
- package/stories/circularprogressbar.stories.tsx +136 -0
- package/stories/cloudprogressbar.stories.tsx +93 -0
- package/stories/collapsiblepanel.stories.tsx +57 -0
- package/stories/color.mdx +43 -0
- package/stories/common.tsx +39 -0
- package/stories/constrainedtext.stories.tsx +51 -0
- package/stories/controls.ts +59 -0
- package/stories/copybutton.stories.tsx +58 -0
- package/stories/data/areachart.ts +122 -0
- package/stories/data/barchart.ts +1497 -0
- package/stories/data/linechart.ts +1516 -0
- package/stories/data/list.ts +802 -0
- package/stories/data/sparklinechart.ts +164 -0
- package/stories/designprinciples.mdx +29 -0
- package/stories/dropdown.stories.tsx +146 -0
- package/stories/dropzone.stories.tsx +49 -0
- package/stories/emptystate.stories.tsx +22 -0
- package/stories/errorpage401.stories.tsx +25 -0
- package/stories/errorpage404.stories.tsx +24 -0
- package/stories/errorpage500.stories.tsx +44 -0
- package/stories/errorpageauth.stories.tsx +31 -0
- package/stories/form.stories.tsx +255 -0
- package/stories/format.mdx +44 -0
- package/stories/formattedate.stories.tsx +58 -0
- package/stories/globalhealthbar.stories.tsx +171 -0
- package/stories/guideline/chart-guideline.mdx +63 -0
- package/stories/guideline/docs-template.mdx +43 -0
- package/stories/guideline/mdxExampleComponents.tsx +57 -0
- package/stories/healthselectorv2.stories.tsx +74 -0
- package/stories/icon.stories.tsx +146 -0
- package/stories/icons.mdx +108 -0
- package/stories/input.stories.tsx +228 -0
- package/stories/inputlist.stories.tsx +57 -0
- package/stories/lateralnavbarlayout.stories.tsx +127 -0
- package/stories/layout.stories.tsx +378 -0
- package/stories/linechart.stories.tsx +319 -0
- package/stories/linecharttemporal.stories.tsx +88 -0
- package/stories/loader.stories.tsx +49 -0
- package/stories/modal.mdx +17 -0
- package/stories/modal.stories.tsx +177 -0
- package/stories/multiselect.stories.tsx +126 -0
- package/stories/navbar.stories.tsx +156 -0
- package/stories/notifications.stories.tsx +199 -0
- package/stories/pictures/icon-design-system.png +0 -0
- package/stories/prettybytes.stories.tsx +51 -0
- package/stories/progressbar.stories.tsx +174 -0
- package/stories/scrollbar.stories.tsx +76 -0
- package/stories/searchinput.stories.tsx +86 -0
- package/stories/select.stories.tsx +52 -0
- package/stories/selectinput.stories.tsx +73 -0
- package/stories/sidebar.stories.tsx +95 -0
- package/stories/spacing.stories.mdx +50 -0
- package/stories/spacing.stories.tsx +116 -0
- package/stories/sparkline.stories.tsx +85 -0
- package/stories/statuswrapper.stories.tsx +108 -0
- package/stories/stepper.stories.tsx +124 -0
- package/stories/steppers.stories.tsx +115 -0
- package/stories/tablev2.stories.tsx +539 -0
- package/stories/tabsv2.stories.tsx +168 -0
- package/stories/text.stories.tsx +138 -0
- package/stories/textarea.stories.tsx +69 -0
- package/stories/textbadge.stories.tsx +27 -0
- package/stories/toast.stories.tsx +144 -0
- package/stories/toggle.stories.tsx +45 -0
- package/stories/tooltip.stories.tsx +170 -0
- package/stories/typography.mdx +28 -0
- package/stories/vegachart.stories.tsx +98 -0
- package/tsconfig.json +18 -0
- package/types/styled.d.ts +6 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type AttachableEntity<ENTITY_TYPE> = {
|
|
2
|
+
name: string;
|
|
3
|
+
id: string;
|
|
4
|
+
type: ENTITY_TYPE;
|
|
5
|
+
disableDetach?: boolean;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export enum AttachmentAction {
|
|
9
|
+
ADD,
|
|
10
|
+
REMOVE,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type AttachmentOperation<ENTITY_TYPE> = {
|
|
14
|
+
action: AttachmentAction;
|
|
15
|
+
entity: AttachableEntity<ENTITY_TYPE>;
|
|
16
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Children, HTMLAttributes, HTMLProps, ReactNode } from 'react';
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
import { Box, BoxComponentProps } from './components/box/Box';
|
|
4
|
+
|
|
5
|
+
export const spacing = {
|
|
6
|
+
r1: '0.0625rem',
|
|
7
|
+
r2: '0.125rem',
|
|
8
|
+
r4: '0.25rem',
|
|
9
|
+
r8: '0.5rem',
|
|
10
|
+
r10: '0.625rem',
|
|
11
|
+
r12: '0.75rem',
|
|
12
|
+
r14: '0.875rem',
|
|
13
|
+
r16: '1rem',
|
|
14
|
+
r20: '1.25rem',
|
|
15
|
+
r24: '1.5rem',
|
|
16
|
+
r28: '1.75rem',
|
|
17
|
+
r32: '2rem',
|
|
18
|
+
r36: '2.25rem',
|
|
19
|
+
r40: '2.5rem',
|
|
20
|
+
f1: '1px',
|
|
21
|
+
f2: '2px',
|
|
22
|
+
f4: '4px',
|
|
23
|
+
f8: '8px',
|
|
24
|
+
f10: '10px',
|
|
25
|
+
f12: '12px',
|
|
26
|
+
f14: '14px',
|
|
27
|
+
f16: '16px',
|
|
28
|
+
f20: '20px',
|
|
29
|
+
f24: '24px',
|
|
30
|
+
f28: '28px',
|
|
31
|
+
f32: '32px',
|
|
32
|
+
f36: '36px',
|
|
33
|
+
f40: '40px',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const HSeparator = styled.div`
|
|
37
|
+
min-height: ${spacing.r40};
|
|
38
|
+
min-width: ${spacing.r2};
|
|
39
|
+
background: ${(props) => props.theme.backgroundLevel1};
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
const VSeparator = styled.div`
|
|
43
|
+
height: 1px;
|
|
44
|
+
width: ${spacing.r24};
|
|
45
|
+
background: ${(props) => props.theme.border};
|
|
46
|
+
`;
|
|
47
|
+
|
|
48
|
+
const Separator = ({ type }: { type?: 'vertical' | 'horizontal' }) => {
|
|
49
|
+
return (
|
|
50
|
+
<>
|
|
51
|
+
{type === 'horizontal' && <HSeparator> </HSeparator>}
|
|
52
|
+
{type === 'vertical' && <VSeparator> </VSeparator>}
|
|
53
|
+
</>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const Stack = ({
|
|
58
|
+
gap,
|
|
59
|
+
direction,
|
|
60
|
+
withSeparators,
|
|
61
|
+
children,
|
|
62
|
+
...rest
|
|
63
|
+
}: {
|
|
64
|
+
gap?: keyof typeof spacing;
|
|
65
|
+
direction?: 'vertical' | 'horizontal';
|
|
66
|
+
withSeparators?: boolean;
|
|
67
|
+
children: ReactNode[];
|
|
68
|
+
} & HTMLAttributes<HTMLDivElement>) => {
|
|
69
|
+
gap = gap || 'r8';
|
|
70
|
+
direction = direction || 'horizontal';
|
|
71
|
+
|
|
72
|
+
const numberOfChildren = Children.count(children);
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<Box
|
|
76
|
+
display={'flex'}
|
|
77
|
+
flexDirection={direction === 'horizontal' ? 'row' : 'column'}
|
|
78
|
+
alignItems={direction === 'horizontal' ? 'center' : 'normal'}
|
|
79
|
+
gap={spacing[gap]}
|
|
80
|
+
{...rest}
|
|
81
|
+
>
|
|
82
|
+
{Children.map(children, (node, nodeIndex) => {
|
|
83
|
+
return (
|
|
84
|
+
<>
|
|
85
|
+
{node}
|
|
86
|
+
{withSeparators && nodeIndex + 1 !== numberOfChildren && (
|
|
87
|
+
<Separator type={direction} />
|
|
88
|
+
)}
|
|
89
|
+
</>
|
|
90
|
+
);
|
|
91
|
+
})}
|
|
92
|
+
</Box>
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const Wrap = ({
|
|
97
|
+
children,
|
|
98
|
+
...rest
|
|
99
|
+
}: { children: ReactNode[] } & Omit<HTMLProps<HTMLDivElement>, 'ref' | 'as'> &
|
|
100
|
+
BoxComponentProps) => {
|
|
101
|
+
return (
|
|
102
|
+
<Box display={'flex'} justifyContent="space-between" {...rest}>
|
|
103
|
+
{Children.map(children, (node) => {
|
|
104
|
+
return <>{node}</>;
|
|
105
|
+
})}
|
|
106
|
+
</Box>
|
|
107
|
+
);
|
|
108
|
+
};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
//== Colors
|
|
2
|
+
export const hotPink = '#E40046';
|
|
3
|
+
export const pink = '#EB4962';
|
|
4
|
+
export const lightPink = '#F5B5BA';
|
|
5
|
+
export const plum = '#8A1B61';
|
|
6
|
+
export const jade = '#006F62';
|
|
7
|
+
export const lightBeige = '#FAF7F5';
|
|
8
|
+
export const warmRed = '#EF3340';
|
|
9
|
+
export const turquoise = '#00B2A9';
|
|
10
|
+
export const yellowOrange = '#F1B434';
|
|
11
|
+
export const mediumOrange = '#FF8F1C';
|
|
12
|
+
export const yellow = '#EFC93D';
|
|
13
|
+
export const green = '#228F67';
|
|
14
|
+
export const white = '#ffffff';
|
|
15
|
+
export const black = '#000000';
|
|
16
|
+
export const blackLight = '#313B44';
|
|
17
|
+
export const blueDarkest = '#0F3554';
|
|
18
|
+
export const blueDarker = '#144A75';
|
|
19
|
+
export const blueDark = '#1F73B7';
|
|
20
|
+
export const blue = '#337FBD';
|
|
21
|
+
export const blueLight = '#5293C7';
|
|
22
|
+
export const blueLighter = '#ADCCE4';
|
|
23
|
+
export const blueLightest = '#CEE2F2';
|
|
24
|
+
export const grayDarkest = '#2F3941';
|
|
25
|
+
export const grayDarker = '#49545C';
|
|
26
|
+
export const grayDark = '#68737D';
|
|
27
|
+
export const gray = '#87929D';
|
|
28
|
+
export const grayLight = '#C2C8CC';
|
|
29
|
+
export const grayLighter = '#D8DCDE';
|
|
30
|
+
export const grayLightest = '#E9EBED';
|
|
31
|
+
|
|
32
|
+
export type CoreUITheme = {
|
|
33
|
+
statusHealthy: string;
|
|
34
|
+
statusHealthyRGB: string;
|
|
35
|
+
statusWarning: string;
|
|
36
|
+
statusWarningRGB: string;
|
|
37
|
+
statusCritical: string;
|
|
38
|
+
statusCriticalRGB: string;
|
|
39
|
+
selectedActive: string;
|
|
40
|
+
highlight: string;
|
|
41
|
+
border: string;
|
|
42
|
+
buttonPrimary: string;
|
|
43
|
+
buttonSecondary: string;
|
|
44
|
+
buttonDelete: string;
|
|
45
|
+
infoPrimary: string;
|
|
46
|
+
infoSecondary: string;
|
|
47
|
+
backgroundLevel1: string;
|
|
48
|
+
backgroundLevel2: string;
|
|
49
|
+
backgroundLevel3: string;
|
|
50
|
+
backgroundLevel4: string;
|
|
51
|
+
textPrimary: string;
|
|
52
|
+
textSecondary: string;
|
|
53
|
+
textTertiary: string;
|
|
54
|
+
textReverse: string;
|
|
55
|
+
textLink: string;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const coreUIAvailableThemesNames = [
|
|
59
|
+
'darkRebrand',
|
|
60
|
+
'artescaLight',
|
|
61
|
+
'ring9dark',
|
|
62
|
+
] as const;
|
|
63
|
+
export type CoreUIThemeName = (typeof coreUIAvailableThemesNames)[number];
|
|
64
|
+
|
|
65
|
+
export const coreUIAvailableThemes: Record<CoreUIThemeName, CoreUITheme> = {
|
|
66
|
+
darkRebrand: {
|
|
67
|
+
statusHealthy: '#0AADA6',
|
|
68
|
+
statusHealthyRGB: '10,173,166',
|
|
69
|
+
statusWarning: '#F8F32B',
|
|
70
|
+
statusWarningRGB: '248,243,43',
|
|
71
|
+
statusCritical: '#E84855',
|
|
72
|
+
statusCriticalRGB: '232,72,85',
|
|
73
|
+
selectedActive: '#037AFF',
|
|
74
|
+
highlight: '#1A3C75',
|
|
75
|
+
border: '#4A4A4A',
|
|
76
|
+
buttonPrimary: '#2F4185',
|
|
77
|
+
buttonSecondary: '#595A78',
|
|
78
|
+
buttonDelete: '#3D0808',
|
|
79
|
+
infoPrimary: '#8E8EAC',
|
|
80
|
+
infoSecondary: '#333366',
|
|
81
|
+
backgroundLevel1: '#121219',
|
|
82
|
+
backgroundLevel2: '#323245',
|
|
83
|
+
backgroundLevel3: '#232331',
|
|
84
|
+
backgroundLevel4: '#1B1B27',
|
|
85
|
+
textPrimary: '#EAEAEA',
|
|
86
|
+
textSecondary: '#B5B5B5',
|
|
87
|
+
textTertiary: '#DFDFDF',
|
|
88
|
+
textReverse: '#000000',
|
|
89
|
+
textLink: '#71AEFF',
|
|
90
|
+
},
|
|
91
|
+
artescaLight: {
|
|
92
|
+
statusHealthy: '#009E93',
|
|
93
|
+
statusHealthyRGB: '43,171,81',
|
|
94
|
+
statusWarning: '#E77B00',
|
|
95
|
+
statusWarningRGB: '252,138,50',
|
|
96
|
+
statusCritical: '#C10004',
|
|
97
|
+
statusCriticalRGB: '232,72,85,1',
|
|
98
|
+
selectedActive: '#90D0FF',
|
|
99
|
+
highlight: '#E3F2FD',
|
|
100
|
+
border: '#999999',
|
|
101
|
+
buttonPrimary: '#9DA6EC',
|
|
102
|
+
buttonSecondary: '#CACFE3',
|
|
103
|
+
buttonDelete: '#FFCDD2',
|
|
104
|
+
infoPrimary: '#5C486D',
|
|
105
|
+
infoSecondary: '#EBE3F1',
|
|
106
|
+
backgroundLevel1: '#F9F9FB',
|
|
107
|
+
backgroundLevel2: '#F3F3F5',
|
|
108
|
+
backgroundLevel3: '#EAEAEC',
|
|
109
|
+
backgroundLevel4: '#FAFAF8',
|
|
110
|
+
textPrimary: '#101010',
|
|
111
|
+
textSecondary: '#515170',
|
|
112
|
+
textTertiary: '#DFDFDF', // TO CHECK
|
|
113
|
+
textReverse: '#EAEAEA',
|
|
114
|
+
textLink: '#1349C5',
|
|
115
|
+
},
|
|
116
|
+
ring9dark: {
|
|
117
|
+
statusHealthy: '#2BAB51',
|
|
118
|
+
statusHealthyRGB: '43,171,81',
|
|
119
|
+
statusWarning: '#FC8A32',
|
|
120
|
+
statusWarningRGB: '252,138,50',
|
|
121
|
+
statusCritical: '#E84855',
|
|
122
|
+
statusCriticalRGB: '232,72,85,1',
|
|
123
|
+
selectedActive: '#2196F3',
|
|
124
|
+
highlight: '#1A3C75',
|
|
125
|
+
border: '#313131',
|
|
126
|
+
buttonPrimary: '#2E67AB',
|
|
127
|
+
buttonSecondary: '#434343',
|
|
128
|
+
buttonDelete: '#8D1616',
|
|
129
|
+
infoPrimary: '#76828F',
|
|
130
|
+
infoSecondary: '#2C3238',
|
|
131
|
+
backgroundLevel1: '#151313',
|
|
132
|
+
backgroundLevel2: '#221D1D',
|
|
133
|
+
backgroundLevel3: '#1B1D1F',
|
|
134
|
+
backgroundLevel4: '#1B1B27',
|
|
135
|
+
textPrimary: '#EAEAEA',
|
|
136
|
+
textSecondary: '#A4ACB4',
|
|
137
|
+
textTertiary: '#DFDFDF',
|
|
138
|
+
textReverse: '#000000',
|
|
139
|
+
textLink: '#71AEFF',
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @deprecated
|
|
145
|
+
*
|
|
146
|
+
* Please use coreUIAvailableThemes instead, the label is more explicit.
|
|
147
|
+
*
|
|
148
|
+
* import { coreUIAvailableThemes } from '@scality/core-ui/dist/style/theme';
|
|
149
|
+
*/
|
|
150
|
+
export const defaultTheme = coreUIAvailableThemes;
|
|
151
|
+
|
|
152
|
+
// Why use this and not directly coreUIAvailableThemes.darkRebrand ?
|
|
153
|
+
export const brand = coreUIAvailableThemes.darkRebrand;
|
|
154
|
+
|
|
155
|
+
export type ThemeColors = keyof CoreUITheme;
|
|
156
|
+
// LineChart colors
|
|
157
|
+
export const lineColor1 = '#A14FBF';
|
|
158
|
+
export const lineColor2 = '#BE9A40';
|
|
159
|
+
export const lineColor3 = '#4BE4E2';
|
|
160
|
+
export const lineColor4 = '#245A83';
|
|
161
|
+
export const lineColor5 = '#E3FF73';
|
|
162
|
+
export const lineColor6 = '#BE2543';
|
|
163
|
+
export const lineColor7 = '#FD8144';
|
|
164
|
+
export const lineColor8 = '#F6B187';
|
|
165
|
+
export const fontSize = {
|
|
166
|
+
smaller: '0.71rem',
|
|
167
|
+
small: '0.85rem',
|
|
168
|
+
base: '1rem',
|
|
169
|
+
large: '1.14rem',
|
|
170
|
+
larger: '1.43rem',
|
|
171
|
+
huge: '1.57rem',
|
|
172
|
+
// no use case for the moment
|
|
173
|
+
massive: '1.71rem', // no use case for the moment
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated
|
|
178
|
+
*
|
|
179
|
+
* use import { spacing } from '@scality/core-ui/dist/spacing';
|
|
180
|
+
*/
|
|
181
|
+
export const space = [
|
|
182
|
+
'0',
|
|
183
|
+
'0.071rem',
|
|
184
|
+
'0.143rem',
|
|
185
|
+
'0.286rem',
|
|
186
|
+
'0.571rem',
|
|
187
|
+
'0.71rem',
|
|
188
|
+
'0.857rem',
|
|
189
|
+
'1rem',
|
|
190
|
+
'1.143rem',
|
|
191
|
+
'1.429rem',
|
|
192
|
+
'1.714rem',
|
|
193
|
+
'2rem',
|
|
194
|
+
'2.286rem',
|
|
195
|
+
'2.857rem',
|
|
196
|
+
];
|
|
197
|
+
export const fontWeight = {
|
|
198
|
+
light: '400',
|
|
199
|
+
base: '400',
|
|
200
|
+
semibold: '600',
|
|
201
|
+
bold: '700',
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @deprecated
|
|
206
|
+
*
|
|
207
|
+
* Use spacing instead \
|
|
208
|
+
* smaller : sp4 \
|
|
209
|
+
* small : sp8 \
|
|
210
|
+
* base : sp16 \
|
|
211
|
+
* large : sp20 \
|
|
212
|
+
* larger : sp24 \
|
|
213
|
+
*
|
|
214
|
+
*/
|
|
215
|
+
export const padding = {
|
|
216
|
+
smaller: '4px',
|
|
217
|
+
small: '8px',
|
|
218
|
+
base: '16px',
|
|
219
|
+
large: '20px',
|
|
220
|
+
larger: '24px',
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @deprecated
|
|
225
|
+
* use import { spacing } from '@scality/core-ui/dist/spacing';
|
|
226
|
+
*
|
|
227
|
+
*/
|
|
228
|
+
export const spacing = {
|
|
229
|
+
sp0: space[0],
|
|
230
|
+
sp1: space[1],
|
|
231
|
+
sp2: space[2],
|
|
232
|
+
sp4: space[3],
|
|
233
|
+
sp8: space[4],
|
|
234
|
+
sp10: space[5],
|
|
235
|
+
sp12: space[6],
|
|
236
|
+
sp14: space[7],
|
|
237
|
+
sp16: space[8],
|
|
238
|
+
sp20: space[9],
|
|
239
|
+
sp24: space[10],
|
|
240
|
+
sp28: space[11],
|
|
241
|
+
sp32: space[12],
|
|
242
|
+
sp40: space[13],
|
|
243
|
+
};
|
|
244
|
+
// Svg size
|
|
245
|
+
export const svgSize = {
|
|
246
|
+
smaller: '11px',
|
|
247
|
+
small: '14px',
|
|
248
|
+
base: '16px',
|
|
249
|
+
large: '18px',
|
|
250
|
+
larger: '22px',
|
|
251
|
+
huge: '30px',
|
|
252
|
+
massive: '40px',
|
|
253
|
+
};
|
|
254
|
+
export const zIndex = {
|
|
255
|
+
tooltip: 9990,
|
|
256
|
+
notification: 9000,
|
|
257
|
+
modal: 8500,
|
|
258
|
+
overlay: 8000,
|
|
259
|
+
dropdown: 7000,
|
|
260
|
+
nav: 500,
|
|
261
|
+
sidebar: 100,
|
|
262
|
+
scrollbarButton: 2,
|
|
263
|
+
base: 1,
|
|
264
|
+
};
|
|
265
|
+
//navbar
|
|
266
|
+
export const navbarHeight = '3rem';
|
|
267
|
+
export const navbarItemWidth = '4.286rem';
|
|
268
|
+
//sidebar
|
|
269
|
+
export const sidebarItemHeight = spacing.sp40;
|
|
270
|
+
export const sidebarWidth = spacing.sp40;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { QueryClient, QueryClientProvider } from 'react-query';
|
|
2
|
+
import { ThemeProvider } from 'styled-components';
|
|
3
|
+
import { coreUIAvailableThemes } from './style/theme';
|
|
4
|
+
|
|
5
|
+
export const getWrapper = () => {
|
|
6
|
+
const queryClient = new QueryClient();
|
|
7
|
+
const Wrapper = ({ children }: { children: React.ReactNode }) => {
|
|
8
|
+
return (
|
|
9
|
+
<ThemeProvider theme={coreUIAvailableThemes.darkRebrand}>
|
|
10
|
+
<QueryClientProvider client={queryClient}>
|
|
11
|
+
{children}
|
|
12
|
+
</QueryClientProvider>
|
|
13
|
+
</ThemeProvider>
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return { Wrapper: Wrapper, queryClient: queryClient };
|
|
18
|
+
};
|
package/src/lib/utils.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const RGB_HEX = /^#?(?:([\da-f]{3})[\da-f]?|([\da-f]{6})(?:[\da-f]{2})?)$/i;
|
|
2
|
+
|
|
3
|
+
/** Ensure the consistency of colors between old and new colors */
|
|
4
|
+
const variantMapping = {
|
|
5
|
+
healthy: 'statusHealthy',
|
|
6
|
+
success: 'statusHealthy',
|
|
7
|
+
warning: 'statusWarning',
|
|
8
|
+
danger: 'statusCritical',
|
|
9
|
+
selected: 'selectedActive',
|
|
10
|
+
base: 'infoPrimary',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/** Translates the old colors into new colors while keeping the same name.
|
|
14
|
+
* New names are also supported. */
|
|
15
|
+
export const getThemePropSelector = (key) => (props) => {
|
|
16
|
+
const key_ = variantMapping[key] ?? key;
|
|
17
|
+
return props.theme[key_];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/** Translates the old colors into new colors while keeping same name.
|
|
21
|
+
* New names are also supported. */
|
|
22
|
+
export const getThemeVariantSelector = () => (props) => {
|
|
23
|
+
const theme = props.theme;
|
|
24
|
+
const key = variantMapping[props.variant] ?? props.variant;
|
|
25
|
+
return theme[key];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const hex2RGB = (str: string): [number, number, number] => {
|
|
29
|
+
const [, short, long] = String(str).match(RGB_HEX) || [];
|
|
30
|
+
|
|
31
|
+
if (long) {
|
|
32
|
+
const value = Number.parseInt(long, 16);
|
|
33
|
+
return [value >> 16, (value >> 8) & 0xff, value & 0xff];
|
|
34
|
+
} else if (short) {
|
|
35
|
+
const [r, g, b] = Array.from(short, (s) => Number.parseInt(s, 16)).map(
|
|
36
|
+
(n) => (n << 4) | n,
|
|
37
|
+
);
|
|
38
|
+
return [r, g, b];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
throw new Error('Invalid hex string provided');
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const convertRemToPixels = (rem: number): number => {
|
|
45
|
+
if (
|
|
46
|
+
document.documentElement &&
|
|
47
|
+
rem &&
|
|
48
|
+
Number.isFinite(rem) &&
|
|
49
|
+
!Number.isNaN(rem)
|
|
50
|
+
) {
|
|
51
|
+
return (
|
|
52
|
+
rem * parseFloat(getComputedStyle(document.documentElement).fontSize) || 0
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return 0;
|
|
57
|
+
};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Meta,
|
|
3
|
+
Story,
|
|
4
|
+
Canvas,
|
|
5
|
+
Primary,
|
|
6
|
+
Controls,
|
|
7
|
+
Unstyled,
|
|
8
|
+
Source,
|
|
9
|
+
Title,
|
|
10
|
+
} from '@storybook/blocks';
|
|
11
|
+
import { Button } from '../../src/lib/components/buttonv2/Buttonv2.component';
|
|
12
|
+
|
|
13
|
+
import * as ButtonStories from './button.stories';
|
|
14
|
+
|
|
15
|
+
<Meta of={ButtonStories} name="Guideline" />
|
|
16
|
+
|
|
17
|
+
# Button
|
|
18
|
+
|
|
19
|
+
Buttons are used to trigger an action or event when activated.
|
|
20
|
+
|
|
21
|
+
## Size & style
|
|
22
|
+
|
|
23
|
+
### Style
|
|
24
|
+
|
|
25
|
+
- Height: 2rem
|
|
26
|
+
- Border-radius: 3px
|
|
27
|
+
- Minimum width: 5rem
|
|
28
|
+
|
|
29
|
+
### Padding
|
|
30
|
+
|
|
31
|
+
Button’s label measurement:
|
|
32
|
+
|
|
33
|
+
- Line height: 1.25rem
|
|
34
|
+
- Vertical padding: 0.5rem
|
|
35
|
+
- Horizontal padding of 1rem
|
|
36
|
+
- Space between icon & label: 0.5rem
|
|
37
|
+
|
|
38
|
+
### Button spacing
|
|
39
|
+
|
|
40
|
+
- Horizontal spacing: 1rem
|
|
41
|
+
- Vertical spacing: 0.75rem
|
|
42
|
+
- Space between 2 buttons: 1.5rem - when there is no space constraint
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
Button labels should be as short and clear as possible and should describe the action the button performs.\
|
|
47
|
+
|
|
48
|
+
- Use one or two words if possible,
|
|
49
|
+
- Remove most prepositions and articles (a, an, the).
|
|
50
|
+
- Examples: Cancel, Close, Create, Delete, Edit, Learn More, Review, Save, Study, View Scores, etc.,
|
|
51
|
+
- Stick to using verbs (Complete, Start, Finish, Search) or a simple verb + noun combination for buttons (Next page, Submit post, Learn more),
|
|
52
|
+
- Capitalize the noun after the verb (Create Folder, Create Node, Edit Location).
|
|
53
|
+
- Maintain labelling method consistency across all of your buttons,
|
|
54
|
+
- Don't use punctuation or exclamation marks (!),
|
|
55
|
+
- And, most importantly, don't write "Click here".
|
|
56
|
+
|
|
57
|
+
## Variations
|
|
58
|
+
|
|
59
|
+
The button can be modified in different way to match its usage.
|
|
60
|
+
|
|
61
|
+
### Variant
|
|
62
|
+
|
|
63
|
+
Buttons have a set of predefined variants to use in different context.
|
|
64
|
+
|
|
65
|
+
<Canvas layout="fullscreen" of={ButtonStories.DefaultButtons} />
|
|
66
|
+
<br />
|
|
67
|
+
|
|
68
|
+
#### Primary
|
|
69
|
+
|
|
70
|
+
Used for the main action. It should only appear once within a group of buttons (or even a screen).
|
|
71
|
+
For example, “Continue” in a form.
|
|
72
|
+
|
|
73
|
+
<Canvas of={ButtonStories.Primary} layout="fullscreen" />
|
|
74
|
+
|
|
75
|
+
#### Secondary
|
|
76
|
+
|
|
77
|
+
Used for a secondary action within a group of buttons.
|
|
78
|
+
|
|
79
|
+
<Canvas layout="fullscreen" of={ButtonStories.Secondary} />
|
|
80
|
+
|
|
81
|
+
#### Outline
|
|
82
|
+
|
|
83
|
+
Used for low-emphasis action, as an alternative to Primary or Secondary buttons.
|
|
84
|
+
It's suitable for dismissive action, such as the "Cancel" button.
|
|
85
|
+
|
|
86
|
+
<Canvas layout="fullscreen" of={ButtonStories.Outline} />
|
|
87
|
+
|
|
88
|
+
#### Danger
|
|
89
|
+
|
|
90
|
+
Used for critical action, typically delete actions.
|
|
91
|
+
Actions triggered by such button often require additional validation, as the critical action cannot be undone.
|
|
92
|
+
|
|
93
|
+
<Canvas layout="fullscreen" of={ButtonStories.Danger} />
|
|
94
|
+
|
|
95
|
+
### Links
|
|
96
|
+
|
|
97
|
+
The Button component can be used as a link to another element of the UI.
|
|
98
|
+
When the link send to another site, use the "External-link-alt" icon.
|
|
99
|
+
|
|
100
|
+
<Canvas layout="fullscreen" of={ButtonStories.LinkButton} />
|
|
101
|
+
|
|
102
|
+
### Size
|
|
103
|
+
|
|
104
|
+
Only 2 sizes are available for the button component : default and inline.
|
|
105
|
+
|
|
106
|
+
Inline size is use for constraint spaces, like in tables or in key/values sections.
|
|
107
|
+
On all others cases, use the default size.
|
|
108
|
+
|
|
109
|
+
<Canvas layout="fullscreen" of={ButtonStories.ButtonSizes} />
|
|
110
|
+
|
|
111
|
+
### States
|
|
112
|
+
|
|
113
|
+
#### Disabled state
|
|
114
|
+
|
|
115
|
+
Clicks on the button should trigger no action, and the cursor should display a "not-allowed" indicator. \
|
|
116
|
+
A tooltip explaining the reason for the button’s disabled state should appear on hover.
|
|
117
|
+
|
|
118
|
+
<Canvas layout="fullscreen" of={ButtonStories.ButtonDisabled} />
|
|
119
|
+
|
|
120
|
+
#### Loading State
|
|
121
|
+
|
|
122
|
+
Display a spinner animation within the button. \
|
|
123
|
+
Disable any interactions during the loading process.
|
|
124
|
+
|
|
125
|
+
<Canvas
|
|
126
|
+
layout="fullscreen"
|
|
127
|
+
of={ButtonStories.ButtonLoading}
|
|
128
|
+
|
|
129
|
+
/>
|
|
130
|
+
|
|
131
|
+
## Group of Button
|
|
132
|
+
|
|
133
|
+
- Primary buttons placed on the right of a group.
|
|
134
|
+
- Dismissive actions placed on the left. It allows the user to return to the previous screen or step in the process.
|
|
135
|
+
|
|
136
|
+
Align button groups with the container's right side by default; however, based on the use case and visual balance it can be aligned differently.
|
|
137
|
+
|
|
138
|
+
<Canvas layout="fullscreen" of={ButtonStories.SimpleForm} sourceState="none" />
|
|
139
|
+
|
|
140
|
+
## Icon on buttons
|
|
141
|
+
|
|
142
|
+
### Usage
|
|
143
|
+
|
|
144
|
+
Every button gets a label.\
|
|
145
|
+
Icons are optional and mainly used to show how buttons are different, to aid memory and differentiation.\
|
|
146
|
+
Universally understood icons work well (ie. print, close, play/pause, save).\
|
|
147
|
+
Use standard icons when their use matches their meaning, or at least the user's intent.\
|
|
148
|
+
Avoid creating new icons for every action, especially infrequently used ones.\
|
|
149
|
+
Avoid using an icon alone in a button. If no label is provided, then use a tooltip.
|
|
150
|
+
|
|
151
|
+
### Placement
|
|
152
|
+
|
|
153
|
+
Icons are to be positioned only on the left side of the text.\
|
|
154
|
+
Icons should be vertically center-aligned with the text.\
|
|
155
|
+
The icon should be (approximately) the same height as the text.\
|
|
156
|
+
Seeing the icon first help users to scan the page more easily, except for few cases such as navigation (right arrow).
|
|
157
|
+
|
|
158
|
+
<Canvas
|
|
159
|
+
layout="fullscreen"
|
|
160
|
+
of={ButtonStories.ButtonsWithIcon}
|
|
161
|
+
sourceState="none"
|
|
162
|
+
/>
|
|
163
|
+
|
|
164
|
+
<Canvas
|
|
165
|
+
layout="fullscreen"
|
|
166
|
+
of={ButtonStories.IconButtonWithTooltip}
|
|
167
|
+
sourceState="none"
|
|
168
|
+
/>
|
|
169
|
+
|
|
170
|
+
### Accessibility
|
|
171
|
+
|
|
172
|
+
- Icons in Button Design: \
|
|
173
|
+
Easily recognizable icons help with the quick recognition of a button’s function. If the icon is not clear enough, it loses its purpose, so in such cases, avoid using icons.
|
|
174
|
+
- Aria Labels: \
|
|
175
|
+
Providing descriptive labels for screen readers is really helpful, especially for buttons that use icons only.
|
|
176
|
+
|
|
177
|
+
## Ghost Buttons
|
|
178
|
+
|
|
179
|
+
Ghost buttons are subtle and contribute to a minimalist interface design.
|
|
180
|
+
They are low-emphasis, making them ideal for non-primary actions in UIs.
|
|
181
|
+
They're also effective in space-limited areas like tables or key-value lists.
|
|
182
|
+
|
|
183
|
+
- Ensure tooltips are included for clarity
|
|
184
|
+
- Don't confuse them with non-interactive elements like descriptive icons or status indicators
|
|
185
|
+
- Use them for secondary or less crucial actions.
|
|
186
|
+
- Don't opt for them over Outline buttons, which are more visibly recognizable as buttons.
|
|
187
|
+
- Create too many different instances of ghost buttons; limit them to common actions (e.g. link to other UIs).
|
|
188
|
+
|
|
189
|
+
<Canvas
|
|
190
|
+
layout="fullscreen"
|
|
191
|
+
of={ButtonStories.GhostButtons}
|
|
192
|
+
sourceState="none"
|
|
193
|
+
/>
|
|
194
|
+
|
|
195
|
+
### Playground
|
|
196
|
+
|
|
197
|
+
<Canvas of={ButtonStories.Playground} layout="fullscreen" />
|
|
198
|
+
|
|
199
|
+
<Controls of={ButtonStories.Playground} />
|