@simplybusiness/mobius 4.16.0 → 5.0.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/CHANGELOG.md +48 -0
- package/dist/cjs/components/Accordion/Accordion.js +8 -8
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +4 -4
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Box/Box.js +1 -1
- package/dist/cjs/components/Box/Box.js.map +1 -1
- package/dist/cjs/components/Breadcrumbs/BreadcrumbItem.js +2 -2
- package/dist/cjs/components/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +4 -2
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Button/Loading.js +12 -6
- package/dist/cjs/components/Button/Loading.js.map +1 -1
- package/dist/cjs/components/Button/Success.js +4 -3
- package/dist/cjs/components/Button/Success.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +10 -6
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Checkbox/CheckboxGroup.js +2 -2
- package/dist/cjs/components/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/cjs/components/Container/Container.js +1 -1
- package/dist/cjs/components/Container/Container.js.map +1 -1
- package/dist/cjs/components/Divider/Divider.js +2 -2
- package/dist/cjs/components/Divider/Divider.js.map +1 -1
- package/dist/cjs/components/Drawer/Content.js +1 -1
- package/dist/cjs/components/Drawer/Content.js.map +1 -1
- package/dist/cjs/components/Drawer/Drawer.js +1 -1
- package/dist/cjs/components/Drawer/Drawer.js.map +1 -1
- package/dist/cjs/components/Drawer/Header.js +2 -2
- package/dist/cjs/components/Drawer/Header.js.map +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.js +3 -3
- package/dist/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/DropdownMenu/Item.js +1 -1
- package/dist/cjs/components/DropdownMenu/Item.js.map +1 -1
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js +7 -4
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js.map +1 -1
- package/dist/cjs/components/Fieldset/Fieldset.js +2 -2
- package/dist/cjs/components/Fieldset/Fieldset.js.map +1 -1
- package/dist/cjs/components/Flex/Flex.js +1 -1
- package/dist/cjs/components/Flex/Flex.js.map +1 -1
- package/dist/cjs/components/Grid/Grid.js +1 -1
- package/dist/cjs/components/Grid/Grid.js.map +1 -1
- package/dist/cjs/components/Grid/Item.js +1 -1
- package/dist/cjs/components/Grid/Item.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js +1 -1
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Image/Image.js +1 -1
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/Label/Label.js +1 -1
- package/dist/cjs/components/Label/Label.js.map +1 -1
- package/dist/cjs/components/Link/Link.js +1 -1
- package/dist/cjs/components/Link/Link.js.map +1 -1
- package/dist/cjs/components/LinkButton/LinkButton.js +1 -1
- package/dist/cjs/components/LinkButton/LinkButton.js.map +1 -1
- package/dist/cjs/components/List/List.js +1 -1
- package/dist/cjs/components/List/List.js.map +1 -1
- package/dist/cjs/components/List/ListItem.js +3 -3
- package/dist/cjs/components/List/ListItem.js.map +1 -1
- package/dist/cjs/components/LoadingIndicator/LoadingIndicator.js +1 -1
- package/dist/cjs/components/LoadingIndicator/LoadingIndicator.js.map +1 -1
- package/dist/cjs/components/Logo/Logo.js +1 -1
- package/dist/cjs/components/Logo/Logo.js.map +1 -1
- package/dist/cjs/components/Modal/Content.js +1 -1
- package/dist/cjs/components/Modal/Content.js.map +1 -1
- package/dist/cjs/components/Modal/Header.js +2 -2
- package/dist/cjs/components/Modal/Header.js.map +1 -1
- package/dist/cjs/components/Modal/Modal.js +1 -1
- package/dist/cjs/components/Modal/Modal.js.map +1 -1
- package/dist/cjs/components/NumberField/NumberField.js +7 -5
- package/dist/cjs/components/NumberField/NumberField.js.map +1 -1
- package/dist/cjs/components/PasswordField/PasswordField.js +1 -1
- package/dist/cjs/components/PasswordField/PasswordField.js.map +1 -1
- package/dist/cjs/components/PasswordField/ShowHideButton.js +1 -1
- package/dist/cjs/components/PasswordField/ShowHideButton.js.map +1 -1
- package/dist/cjs/components/Popover/Popover.js +8 -8
- package/dist/cjs/components/Popover/Popover.js.map +1 -1
- package/dist/cjs/components/Progress/Progress.js +5 -5
- package/dist/cjs/components/Progress/Progress.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +6 -6
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/Radio/RadioGroup.js +36 -32
- package/dist/cjs/components/Radio/RadioGroup.js.map +1 -1
- package/dist/cjs/components/SVG/SVG.js +1 -1
- package/dist/cjs/components/SVG/SVG.js.map +1 -1
- package/dist/cjs/components/Segment/Segment.js +2 -2
- package/dist/cjs/components/Segment/Segment.js.map +1 -1
- package/dist/cjs/components/Segment/SegmentGroup.js +5 -5
- package/dist/cjs/components/Segment/SegmentGroup.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +8 -8
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.js +7 -7
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/Stack/Stack.js +72 -0
- package/dist/cjs/components/Stack/Stack.js.map +1 -0
- package/dist/cjs/components/Stack/index.js +20 -0
- package/dist/cjs/components/Stack/index.js.map +1 -0
- package/dist/cjs/components/Table/Body.js +1 -1
- package/dist/cjs/components/Table/Body.js.map +1 -1
- package/dist/cjs/components/Table/Cell.js +1 -1
- package/dist/cjs/components/Table/Cell.js.map +1 -1
- package/dist/cjs/components/Table/Foot.js +1 -1
- package/dist/cjs/components/Table/Foot.js.map +1 -1
- package/dist/cjs/components/Table/Head.js +1 -1
- package/dist/cjs/components/Table/Head.js.map +1 -1
- package/dist/cjs/components/Table/HeaderCell.js +1 -1
- package/dist/cjs/components/Table/HeaderCell.js.map +1 -1
- package/dist/cjs/components/Table/Row.js +1 -1
- package/dist/cjs/components/Table/Row.js.map +1 -1
- package/dist/cjs/components/Table/Table.js +1 -1
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Text/Text.js +5 -2
- package/dist/cjs/components/Text/Text.js.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.js +5 -5
- package/dist/cjs/components/TextArea/TextArea.js.map +1 -1
- package/dist/cjs/components/TextAreaInput/TextAreaInput.js +1 -1
- package/dist/cjs/components/TextAreaInput/TextAreaInput.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.js +12 -10
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/Title/Title.js +4 -4
- package/dist/cjs/components/Title/Title.js.map +1 -1
- package/dist/cjs/components/Trust/Trust.js +4 -5
- package/dist/cjs/components/Trust/Trust.js.map +1 -1
- package/dist/cjs/components/Trust/constants.js +3 -3
- package/dist/cjs/components/Trust/constants.js.map +1 -1
- package/dist/cjs/components/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/components/Accordion/Accordion.js +8 -8
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Alert/Alert.js +4 -4
- package/dist/esm/components/Alert/Alert.js.map +1 -1
- package/dist/esm/components/Box/Box.js +1 -1
- package/dist/esm/components/Box/Box.js.map +1 -1
- package/dist/esm/components/Breadcrumbs/BreadcrumbItem.js +2 -2
- package/dist/esm/components/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/esm/components/Button/Button.js +4 -2
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/Loading.js +12 -6
- package/dist/esm/components/Button/Loading.js.map +1 -1
- package/dist/esm/components/Button/Success.js +4 -3
- package/dist/esm/components/Button/Success.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +11 -7
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Checkbox/CheckboxGroup.js +2 -2
- package/dist/esm/components/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/esm/components/Container/Container.js +1 -1
- package/dist/esm/components/Container/Container.js.map +1 -1
- package/dist/esm/components/Divider/Divider.js +2 -2
- package/dist/esm/components/Divider/Divider.js.map +1 -1
- package/dist/esm/components/Drawer/Content.js +1 -1
- package/dist/esm/components/Drawer/Content.js.map +1 -1
- package/dist/esm/components/Drawer/Drawer.js +1 -1
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Drawer/Header.js +2 -2
- package/dist/esm/components/Drawer/Header.js.map +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +3 -3
- package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/esm/components/DropdownMenu/Item.js +1 -1
- package/dist/esm/components/DropdownMenu/Item.js.map +1 -1
- package/dist/esm/components/ErrorMessage/ErrorMessage.js +7 -4
- package/dist/esm/components/ErrorMessage/ErrorMessage.js.map +1 -1
- package/dist/esm/components/Fieldset/Fieldset.js +2 -2
- package/dist/esm/components/Fieldset/Fieldset.js.map +1 -1
- package/dist/esm/components/Flex/Flex.js +1 -1
- package/dist/esm/components/Flex/Flex.js.map +1 -1
- package/dist/esm/components/Grid/Grid.js +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Grid/Item.js +1 -1
- package/dist/esm/components/Grid/Item.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +1 -1
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Image/Image.js +1 -1
- package/dist/esm/components/Image/Image.js.map +1 -1
- package/dist/esm/components/Label/Label.js +1 -1
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Link/Link.js +1 -1
- package/dist/esm/components/Link/Link.js.map +1 -1
- package/dist/esm/components/LinkButton/LinkButton.js +1 -1
- package/dist/esm/components/LinkButton/LinkButton.js.map +1 -1
- package/dist/esm/components/List/List.js +1 -1
- package/dist/esm/components/List/List.js.map +1 -1
- package/dist/esm/components/List/ListItem.js +3 -3
- package/dist/esm/components/List/ListItem.js.map +1 -1
- package/dist/esm/components/LoadingIndicator/LoadingIndicator.js +1 -1
- package/dist/esm/components/LoadingIndicator/LoadingIndicator.js.map +1 -1
- package/dist/esm/components/Logo/Logo.js +1 -1
- package/dist/esm/components/Logo/Logo.js.map +1 -1
- package/dist/esm/components/Modal/Content.js +1 -1
- package/dist/esm/components/Modal/Content.js.map +1 -1
- package/dist/esm/components/Modal/Header.js +2 -2
- package/dist/esm/components/Modal/Header.js.map +1 -1
- package/dist/esm/components/Modal/Modal.js +1 -1
- package/dist/esm/components/Modal/Modal.js.map +1 -1
- package/dist/esm/components/NumberField/NumberField.js +7 -5
- package/dist/esm/components/NumberField/NumberField.js.map +1 -1
- package/dist/esm/components/PasswordField/PasswordField.js +1 -1
- package/dist/esm/components/PasswordField/PasswordField.js.map +1 -1
- package/dist/esm/components/PasswordField/ShowHideButton.js +1 -1
- package/dist/esm/components/PasswordField/ShowHideButton.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +8 -8
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/Progress/Progress.js +5 -5
- package/dist/esm/components/Progress/Progress.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +6 -6
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Radio/RadioGroup.js +36 -32
- package/dist/esm/components/Radio/RadioGroup.js.map +1 -1
- package/dist/esm/components/SVG/SVG.js +1 -1
- package/dist/esm/components/SVG/SVG.js.map +1 -1
- package/dist/esm/components/Segment/Segment.js +2 -2
- package/dist/esm/components/Segment/Segment.js.map +1 -1
- package/dist/esm/components/Segment/SegmentGroup.js +5 -5
- package/dist/esm/components/Segment/SegmentGroup.js.map +1 -1
- package/dist/esm/components/Select/Select.js +8 -8
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +7 -7
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stack/Stack.js +16 -0
- package/dist/esm/components/Stack/Stack.js.map +1 -0
- package/dist/esm/components/Stack/index.js +3 -0
- package/dist/esm/components/Stack/index.js.map +1 -0
- package/dist/esm/components/Table/Body.js +1 -1
- package/dist/esm/components/Table/Body.js.map +1 -1
- package/dist/esm/components/Table/Cell.js +1 -1
- package/dist/esm/components/Table/Cell.js.map +1 -1
- package/dist/esm/components/Table/Foot.js +1 -1
- package/dist/esm/components/Table/Foot.js.map +1 -1
- package/dist/esm/components/Table/Head.js +1 -1
- package/dist/esm/components/Table/Head.js.map +1 -1
- package/dist/esm/components/Table/HeaderCell.js +1 -1
- package/dist/esm/components/Table/HeaderCell.js.map +1 -1
- package/dist/esm/components/Table/Row.js +1 -1
- package/dist/esm/components/Table/Row.js.map +1 -1
- package/dist/esm/components/Table/Table.js +1 -1
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Text/Text.js +5 -2
- package/dist/esm/components/Text/Text.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +5 -5
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/TextAreaInput/TextAreaInput.js +1 -1
- package/dist/esm/components/TextAreaInput/TextAreaInput.js.map +1 -1
- package/dist/esm/components/TextField/TextField.js +12 -10
- package/dist/esm/components/TextField/TextField.js.map +1 -1
- package/dist/esm/components/Title/Title.js +4 -4
- package/dist/esm/components/Title/Title.js.map +1 -1
- package/dist/esm/components/Trust/Trust.js +4 -5
- package/dist/esm/components/Trust/Trust.js.map +1 -1
- package/dist/esm/components/Trust/constants.js +3 -3
- package/dist/esm/components/Trust/constants.js.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/types/components/Button/Button.d.ts +2 -2
- package/dist/types/components/Button/Loading.d.ts +5 -1
- package/dist/types/components/Segment/Segment.stories.d.ts +2 -2
- package/dist/types/components/Segment/SegmentGroup.d.ts +1 -1
- package/dist/types/components/Stack/Stack.d.ts +15 -0
- package/dist/types/components/Stack/Stack.stories.d.ts +7 -0
- package/dist/types/components/Stack/Stack.test.d.ts +1 -0
- package/dist/types/components/Stack/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +1 -0
- package/package.json +3 -2
- package/src/components/Accordion/Accordion.css +72 -0
- package/src/components/Accordion/Accordion.mdx +9 -10
- package/src/components/Accordion/Accordion.test.tsx +4 -4
- package/src/components/Accordion/Accordion.tsx +8 -8
- package/src/components/Alert/Alert.css +53 -0
- package/src/components/Alert/Alert.mdx +1 -5
- package/src/components/Alert/Alert.tsx +4 -4
- package/src/components/Box/Box.css +3 -0
- package/src/components/Box/Box.mdx +1 -5
- package/src/components/Box/Box.test.tsx +1 -1
- package/src/components/Box/Box.tsx +1 -1
- package/src/components/Breadcrumbs/BreadcrumbItem.tsx +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.css +34 -0
- package/src/components/Breadcrumbs/Breadcrumbs.mdx +4 -8
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
- package/src/components/Button/Button.css +253 -0
- package/src/components/Button/Button.mdx +3 -11
- package/src/components/Button/Button.story.styles.css +2 -2
- package/src/components/Button/Button.test.tsx +4 -6
- package/src/components/Button/Button.tsx +4 -4
- package/src/components/Button/Loading.tsx +21 -8
- package/src/components/Button/Success.tsx +5 -3
- package/src/components/Checkbox/Checkbox.css +112 -0
- package/src/components/Checkbox/Checkbox.mdx +6 -12
- package/src/components/Checkbox/Checkbox.test.tsx +1 -7
- package/src/components/Checkbox/Checkbox.tsx +9 -7
- package/src/components/Checkbox/CheckboxGroup.css +26 -0
- package/src/components/Checkbox/CheckboxGroup.mdx +12 -22
- package/src/components/Checkbox/CheckboxGroup.test.tsx +2 -7
- package/src/components/Checkbox/CheckboxGroup.tsx +2 -2
- package/src/components/Container/Container.css +13 -0
- package/src/components/Container/Container.mdx +1 -5
- package/src/components/Container/Container.test.tsx +1 -2
- package/src/components/Container/Container.tsx +1 -1
- package/src/components/Divider/Divider.css +14 -0
- package/src/components/Divider/Divider.mdx +2 -6
- package/src/components/Divider/Divider.test.tsx +1 -1
- package/src/components/Divider/Divider.tsx +2 -2
- package/src/components/Drawer/Content.tsx +1 -1
- package/src/components/Drawer/Drawer.css +189 -0
- package/src/components/Drawer/Drawer.mdx +5 -12
- package/src/components/Drawer/Drawer.test.tsx +2 -2
- package/src/components/Drawer/Drawer.tsx +1 -1
- package/src/components/Drawer/Header.tsx +2 -2
- package/src/components/DropdownMenu/DropdownMenu.css +70 -0
- package/src/components/DropdownMenu/DropdownMenu.mdx +4 -8
- package/src/components/DropdownMenu/DropdownMenu.story.styles.css +3 -3
- package/src/components/DropdownMenu/DropdownMenu.test.tsx +4 -4
- package/src/components/DropdownMenu/DropdownMenu.tsx +3 -3
- package/src/components/DropdownMenu/Item.tsx +1 -1
- package/src/components/ErrorMessage/ErrorMessage.css +11 -0
- package/src/components/ErrorMessage/ErrorMessage.test.tsx +1 -1
- package/src/components/ErrorMessage/ErrorMessage.tsx +5 -3
- package/src/components/Fieldset/Fieldset.css +15 -0
- package/src/components/Fieldset/Fieldset.mdx +2 -6
- package/src/components/Fieldset/Fieldset.tsx +2 -2
- package/src/components/Flex/Flex.css +4 -0
- package/src/components/Flex/Flex.mdx +1 -5
- package/src/components/Flex/Flex.test.tsx +1 -1
- package/src/components/Flex/Flex.tsx +1 -1
- package/src/components/Grid/Grid.mdx +0 -4
- package/src/components/Grid/Grid.tsx +1 -1
- package/src/components/Grid/Item.tsx +1 -1
- package/src/components/Icon/Icon.css +44 -0
- package/src/components/Icon/Icon.mdx +1 -5
- package/src/components/Icon/Icon.test.tsx +1 -1
- package/src/components/Icon/Icon.tsx +1 -1
- package/src/components/Image/Image.mdx +1 -5
- package/src/components/Image/Image.test.tsx +1 -1
- package/src/components/Image/Image.tsx +1 -1
- package/src/components/Label/Label.css +21 -0
- package/src/components/Label/Label.mdx +1 -5
- package/src/components/Label/Label.test.tsx +1 -1
- package/src/components/Label/Label.tsx +1 -1
- package/src/components/Link/Link.css +26 -0
- package/src/components/Link/Link.mdx +1 -5
- package/src/components/Link/Link.test.tsx +1 -1
- package/src/components/Link/Link.tsx +1 -1
- package/src/components/LinkButton/LinkButton.mdx +1 -5
- package/src/components/LinkButton/LinkButton.tsx +1 -1
- package/src/components/List/List.css +60 -0
- package/src/components/List/List.mdx +4 -8
- package/src/components/List/List.test.tsx +4 -4
- package/src/components/List/List.tsx +1 -1
- package/src/components/List/ListItem.tsx +3 -3
- package/src/components/LoadingIndicator/LoadingIndicator.css +3 -0
- package/src/components/LoadingIndicator/LoadingIndicator.mdx +1 -5
- package/src/components/LoadingIndicator/LoadingIndicator.test.tsx +1 -1
- package/src/components/LoadingIndicator/LoadingIndicator.tsx +1 -1
- package/src/components/Logo/Logo.mdx +1 -5
- package/src/components/Logo/Logo.test.tsx +1 -1
- package/src/components/Logo/Logo.tsx +1 -1
- package/src/components/Modal/Content.tsx +1 -1
- package/src/components/Modal/Header.tsx +2 -2
- package/src/components/Modal/Modal.css +145 -0
- package/src/components/Modal/Modal.mdx +5 -12
- package/src/components/Modal/Modal.test.tsx +2 -2
- package/src/components/Modal/Modal.tsx +1 -1
- package/src/components/NumberField/NumberField.css +64 -0
- package/src/components/NumberField/NumberField.mdx +4 -8
- package/src/components/NumberField/NumberField.tsx +7 -6
- package/src/components/PasswordField/PasswordField.css +31 -0
- package/src/components/PasswordField/PasswordField.mdx +4 -8
- package/src/components/PasswordField/PasswordField.tsx +1 -1
- package/src/components/PasswordField/ShowHideButton.tsx +1 -1
- package/src/components/Popover/Popover.css +43 -0
- package/src/components/Popover/Popover.mdx +7 -11
- package/src/components/Popover/Popover.story.styles.css +3 -3
- package/src/components/Popover/Popover.test.tsx +7 -7
- package/src/components/Popover/Popover.tsx +8 -8
- package/src/components/Progress/Progress.css +30 -0
- package/src/components/Progress/Progress.mdx +5 -11
- package/src/components/Progress/Progress.test.tsx +7 -3
- package/src/components/Progress/Progress.tsx +5 -5
- package/src/components/Radio/Radio.css +185 -0
- package/src/components/Radio/Radio.mdx +9 -13
- package/src/components/Radio/Radio.test.tsx +10 -5
- package/src/components/Radio/Radio.tsx +6 -6
- package/src/components/Radio/RadioGroup.tsx +28 -25
- package/src/components/SVG/SVG.mdx +1 -5
- package/src/components/SVG/SVG.test.tsx +1 -1
- package/src/components/SVG/SVG.tsx +1 -1
- package/src/components/Segment/Segment.css +204 -0
- package/src/components/Segment/Segment.mdx +9 -13
- package/src/components/Segment/Segment.stories.tsx +7 -7
- package/src/components/Segment/Segment.tsx +2 -2
- package/src/components/Segment/SegmentGroup.tsx +6 -6
- package/src/components/Select/Select.css +85 -0
- package/src/components/Select/Select.mdx +4 -8
- package/src/components/Select/Select.test.tsx +2 -2
- package/src/components/Select/Select.tsx +7 -7
- package/src/components/Slider/Slider.css +138 -0
- package/src/components/Slider/Slider.mdx +8 -14
- package/src/components/Slider/Slider.test.tsx +4 -1
- package/src/components/Slider/Slider.tsx +7 -7
- package/src/components/Stack/Stack.css +30 -0
- package/src/components/Stack/Stack.mdx +41 -0
- package/src/components/Stack/Stack.stories.tsx +56 -0
- package/src/components/Stack/Stack.test.tsx +8 -0
- package/src/components/Stack/Stack.tsx +34 -0
- package/src/components/Stack/index.tsx +1 -0
- package/src/components/Table/Body.tsx +1 -1
- package/src/components/Table/Cell.tsx +1 -1
- package/src/components/Table/Foot.tsx +1 -1
- package/src/components/Table/Head.tsx +1 -1
- package/src/components/Table/HeaderCell.tsx +1 -1
- package/src/components/Table/Row.tsx +1 -1
- package/src/components/Table/Table.css +62 -0
- package/src/components/Table/Table.mdx +10 -14
- package/src/components/Table/Table.test.tsx +28 -15
- package/src/components/Table/Table.tsx +1 -1
- package/src/components/Text/Text.css +94 -0
- package/src/components/Text/Text.mdx +1 -5
- package/src/components/Text/Text.test.tsx +1 -1
- package/src/components/Text/Text.tsx +3 -4
- package/src/components/TextArea/TextArea.css +46 -0
- package/src/components/TextArea/TextArea.mdx +4 -8
- package/src/components/TextArea/TextArea.test.tsx +1 -1
- package/src/components/TextArea/TextArea.tsx +8 -5
- package/src/components/TextAreaInput/TextAreaInput.test.tsx +1 -1
- package/src/components/TextAreaInput/TextAreaInput.tsx +1 -1
- package/src/components/TextField/TextField.css +166 -0
- package/src/components/TextField/TextField.mdx +4 -8
- package/src/components/TextField/TextField.test.tsx +10 -10
- package/src/components/TextField/TextField.tsx +14 -11
- package/src/components/Title/Title.css +41 -0
- package/src/components/Title/Title.mdx +4 -8
- package/src/components/Title/Title.tsx +4 -4
- package/src/components/Trust/Trust.mdx +1 -7
- package/src/components/Trust/Trust.test.tsx +1 -1
- package/src/components/Trust/Trust.tsx +4 -5
- package/src/components/Trust/constants.ts +3 -3
- package/src/components/VisuallyHidden/VisuallyHidden.mdx +0 -4
- package/src/components/index.tsx +1 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
:root,
|
|
2
|
+
:host {
|
|
3
|
+
--button-variant-primary-font-variation-settings: normal;
|
|
4
|
+
--button-variant-primary-color: var(--color-primary);
|
|
5
|
+
--button-variant-primary-hover-color: var(--color-primary-hover);
|
|
6
|
+
--button-border-radius: var(--radius-1);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.mobius-button {
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
display: inline-block;
|
|
12
|
+
outline: none;
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
font-family: var(--font-family);
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
color: var(--button-content-color);
|
|
17
|
+
font-weight: var(--font-weight-bold);
|
|
18
|
+
border-radius: var(--button-border-radius);
|
|
19
|
+
border-width: var(--size-border-width);
|
|
20
|
+
border-color: transparent;
|
|
21
|
+
border-style: solid;
|
|
22
|
+
position: relative;
|
|
23
|
+
margin: 0;
|
|
24
|
+
transition:
|
|
25
|
+
color var(--transition-standard),
|
|
26
|
+
background-color var(--transition-standard);
|
|
27
|
+
|
|
28
|
+
&:where(.--has-icon) {
|
|
29
|
+
display: inline-flex;
|
|
30
|
+
gap: var(--size-xs);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Sizes */
|
|
34
|
+
/* TODO: CSS variables for line-height do not produce desired height for buttons. */
|
|
35
|
+
/* These hard-coded line-height values should be replaced with CSS variables. */
|
|
36
|
+
&:where(.--size-sm) {
|
|
37
|
+
font-size: var(--font-size-3);
|
|
38
|
+
line-height: 16px;
|
|
39
|
+
padding: 10px var(--size-sm);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&:where(.--size-md) {
|
|
43
|
+
font-size: var(--font-size-4);
|
|
44
|
+
line-height: 24px;
|
|
45
|
+
padding: 14px var(--size-md);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&:where(.--size-lg) {
|
|
49
|
+
font-size: var(--font-size-5);
|
|
50
|
+
line-height: 32px;
|
|
51
|
+
padding: 14px var(--size-md);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Primary */
|
|
55
|
+
&:where(.--variant-primary) {
|
|
56
|
+
--button-content-color: var(--color-text-inverted);
|
|
57
|
+
background-color: var(--button-variant-primary-color);
|
|
58
|
+
font-variation-settings: var(
|
|
59
|
+
--button-variant-primary-font-variation-settings
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
&:where(:active),
|
|
63
|
+
&:where(:hover) {
|
|
64
|
+
background-color: var(--button-variant-primary-hover-color);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:where(:focus-visible) {
|
|
68
|
+
box-shadow: var(--box-shadow-default);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&:where(.--is-disabled) {
|
|
72
|
+
--button-content-color: var(--color-text-light);
|
|
73
|
+
background-color: var(--color-background-medium);
|
|
74
|
+
cursor: not-allowed;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Secondary */
|
|
79
|
+
&:where(.--variant-secondary) {
|
|
80
|
+
--button-content-color: var(--color-secondary);
|
|
81
|
+
background-color: transparent;
|
|
82
|
+
border-color: var(--color-secondary);
|
|
83
|
+
|
|
84
|
+
&:where(:active),
|
|
85
|
+
&:where(:hover) {
|
|
86
|
+
--button-content-color: var(--color-text-inverted);
|
|
87
|
+
background-color: var(--color-secondary-hover);
|
|
88
|
+
border-color: var(--color-secondary-hover);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&:where(:focus-visible) {
|
|
92
|
+
box-shadow: var(--box-shadow-default);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&:where(.--is-disabled) {
|
|
96
|
+
--button-content-color: var(--color-text-light);
|
|
97
|
+
border-color: transparent;
|
|
98
|
+
background-color: var(--color-background-medium);
|
|
99
|
+
cursor: not-allowed;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Ghost */
|
|
104
|
+
&:where(.--variant-ghost) {
|
|
105
|
+
--button-content-color: var(--color-secondary);
|
|
106
|
+
background-color: var(--color-background-highlight);
|
|
107
|
+
border: var(--border-default);
|
|
108
|
+
border-color: transparent;
|
|
109
|
+
|
|
110
|
+
&:where(:active) {
|
|
111
|
+
background-color: var(--color-secondary-hover);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&:where(:hover) {
|
|
115
|
+
--button-content-color: var(--color-text-inverted);
|
|
116
|
+
border-color: transparent;
|
|
117
|
+
background-color: var(--color-secondary-hover);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
&:where(:focus-visible) {
|
|
121
|
+
box-shadow: var(--box-shadow-default);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&:where(.--is-disabled) {
|
|
125
|
+
--button-content-color: var(--color-text-light);
|
|
126
|
+
border-color: transparent;
|
|
127
|
+
background-color: var(--color-background-medium);
|
|
128
|
+
cursor: not-allowed;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Basic */
|
|
133
|
+
&:where(.--variant-basic) {
|
|
134
|
+
--button-content-color: var(--color-text);
|
|
135
|
+
border-color: transparent;
|
|
136
|
+
background-color: transparent;
|
|
137
|
+
|
|
138
|
+
&:where(:active) {
|
|
139
|
+
background-color: var(--color-background-light);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&:where(:hover) {
|
|
143
|
+
background-color: var(--color-background-light);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
&:where(.--is-disabled) {
|
|
147
|
+
--button-content-color: var(--color-text-light);
|
|
148
|
+
background-color: var(--color-background-medium);
|
|
149
|
+
cursor: not-allowed;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Success */
|
|
154
|
+
&:where(.--is-success) {
|
|
155
|
+
background-color: var(--color-valid);
|
|
156
|
+
border-color: var(--color-valid);
|
|
157
|
+
color: transparent;
|
|
158
|
+
|
|
159
|
+
/* Hide content, but keep same space occupied */
|
|
160
|
+
> :not(.mobius-button__icon-wrapper) {
|
|
161
|
+
opacity: 0;
|
|
162
|
+
visibility: hidden;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Show succces/tick icon */
|
|
166
|
+
[data-icon="tick"] path {
|
|
167
|
+
fill: var(--color-text-inverted);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/* Link variant is the exception */
|
|
171
|
+
&:where(.--variant-link) [data-icon="tick"] path {
|
|
172
|
+
fill: var(--button-content-color);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
&:where(:hover) {
|
|
176
|
+
background-color: var(--color-valid-hover);
|
|
177
|
+
border-color: var(--color-valid-hover);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&:where(:active) {
|
|
181
|
+
background-color: var(--color-valid);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
&:where(.--is-disabled) {
|
|
185
|
+
border-color: transparent;
|
|
186
|
+
color: transparent;
|
|
187
|
+
background-color: var(--color-background-medium);
|
|
188
|
+
cursor: not-allowed;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Loading */
|
|
193
|
+
&:where(.--is-loading) {
|
|
194
|
+
/* Hide text */
|
|
195
|
+
color: transparent;
|
|
196
|
+
|
|
197
|
+
/* Hide content, but keep same space occupied */
|
|
198
|
+
> :not(.mobius-button__icon-wrapper) {
|
|
199
|
+
opacity: 0;
|
|
200
|
+
visibility: hidden;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* Show loading icon */
|
|
204
|
+
[data-icon="loading"] path {
|
|
205
|
+
fill: var(--button-content-color);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* Link */
|
|
210
|
+
&:where(.--variant-link) {
|
|
211
|
+
--button-content-color: var(--color-secondary);
|
|
212
|
+
appearance: none;
|
|
213
|
+
border: none;
|
|
214
|
+
padding: 0;
|
|
215
|
+
background-color: transparent;
|
|
216
|
+
font-weight: normal;
|
|
217
|
+
|
|
218
|
+
&:not(.--is-loading) {
|
|
219
|
+
text-decoration: underline;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
&:hover,
|
|
223
|
+
&:active {
|
|
224
|
+
--button-content-color: var(--color-secondary-hover);
|
|
225
|
+
cursor: pointer;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
&:focus-visible {
|
|
229
|
+
box-shadow: 0 0 0 var(--size-focus-ring) var(--color-focus);
|
|
230
|
+
padding: 3px 0;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
&.--is-disabled {
|
|
234
|
+
--button-content-color: var(--color-text-light);
|
|
235
|
+
cursor: not-allowed;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.mobius-button__icon-wrapper {
|
|
241
|
+
position: absolute;
|
|
242
|
+
top: 0;
|
|
243
|
+
left: 0;
|
|
244
|
+
right: 0;
|
|
245
|
+
bottom: 0;
|
|
246
|
+
display: grid;
|
|
247
|
+
place-items: center;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
a.mobius-button:focus-visible,
|
|
251
|
+
.mobius-button:focus-visible {
|
|
252
|
+
box-shadow: var(--box-shadow-default);
|
|
253
|
+
}
|
|
@@ -205,19 +205,15 @@ const PressButton = () => {
|
|
|
205
205
|
The following example HTML is rendered for a `<Button>`:
|
|
206
206
|
|
|
207
207
|
```html
|
|
208
|
-
<button class="mobius
|
|
208
|
+
<button class="mobius-button --variant-primary --size-md">Text</button>
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
And this for a `<Button>` with an icon:
|
|
212
212
|
|
|
213
213
|
```html
|
|
214
|
-
<button class="mobius
|
|
214
|
+
<button class="mobius-button --variant-primary --size-md">
|
|
215
215
|
Text
|
|
216
|
-
<svg
|
|
217
|
-
class="mobius mobius/Icon svg-inline--mobius-icon"
|
|
218
|
-
role="img"
|
|
219
|
-
focusable="false"
|
|
220
|
-
>
|
|
216
|
+
<svg class="mobius-icon svg-inline--mobius-icon" role="img" focusable="false">
|
|
221
217
|
(icon)
|
|
222
218
|
</svg>
|
|
223
219
|
</button>
|
|
@@ -235,7 +231,3 @@ Class names are augmented with the following flags if true:
|
|
|
235
231
|
- \--variant-secondary
|
|
236
232
|
- \--variant-ghost
|
|
237
233
|
- \--variant-basic
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
[See on Github](https://github.com/simplybusiness/mobius/tree/master/packages/mobius/src/components/Button) | [Give feedback](https://simplybusiness.atlassian.net/CreateIssue.jspa?issuetype=10103&pid=10609) | [Get support](https://simplybusiness.slack.com/archives/C016CC0NDNE)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
.button-example-with-theme.mobius
|
|
1
|
+
.button-example-with-theme.mobius-button {
|
|
2
2
|
background-color: darkred;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
.button-example-with-icon.mobius
|
|
5
|
+
.button-example-with-icon.mobius-button {
|
|
6
6
|
display: inline-flex;
|
|
7
7
|
gap: var(--size-xs);
|
|
8
8
|
align-items: center;
|
|
@@ -4,7 +4,7 @@ import { chevronDown } from "@simplybusiness/icons";
|
|
|
4
4
|
import { Icon } from "../Icon";
|
|
5
5
|
import { Button } from ".";
|
|
6
6
|
|
|
7
|
-
const CLASS_NAME = "mobius
|
|
7
|
+
const CLASS_NAME = "mobius-button";
|
|
8
8
|
|
|
9
9
|
describe("Button", () => {
|
|
10
10
|
// This is to supress console.warn for the
|
|
@@ -49,7 +49,7 @@ describe("Button", () => {
|
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
describe("given the button is set to 'loading'", () => {
|
|
52
|
-
it("should
|
|
52
|
+
it("should render the loading icon", () => {
|
|
53
53
|
const BUTTON_TEXT = "Click me";
|
|
54
54
|
|
|
55
55
|
const { container } = render(
|
|
@@ -59,15 +59,13 @@ describe("Button", () => {
|
|
|
59
59
|
</Button>,
|
|
60
60
|
);
|
|
61
61
|
|
|
62
|
+
const button = screen.getByRole("button");
|
|
62
63
|
const loadingIcon = container.querySelector("[data-icon='loading']");
|
|
63
64
|
const loadingText = screen.getByText("Loading");
|
|
64
|
-
const buttonIcon = container.querySelector("[data-icon='chevron-down']");
|
|
65
|
-
const buttonText = screen.queryByText(BUTTON_TEXT);
|
|
66
65
|
|
|
67
66
|
expect(loadingIcon).toBeInTheDocument();
|
|
68
67
|
expect(loadingText).toBeInTheDocument();
|
|
69
|
-
expect(
|
|
70
|
-
expect(buttonText).not.toBeInTheDocument();
|
|
68
|
+
expect(button).toHaveClass("--is-loading");
|
|
71
69
|
});
|
|
72
70
|
});
|
|
73
71
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { Ref, forwardRef, RefAttributes, ReactNode } from "react";
|
|
3
|
+
import { Ref, forwardRef, RefAttributes, ReactNode, MouseEvent } from "react";
|
|
4
4
|
import classNames from "classnames/dedupe";
|
|
5
5
|
import { DOMProps } from "../../types/dom";
|
|
6
6
|
import { ForwardedRefComponent } from "../../types/components";
|
|
@@ -35,7 +35,7 @@ export interface ButtonProps
|
|
|
35
35
|
isLoading?: boolean;
|
|
36
36
|
/** Display success style */
|
|
37
37
|
isSuccess?: boolean;
|
|
38
|
-
onClick?: (event:
|
|
38
|
+
onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
39
39
|
children?: ReactNode;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -82,7 +82,7 @@ const Button: ForwardedRefComponent<ButtonProps, ButtonElementType> =
|
|
|
82
82
|
// Reshape class name and apply to outer element
|
|
83
83
|
const classes = classNames(
|
|
84
84
|
"mobius",
|
|
85
|
-
"mobius
|
|
85
|
+
"mobius-button",
|
|
86
86
|
`--variant-${buttonVariant}`,
|
|
87
87
|
`--size-${size}`,
|
|
88
88
|
{
|
|
@@ -96,7 +96,7 @@ const Button: ForwardedRefComponent<ButtonProps, ButtonElementType> =
|
|
|
96
96
|
|
|
97
97
|
return (
|
|
98
98
|
<Component ref={ref} {...buttonProps} {...otherProps}>
|
|
99
|
-
{isLoading ? <Loading
|
|
99
|
+
{isLoading ? <Loading>{children}</Loading> : children}
|
|
100
100
|
{isSuccess && !isLoading && <Success />}
|
|
101
101
|
</Component>
|
|
102
102
|
);
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
1
2
|
import { loading } from "@simplybusiness/icons";
|
|
2
3
|
import { Icon } from "../Icon";
|
|
4
|
+
import { VisuallyHidden } from "../VisuallyHidden";
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
type LoadingProps = {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const Loading = (props: LoadingProps) => {
|
|
11
|
+
const { children } = props;
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<>
|
|
15
|
+
<div className="mobius-button__icon-wrapper">
|
|
16
|
+
<Icon icon={loading} spin size="md" />
|
|
17
|
+
</div>
|
|
18
|
+
<VisuallyHidden className="mobius-button__loading-text">
|
|
19
|
+
Loading
|
|
20
|
+
</VisuallyHidden>
|
|
21
|
+
{children}
|
|
22
|
+
</>
|
|
23
|
+
);
|
|
24
|
+
};
|
|
12
25
|
|
|
13
26
|
export { Loading };
|
|
@@ -4,10 +4,12 @@ import { VisuallyHidden } from "../VisuallyHidden";
|
|
|
4
4
|
|
|
5
5
|
const Success = () => (
|
|
6
6
|
<>
|
|
7
|
-
<div className="mobius
|
|
8
|
-
<Icon icon={tick} />
|
|
7
|
+
<div className="mobius-button__icon-wrapper">
|
|
8
|
+
<Icon icon={tick} size="md" />
|
|
9
9
|
</div>
|
|
10
|
-
<VisuallyHidden className="mobius
|
|
10
|
+
<VisuallyHidden className="mobius-button__success-text">
|
|
11
|
+
Success
|
|
12
|
+
</VisuallyHidden>
|
|
11
13
|
</>
|
|
12
14
|
);
|
|
13
15
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
.mobius-checkbox__input {
|
|
2
|
+
appearance: none;
|
|
3
|
+
position: absolute;
|
|
4
|
+
margin-top: 2px;
|
|
5
|
+
margin-left: 0px;
|
|
6
|
+
width: 21px;
|
|
7
|
+
height: 20px;
|
|
8
|
+
pointer-events: none;
|
|
9
|
+
|
|
10
|
+
/* Disable browser default since input already provides focus */
|
|
11
|
+
&:focus-visible {
|
|
12
|
+
outline: none;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Disabled */
|
|
16
|
+
&.--is-disabled {
|
|
17
|
+
color: var(--color-text-light);
|
|
18
|
+
border-color: var(--color-border-medium);
|
|
19
|
+
background-color: var(--color-background-light);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Invalid */
|
|
23
|
+
.--is-invalid &:not(.--is-disabled) {
|
|
24
|
+
border-color: var(--color-error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.mobius-checkbox__label {
|
|
29
|
+
box-sizing: border-box;
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: flex-start;
|
|
32
|
+
flex-direction: row;
|
|
33
|
+
border: var(--border-default);
|
|
34
|
+
border-radius: var(--radius-1);
|
|
35
|
+
padding: var(--input-field-padding-tight);
|
|
36
|
+
position: relative;
|
|
37
|
+
user-select: none;
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
background-color: var(--color-background-input);
|
|
40
|
+
|
|
41
|
+
/* Disabled */
|
|
42
|
+
&.--is-disabled {
|
|
43
|
+
color: var(--color-text-light);
|
|
44
|
+
border-color: var(--color-border-medium);
|
|
45
|
+
background-color: var(--color-background-light);
|
|
46
|
+
cursor: not-allowed;
|
|
47
|
+
|
|
48
|
+
.mobius-checkbox__icon {
|
|
49
|
+
color: var(--color-text-light);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Hovered */
|
|
54
|
+
&:hover:not(.--is-disabled):not(&.--is-invalid) {
|
|
55
|
+
border-color: var(--color-primary);
|
|
56
|
+
background-color: var(--color-background-input-active);
|
|
57
|
+
|
|
58
|
+
.mobius-checkbox__input {
|
|
59
|
+
border-color: var(--color-primary);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.mobius-checkbox__icon {
|
|
63
|
+
color: var(--color-primary);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Focused */
|
|
68
|
+
&:focus-within:not(.--is-disabled) {
|
|
69
|
+
&:not(.--is-invalid) {
|
|
70
|
+
box-shadow: var(--box-shadow-default);
|
|
71
|
+
border-color: var(--color-primary);
|
|
72
|
+
background-color: var(--color-background-input-active);
|
|
73
|
+
|
|
74
|
+
.mobius-checkbox__icon {
|
|
75
|
+
color: var(--color-primary);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Invalid */
|
|
81
|
+
&.--is-invalid:not(.--is-disabled) {
|
|
82
|
+
border-color: var(--color-error);
|
|
83
|
+
color: var(--color-error);
|
|
84
|
+
|
|
85
|
+
&:hover,
|
|
86
|
+
&:focus-within {
|
|
87
|
+
background-color: var(--color-error-background);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.mobius-checkbox__icon {
|
|
91
|
+
color: var(--color-error);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.mobius-checkbox__input {
|
|
95
|
+
border-color: var(--color-error);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.mobius-checkbox__icon {
|
|
101
|
+
position: relative;
|
|
102
|
+
color: var(--color-primary-light);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.mobius-checkbox__visible-label {
|
|
106
|
+
box-sizing: border-box;
|
|
107
|
+
width: 100%;
|
|
108
|
+
font-family: var(--font-family);
|
|
109
|
+
line-height: var(--line-height-normal);
|
|
110
|
+
font-size: var(--font-size-regular);
|
|
111
|
+
margin-left: var(--size-sm);
|
|
112
|
+
}
|
|
@@ -66,19 +66,17 @@ The `onChange` prop can be used to listen to changes of the selected state of th
|
|
|
66
66
|
The following example HTML is rendered for a Checkbox:
|
|
67
67
|
|
|
68
68
|
```html
|
|
69
|
-
<label class="mobius
|
|
69
|
+
<label class="mobius-checkbox --is-invalid --is-optional">
|
|
70
70
|
<input
|
|
71
|
-
class="mobius
|
|
71
|
+
class="mobius-checkbox__input --is-invalid --is-optional"
|
|
72
72
|
type="checkbox"
|
|
73
73
|
value="agree"
|
|
74
74
|
/>
|
|
75
|
-
<span class="mobius
|
|
75
|
+
<span class="mobius-checkbox__label">I agree</span>
|
|
76
76
|
</label>
|
|
77
|
-
<div class="mobius
|
|
78
|
-
<span class="mobius
|
|
79
|
-
<span class="mobius
|
|
80
|
-
>This is an error message</span
|
|
81
|
-
>
|
|
77
|
+
<div class="mobius-error-message">
|
|
78
|
+
<span class="mobius-error-message__icon"></span>
|
|
79
|
+
<span class="mobius-error-message__text">This is an error message</span>
|
|
82
80
|
</div>
|
|
83
81
|
```
|
|
84
82
|
|
|
@@ -90,7 +88,3 @@ Class names are augmented with the following flags if true:
|
|
|
90
88
|
- \--is-invalid
|
|
91
89
|
- \--is-required
|
|
92
90
|
- \--is-optional
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
[See on Github](https://github.com/simplybusiness/mobius/tree/master/packages/mobius/src/components/Checkbox) | [Give feedback](https://simplybusiness.atlassian.net/CreateIssue.jspa?issuetype=10103&pid=10609) | [Get support](https://simplybusiness.slack.com/archives/C016CC0NDNE)
|
|
@@ -2,8 +2,7 @@ import { render, screen } from "@testing-library/react";
|
|
|
2
2
|
import userEvent from "@testing-library/user-event";
|
|
3
3
|
import { Checkbox } from ".";
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const CHECKBOX_CLASS_NAME = "mobius/CheckboxInput";
|
|
5
|
+
const CHECKBOX_CLASS_NAME = "mobius-checkbox__input";
|
|
7
6
|
|
|
8
7
|
describe("Checkbox", () => {
|
|
9
8
|
it("should render without error", () => {
|
|
@@ -215,11 +214,9 @@ describe("Checkbox", () => {
|
|
|
215
214
|
);
|
|
216
215
|
|
|
217
216
|
const input = screen.getByRole("checkbox");
|
|
218
|
-
const label = input.parentElement;
|
|
219
217
|
|
|
220
218
|
expect(input).not.toHaveClass(customClass);
|
|
221
219
|
expect(input).toHaveClass(CHECKBOX_CLASS_NAME);
|
|
222
|
-
expect(label).toHaveClass(customClass);
|
|
223
220
|
});
|
|
224
221
|
|
|
225
222
|
it("only sets id on the input element", () => {
|
|
@@ -247,9 +244,6 @@ describe("Checkbox", () => {
|
|
|
247
244
|
await userEvent.tab();
|
|
248
245
|
|
|
249
246
|
expect(option).toHaveClass(CHECKBOX_CLASS_NAME);
|
|
250
|
-
expect(option.closest("label")).toHaveClass(
|
|
251
|
-
CHECKBOX_CONTAINER_CLASS_NAME,
|
|
252
|
-
);
|
|
253
247
|
|
|
254
248
|
await userEvent.keyboard("[Space]");
|
|
255
249
|
|
|
@@ -17,6 +17,7 @@ import { CheckboxElementType, CheckboxProps, CheckboxRef } from "./types";
|
|
|
17
17
|
import { spaceDelimitedList } from "../../utils/spaceDelimitedList";
|
|
18
18
|
import { useValidationClasses } from "../../hooks";
|
|
19
19
|
import { Icon } from "../Icon";
|
|
20
|
+
import { Stack } from "../Stack";
|
|
20
21
|
|
|
21
22
|
export const Checkbox: ForwardedRefComponent<
|
|
22
23
|
CheckboxProps,
|
|
@@ -59,12 +60,13 @@ export const Checkbox: ForwardedRefComponent<
|
|
|
59
60
|
// Append an additional wrapper class name to differenitate from input
|
|
60
61
|
const wrapperClasses = classNames(
|
|
61
62
|
"mobius",
|
|
62
|
-
"mobius
|
|
63
|
+
"mobius-checkbox",
|
|
63
64
|
sharedClasses,
|
|
64
65
|
className,
|
|
65
66
|
);
|
|
66
|
-
const
|
|
67
|
-
const
|
|
67
|
+
const labelClasses = classNames("mobius-checkbox__label", sharedClasses);
|
|
68
|
+
const inputClasses = classNames("mobius-checkbox__input", sharedClasses);
|
|
69
|
+
const iconClasses = classNames("mobius-checkbox__icon", sharedClasses);
|
|
68
70
|
const errorMessageId = useId();
|
|
69
71
|
const shouldErrorMessageShow = errorMessage ? errorMessageId : undefined;
|
|
70
72
|
const describedBy = spaceDelimitedList([
|
|
@@ -98,8 +100,8 @@ export const Checkbox: ForwardedRefComponent<
|
|
|
98
100
|
};
|
|
99
101
|
|
|
100
102
|
return (
|
|
101
|
-
|
|
102
|
-
<label className={
|
|
103
|
+
<Stack gap="xs" className={wrapperClasses}>
|
|
104
|
+
<label className={labelClasses}>
|
|
103
105
|
<input
|
|
104
106
|
aria-describedby={describedBy}
|
|
105
107
|
aria-errormessage={shouldErrorMessageShow}
|
|
@@ -125,11 +127,11 @@ export const Checkbox: ForwardedRefComponent<
|
|
|
125
127
|
size="md"
|
|
126
128
|
className={iconClasses}
|
|
127
129
|
/>
|
|
128
|
-
<span id={labelId} className="mobius
|
|
130
|
+
<span id={labelId} className="mobius-checkbox__visible-label">
|
|
129
131
|
{label}
|
|
130
132
|
</span>
|
|
131
133
|
</label>
|
|
132
134
|
<ErrorMessage id={errorMessageId} errorMessage={errorMessage} />
|
|
133
|
-
|
|
135
|
+
</Stack>
|
|
134
136
|
);
|
|
135
137
|
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.mobius-checkbox-group {
|
|
2
|
+
display: grid;
|
|
3
|
+
|
|
4
|
+
.mobius-checkbox-group__wrapper {
|
|
5
|
+
display: grid;
|
|
6
|
+
margin-bottom: var(--size-sm);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.mobius-checkbox,
|
|
10
|
+
.mobius-checkbox-group__wrapper {
|
|
11
|
+
margin-bottom: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&.--is-horizontal .mobius-checkbox-group__wrapper {
|
|
15
|
+
grid-template-columns: repeat(var(--checkbox-items-per-row), 1fr);
|
|
16
|
+
gap: var(--size-sm);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.--is-vertical .mobius-checkbox-group__wrapper {
|
|
20
|
+
gap: var(--size-xs);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&:where(.--is-optional) > :where(.mobius-label)::after {
|
|
24
|
+
content: " (optional)";
|
|
25
|
+
}
|
|
26
|
+
}
|