@nypl/design-system-react-components 0.23.4 → 0.25.1
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 +98 -1
- package/README.md +46 -11
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +6 -13
- package/dist/components/Button/ButtonTypes.d.ts +5 -3
- package/dist/components/Card/Card.d.ts +59 -10
- package/dist/components/Card/CardTypes.d.ts +19 -0
- package/dist/components/CardEdition/CardEdition.d.ts +21 -0
- package/dist/components/{StyleGuide/Colors.stories.d.ts → CardEdition/CardEdition.stories.d.ts} +5 -2
- package/dist/components/Checkbox/Checkbox.d.ts +21 -16
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/DatePicker/DatePicker.d.ts +79 -0
- package/dist/components/DatePicker/DatePickerTypes.d.ts +5 -0
- package/dist/components/Form/Form.d.ts +16 -8
- package/dist/components/Form/FormTypes.d.ts +2 -0
- package/dist/components/Grid/GridTypes.d.ts +9 -0
- package/dist/components/Grid/SimpleGrid.d.ts +14 -0
- package/dist/components/Heading/Heading.d.ts +9 -11
- package/dist/components/Heading/{HeadingDisplaySizes.d.ts → HeadingTypes.d.ts} +8 -0
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +2 -1
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/Icons/Icon.d.ts +13 -16
- package/dist/components/Icons/IconSvgs.d.ts +4 -0
- package/dist/components/Icons/IconTypes.d.ts +78 -60
- package/dist/components/Image/Image.stories.d.ts +2 -1
- package/dist/components/Label/Label.d.ts +10 -26
- package/dist/components/Link/Link.d.ts +8 -12
- package/dist/components/List/List.stories.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +30 -24
- package/dist/components/RadioGroup/RadioGroup.d.ts +40 -0
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +4 -0
- package/dist/components/SearchBar/SearchBar.d.ts +45 -27
- package/dist/components/Select/Select.d.ts +34 -35
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/Tabs/Tabs.d.ts +25 -0
- package/dist/components/Template/Template.d.ts +91 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/Text/TextTypes.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +37 -30
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/design-system-react-components.cjs.development.js +4102 -917
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +4023 -920
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +23 -5
- package/dist/resources.scss +133 -24
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +25 -0
- package/dist/theme/components/breadcrumb.d.ts +90 -0
- package/dist/theme/components/button.d.ts +109 -0
- package/dist/theme/components/checkbox.d.ts +91 -0
- package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
- package/dist/theme/components/customRadioGroup.d.ts +18 -0
- package/dist/theme/components/global.d.ts +55 -0
- package/dist/theme/components/globalMixins.d.ts +15 -0
- package/dist/theme/components/heading.d.ts +110 -0
- package/dist/theme/components/hero.d.ts +492 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/label.d.ts +16 -0
- package/dist/theme/components/link.d.ts +45 -0
- package/dist/theme/components/radio.d.ts +95 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +58 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +85 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +20 -0
- package/dist/theme/components/textInput.d.ts +105 -0
- package/dist/theme/foundations/breakpoints.d.ts +23 -0
- package/dist/theme/foundations/colors.d.ts +3 -0
- package/dist/theme/foundations/global.d.ts +23 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +77 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +5 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +9 -2
- package/src/components/Accordion/Accordion.stories.mdx +233 -33
- package/src/components/Accordion/Accordion.test.tsx +135 -19
- package/src/components/Accordion/Accordion.tsx +81 -56
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
- package/src/components/Autosuggest/_Autosuggest.scss +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +57 -56
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
- package/src/components/Button/Button.stories.mdx +125 -138
- package/src/components/Button/Button.test.tsx +65 -11
- package/src/components/Button/Button.tsx +72 -68
- package/src/components/Button/ButtonTypes.tsx +4 -2
- package/src/components/Button/_Button.scss +7 -92
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +58 -3
- package/src/components/Card/Card.stories.mdx +694 -0
- package/src/components/Card/Card.test.tsx +97 -102
- package/src/components/Card/Card.tsx +182 -31
- package/src/components/Card/CardTypes.tsx +21 -0
- package/src/components/Card/_Card.scss +234 -49
- package/src/components/{Card/Card.stories.tsx → CardEdition/CardEdition.stories.tsx} +32 -22
- package/src/components/CardEdition/CardEdition.test.tsx +395 -0
- package/src/components/CardEdition/CardEdition.tsx +60 -0
- package/src/components/CardEdition/_CardEdition.scss +138 -0
- package/src/components/Chakra/Box.stories.mdx +57 -0
- package/src/components/Chakra/Center.stories.mdx +99 -0
- package/src/components/Chakra/Grid.stories.mdx +79 -0
- package/src/components/Chakra/Stack.stories.mdx +93 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +57 -35
- package/src/components/Checkbox/Checkbox.test.tsx +117 -147
- package/src/components/Checkbox/Checkbox.tsx +76 -50
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +325 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +284 -0
- package/src/components/DatePicker/DatePicker.test.tsx +657 -0
- package/src/components/DatePicker/DatePicker.tsx +396 -0
- package/src/components/DatePicker/DatePickerTypes.tsx +5 -0
- package/src/components/DatePicker/_DatePicker.scss +76 -0
- package/src/components/Form/Form.stories.mdx +130 -27
- package/src/components/Form/Form.test.tsx +78 -36
- package/src/components/Form/Form.tsx +53 -19
- package/src/components/Form/FormTypes.tsx +3 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +38 -0
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
- package/src/components/Grid/SimpleGrid.test.tsx +66 -0
- package/src/components/Grid/SimpleGrid.tsx +37 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
- package/src/components/Heading/Heading.stories.mdx +63 -33
- package/src/components/Heading/Heading.test.tsx +24 -16
- package/src/components/Heading/Heading.tsx +54 -38
- package/src/components/Heading/{HeadingDisplaySizes.tsx → HeadingTypes.tsx} +9 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +2 -1
- package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
- package/src/components/Hero/Hero.stories.mdx +195 -85
- package/src/components/Hero/Hero.test.tsx +544 -113
- package/src/components/Hero/Hero.tsx +80 -93
- package/src/components/Hero/HeroTypes.tsx +17 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -1
- package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
- package/src/components/Icons/Icon.stories.mdx +89 -74
- package/src/components/Icons/Icon.test.tsx +30 -22
- package/src/components/Icons/Icon.tsx +63 -61
- package/src/components/Icons/IconSvgs.tsx +8 -0
- package/src/components/Icons/IconTypes.tsx +80 -60
- package/src/components/Image/Image.stories.tsx +2 -1
- package/src/components/Input/_Input.scss +2 -2
- package/src/components/Label/Label.stories.mdx +77 -0
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +28 -45
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +47 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +114 -100
- package/src/components/List/List.stories.mdx +7 -3
- package/src/components/List/List.stories.tsx +14 -9
- package/src/components/List/List.test.tsx +12 -8
- package/src/components/List/List.tsx +9 -7
- package/src/components/List/_List.scss +3 -3
- package/src/components/Modal/Modal.stories.mdx +7 -3
- package/src/components/Modal/_Modal.scss +1 -1
- package/src/components/Notification/Notification.stories.mdx +99 -65
- package/src/components/Notification/Notification.test.tsx +3 -16
- package/src/components/Notification/Notification.tsx +12 -12
- package/src/components/Notification/_Notification.scss +5 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +1 -1
- package/src/components/Pagination/Pagination.stories.mdx +7 -1
- package/src/components/Pagination/Pagination.test.tsx +16 -10
- package/src/components/Radio/Radio.stories.mdx +57 -46
- package/src/components/Radio/Radio.test.tsx +92 -138
- package/src/components/Radio/Radio.tsx +70 -69
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +250 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +247 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +327 -0
- package/src/components/RadioGroup/RadioGroup.tsx +154 -0
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +4 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1101 -0
- package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +196 -224
- package/src/components/SearchBar/SearchBar.tsx +151 -46
- package/src/components/Select/Select.stories.mdx +193 -168
- package/src/components/Select/Select.test.tsx +129 -324
- package/src/components/Select/Select.tsx +120 -160
- package/src/components/Select/SelectTypes.tsx +4 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +18 -29
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
- package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
- package/src/components/StatusBadge/StatusBadge.tsx +24 -25
- package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +112 -90
- package/src/components/StyleGuide/Buttons.stories.mdx +98 -100
- package/src/components/StyleGuide/Colors.stories.mdx +336 -0
- package/src/components/StyleGuide/Forms.stories.mdx +85 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +86 -93
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -1
- package/src/components/StyleGuide/Typography.stories.mdx +164 -166
- package/src/components/StyleGuide/UIDocCard.tsx +4 -4
- package/src/components/Tabs/Tabs.stories.mdx +221 -0
- package/src/components/Tabs/Tabs.test.tsx +264 -0
- package/src/components/Tabs/Tabs.tsx +220 -0
- package/src/components/Template/Template.stories.mdx +574 -0
- package/src/components/Template/Template.test.tsx +124 -0
- package/src/components/Template/Template.tsx +226 -0
- package/src/components/Text/Text.stories.mdx +70 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +55 -0
- package/src/components/Text/TextTypes.tsx +6 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
- package/src/components/TextInput/TextInput.stories.mdx +90 -90
- package/src/components/TextInput/TextInput.test.tsx +103 -83
- package/src/components/TextInput/TextInput.tsx +108 -91
- package/src/components/TextInput/TextInputTypes.tsx +6 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
- package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
- package/src/docs/Chakra.stories.mdx +341 -0
- package/src/docs/Intro.stories.mdx +31 -24
- package/src/index.ts +70 -5
- package/src/styles/01-colors/_colors-brand.scss +6 -4
- package/src/styles/01-colors/_colors-utility.scss +14 -15
- package/src/styles/03-space/_space-inline.scss +47 -7
- package/src/styles/03-space/_space-inset.scss +33 -5
- package/src/styles/03-space/_space-stack.scss +48 -8
- package/src/styles/base/_02-breakpoints.scss +5 -4
- package/src/styles/base/_04-base.scss +2 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles/base/_typography.scss +1 -29
- package/src/styles.scss +22 -25
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +125 -0
- package/src/theme/components/checkbox.ts +107 -0
- package/src/theme/components/customCheckboxGroup.ts +12 -0
- package/src/theme/components/customRadioGroup.ts +12 -0
- package/src/theme/components/global.ts +71 -0
- package/src/theme/components/globalMixins.ts +16 -0
- package/src/theme/components/heading.ts +72 -0
- package/src/theme/components/hero.ts +239 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/label.ts +17 -0
- package/src/theme/components/link.ts +47 -0
- package/src/theme/components/radio.ts +106 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +50 -0
- package/src/theme/components/statusBadge.ts +27 -0
- package/src/theme/components/tabs.ts +79 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +61 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +208 -0
- package/src/theme/foundations/global.ts +26 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +85 -0
- package/src/theme/foundations/typography.ts +35 -0
- package/src/theme/index.ts +88 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +56 -21
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -5
- package/dist/components/Card/Card.stories.d.ts +0 -27
- package/dist/components/Label/Label.stories.d.ts +0 -12
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/Template/Template.stories.d.ts +0 -29
- package/src/components/Accordion/Accordion.stories.tsx +0 -65
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Checkbox/_Checkbox.scss +0 -97
- package/src/components/Form/_Form.scss +0 -28
- package/src/components/Heading/_Heading.scss +0 -163
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Label/Label.stories.tsx +0 -30
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/Radio/_Radio.scss +0 -84
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -33
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -288
- package/src/components/Template/Template.stories.tsx +0 -85
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
|
@@ -1,25 +1,53 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
4
5
|
|
|
5
6
|
import StatusBadge from "./StatusBadge";
|
|
7
|
+
import { StatusBadgeTypes } from "./StatusBadgeTypes";
|
|
6
8
|
|
|
7
9
|
describe("StatusBadge Accessibility", () => {
|
|
8
10
|
it("passes axe accessibility test", async () => {
|
|
9
11
|
const { container } = render(
|
|
10
|
-
<StatusBadge
|
|
12
|
+
<StatusBadge>Registration Required</StatusBadge>
|
|
11
13
|
);
|
|
12
14
|
expect(await axe(container)).toHaveNoViolations();
|
|
13
15
|
});
|
|
14
16
|
});
|
|
15
17
|
|
|
16
|
-
describe("StatusBadge
|
|
17
|
-
it("
|
|
18
|
-
render(<StatusBadge
|
|
18
|
+
describe("StatusBadge", () => {
|
|
19
|
+
it("renders a status badge and text", () => {
|
|
20
|
+
render(<StatusBadge>Registration Required</StatusBadge>);
|
|
19
21
|
expect(screen.getByText("Registration Required")).toBeInTheDocument();
|
|
20
22
|
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
it("throws a warning when no children are passed", () => {
|
|
25
|
+
const warn = jest.spyOn(console, "warn");
|
|
26
|
+
render(<StatusBadge></StatusBadge>);
|
|
27
|
+
expect(warn).toHaveBeenCalledWith("Status Badge has no children.");
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("renders the UI snapshot correctly", () => {
|
|
31
|
+
const low = renderer
|
|
32
|
+
.create(<StatusBadge id="low">Registration Required</StatusBadge>)
|
|
33
|
+
.toJSON();
|
|
34
|
+
const medium = renderer
|
|
35
|
+
.create(
|
|
36
|
+
<StatusBadge id="medium" level={StatusBadgeTypes.Medium}>
|
|
37
|
+
Registration Required
|
|
38
|
+
</StatusBadge>
|
|
39
|
+
)
|
|
40
|
+
.toJSON();
|
|
41
|
+
const high = renderer
|
|
42
|
+
.create(
|
|
43
|
+
<StatusBadge id="high" level={StatusBadgeTypes.High}>
|
|
44
|
+
Registration Required
|
|
45
|
+
</StatusBadge>
|
|
46
|
+
)
|
|
47
|
+
.toJSON();
|
|
48
|
+
|
|
49
|
+
expect(low).toMatchSnapshot();
|
|
50
|
+
expect(medium).toMatchSnapshot();
|
|
51
|
+
expect(high).toMatchSnapshot();
|
|
24
52
|
});
|
|
25
53
|
});
|
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { Box, useStyleConfig } from "@chakra-ui/react";
|
|
3
|
+
|
|
4
|
+
import { StatusBadgeTypes } from "./StatusBadgeTypes";
|
|
5
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
3
6
|
|
|
4
7
|
export interface StatusBadgeProps {
|
|
5
|
-
/**
|
|
6
|
-
blockName?: string;
|
|
7
|
-
/** ClassName that appears in addition to "status-badge" */
|
|
8
|
+
/** Additional class for the component */
|
|
8
9
|
className?: string;
|
|
9
|
-
/**
|
|
10
|
-
|
|
10
|
+
/** ID that other components can cross reference for accessibility purposes */
|
|
11
|
+
id?: string;
|
|
12
|
+
/** Level of the status badge through StatusBadgeTypes. */
|
|
13
|
+
level?: StatusBadgeTypes;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
function StatusBadge(props: React.PropsWithChildren<StatusBadgeProps>) {
|
|
17
|
+
const {
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
id = generateUUID(),
|
|
21
|
+
level = StatusBadgeTypes.Low,
|
|
22
|
+
} = props;
|
|
23
|
+
const styles = useStyleConfig("StatusBadge", { variant: level });
|
|
21
24
|
|
|
22
|
-
if (!
|
|
23
|
-
console.warn("Status Badge has no children");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (level) {
|
|
27
|
-
statusBadgeModifiers = [level];
|
|
25
|
+
if (!children) {
|
|
26
|
+
console.warn("Status Badge has no children.");
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
return (
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
>
|
|
34
|
-
{props.children}
|
|
35
|
-
</div>
|
|
30
|
+
<Box id={id} className={className} __css={styles}>
|
|
31
|
+
{children}
|
|
32
|
+
</Box>
|
|
36
33
|
);
|
|
37
34
|
}
|
|
35
|
+
|
|
36
|
+
export default StatusBadge;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`StatusBadge renders the UI snapshot correctly 1`] = `
|
|
4
|
+
<div
|
|
5
|
+
className="css-0"
|
|
6
|
+
id="low"
|
|
7
|
+
>
|
|
8
|
+
Registration Required
|
|
9
|
+
</div>
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
exports[`StatusBadge renders the UI snapshot correctly 2`] = `
|
|
13
|
+
<div
|
|
14
|
+
className="css-0"
|
|
15
|
+
id="medium"
|
|
16
|
+
>
|
|
17
|
+
Registration Required
|
|
18
|
+
</div>
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`StatusBadge renders the UI snapshot correctly 3`] = `
|
|
22
|
+
<div
|
|
23
|
+
className="css-0"
|
|
24
|
+
id="high"
|
|
25
|
+
>
|
|
26
|
+
Registration Required
|
|
27
|
+
</div>
|
|
28
|
+
`;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Meta, Canvas } from "@storybook/addon-docs/blocks";
|
|
2
|
+
|
|
2
3
|
import SearchBar from "../SearchBar/SearchBar";
|
|
3
4
|
import Input from "../Input/Input";
|
|
4
5
|
import { InputTypes } from "../Input/InputTypes";
|
|
5
6
|
import Icon from "../Icons/Icon";
|
|
6
|
-
import { IconNames } from "../Icons/IconTypes";
|
|
7
|
+
import { IconNames, IconSizes, IconAlign } from "../Icons/IconTypes";
|
|
7
8
|
import Button from "../Button/Button";
|
|
8
9
|
import { ButtonTypes } from "../Button/ButtonTypes";
|
|
9
10
|
import HelperErrorText from "../HelperErrorText/HelperErrorText";
|
|
10
11
|
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
+
import DSProvider from "../../theme/provider";
|
|
11
13
|
|
|
12
14
|
<Meta title={getCategory("Bidirectionality")} />
|
|
13
15
|
|
|
@@ -115,97 +117,111 @@ won't hurt.
|
|
|
115
117
|
#1 - Left to right default
|
|
116
118
|
|
|
117
119
|
<Canvas>
|
|
118
|
-
<
|
|
119
|
-
<SearchBar>
|
|
120
|
-
<Input
|
|
121
|
-
ariaLabelledBy="button-ex1"
|
|
122
|
-
id="input-ex1"
|
|
123
|
-
placeholder="Item Search"
|
|
124
|
-
required={true}
|
|
125
|
-
type={InputTypes.text}
|
|
126
|
-
attributes={{
|
|
127
|
-
["aria-describedby"]: "error-helperText-ex1",
|
|
128
|
-
}}
|
|
129
|
-
/>
|
|
130
|
-
<Button buttonType={ButtonTypes.Primary} id="button-ex1" type="submit">
|
|
131
|
-
<Icon
|
|
132
|
-
name={IconNames.search}
|
|
133
|
-
decorative={true}
|
|
134
|
-
modifiers={["small", "icon-left"]}
|
|
135
|
-
/>
|
|
136
|
-
Search
|
|
137
|
-
</Button>
|
|
138
|
-
</SearchBar>
|
|
139
|
-
<HelperErrorText id="error-helperText-ex1">
|
|
140
|
-
Use a keyword or phrase to search!
|
|
141
|
-
</HelperErrorText>
|
|
142
|
-
</div>
|
|
143
|
-
</Canvas>
|
|
144
|
-
|
|
145
|
-
#2 - Right to left using `dir="rtl"`. Click on "Show code" in the following
|
|
146
|
-
block to see its code implementation.
|
|
147
|
-
|
|
148
|
-
<Canvas>
|
|
149
|
-
<div dir="rtl">
|
|
120
|
+
<DSProvider>
|
|
150
121
|
<div style={{ width: "400px" }}>
|
|
151
122
|
<SearchBar>
|
|
152
123
|
<Input
|
|
153
|
-
ariaLabelledBy="button-
|
|
154
|
-
id="input-
|
|
155
|
-
placeholder="
|
|
124
|
+
ariaLabelledBy="button-ex1"
|
|
125
|
+
id="input-ex1"
|
|
126
|
+
placeholder="Item Search"
|
|
156
127
|
required={true}
|
|
157
128
|
type={InputTypes.text}
|
|
158
129
|
attributes={{
|
|
159
|
-
["aria-describedby"]: "error-helperText-
|
|
130
|
+
["aria-describedby"]: "error-helperText-ex1",
|
|
160
131
|
}}
|
|
161
132
|
/>
|
|
162
|
-
<Button buttonType={ButtonTypes.Primary} id="button-
|
|
133
|
+
<Button buttonType={ButtonTypes.Primary} id="button-ex1" type="submit">
|
|
163
134
|
<Icon
|
|
164
|
-
name={IconNames.
|
|
165
|
-
|
|
166
|
-
|
|
135
|
+
name={IconNames.Search}
|
|
136
|
+
size={IconSizes.Small}
|
|
137
|
+
align={IconAlign.Left}
|
|
167
138
|
/>
|
|
168
|
-
|
|
139
|
+
Search
|
|
169
140
|
</Button>
|
|
170
141
|
</SearchBar>
|
|
171
|
-
<HelperErrorText id="error-helperText-
|
|
172
|
-
|
|
142
|
+
<HelperErrorText id="error-helperText-ex1">
|
|
143
|
+
Use a keyword or phrase to search!
|
|
173
144
|
</HelperErrorText>
|
|
174
145
|
</div>
|
|
175
|
-
</
|
|
146
|
+
</DSProvider>
|
|
147
|
+
</Canvas>
|
|
148
|
+
|
|
149
|
+
#2 - Right to left using `dir="rtl"`. Click on "Show code" in the following
|
|
150
|
+
block to see its code implementation.
|
|
151
|
+
|
|
152
|
+
<Canvas>
|
|
153
|
+
<DSProvider>
|
|
154
|
+
<div dir="rtl">
|
|
155
|
+
<div style={{ width: "400px" }}>
|
|
156
|
+
<SearchBar>
|
|
157
|
+
<Input
|
|
158
|
+
ariaLabelledBy="button-ex2"
|
|
159
|
+
id="input-ex2"
|
|
160
|
+
placeholder="البحث عن عنصر"
|
|
161
|
+
required={true}
|
|
162
|
+
type={InputTypes.text}
|
|
163
|
+
attributes={{
|
|
164
|
+
["aria-describedby"]: "error-helperText-ex2",
|
|
165
|
+
}}
|
|
166
|
+
/>
|
|
167
|
+
<Button
|
|
168
|
+
buttonType={ButtonTypes.Primary}
|
|
169
|
+
id="button-ex2"
|
|
170
|
+
type="submit"
|
|
171
|
+
>
|
|
172
|
+
<Icon
|
|
173
|
+
name={IconNames.Search}
|
|
174
|
+
size={IconSizes.Small}
|
|
175
|
+
align={IconAlign.Left}
|
|
176
|
+
/>
|
|
177
|
+
يبحث
|
|
178
|
+
</Button>
|
|
179
|
+
</SearchBar>
|
|
180
|
+
<HelperErrorText id="error-helperText-ex2">
|
|
181
|
+
استخدم كلمة رئيسية أو عبارة للبحث!
|
|
182
|
+
</HelperErrorText>
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
</DSProvider>
|
|
176
186
|
</Canvas>
|
|
177
187
|
|
|
178
188
|
#3 - Right to left using `direction: rtl;`. Click on "Show code" in the following
|
|
179
189
|
block to see its code implementation.
|
|
180
190
|
|
|
181
191
|
<Canvas>
|
|
182
|
-
<
|
|
183
|
-
<div style={{
|
|
184
|
-
<
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
<Button buttonType={ButtonTypes.Primary} id="button-ex3" type="submit">
|
|
196
|
-
<Icon
|
|
197
|
-
name={IconNames.search}
|
|
198
|
-
decorative={true}
|
|
199
|
-
modifiers={["small", "icon-left"]}
|
|
192
|
+
<DSProvider>
|
|
193
|
+
<div style={{ direction: "rtl" }}>
|
|
194
|
+
<div style={{ width: "400px" }}>
|
|
195
|
+
<SearchBar>
|
|
196
|
+
<Input
|
|
197
|
+
ariaLabelledBy="button-ex3"
|
|
198
|
+
id="input-ex3"
|
|
199
|
+
placeholder="البحث عن عنصر"
|
|
200
|
+
required={true}
|
|
201
|
+
type={InputTypes.text}
|
|
202
|
+
attributes={{
|
|
203
|
+
["aria-describedby"]: "error-helperText-ex3",
|
|
204
|
+
}}
|
|
200
205
|
/>
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
206
|
+
<Button
|
|
207
|
+
buttonType={ButtonTypes.Primary}
|
|
208
|
+
id="button-ex3"
|
|
209
|
+
type="submit"
|
|
210
|
+
>
|
|
211
|
+
<Icon
|
|
212
|
+
name={IconNames.Search}
|
|
213
|
+
size={IconSizes.Small}
|
|
214
|
+
align={IconAlign.Left}
|
|
215
|
+
/>
|
|
216
|
+
يبحث
|
|
217
|
+
</Button>
|
|
218
|
+
</SearchBar>
|
|
219
|
+
<HelperErrorText id="error-helperText-ex3">
|
|
220
|
+
استخدم كلمة رئيسية أو عبارة للبحث!
|
|
221
|
+
</HelperErrorText>
|
|
222
|
+
</div>
|
|
207
223
|
</div>
|
|
208
|
-
</
|
|
224
|
+
</DSProvider>
|
|
209
225
|
</Canvas>
|
|
210
226
|
|
|
211
227
|
## Component Updates
|
|
@@ -220,30 +236,36 @@ general, specifying an equal margin or padding to both sides of an element may
|
|
|
220
236
|
help reduce any visual mistakes.
|
|
221
237
|
|
|
222
238
|
<Canvas>
|
|
223
|
-
<
|
|
224
|
-
<div style={{
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
<
|
|
228
|
-
name={IconNames.search}
|
|
229
|
-
decorative={true}
|
|
230
|
-
modifiers={["small", "icon-left"]}
|
|
231
|
-
/>
|
|
232
|
-
Search
|
|
233
|
-
</Button>
|
|
234
|
-
</div>
|
|
235
|
-
<div style={{ width: "300px" }}>
|
|
236
|
-
A RTL button:
|
|
237
|
-
<div dir="rtl">
|
|
238
|
-
<Button buttonType={ButtonTypes.Primary} id="button-ex5" type="submit">
|
|
239
|
+
<DSProvider>
|
|
240
|
+
<div style={{ display: "flex", "flex-direction": "column" }}>
|
|
241
|
+
<div style={{ width: "300px" }}>
|
|
242
|
+
A regular button:
|
|
243
|
+
<Button buttonType={ButtonTypes.Primary} id="button-ex4" type="submit">
|
|
239
244
|
<Icon
|
|
240
|
-
name={IconNames.
|
|
241
|
-
|
|
242
|
-
|
|
245
|
+
name={IconNames.Search}
|
|
246
|
+
size={IconSizes.Small}
|
|
247
|
+
align={IconAlign.Left}
|
|
243
248
|
/>
|
|
244
249
|
Search
|
|
245
250
|
</Button>
|
|
246
251
|
</div>
|
|
252
|
+
<div style={{ width: "300px" }}>
|
|
253
|
+
A RTL button:
|
|
254
|
+
<div dir="rtl">
|
|
255
|
+
<Button
|
|
256
|
+
buttonType={ButtonTypes.Primary}
|
|
257
|
+
id="button-ex5"
|
|
258
|
+
type="submit"
|
|
259
|
+
>
|
|
260
|
+
<Icon
|
|
261
|
+
name={IconNames.Search}
|
|
262
|
+
size={IconSizes.Small}
|
|
263
|
+
align={IconAlign.Left}
|
|
264
|
+
/>
|
|
265
|
+
Search
|
|
266
|
+
</Button>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
247
269
|
</div>
|
|
248
|
-
</
|
|
270
|
+
</DSProvider>
|
|
249
271
|
</Canvas>
|
|
@@ -3,22 +3,22 @@ import {
|
|
|
3
3
|
Story,
|
|
4
4
|
Canvas,
|
|
5
5
|
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
6
|
Description,
|
|
8
7
|
} from "@storybook/addon-docs/blocks";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
10
9
|
|
|
11
10
|
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
-
import Button from "../Button/Button";
|
|
11
|
+
import Button, { ButtonGroup } from "../Button/Button";
|
|
13
12
|
import { ButtonTypes } from "../Button/ButtonTypes";
|
|
14
13
|
import Icon from "../Icons/Icon";
|
|
15
14
|
import {
|
|
16
|
-
IconColors,
|
|
17
15
|
IconNames,
|
|
18
16
|
IconRotationTypes,
|
|
19
17
|
IconSizes,
|
|
18
|
+
IconAlign,
|
|
20
19
|
} from "../Icons/IconTypes";
|
|
21
20
|
import getCSSVariable from "../../helpers/getCSSVariable";
|
|
21
|
+
import DSProvider from "../../theme/provider";
|
|
22
22
|
|
|
23
23
|
<Meta
|
|
24
24
|
title={getCategory("Buttons")}
|
|
@@ -60,93 +60,88 @@ For information about using the `Button` component, please see below.
|
|
|
60
60
|
- Buttons may have an icon on either the left or the right.
|
|
61
61
|
- Buttons by default are blue. However, Donation buttons are red.
|
|
62
62
|
- Buttons used for Back to Top actions have a Secondary button style with an arrow icon pointing up.
|
|
63
|
+
- When buttons are used in a set (where the user can move forward or backward), the `Primary` button is on the right and the `Secondary` button on the left (i.e. cancel = secondary, submit = primary).
|
|
63
64
|
|
|
64
65
|
## Spacing
|
|
65
66
|
|
|
66
67
|
Buttons should use `--space-xs` (0.5rem) for spacing in situations where multiple buttons are aligned in horizontal or vertical layouts. Buttons should use `--space-l` (2rem) for all other spacing situations.
|
|
67
68
|
|
|
68
|
-
<
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
name={IconNames.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
</Button>
|
|
130
|
-
</div>
|
|
131
|
-
</Preview>
|
|
69
|
+
<Canvas>
|
|
70
|
+
<DSProvider>
|
|
71
|
+
<ButtonGroup>
|
|
72
|
+
<Button
|
|
73
|
+
buttonType={ButtonTypes.Primary}
|
|
74
|
+
attributes={{
|
|
75
|
+
style: {
|
|
76
|
+
marginRight: getCSSVariable("--space-xs"),
|
|
77
|
+
},
|
|
78
|
+
}}
|
|
79
|
+
>
|
|
80
|
+
Button Text
|
|
81
|
+
</Button>
|
|
82
|
+
<Button
|
|
83
|
+
buttonType={ButtonTypes.Primary}
|
|
84
|
+
attributes={{
|
|
85
|
+
style: {
|
|
86
|
+
marginRight: getCSSVariable("--space-xs"),
|
|
87
|
+
},
|
|
88
|
+
}}
|
|
89
|
+
>
|
|
90
|
+
<Icon
|
|
91
|
+
name={IconNames.Search}
|
|
92
|
+
size={IconSizes.Small}
|
|
93
|
+
align={IconAlign.Left}
|
|
94
|
+
/>
|
|
95
|
+
Button Text
|
|
96
|
+
</Button>
|
|
97
|
+
<Button
|
|
98
|
+
buttonType={ButtonTypes.Primary}
|
|
99
|
+
attributes={{
|
|
100
|
+
style: {
|
|
101
|
+
marginRight: getCSSVariable("--space-xs"),
|
|
102
|
+
},
|
|
103
|
+
}}
|
|
104
|
+
>
|
|
105
|
+
<Icon name={IconNames.Close} size={IconSizes.Medium} />
|
|
106
|
+
</Button>
|
|
107
|
+
<Button
|
|
108
|
+
buttonType={ButtonTypes.Primary}
|
|
109
|
+
attributes={{
|
|
110
|
+
style: {
|
|
111
|
+
backgroundColor: getCSSVariable("--section-books-and-more-primary"),
|
|
112
|
+
marginRight: getCSSVariable("--space-xs"),
|
|
113
|
+
},
|
|
114
|
+
}}
|
|
115
|
+
>
|
|
116
|
+
Button Text
|
|
117
|
+
</Button>
|
|
118
|
+
<Button buttonType={ButtonTypes.Secondary}>
|
|
119
|
+
Back to Top
|
|
120
|
+
<Icon
|
|
121
|
+
name={IconNames.Arrow}
|
|
122
|
+
size={IconSizes.Small}
|
|
123
|
+
align={IconAlign.Right}
|
|
124
|
+
iconRotation={IconRotationTypes.Rotate180}
|
|
125
|
+
/>
|
|
126
|
+
</Button>
|
|
127
|
+
</ButtonGroup>
|
|
128
|
+
</DSProvider>
|
|
129
|
+
</Canvas>
|
|
132
130
|
|
|
133
131
|
## Button Types
|
|
134
132
|
|
|
135
133
|
The `buttonType` prop should be used to render various forms of the button component.
|
|
136
134
|
|
|
137
|
-
<
|
|
138
|
-
<
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
<Button buttonType={ButtonTypes.Link}>Link Button</Button>
|
|
148
|
-
</div>
|
|
149
|
-
</Preview>
|
|
135
|
+
<Canvas>
|
|
136
|
+
<DSProvider>
|
|
137
|
+
<ButtonGroup>
|
|
138
|
+
<Button buttonType={ButtonTypes.Primary}>Primary Button</Button>
|
|
139
|
+
<Button buttonType={ButtonTypes.Secondary}>Secondary Button</Button>
|
|
140
|
+
<Button buttonType={ButtonTypes.Pill}>Pill Button</Button>
|
|
141
|
+
<Button buttonType={ButtonTypes.Link}>Link Button</Button>
|
|
142
|
+
</ButtonGroup>
|
|
143
|
+
</DSProvider>
|
|
144
|
+
</Canvas>
|
|
150
145
|
|
|
151
146
|
### ButtonTypes.Primary
|
|
152
147
|
|
|
@@ -176,26 +171,29 @@ Buttons are blue by default but should be red when it is intended as a call out.
|
|
|
176
171
|
The "Back to Top" button must be of `ButtonTypes` `Secondary` and must include an up arrow icon.
|
|
177
172
|
|
|
178
173
|
<Canvas>
|
|
179
|
-
<
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
174
|
+
<DSProvider>
|
|
175
|
+
<ButtonGroup>
|
|
176
|
+
<Button
|
|
177
|
+
buttonType={ButtonTypes.Primary}
|
|
178
|
+
attributes={{
|
|
179
|
+
style: {
|
|
180
|
+
backgroundColor: getCSSVariable("--section-books-and-more-primary"),
|
|
181
|
+
},
|
|
182
|
+
}}
|
|
183
|
+
>
|
|
184
|
+
Donate to this library
|
|
185
|
+
</Button>
|
|
186
|
+
<Button buttonType={ButtonTypes.Secondary}>
|
|
187
|
+
Back to Top
|
|
188
|
+
<Icon
|
|
189
|
+
name={IconNames.Arrow}
|
|
190
|
+
iconRotation={IconRotationTypes.Rotate180}
|
|
191
|
+
size={IconSizes.Small}
|
|
192
|
+
align={IconAlign.Right}
|
|
193
|
+
/>
|
|
194
|
+
</Button>
|
|
195
|
+
</ButtonGroup>
|
|
196
|
+
</DSProvider>
|
|
199
197
|
</Canvas>
|
|
200
198
|
|
|
201
199
|
## Figma Reference
|