@automattic/vip-design-system 1.2.0 → 1.2.2
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/.storybook/decorators/withBoundingBox.tsx +11 -0
- package/.storybook/decorators/{withThemeProvider.jsx → withThemeProvider.tsx} +1 -5
- package/.storybook/{preview.js → preview.tsx} +12 -3
- package/build/declaration.d.js +1 -0
- package/build/system/Accordion/Accordion.d.ts +41 -0
- package/build/system/Accordion/Accordion.js +10 -35
- package/build/system/Accordion/Accordion.stories.d.ts +13 -0
- package/build/system/Accordion/Accordion.stories.js +4 -7
- package/build/system/Accordion/Accordion.test.d.ts +2 -0
- package/build/system/Accordion/Accordion.test.js +5 -7
- package/build/system/Accordion/index.d.ts +5 -0
- package/build/system/Avatar/Avatar.d.ts +13 -0
- package/build/system/Avatar/Avatar.js +7 -20
- package/build/system/Avatar/Avatar.stories.d.ts +16 -0
- package/build/system/Avatar/Avatar.stories.js +5 -7
- package/build/system/Avatar/Avatar.test.d.ts +1 -0
- package/build/system/Avatar/Avatar.test.js +5 -7
- package/build/system/Avatar/index.d.ts +4 -0
- package/build/system/Avatar/index.js +1 -0
- package/build/system/Badge/Badge.d.ts +6 -0
- package/build/system/Badge/Badge.js +6 -15
- package/build/system/Badge/Badge.stories.d.ts +18 -0
- package/build/system/Badge/Badge.stories.js +70 -71
- package/build/system/Badge/Badge.test.d.ts +1 -0
- package/build/system/Badge/Badge.test.js +6 -8
- package/build/system/Badge/index.d.ts +4 -0
- package/build/system/Badge/index.js +1 -0
- package/build/system/Box/Box.d.ts +3 -0
- package/build/system/{Form/Label.stories.js → Box/Box.js} +15 -31
- package/build/system/Box/Box.stories.d.ts +16 -0
- package/build/system/Box/Box.stories.js +21 -0
- package/build/system/Box/index.d.ts +2 -0
- package/build/system/Box/index.js +5 -4
- package/build/system/Button/Button.d.ts +12 -0
- package/build/system/Button/Button.js +10 -18
- package/build/system/Button/Button.stories.d.ts +30 -0
- package/build/system/Button/Button.stories.js +10 -20
- package/build/system/Button/Button.test.d.ts +1 -0
- package/build/system/Button/Button.test.js +45 -74
- package/build/system/Button/ButtonSubmit.d.ts +2 -0
- package/build/system/Button/ButtonSubmit.js +60 -70
- package/build/system/Button/ButtonSubmit.stories.d.ts +38 -0
- package/build/system/Button/ButtonSubmit.stories.jsx +40 -0
- package/build/system/Button/ButtonSubmit.test.d.ts +1 -0
- package/build/system/Button/ButtonSubmit.test.js +32 -60
- package/build/system/Button/index.d.ts +3 -0
- package/build/system/Button/index.js +7 -6
- package/build/system/Button/variants.d.ts +2 -0
- package/build/system/Button/variants.js +1 -6
- package/build/system/Card/Card.d.ts +9 -0
- package/build/system/Card/Card.js +2 -10
- package/build/system/Card/Card.stories.d.ts +7 -0
- package/build/system/Card/Card.stories.js +4 -6
- package/build/system/Card/Card.test.d.ts +1 -0
- package/build/system/Card/Card.test.js +5 -7
- package/build/system/Card/index.d.ts +4 -0
- package/build/system/Card/index.js +1 -0
- package/build/system/Code/Code.d.ts +15 -0
- package/build/system/Code/Code.js +14 -21
- package/build/system/Code/Code.stories.d.ts +18 -0
- package/build/system/Code/Code.stories.js +31 -23
- package/build/system/Code/Code.test.d.ts +1 -0
- package/build/system/Code/Code.test.js +10 -11
- package/build/system/Code/index.d.ts +4 -0
- package/build/system/Code/index.js +1 -0
- package/build/system/ConfirmationDialog/ConfirmationDialog.d.ts +35 -0
- package/build/system/ConfirmationDialog/ConfirmationDialog.js +68 -94
- package/build/system/ConfirmationDialog/ConfirmationDialog.stories.d.ts +7 -0
- package/build/system/ConfirmationDialog/ConfirmationDialog.stories.jsx +29 -0
- package/build/system/ConfirmationDialog/index.d.ts +3 -0
- package/build/system/ConfirmationDialog/index.js +5 -5
- package/build/system/Dialog/Dialog.d.ts +18 -0
- package/build/system/Dialog/Dialog.js +81 -94
- package/build/system/Dialog/Dialog.stories.d.ts +7 -0
- package/build/system/Dialog/Dialog.stories.jsx +60 -0
- package/build/system/Dialog/DialogButton.d.ts +16 -0
- package/build/system/Dialog/DialogButton.js +51 -66
- package/build/system/Dialog/DialogContent.d.ts +18 -0
- package/build/system/Dialog/DialogContent.js +142 -137
- package/build/system/Dialog/DialogDivider.d.ts +5 -0
- package/build/system/Dialog/DialogDivider.js +5 -16
- package/build/system/Dialog/DialogMenu.d.ts +5 -0
- package/build/system/Dialog/DialogMenu.js +5 -18
- package/build/system/Dialog/DialogMenuItem.d.ts +13 -0
- package/build/system/Dialog/DialogMenuItem.js +64 -71
- package/build/system/Dialog/DialogTrigger.d.ts +1 -0
- package/build/system/Dialog/DialogTrigger.js +10 -16
- package/build/system/Dialog/index.d.ts +8 -0
- package/build/system/Dialog/index.js +19 -16
- package/build/system/Dropdown/Dropdown.d.ts +37 -0
- package/build/system/Dropdown/Dropdown.js +96 -93
- package/build/system/Dropdown/Dropdown.stories.d.ts +34 -0
- package/build/system/Dropdown/Dropdown.stories.jsx +170 -0
- package/build/system/Dropdown/Dropdown.test.d.ts +1 -0
- package/build/system/Dropdown/Dropdown.test.js +30 -52
- package/build/system/Dropdown/DropdownContent.d.ts +11 -0
- package/build/system/Dropdown/DropdownContent.js +40 -49
- package/build/system/Dropdown/DropdownItem.d.ts +32 -0
- package/build/system/Dropdown/DropdownItem.js +91 -95
- package/build/system/Dropdown/DropdownLabel.d.ts +8 -0
- package/build/system/Dropdown/DropdownLabel.js +24 -33
- package/build/system/Dropdown/DropdownSeparator.d.ts +7 -0
- package/build/system/Dropdown/DropdownSeparator.js +23 -32
- package/build/system/Dropdown/index.d.ts +40 -0
- package/build/system/Dropdown/index.js +49 -37
- package/build/system/Flex/Flex.d.ts +2 -0
- package/build/system/Flex/Flex.js +6 -8
- package/build/system/Flex/Flex.stories.d.ts +7 -0
- package/build/system/Flex/Flex.stories.js +3 -5
- package/build/system/Flex/index.d.ts +4 -0
- package/build/system/Flex/index.js +1 -0
- package/build/system/Form/Checkbox.d.ts +10 -0
- package/build/system/Form/Checkbox.js +61 -62
- package/build/system/Form/Checkbox.stories.d.ts +7 -0
- package/build/system/Form/Checkbox.stories.jsx +54 -0
- package/build/system/Form/Input.d.ts +2 -0
- package/build/system/Form/Input.js +70 -69
- package/build/system/Form/Input.stories.d.ts +5 -0
- package/build/system/Form/Input.stories.jsx +38 -0
- package/build/system/Form/Input.styles.d.ts +32 -0
- package/build/system/Form/Input.styles.js +29 -40
- package/build/system/Form/InputWithCopyButton.d.ts +2 -0
- package/build/system/Form/InputWithCopyButton.js +109 -105
- package/build/system/Form/InputWithCopyButton.stories.d.ts +5 -0
- package/build/system/Form/InputWithCopyButton.stories.jsx +30 -0
- package/build/system/Form/Label.d.ts +9 -0
- package/build/system/Form/Label.js +41 -47
- package/build/system/Form/Label.stories.d.ts +6 -0
- package/build/system/Form/Label.stories.jsx +36 -0
- package/build/system/Form/Radio.d.ts +2 -0
- package/build/system/Form/Radio.js +185 -169
- package/build/system/Form/Radio.stories.d.ts +7 -0
- package/build/system/Form/Radio.stories.jsx +100 -0
- package/build/system/Form/RadioBoxGroup.d.ts +2 -0
- package/build/system/Form/RadioBoxGroup.js +193 -187
- package/build/system/Form/RadioBoxGroup.stories.d.ts +8 -0
- package/build/system/Form/RadioBoxGroup.stories.jsx +60 -0
- package/build/system/Form/RequiredLabel.d.ts +5 -0
- package/build/system/Form/RequiredLabel.js +7 -17
- package/build/system/Form/Textarea.d.ts +2 -0
- package/build/system/Form/Textarea.js +18 -20
- package/build/system/Form/Textarea.stories.d.ts +34 -0
- package/build/system/Form/Textarea.stories.jsx +40 -0
- package/build/system/Form/Toggle.d.ts +2 -0
- package/build/system/Form/Toggle.js +67 -81
- package/build/system/Form/Toggle.stories.d.ts +19 -0
- package/build/system/Form/Toggle.stories.jsx +96 -0
- package/build/system/Form/Toggle.test.d.ts +1 -0
- package/build/system/Form/Toggle.test.js +21 -39
- package/build/system/Form/ToggleRow.d.ts +22 -0
- package/build/system/Form/ToggleRow.js +66 -95
- package/build/system/Form/Validation.d.ts +14 -0
- package/build/system/Form/Validation.js +33 -42
- package/build/system/Form/index.d.ts +11 -0
- package/build/system/Form/index.js +25 -22
- package/build/system/Grid/Grid.d.ts +6 -0
- package/build/system/Grid/Grid.js +4 -5
- package/build/system/Grid/Grid.stories.d.ts +7 -0
- package/build/system/Grid/Grid.stories.js +3 -5
- package/build/system/Grid/index.d.ts +4 -0
- package/build/system/Grid/index.js +1 -0
- package/build/system/Heading/Heading.d.ts +6 -0
- package/build/system/Heading/Heading.js +33 -0
- package/build/system/Heading/Heading.stories.d.ts +7 -0
- package/build/system/Heading/Heading.stories.js +33 -0
- package/build/system/Heading/index.d.ts +2 -0
- package/build/system/Heading/index.js +5 -4
- package/build/system/Link/Link.d.ts +6 -0
- package/build/system/Link/Link.js +5 -12
- package/build/system/Link/Link.stories.d.ts +16 -0
- package/build/system/Link/Link.stories.js +12 -13
- package/build/system/Link/index.d.ts +4 -0
- package/build/system/Link/index.js +1 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.d.ts +23 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.js +86 -99
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.d.ts +8 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.jsx +34 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.test.d.ts +1 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.test.js +43 -66
- package/build/system/NewConfirmationDialog/index.d.ts +2 -0
- package/build/system/NewConfirmationDialog/index.js +5 -4
- package/build/system/NewDialog/DialogClose.d.ts +6 -0
- package/build/system/NewDialog/DialogClose.js +50 -69
- package/build/system/NewDialog/DialogClose.test.d.ts +1 -0
- package/build/system/NewDialog/DialogClose.test.js +29 -46
- package/build/system/NewDialog/DialogContent.d.ts +18 -0
- package/build/system/NewDialog/DialogContent.js +14 -21
- package/build/system/NewDialog/DialogDescription.d.ts +5 -0
- package/build/system/NewDialog/DialogDescription.js +31 -38
- package/build/system/NewDialog/DialogDescription.test.d.ts +1 -0
- package/build/system/NewDialog/DialogDescription.test.js +44 -67
- package/build/system/NewDialog/DialogOverlay.d.ts +2 -0
- package/build/system/NewDialog/DialogOverlay.js +28 -32
- package/build/system/NewDialog/DialogOverlay.test.d.ts +1 -0
- package/build/system/NewDialog/DialogOverlay.test.js +26 -42
- package/build/system/NewDialog/DialogTitle.d.ts +11 -0
- package/build/system/NewDialog/DialogTitle.js +19 -34
- package/build/system/NewDialog/DialogTitle.test.d.ts +1 -0
- package/build/system/NewDialog/DialogTitle.test.js +44 -67
- package/build/system/NewDialog/NewDialog.d.ts +29 -0
- package/build/system/NewDialog/NewDialog.js +74 -89
- package/build/system/NewDialog/NewDialog.stories.d.ts +38 -0
- package/build/system/NewDialog/NewDialog.stories.jsx +192 -0
- package/build/system/NewDialog/index.d.ts +31 -0
- package/build/system/NewDialog/index.js +9 -13
- package/build/system/NewForm/Fieldset.d.ts +2 -0
- package/build/system/NewForm/Fieldset.js +38 -43
- package/build/system/NewForm/Form.d.ts +2 -0
- package/build/system/NewForm/Form.js +21 -28
- package/build/system/NewForm/FormAutocomplete.d.ts +2 -0
- package/build/system/NewForm/FormAutocomplete.js +386 -381
- package/build/system/NewForm/FormAutocomplete.stories.d.ts +156 -0
- package/build/system/NewForm/FormAutocomplete.stories.jsx +159 -0
- package/build/system/NewForm/FormAutocomplete.test.d.ts +1 -0
- package/build/system/NewForm/FormAutocomplete.test.js +40 -73
- package/build/system/NewForm/FormAutocompleteMultiselect.d.ts +2 -0
- package/build/system/NewForm/FormAutocompleteMultiselect.js +456 -468
- package/build/system/NewForm/FormAutocompleteMultiselect.stories.d.ts +45 -0
- package/build/system/NewForm/FormAutocompleteMultiselect.stories.jsx +162 -0
- package/build/system/NewForm/FormAutocompleteMultiselect.test.d.ts +1 -0
- package/build/system/NewForm/FormAutocompleteMultiselect.test.js +37 -73
- package/build/system/NewForm/FormSelect.d.ts +2 -0
- package/build/system/NewForm/FormSelect.js +159 -140
- package/build/system/NewForm/FormSelect.stories.d.ts +137 -0
- package/build/system/NewForm/FormSelect.stories.jsx +138 -0
- package/build/system/NewForm/FormSelect.test.d.ts +1 -0
- package/build/system/NewForm/FormSelect.test.js +131 -227
- package/build/system/NewForm/FormSelectArrow.d.ts +2 -0
- package/build/system/NewForm/FormSelectArrow.js +35 -35
- package/build/system/NewForm/FormSelectContent.d.ts +2 -0
- package/build/system/NewForm/FormSelectContent.js +27 -34
- package/build/system/NewForm/FormSelectInline.d.ts +30 -0
- package/build/system/NewForm/FormSelectInline.js +41 -38
- package/build/system/NewForm/FormSelectLoading.d.ts +2 -0
- package/build/system/NewForm/FormSelectLoading.js +36 -45
- package/build/system/NewForm/FormSelectSearch.d.ts +2 -0
- package/build/system/NewForm/FormSelectSearch.js +23 -25
- package/build/system/NewForm/Legend.d.ts +2 -0
- package/build/system/NewForm/Legend.js +32 -37
- package/build/system/NewForm/index.d.ts +12 -0
- package/build/system/NewForm/index.js +30 -30
- package/build/system/Notice/Notice.d.ts +18 -0
- package/build/system/Notice/Notice.js +41 -55
- package/build/system/Notice/Notice.stories.d.ts +13 -0
- package/build/system/Notice/Notice.stories.js +3 -5
- package/build/system/Notice/index.d.ts +5 -0
- package/build/system/OptionRow/OptionRow.d.ts +2 -0
- package/build/system/OptionRow/OptionRow.js +146 -159
- package/build/system/OptionRow/OptionRow.stories.d.ts +8 -0
- package/build/system/OptionRow/OptionRow.stories.jsx +53 -0
- package/build/system/OptionRow/OptionRow.test.d.ts +1 -0
- package/build/system/OptionRow/OptionRow.test.js +38 -67
- package/build/system/OptionRow/index.d.ts +2 -0
- package/build/system/OptionRow/index.js +5 -4
- package/build/system/Progress/Progress.d.ts +2 -0
- package/build/system/Progress/Progress.js +69 -84
- package/build/system/Progress/Progress.stories.d.ts +8 -0
- package/build/system/Progress/Progress.stories.jsx +25 -0
- package/build/system/Progress/index.d.ts +2 -0
- package/build/system/Progress/index.js +5 -4
- package/build/system/ScreenReaderText/ScreenReader.test.d.ts +1 -0
- package/build/system/ScreenReaderText/ScreenReader.test.js +21 -25
- package/build/system/ScreenReaderText/ScreenReaderText.d.ts +14 -0
- package/build/system/ScreenReaderText/ScreenReaderText.js +13 -21
- package/build/system/ScreenReaderText/index.d.ts +3 -0
- package/build/system/ScreenReaderText/index.js +6 -8
- package/build/system/Spinner/Spinner.d.ts +9 -0
- package/build/system/Spinner/Spinner.js +12 -19
- package/build/system/Spinner/Spinner.stories.d.ts +7 -0
- package/build/system/Spinner/Spinner.stories.js +3 -5
- package/build/system/Spinner/Spinner.test.d.ts +1 -0
- package/build/system/Spinner/Spinner.test.js +59 -0
- package/build/system/Spinner/index.d.ts +1 -0
- package/build/system/Spinner/index.js +1 -0
- package/build/system/Table/Table.d.ts +14 -0
- package/build/system/Table/Table.js +7 -21
- package/build/system/Table/Table.stories.d.ts +9 -0
- package/build/system/Table/Table.stories.js +5 -12
- package/build/system/Table/TableCell.d.ts +15 -0
- package/build/system/Table/TableCell.js +13 -18
- package/build/system/Table/TableRow.d.ts +14 -0
- package/build/system/Table/TableRow.js +19 -24
- package/build/system/Table/index.d.ts +6 -0
- package/build/system/Table/index.js +1 -0
- package/build/system/Tabs/Tabs.d.ts +5 -0
- package/build/system/Tabs/Tabs.js +40 -38
- package/build/system/Tabs/Tabs.stories.d.ts +9 -0
- package/build/system/Tabs/Tabs.stories.jsx +69 -0
- package/build/system/Tabs/TabsContent.d.ts +16 -0
- package/build/system/Tabs/TabsContent.js +23 -30
- package/build/system/Tabs/TabsList.d.ts +15 -0
- package/build/system/Tabs/TabsList.js +24 -32
- package/build/system/Tabs/TabsTrigger.d.ts +2 -0
- package/build/system/Tabs/TabsTrigger.js +58 -66
- package/build/system/Tabs/index.d.ts +5 -0
- package/build/system/Tabs/index.js +8 -10
- package/build/system/Text/Text.d.ts +2 -0
- package/build/system/Text/Text.js +5 -13
- package/build/system/Text/Text.stories.d.ts +8 -0
- package/build/system/Text/Text.stories.js +4 -5
- package/build/system/Text/index.d.ts +4 -0
- package/build/system/Text/index.js +1 -0
- package/build/system/Tooltip/Tooltip.css +96 -0
- package/build/system/Tooltip/Tooltip.d.ts +15 -0
- package/build/system/Tooltip/Tooltip.js +23 -93
- package/build/system/Tooltip/Tooltip.stories.d.ts +15 -0
- package/build/system/Tooltip/Tooltip.stories.js +83 -21
- package/build/system/Tooltip/index.d.ts +5 -0
- package/build/system/Wizard/Wizard.d.ts +2 -0
- package/build/system/Wizard/Wizard.js +94 -103
- package/build/system/Wizard/Wizard.stories.d.ts +9 -0
- package/build/system/Wizard/Wizard.stories.jsx +145 -0
- package/build/system/Wizard/WizardStep.d.ts +2 -0
- package/build/system/Wizard/WizardStep.js +188 -198
- package/build/system/Wizard/WizardStepHorizontal.d.ts +2 -0
- package/build/system/Wizard/WizardStepHorizontal.js +43 -55
- package/build/system/Wizard/index.d.ts +4 -0
- package/build/system/Wizard/index.js +7 -8
- package/build/system/index.d.ts +51 -0
- package/build/system/index.js +104 -86
- package/build/system/theme/colors.d.ts +2 -0
- package/build/system/theme/colors.js +7 -12
- package/build/system/theme/getColor.d.ts +8 -0
- package/build/system/theme/getColor.js +47 -46
- package/build/system/theme/index.d.ts +322 -0
- package/build/system/theme/index.js +494 -396
- package/build/system/theme/textStyles.d.ts +71 -0
- package/build/system/theme/textStyles.js +45 -50
- package/build/system/utils/random.d.ts +1 -0
- package/build/system/utils/random.js +3 -7
- package/package.json +31 -37
- package/src/declaration.d.ts +1 -0
- package/src/system/Accordion/{Accordion.test.js → Accordion.test.tsx} +2 -2
- package/src/system/Accordion/{Accordion.js → Accordion.tsx} +87 -80
- package/src/system/Avatar/Avatar.stories.tsx +18 -0
- package/src/system/Avatar/{Avatar.test.js → Avatar.test.tsx} +2 -2
- package/src/system/Avatar/{Avatar.js → Avatar.tsx} +17 -19
- package/src/system/Avatar/index.ts +4 -0
- package/src/system/Badge/Badge.stories.tsx +57 -0
- package/src/system/Badge/{Badge.test.js → Badge.test.tsx} +3 -3
- package/src/system/Badge/{Badge.js → Badge.tsx} +10 -15
- package/src/system/Badge/index.ts +4 -0
- package/src/system/Box/Box.stories.tsx +13 -1
- package/src/system/Box/Box.tsx +4 -8
- package/src/system/Button/Button.stories.tsx +110 -0
- package/src/system/Button/Button.tsx +67 -0
- package/src/system/Card/{Card.stories.jsx → Card.stories.tsx} +1 -1
- package/src/system/Card/{Card.test.js → Card.test.tsx} +2 -2
- package/src/system/Card/Card.tsx +40 -0
- package/src/system/Card/index.ts +4 -0
- package/src/system/Code/Code.stories.tsx +44 -0
- package/src/system/Code/{Code.test.js → Code.test.tsx} +6 -4
- package/src/system/Code/{Code.js → Code.tsx} +27 -22
- package/src/system/Code/index.ts +4 -0
- package/src/system/Flex/Flex.tsx +11 -0
- package/src/system/Flex/index.ts +4 -0
- package/src/system/Grid/Grid.tsx +11 -0
- package/src/system/Grid/index.ts +4 -0
- package/src/system/Heading/Heading.tsx +8 -17
- package/src/system/Link/Link.stories.tsx +23 -0
- package/src/system/Link/Link.tsx +43 -0
- package/src/system/Link/index.ts +4 -0
- package/src/system/NewForm/FormAutocomplete.js +2 -2
- package/src/system/Notice/Notice.tsx +129 -0
- package/src/system/OptionRow/OptionRow.test.js +1 -1
- package/src/system/ScreenReaderText/ScreenReaderText.tsx +40 -0
- package/src/system/Spinner/Spinner.test.tsx +30 -0
- package/src/system/Spinner/Spinner.tsx +34 -0
- package/src/system/Spinner/index.ts +1 -0
- package/src/system/Table/{Table.stories.jsx → Table.stories.tsx} +6 -6
- package/src/system/Table/{Table.js → Table.tsx} +14 -18
- package/src/system/Table/{TableCell.js → TableCell.tsx} +14 -12
- package/src/system/Table/TableRow.tsx +63 -0
- package/src/system/Table/index.ts +6 -0
- package/src/system/Text/{Text.stories.jsx → Text.stories.tsx} +1 -0
- package/src/system/Text/Text.tsx +25 -0
- package/src/system/Text/index.ts +4 -0
- package/src/system/Tooltip/Tooltip.css +96 -0
- package/src/system/Tooltip/Tooltip.stories.tsx +133 -0
- package/src/system/Tooltip/Tooltip.tsx +39 -0
- package/src/system/index.js +1 -2
- package/src/system/theme/index.js +21 -1
- package/test/fileMock.ts +1 -0
- package/test/setupAfterEnv.ts +5 -0
- package/tsconfig.definition.json +12 -0
- package/.storybook/decorators/withBoundingBox.jsx +0 -22
- package/build/system/Box/Box.stories.tsx +0 -11
- package/build/system/Box/Box.tsx +0 -22
- package/build/system/Button/ButtonSubmit.stories.js +0 -58
- package/build/system/ConfirmationDialog/ConfirmationDialog.stories.js +0 -42
- package/build/system/Dialog/Dialog.stories.js +0 -70
- package/build/system/Dropdown/Dropdown.stories.js +0 -197
- package/build/system/Form/Checkbox.stories.js +0 -73
- package/build/system/Form/Input.stories.js +0 -51
- package/build/system/Form/InputWithCopyButton.stories.js +0 -39
- package/build/system/Form/Radio.stories.js +0 -115
- package/build/system/Form/RadioBoxGroup.stories.js +0 -62
- package/build/system/Form/Textarea.stories.js +0 -59
- package/build/system/Form/Toggle.stories.js +0 -104
- package/build/system/Heading/Heading.stories.tsx +0 -19
- package/build/system/Heading/Heading.tsx +0 -38
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.js +0 -46
- package/build/system/NewDialog/NewDialog.stories.js +0 -247
- package/build/system/NewForm/FormAutocomplete.stories.js +0 -220
- package/build/system/NewForm/FormAutocompleteMultiselect.stories.js +0 -231
- package/build/system/NewForm/FormSelect.stories.js +0 -171
- package/build/system/Notification/Notification.js +0 -97
- package/build/system/Notification/Notification.stories.js +0 -29
- package/build/system/Notification/index.js +0 -5
- package/build/system/OptionRow/OptionRow.stories.js +0 -64
- package/build/system/Progress/Progress.stories.js +0 -36
- package/build/system/Tabs/Tabs.stories.js +0 -113
- package/build/system/Wizard/Wizard.stories.js +0 -182
- package/src/system/Avatar/Avatar.stories.jsx +0 -11
- package/src/system/Avatar/index.js +0 -6
- package/src/system/Badge/Badge.stories.jsx +0 -43
- package/src/system/Badge/index.js +0 -6
- package/src/system/Button/Button.js +0 -63
- package/src/system/Button/Button.stories.jsx +0 -87
- package/src/system/Card/Card.js +0 -39
- package/src/system/Card/index.js +0 -6
- package/src/system/Code/Code.stories.jsx +0 -37
- package/src/system/Code/index.js +0 -6
- package/src/system/Flex/Flex.js +0 -15
- package/src/system/Flex/index.js +0 -6
- package/src/system/Grid/Grid.js +0 -16
- package/src/system/Grid/index.js +0 -6
- package/src/system/Link/Link.js +0 -42
- package/src/system/Link/Link.stories.jsx +0 -15
- package/src/system/Link/index.js +0 -6
- package/src/system/Notice/Notice.js +0 -136
- package/src/system/Notification/Notification.js +0 -66
- package/src/system/Notification/Notification.stories.jsx +0 -16
- package/src/system/Notification/index.js +0 -6
- package/src/system/ScreenReaderText/ScreenReaderText.js +0 -39
- package/src/system/Spinner/Spinner.js +0 -34
- package/src/system/Spinner/index.js +0 -6
- package/src/system/Table/TableRow.js +0 -50
- package/src/system/Table/index.js +0 -8
- package/src/system/Text/Text.js +0 -33
- package/src/system/Text/index.js +0 -6
- package/src/system/Tooltip/Tooltip.js +0 -79
- package/src/system/Tooltip/Tooltip.stories.jsx +0 -22
- package/test/fileMock.js +0 -1
- package/test/setupAfterEnv.js +0 -13
- package/test/setupTests.js +0 -4
- /package/.storybook/decorators/{withColorMode.jsx → withColorMode.tsx} +0 -0
- /package/src/system/Accordion/{Accordion.stories.jsx → Accordion.stories.tsx} +0 -0
- /package/src/system/Accordion/{index.js → index.ts} +0 -0
- /package/src/system/Flex/{Flex.stories.jsx → Flex.stories.tsx} +0 -0
- /package/src/system/Grid/{Grid.stories.jsx → Grid.stories.tsx} +0 -0
- /package/src/system/Notice/{Notice.stories.jsx → Notice.stories.tsx} +0 -0
- /package/src/system/Notice/{index.js → index.ts} +0 -0
- /package/src/system/Spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
- /package/src/system/Tooltip/{index.js → index.ts} +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { StoryObj } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { Badge, Link } from '..';
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
component: Badge,
|
|
13
|
+
title: 'Badge',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
type Story = StoryObj< typeof Badge >;
|
|
17
|
+
|
|
18
|
+
export const Default: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
children: 'Badge',
|
|
21
|
+
sx: undefined,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const Variants = () => (
|
|
26
|
+
<>
|
|
27
|
+
<Badge variant="blue" sx={ { m: 2 } }>
|
|
28
|
+
Blue
|
|
29
|
+
</Badge>
|
|
30
|
+
<Badge variant="gold" sx={ { m: 2 } }>
|
|
31
|
+
Gold
|
|
32
|
+
</Badge>
|
|
33
|
+
<Badge variant="gray" sx={ { m: 2 } }>
|
|
34
|
+
Gray
|
|
35
|
+
</Badge>
|
|
36
|
+
<Badge variant="green" sx={ { m: 2 } }>
|
|
37
|
+
Green
|
|
38
|
+
</Badge>
|
|
39
|
+
<Badge variant="orange" sx={ { m: 2 } }>
|
|
40
|
+
Orange
|
|
41
|
+
</Badge>
|
|
42
|
+
<Badge variant="red" sx={ { m: 2 } }>
|
|
43
|
+
Red
|
|
44
|
+
</Badge>
|
|
45
|
+
<Badge variant="salmon" sx={ { m: 2 } }>
|
|
46
|
+
Salmon
|
|
47
|
+
</Badge>
|
|
48
|
+
<Badge variant="yellow" sx={ { m: 2 } }>
|
|
49
|
+
Yellow
|
|
50
|
+
</Badge>
|
|
51
|
+
</>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
export const WithLink: Story = {
|
|
55
|
+
args: {},
|
|
56
|
+
render: args => <Badge children={ <Link href="https://google.com">Google</Link> } { ...args } />,
|
|
57
|
+
};
|
|
@@ -16,15 +16,15 @@ describe( '<Badge />', () => {
|
|
|
16
16
|
expect( screen.getByText( 'Badge text' ) ).toBeInTheDocument();
|
|
17
17
|
|
|
18
18
|
// Check for accessibility issues
|
|
19
|
-
|
|
19
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
20
20
|
} );
|
|
21
21
|
|
|
22
22
|
it( 'renders the Badge component with a different variant', async () => {
|
|
23
|
-
const { container } = render( <Badge variant="
|
|
23
|
+
const { container } = render( <Badge variant="red">Badge text</Badge> );
|
|
24
24
|
|
|
25
25
|
expect( screen.getByText( 'Badge text' ) ).toBeInTheDocument();
|
|
26
26
|
|
|
27
27
|
// Check for accessibility issues
|
|
28
|
-
|
|
28
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
29
29
|
} );
|
|
30
30
|
} );
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
/** @jsxImportSource theme-ui */
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* External dependencies
|
|
5
3
|
*/
|
|
6
|
-
import
|
|
4
|
+
import { forwardRef, Ref } from 'react';
|
|
7
5
|
import classNames from 'classnames';
|
|
8
|
-
import
|
|
6
|
+
import { TextProps as ThemeTextProps } from 'theme-ui';
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* Internal dependencies
|
|
12
10
|
*/
|
|
13
|
-
import { Text } from '
|
|
11
|
+
import { Text } from '..';
|
|
12
|
+
|
|
13
|
+
export interface BadgeProps extends ThemeTextProps {
|
|
14
|
+
variant?: 'blue' | 'gold' | 'gray' | 'green' | 'orange' | 'red' | 'salmon' | 'yellow';
|
|
15
|
+
}
|
|
14
16
|
|
|
15
|
-
const Badge =
|
|
16
|
-
( { variant = 'blue', sx, className
|
|
17
|
+
export const Badge = forwardRef< HTMLDivElement, BadgeProps >(
|
|
18
|
+
( { variant = 'blue', sx, className, ...props }: BadgeProps, ref: Ref< HTMLDivElement > ) => (
|
|
17
19
|
<Text
|
|
18
20
|
as="span"
|
|
19
21
|
sx={ {
|
|
@@ -39,17 +41,10 @@ const Badge = React.forwardRef(
|
|
|
39
41
|
...sx,
|
|
40
42
|
} }
|
|
41
43
|
className={ classNames( 'vip-badge-component', className ) }
|
|
42
|
-
ref={
|
|
44
|
+
ref={ ref }
|
|
43
45
|
{ ...props }
|
|
44
46
|
/>
|
|
45
47
|
)
|
|
46
48
|
);
|
|
47
49
|
|
|
48
50
|
Badge.displayName = 'Badge';
|
|
49
|
-
Badge.propTypes = {
|
|
50
|
-
variant: PropTypes.string,
|
|
51
|
-
sx: PropTypes.object,
|
|
52
|
-
className: PropTypes.any,
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export { Badge };
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { StoryObj } from '@storybook/react';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* Internal dependencies
|
|
3
8
|
*/
|
|
@@ -8,4 +13,11 @@ export default {
|
|
|
8
13
|
component: Box,
|
|
9
14
|
};
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
type Story = StoryObj< typeof Box >;
|
|
17
|
+
|
|
18
|
+
export const Default: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
children: 'Hello',
|
|
21
|
+
sx: undefined,
|
|
22
|
+
},
|
|
23
|
+
};
|
package/src/system/Box/Box.tsx
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
import classNames
|
|
4
|
+
import { forwardRef, Ref } from 'react';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
6
|
import { Box as ThemeBox, BoxProps as ThemeBoxProps } from 'theme-ui';
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const Box = React.forwardRef< HTMLDivElement, BoxProps >(
|
|
13
|
-
( props: BoxProps, ref: Ref< HTMLDivElement > ) => (
|
|
8
|
+
export const Box = forwardRef< HTMLElement, ThemeBoxProps >(
|
|
9
|
+
( props: ThemeBoxProps, ref: Ref< HTMLElement > ) => (
|
|
14
10
|
<ThemeBox
|
|
15
11
|
{ ...props }
|
|
16
12
|
className={ classNames( 'vip-box-component', props.className ) }
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { BiCalendarHeart } from 'react-icons/bi';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import ScreenReaderText from '../ScreenReaderText';
|
|
13
|
+
import { Button } from '..';
|
|
14
|
+
import variants from './variants';
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
title: 'Button',
|
|
18
|
+
component: Button,
|
|
19
|
+
argTypes: {
|
|
20
|
+
children: {},
|
|
21
|
+
disabled: {
|
|
22
|
+
control: { type: 'boolean' },
|
|
23
|
+
},
|
|
24
|
+
variant: {
|
|
25
|
+
type: 'select',
|
|
26
|
+
options: variants,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
parameters: {
|
|
30
|
+
docs: {
|
|
31
|
+
description: {
|
|
32
|
+
component: `
|
|
33
|
+
A button draws attention to important actions with a large selectable surface.
|
|
34
|
+
|
|
35
|
+
## Guidance
|
|
36
|
+
|
|
37
|
+
### When to use the button component
|
|
38
|
+
|
|
39
|
+
**Important actions**. Use buttons for the most important actions you want users to take on your site, such as Download, Toggle states or submitting forms.
|
|
40
|
+
|
|
41
|
+
### When to consider something else
|
|
42
|
+
|
|
43
|
+
Linking between a site’s pages. Use regular links instead.
|
|
44
|
+
If the action is less popular or less important. Less popular or less important actions may be visually styled as links.
|
|
45
|
+
|
|
46
|
+
### Usability guidance
|
|
47
|
+
|
|
48
|
+
- Keep button text short. Button text should be as short as possible with action words that clearly explain what will happen when the button is selected (for example, Download, View, or Sign up).
|
|
49
|
+
|
|
50
|
+
### Accessibility
|
|
51
|
+
|
|
52
|
+
- Buttons should display a visible focus state when users tab to them.
|
|
53
|
+
|
|
54
|
+
- Screen readers handle buttons and links differently. When styling links to look like buttons, remember that screen readers handle links slightly differently than they do buttons. Pressing the Space key triggers a button, but pressing the Enter key triggers a link.
|
|
55
|
+
|
|
56
|
+
- Icons can be helpful. Consider adding an icon to signal specific actions (Download, Open in a new window, etc).
|
|
57
|
+
|
|
58
|
+
-------
|
|
59
|
+
|
|
60
|
+
This documentation is heavily inspired by the [U.S Web Design System (USWDS)](https://designsystem.digital.gov/components/button/#package). We use USWDS as trusted source of truth for accessibility and usability best practices.
|
|
61
|
+
|
|
62
|
+
## Component Properties
|
|
63
|
+
`,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const Template = args => (
|
|
70
|
+
<React.Fragment>
|
|
71
|
+
<Button { ...args }>Primary</Button>
|
|
72
|
+
|
|
73
|
+
<Button variant="secondary" sx={ { ml: 2 } } { ...args }>
|
|
74
|
+
Secondary
|
|
75
|
+
</Button>
|
|
76
|
+
|
|
77
|
+
<Button variant="tertiary" sx={ { ml: 2 } } { ...args }>
|
|
78
|
+
Tertiary
|
|
79
|
+
</Button>
|
|
80
|
+
|
|
81
|
+
<Button variant="ghost" sx={ { ml: 2 } } { ...args }>
|
|
82
|
+
Ghost
|
|
83
|
+
</Button>
|
|
84
|
+
|
|
85
|
+
<Button variant="display" sx={ { ml: 2 } } { ...args }>
|
|
86
|
+
Display
|
|
87
|
+
</Button>
|
|
88
|
+
|
|
89
|
+
<Button variant="danger" sx={ { ml: 2 } } { ...args }>
|
|
90
|
+
Danger
|
|
91
|
+
</Button>
|
|
92
|
+
|
|
93
|
+
<Button variant="text" sx={ { ml: 2 } } as="a" href="https://google/com" { ...args }>
|
|
94
|
+
Button link
|
|
95
|
+
</Button>
|
|
96
|
+
|
|
97
|
+
<Button variant="icon" sx={ { ml: 2 } } type="button" { ...args }>
|
|
98
|
+
<BiCalendarHeart size={ 24 } />
|
|
99
|
+
<ScreenReaderText>domain.com</ScreenReaderText>
|
|
100
|
+
</Button>
|
|
101
|
+
|
|
102
|
+
<div sx={ { maxWidth: '100px', mt: 3 } }>
|
|
103
|
+
<Button variant="secondary" href="https://google/com" { ...args }>
|
|
104
|
+
Button with constrained width
|
|
105
|
+
</Button>
|
|
106
|
+
</div>
|
|
107
|
+
</React.Fragment>
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
export const Default = Template.bind( {} );
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import React, { useCallback, forwardRef, Ref } from 'react';
|
|
5
|
+
import { Theme, Button as ThemeButton, ButtonProps as ThemeButtonProps } from 'theme-ui';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
|
|
8
|
+
type ButtonClickType = React.MouseEvent< HTMLButtonElement, MouseEvent >;
|
|
9
|
+
|
|
10
|
+
interface ButtonTheme extends Theme {
|
|
11
|
+
outline?: Record< string, string >;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ButtonProps extends ThemeButtonProps {
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
onClick?: ( event: ButtonClickType ) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const Button = forwardRef< HTMLButtonElement, ButtonProps >(
|
|
20
|
+
( { className, disabled, onClick, sx, ...rest }: ButtonProps, ref: Ref< HTMLButtonElement > ) => {
|
|
21
|
+
const handleOnClick = useCallback(
|
|
22
|
+
( event: ButtonClickType ) => {
|
|
23
|
+
if ( disabled ) {
|
|
24
|
+
return event.preventDefault();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if ( onClick ) {
|
|
28
|
+
return onClick( event );
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
[ disabled, onClick ]
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<ThemeButton
|
|
36
|
+
sx={ {
|
|
37
|
+
verticalAlign: 'middle',
|
|
38
|
+
display: 'inline-flex',
|
|
39
|
+
alignItems: 'center',
|
|
40
|
+
justifyContent: 'center',
|
|
41
|
+
minHeight: '36px',
|
|
42
|
+
py: 0,
|
|
43
|
+
textDecoration: 'none',
|
|
44
|
+
'&:hover': {
|
|
45
|
+
textDecoration: 'none',
|
|
46
|
+
},
|
|
47
|
+
'&:focus-visible': ( theme: ButtonTheme ) => theme.outline,
|
|
48
|
+
'&[aria-disabled="true"]': {
|
|
49
|
+
opacity: 0.7,
|
|
50
|
+
cursor: 'not-allowed',
|
|
51
|
+
pointerEvents: 'all',
|
|
52
|
+
},
|
|
53
|
+
...sx,
|
|
54
|
+
} }
|
|
55
|
+
{ ...rest }
|
|
56
|
+
aria-disabled={ disabled }
|
|
57
|
+
onClick={ handleOnClick }
|
|
58
|
+
className={ classNames( 'vip-button-component', className ) }
|
|
59
|
+
ref={ ref }
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
Button.displayName = 'Button';
|
|
66
|
+
|
|
67
|
+
export { Button };
|
|
@@ -18,7 +18,7 @@ describe( '<Card />', () => {
|
|
|
18
18
|
expect( screen.getByText( 'This is a Card' ) ).toBeInTheDocument();
|
|
19
19
|
|
|
20
20
|
// Check for accessibility issues
|
|
21
|
-
|
|
21
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
22
22
|
} );
|
|
23
23
|
|
|
24
24
|
it( 'renders the Card component with a different variant', async () => {
|
|
@@ -27,6 +27,6 @@ describe( '<Card />', () => {
|
|
|
27
27
|
expect( screen.getByText( 'Card text' ) ).toBeInTheDocument();
|
|
28
28
|
|
|
29
29
|
// Check for accessibility issues
|
|
30
|
-
|
|
30
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
31
31
|
} );
|
|
32
32
|
} );
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { forwardRef, Ref } from 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { Box } from '..';
|
|
10
|
+
import classNames, { Argument } from 'classnames';
|
|
11
|
+
import { BoxProps } from 'theme-ui';
|
|
12
|
+
|
|
13
|
+
export interface CardProps {
|
|
14
|
+
variant?: string;
|
|
15
|
+
sx?: BoxProps[ 'sx' ];
|
|
16
|
+
className?: Argument;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type CardBoxProps = CardProps & BoxProps;
|
|
20
|
+
|
|
21
|
+
export const Card = forwardRef< HTMLElement, CardBoxProps >(
|
|
22
|
+
(
|
|
23
|
+
{ variant = 'primary', sx = {}, className, ...props }: CardBoxProps,
|
|
24
|
+
ref: Ref< HTMLElement >
|
|
25
|
+
) => (
|
|
26
|
+
<Box
|
|
27
|
+
ref={ ref }
|
|
28
|
+
sx={ {
|
|
29
|
+
// pass variant prop to sx
|
|
30
|
+
variant: `cards.${ variant }`,
|
|
31
|
+
overflow: 'hidden',
|
|
32
|
+
...sx,
|
|
33
|
+
} }
|
|
34
|
+
className={ classNames( 'vip-card-component', className ) }
|
|
35
|
+
{ ...props }
|
|
36
|
+
/>
|
|
37
|
+
)
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
Card.displayName = 'Card';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import type { StoryObj } from '@storybook/react';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { Code } from '..';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
title: 'Code',
|
|
14
|
+
component: Code,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type Story = StoryObj< typeof Code >;
|
|
18
|
+
|
|
19
|
+
export const DefaultWithTime: Story = {
|
|
20
|
+
render: () => (
|
|
21
|
+
<Code
|
|
22
|
+
children={
|
|
23
|
+
<>
|
|
24
|
+
<time sx={ { color: 'logs.text.secondary' } } dateTime="2022-01-01 15:15:15">
|
|
25
|
+
15:16
|
|
26
|
+
</time>{ ' ' }
|
|
27
|
+
Code
|
|
28
|
+
</>
|
|
29
|
+
}
|
|
30
|
+
/>
|
|
31
|
+
),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const DefaultWithIcon: Story = {
|
|
35
|
+
render: () => <Code showCopy={ true }>Code with Icon</Code>,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const DefaultWithConsoleInfo: Story = {
|
|
39
|
+
render: () => (
|
|
40
|
+
<Code showCopy={ true } onCopy={ () => global.alert( 'Hello world' ) }>
|
|
41
|
+
Code with Icon and Click callback — console.info
|
|
42
|
+
</Code>
|
|
43
|
+
),
|
|
44
|
+
};
|
|
@@ -16,7 +16,9 @@ const defaultProps = {
|
|
|
16
16
|
// Mock navigator.clipboard because jsdom doesn't support it
|
|
17
17
|
Object.defineProperty( window.navigator, 'clipboard', {
|
|
18
18
|
value: {
|
|
19
|
-
writeText: () => {
|
|
19
|
+
writeText: () => {
|
|
20
|
+
return Promise.resolve();
|
|
21
|
+
},
|
|
20
22
|
},
|
|
21
23
|
} );
|
|
22
24
|
|
|
@@ -27,7 +29,7 @@ describe( '<Code />', () => {
|
|
|
27
29
|
expect( screen.getByText( 'This is a code' ) ).toBeInTheDocument();
|
|
28
30
|
|
|
29
31
|
// Check for accessibility issues
|
|
30
|
-
|
|
32
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
31
33
|
} );
|
|
32
34
|
|
|
33
35
|
it( 'renders the Code component with a copy button', async () => {
|
|
@@ -37,7 +39,7 @@ describe( '<Code />', () => {
|
|
|
37
39
|
expect( screen.getByRole( 'button', { name: 'Copy code' } ) ).toBeInTheDocument();
|
|
38
40
|
|
|
39
41
|
// Check for accessibility issues
|
|
40
|
-
|
|
42
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
41
43
|
} );
|
|
42
44
|
|
|
43
45
|
it( 'updates the the UI after clicking on "Copy"', async () => {
|
|
@@ -51,6 +53,6 @@ describe( '<Code />', () => {
|
|
|
51
53
|
expect( screen.getByText( 'Code copied to clipboard' ) ).toBeInTheDocument();
|
|
52
54
|
|
|
53
55
|
// Check for accessibility issues
|
|
54
|
-
|
|
56
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
55
57
|
} );
|
|
56
58
|
} );
|
|
@@ -3,14 +3,21 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* External dependencies
|
|
5
5
|
*/
|
|
6
|
-
import React, {
|
|
7
|
-
import classNames from 'classnames';
|
|
8
|
-
import PropTypes from 'prop-types';
|
|
6
|
+
import React, { ReactNode, createRef, useState } from 'react';
|
|
7
|
+
import classNames, { Argument } from 'classnames';
|
|
9
8
|
import { MdContentCopy } from 'react-icons/md';
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
export interface CodeProps {
|
|
11
|
+
prompt?: boolean;
|
|
12
|
+
showCopy?: boolean;
|
|
13
|
+
onCopy?: () => void;
|
|
14
|
+
className?: Argument;
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const Code = React.forwardRef< HTMLDivElement, CodeProps >(
|
|
19
|
+
( { prompt = false, showCopy = false, onCopy, className, ...props }: CodeProps, forwardRef ) => {
|
|
20
|
+
const ref = createRef< HTMLElement >();
|
|
14
21
|
|
|
15
22
|
const codeDom = (
|
|
16
23
|
<code
|
|
@@ -46,6 +53,19 @@ const Code = React.forwardRef(
|
|
|
46
53
|
return codeDom;
|
|
47
54
|
}
|
|
48
55
|
|
|
56
|
+
const onClickCopy = () => {
|
|
57
|
+
window.navigator.clipboard
|
|
58
|
+
.writeText( ref.current?.innerText ?? '' )
|
|
59
|
+
.then( () => {
|
|
60
|
+
setCopied( true );
|
|
61
|
+
|
|
62
|
+
if ( onCopy ) {
|
|
63
|
+
onCopy();
|
|
64
|
+
}
|
|
65
|
+
} )
|
|
66
|
+
.catch( () => {} );
|
|
67
|
+
};
|
|
68
|
+
|
|
49
69
|
return (
|
|
50
70
|
<div
|
|
51
71
|
sx={ {
|
|
@@ -74,15 +94,7 @@ const Code = React.forwardRef(
|
|
|
74
94
|
cursor: 'pointer',
|
|
75
95
|
},
|
|
76
96
|
} }
|
|
77
|
-
onClick={
|
|
78
|
-
window.navigator.clipboard.writeText( ref.current?.innerText );
|
|
79
|
-
|
|
80
|
-
setCopied( true );
|
|
81
|
-
|
|
82
|
-
if ( onCopy ) {
|
|
83
|
-
onCopy();
|
|
84
|
-
}
|
|
85
|
-
} }
|
|
97
|
+
onClick={ onClickCopy }
|
|
86
98
|
>
|
|
87
99
|
{ copied ? (
|
|
88
100
|
<span role="alert">Code copied to clipboard</span>
|
|
@@ -98,11 +110,4 @@ const Code = React.forwardRef(
|
|
|
98
110
|
|
|
99
111
|
Code.displayName = 'Code';
|
|
100
112
|
|
|
101
|
-
Code.propTypes = {
|
|
102
|
-
prompt: PropTypes.bool,
|
|
103
|
-
showCopy: PropTypes.bool,
|
|
104
|
-
onCopy: PropTypes.func,
|
|
105
|
-
className: PropTypes.any,
|
|
106
|
-
};
|
|
107
|
-
|
|
108
113
|
export { Code };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { forwardRef, Ref } from 'react';
|
|
5
|
+
import { Flex as ThemeFlex, FlexProps as ThemeFlexProps } from 'theme-ui';
|
|
6
|
+
|
|
7
|
+
export const Flex = forwardRef< HTMLElement, ThemeFlexProps >(
|
|
8
|
+
( props: ThemeFlexProps, ref: Ref< HTMLElement > ) => <ThemeFlex ref={ ref } { ...props } />
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
Flex.displayName = 'Flex';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { Grid as ThemeGrid, GridProps as ThemeGridProps } from 'theme-ui';
|
|
5
|
+
import { forwardRef, Ref } from 'react';
|
|
6
|
+
|
|
7
|
+
export const Grid = forwardRef< HTMLDivElement, ThemeGridProps >(
|
|
8
|
+
( props: ThemeGridProps, ref: Ref< HTMLDivElement > ) => <ThemeGrid { ...props } ref={ ref } />
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
Grid.displayName = 'Grid';
|
|
@@ -1,26 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
HeadingProps as ThemeHeadingProps,
|
|
8
|
-
ThemeUIStyleObject,
|
|
9
|
-
} from 'theme-ui';
|
|
10
|
-
import classNames, { Argument } from 'classnames';
|
|
4
|
+
import { forwardRef, Ref } from 'react';
|
|
5
|
+
import { Heading as ThemeHeading, HeadingProps as ThemeHeadingProps } from 'theme-ui';
|
|
6
|
+
import classNames from 'classnames';
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// exposes them in Storybook's controls panel.
|
|
15
|
-
export interface HeadingProps extends Omit< ThemeHeadingProps, 'className' > {
|
|
16
|
-
className?: Argument;
|
|
17
|
-
sx?: ThemeUIStyleObject;
|
|
18
|
-
variant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
8
|
+
export interface HeadingProps extends ThemeHeadingProps {
|
|
9
|
+
variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
19
10
|
}
|
|
20
11
|
|
|
21
|
-
export const Heading =
|
|
22
|
-
( { variant = 'h3', sx, className, ...rest }, ref: Ref< HTMLHeadingElement > ) => (
|
|
12
|
+
export const Heading = forwardRef< HTMLHeadingElement, HeadingProps >(
|
|
13
|
+
( { variant = 'h3', sx, className, ...rest }: HeadingProps, ref: Ref< HTMLHeadingElement > ) => (
|
|
23
14
|
<ThemeHeading
|
|
15
|
+
as={ variant }
|
|
24
16
|
sx={ {
|
|
25
17
|
color: 'heading',
|
|
26
18
|
// pass variant prop to sx
|
|
@@ -29,7 +21,6 @@ export const Heading = React.forwardRef< HTMLHeadingElement, HeadingProps >(
|
|
|
29
21
|
} }
|
|
30
22
|
className={ classNames( 'vip-heading-component', className ) }
|
|
31
23
|
ref={ ref }
|
|
32
|
-
variant={ variant }
|
|
33
24
|
{ ...rest }
|
|
34
25
|
/>
|
|
35
26
|
)
|