braid-design-system 31.2.2 → 31.4.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.
Files changed (36) hide show
  1. package/.changeset/README.md +2 -2
  2. package/.eslintrc +1 -1
  3. package/CHANGELOG.md +42 -0
  4. package/README.md +5 -5
  5. package/codemod/dist/index.js +249 -249
  6. package/codemod/dist/wrapper.js +14655 -16120
  7. package/color-mode/index.ts +10 -6
  8. package/css/index.ts +2 -0
  9. package/css/vars.docs.tsx +39 -2
  10. package/lib/components/Accordion/Accordion.docs.tsx +40 -1
  11. package/lib/components/Accordion/Accordion.gallery.tsx +25 -0
  12. package/lib/components/Accordion/Accordion.screenshots.tsx +17 -1
  13. package/lib/components/Accordion/Accordion.snippets.tsx +16 -0
  14. package/lib/components/Accordion/AccordionItem.tsx +27 -4
  15. package/lib/components/Autosuggest/Autosuggest.tsx +13 -0
  16. package/lib/components/Badge/Badge.playroom.tsx +2 -0
  17. package/lib/components/Badge/Badge.tsx +2 -0
  18. package/lib/components/Button/Button.docs.tsx +2 -2
  19. package/lib/components/MenuItem/MenuItem.docs.tsx +3 -3
  20. package/lib/components/MenuItemCheckbox/MenuItemCheckbox.docs.tsx +2 -2
  21. package/lib/components/MenuItemCheckbox/MenuItemCheckbox.gallery.tsx +1 -1
  22. package/lib/components/MenuItemDivider/MenuItemDivider.docs.tsx +2 -2
  23. package/lib/components/MenuItemDivider/MenuItemDivider.gallery.tsx +1 -1
  24. package/lib/components/MenuRenderer/MenuRenderer.css.ts +0 -5
  25. package/lib/components/MenuRenderer/MenuRenderer.docs.tsx +65 -55
  26. package/lib/components/MenuRenderer/MenuRenderer.gallery.tsx +57 -50
  27. package/lib/components/MenuRenderer/MenuRenderer.screenshots.tsx +64 -0
  28. package/lib/components/MenuRenderer/MenuRenderer.tsx +3 -6
  29. package/lib/components/MonthPicker/MonthPicker.docs.tsx +2 -2
  30. package/lib/components/OverflowMenu/OverflowMenu.docs.tsx +3 -3
  31. package/lib/components/OverflowMenu/OverflowMenu.gallery.tsx +1 -1
  32. package/lib/components/OverflowMenu/OverflowMenu.screenshots.tsx +1 -1
  33. package/lib/components/OverflowMenu/OverflowMenu.tsx +5 -1
  34. package/lib/components/Tabs/Tab.tsx +3 -2
  35. package/package.json +23 -27
  36. package/tsconfig.json +2 -4
@@ -7,6 +7,7 @@ import {
7
7
  MenuItemLink,
8
8
  Text,
9
9
  IconChevron,
10
+ Inline,
10
11
  } from '..';
11
12
  import source from '../../utils/source.macro';
12
13
 
@@ -15,68 +16,74 @@ export const galleryItems: ComponentExample[] = [
15
16
  label: 'Default',
16
17
  Example: () =>
17
18
  source(
18
- <MenuRenderer
19
- trigger={(triggerProps, { open }) => (
20
- <Box userSelect="none" cursor="pointer" {...triggerProps}>
21
- <Text>
22
- Menu{' '}
23
- <IconChevron
24
- direction={open ? 'up' : 'down'}
25
- alignY="lowercase"
26
- />
27
- </Text>
28
- </Box>
29
- )}
30
- >
31
- <MenuItem onClick={() => {}}>Button</MenuItem>
32
- <MenuItemLink href="#">Link</MenuItemLink>
33
- </MenuRenderer>,
19
+ <Inline space="none">
20
+ <MenuRenderer
21
+ trigger={(triggerProps, { open }) => (
22
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
23
+ <Text>
24
+ Menu{' '}
25
+ <IconChevron
26
+ direction={open ? 'up' : 'down'}
27
+ alignY="lowercase"
28
+ />
29
+ </Text>
30
+ </Box>
31
+ )}
32
+ >
33
+ <MenuItem onClick={() => {}}>Button</MenuItem>
34
+ <MenuItemLink href="#">Link</MenuItemLink>
35
+ </MenuRenderer>
36
+ </Inline>,
34
37
  ),
35
38
  },
36
39
  {
37
40
  label: 'Right aligned',
38
41
  Example: () =>
39
42
  source(
40
- <MenuRenderer
41
- align="right"
42
- trigger={(triggerProps, { open }) => (
43
- <Box userSelect="none" cursor="pointer" {...triggerProps}>
44
- <Text>
45
- Menu{' '}
46
- <IconChevron
47
- direction={open ? 'up' : 'down'}
48
- alignY="lowercase"
49
- />
50
- </Text>
51
- </Box>
52
- )}
53
- >
54
- <MenuItem onClick={() => {}}>Button</MenuItem>
55
- <MenuItemLink href="#">Link</MenuItemLink>
56
- </MenuRenderer>,
43
+ <Inline space="none">
44
+ <MenuRenderer
45
+ align="right"
46
+ trigger={(triggerProps, { open }) => (
47
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
48
+ <Text>
49
+ Right aligned menu{' '}
50
+ <IconChevron
51
+ direction={open ? 'up' : 'down'}
52
+ alignY="lowercase"
53
+ />
54
+ </Text>
55
+ </Box>
56
+ )}
57
+ >
58
+ <MenuItem onClick={() => {}}>Button</MenuItem>
59
+ <MenuItemLink href="#">Link</MenuItemLink>
60
+ </MenuRenderer>
61
+ </Inline>,
57
62
  ),
58
63
  },
59
64
  {
60
65
  label: 'Offset space for menu',
61
66
  Example: () =>
62
67
  source(
63
- <MenuRenderer
64
- offsetSpace={{ mobile: 'none', tablet: 'small' }}
65
- trigger={(triggerProps, { open }) => (
66
- <Box userSelect="none" cursor="pointer" {...triggerProps}>
67
- <Text>
68
- Menu{' '}
69
- <IconChevron
70
- direction={open ? 'up' : 'down'}
71
- alignY="lowercase"
72
- />
73
- </Text>
74
- </Box>
75
- )}
76
- >
77
- <MenuItem onClick={() => {}}>Button</MenuItem>
78
- <MenuItemLink href="#">Link</MenuItemLink>
79
- </MenuRenderer>,
68
+ <Inline space="none">
69
+ <MenuRenderer
70
+ offsetSpace={{ mobile: 'none', tablet: 'small' }}
71
+ trigger={(triggerProps, { open }) => (
72
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
73
+ <Text>
74
+ Menu{' '}
75
+ <IconChevron
76
+ direction={open ? 'up' : 'down'}
77
+ alignY="lowercase"
78
+ />
79
+ </Text>
80
+ </Box>
81
+ )}
82
+ >
83
+ <MenuItem onClick={() => {}}>Button</MenuItem>
84
+ <MenuItemLink href="#">Link</MenuItemLink>
85
+ </MenuRenderer>
86
+ </Inline>,
80
87
  ),
81
88
  },
82
89
  ];
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { ComponentScreenshot } from '../../../site/src/types';
3
+ import { Box, MenuRenderer, MenuItem, MenuItemLink } from '../';
4
+ import { Placeholder } from '../private/Placeholder/Placeholder';
5
+
6
+ export const screenshots: ComponentScreenshot = {
7
+ screenshotWidths: [320],
8
+ examples: [
9
+ {
10
+ label: 'Default',
11
+ Example: () => (
12
+ <Box style={{ maxWidth: '150px' }}>
13
+ <MenuRenderer
14
+ offsetSpace="small"
15
+ trigger={(triggerProps) => (
16
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
17
+ <Placeholder height={44} label="Menu trigger" />
18
+ </Box>
19
+ )}
20
+ >
21
+ <MenuItem onClick={() => {}}>Button</MenuItem>
22
+ <MenuItemLink href="#">Link</MenuItemLink>
23
+ </MenuRenderer>
24
+ </Box>
25
+ ),
26
+ },
27
+ {
28
+ label: 'Right aligned',
29
+ Example: () => (
30
+ <Box style={{ maxWidth: '150px' }}>
31
+ <MenuRenderer
32
+ align="right"
33
+ offsetSpace="small"
34
+ trigger={(triggerProps) => (
35
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
36
+ <Placeholder height={44} label="Menu trigger" />
37
+ </Box>
38
+ )}
39
+ >
40
+ <MenuItem onClick={() => {}}>Button</MenuItem>
41
+ <MenuItemLink href="#">Link</MenuItemLink>
42
+ </MenuRenderer>
43
+ </Box>
44
+ ),
45
+ },
46
+ {
47
+ label: 'Trigger grows to parent layout',
48
+ Example: () => (
49
+ <MenuRenderer
50
+ align="right"
51
+ offsetSpace="small"
52
+ trigger={(triggerProps) => (
53
+ <Box userSelect="none" cursor="pointer" {...triggerProps}>
54
+ <Placeholder height={44} label="Menu trigger" />
55
+ </Box>
56
+ )}
57
+ >
58
+ <MenuItem onClick={() => {}}>Button</MenuItem>
59
+ <MenuItemLink href="#">Link</MenuItemLink>
60
+ </MenuRenderer>
61
+ ),
62
+ },
63
+ ],
64
+ };
@@ -205,7 +205,7 @@ export const MenuRenderer = ({
205
205
  // first menu item is not highlighted automatically, but considering
206
206
  // space keyboard interactions are optional this is acceptable.
207
207
  // See Firefox bug details: https://bugzilla.mozilla.org/show_bug.cgi?id=1220143
208
- // See WAI-ARIA keyboard iteractions: https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-12
208
+ // See WAI-ARIA keyboard iteractions: https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12
209
209
  //
210
210
  // Firefox useragent check taken from the `bowser` package:
211
211
  // https://github.com/lancedikson/bowser/blob/ea8d9c54271d7b52fecd507ae8b1ba495842bc68/src/parser-browsers.js#L520
@@ -265,11 +265,8 @@ export const MenuRenderer = ({
265
265
 
266
266
  return (
267
267
  <MenuRendererContext.Provider value={true}>
268
- <Box
269
- className={styles.root}
270
- {...(data ? buildDataAttributes(data) : undefined)}
271
- >
272
- <Box display="inlineBlock" position="relative">
268
+ <Box {...(data ? buildDataAttributes(data) : undefined)}>
269
+ <Box position="relative">
273
270
  {trigger(triggerProps, { open })}
274
271
 
275
272
  <Box
@@ -70,8 +70,8 @@ const docs: ComponentDocs = {
70
70
  description: (
71
71
  <>
72
72
  <Text>
73
- Years can be restriced to a range using the <Strong>minYear</Strong>{' '}
74
- and <Strong>maxYear</Strong> props.
73
+ Years can be restricted to a range using the{' '}
74
+ <Strong>minYear</Strong> and <Strong>maxYear</Strong> props.
75
75
  </Text>
76
76
  <Text>
77
77
  By default, the years are presented in descending order, this can be
@@ -20,7 +20,7 @@ const docs: ComponentDocs = {
20
20
  category: 'Content',
21
21
  Example: () =>
22
22
  source(
23
- <Box style={{ paddingLeft: '100px', maxWidth: '200px' }}>
23
+ <Box style={{ maxWidth: '100px' }}>
24
24
  <OverflowMenu label="Options">
25
25
  <MenuItem onClick={() => {}}>Button</MenuItem>
26
26
  <MenuItemLink href="#" onClick={() => {}}>
@@ -32,7 +32,7 @@ const docs: ComponentDocs = {
32
32
  accessibility: (
33
33
  <Text>
34
34
  Follows the{' '}
35
- <TextLink href="https://www.w3.org/TR/wai-aria-practices-1.1/#menu">
35
+ <TextLink href="https://www.w3.org/TR/wai-aria-practices-1.2/#menu">
36
36
  WAI-ARIA Menu Pattern.
37
37
  </TextLink>
38
38
  </Text>
@@ -54,7 +54,7 @@ const docs: ComponentDocs = {
54
54
  Example: ({ id, getState, toggleState, showToast }) =>
55
55
  source(
56
56
  <>
57
- <Box paddingLeft="xxlarge">
57
+ <Box style={{ maxWidth: '100px' }}>
58
58
  <OverflowMenu label="Options">
59
59
  <MenuItem
60
60
  onClick={() => toggleState('confirm')}
@@ -8,7 +8,7 @@ export const galleryItems: ComponentExample[] = [
8
8
  background: 'surface',
9
9
  Example: ({ handler }) =>
10
10
  source(
11
- <Box style={{ paddingLeft: '100px', maxWidth: '200px' }}>
11
+ <Box style={{ maxWidth: '100px' }}>
12
12
  <OverflowMenu label="Options">
13
13
  <MenuItem onClick={handler}>Button</MenuItem>
14
14
  <MenuItemLink href="#" onClick={handler}>
@@ -9,7 +9,7 @@ export const screenshots: ComponentScreenshot = {
9
9
  label: 'Default',
10
10
  background: 'surface',
11
11
  Example: ({ handler }) => (
12
- <Box style={{ paddingLeft: '100px', maxWidth: '200px' }}>
12
+ <Box style={{ maxWidth: '100px' }}>
13
13
  <OverflowMenu label="Options">
14
14
  <MenuItem onClick={handler}>Button</MenuItem>
15
15
  <MenuItemLink href="#" onClick={handler}>
@@ -16,7 +16,11 @@ export const OverflowMenu = ({
16
16
  }: OverflowMenuProps) => (
17
17
  <MenuRenderer
18
18
  trigger={(triggerProps, { open }) => (
19
- <Box className={styles.triggerOffset}>
19
+ <Box
20
+ display="flex"
21
+ justifyContent="flexEnd"
22
+ className={styles.triggerOffset}
23
+ >
20
24
  <OverflowButton label={label} active={open} {...triggerProps} />
21
25
  </Box>
22
26
  )}
@@ -30,7 +30,7 @@ import buildDataAttributes, {
30
30
  } from '../private/buildDataAttributes';
31
31
  import { TabListContext } from './TabListContext';
32
32
  import { Overlay } from '../private/Overlay/Overlay';
33
- import { BadgeProps, Badge } from '../Badge/Badge';
33
+ import { BadgeProps } from '../Badge/Badge';
34
34
  import { Divider } from '../Divider/Divider';
35
35
  import { useResponsiveValue } from '../useResponsiveValue/useResponsiveValue';
36
36
  import { smoothScroll, smoothScrollIntoView } from '../private/smoothScroll';
@@ -55,7 +55,8 @@ export const Tab = ({ children, data, badge, item }: TabProps) => {
55
55
  );
56
56
 
57
57
  assert(
58
- !badge || badge.type === Badge,
58
+ // @ts-expect-error
59
+ !badge || badge.type.__isBadge__,
59
60
  `Tab badge prop can only be an instance of Badge. e.g. <Tab badge={<Badge>New</Badge>}>`,
60
61
  );
61
62
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-design-system",
3
- "version": "31.2.2",
3
+ "version": "31.4.0",
4
4
  "description": "Themeable design system for the SEEK Group",
5
5
  "main": "lib/components/index.ts",
6
6
  "sideEffects": [
@@ -11,28 +11,6 @@
11
11
  "reset/**/*",
12
12
  "*.css.ts"
13
13
  ],
14
- "scripts": {
15
- "test": "SKU_TELEMETRY=false sku test",
16
- "start": "SKU_TELEMETRY=false concurrently -n \"docs-site,playroom\" -c \"magenta,greenBright\" \"sku start\" \"playroom start\"",
17
- "lint": "SKU_TELEMETRY=false sku lint",
18
- "format": "SKU_TELEMETRY=false sku format",
19
- "generate-component-docs": "ts-node generate-component-docs",
20
- "generate-icons": "node scripts/generateIcons.js",
21
- "setup": "SKU_TELEMETRY=false sku configure && concurrently -n \"component-docs,icons\" -c \"blueBright,yellowBright\" \"yarn generate-component-docs\" \"yarn generate-icons\"",
22
- "prelint": "yarn setup",
23
- "prestart": "yarn setup",
24
- "prebuild": "yarn setup",
25
- "build-codemod": "node ./codemod/scripts/build",
26
- "build": "NODE_ENV=production SKU_TELEMETRY=false concurrently -n \"docs-site,playroom\" -c \"magenta,greenBright\" \"sku build\" \"playroom build\"",
27
- "storybook": "SKU_TELEMETRY=false sku storybook",
28
- "build-storybook": "SKU_TELEMETRY=false sku build-storybook",
29
- "deploy": "node scripts/deploy.js",
30
- "deploy-preview": "surge -p ./site/dist",
31
- "post-commit-status": "node scripts/postCommitStatus.js",
32
- "release": "yarn setup && yarn build-codemod && changeset publish && yarn build && yarn deploy",
33
- "version": "changeset version && ts-node scripts/versionComponentUpdates",
34
- "prepare": "patch-package"
35
- },
36
14
  "bin": {
37
15
  "braid-upgrade": "./codemod/dist/index.js"
38
16
  },
@@ -89,6 +67,7 @@
89
67
  "@babel/plugin-syntax-jsx": "^7.14.5",
90
68
  "@babel/plugin-syntax-typescript": "^7.14.5",
91
69
  "@babel/preset-typescript": "^7.12.7",
70
+ "@babel/runtime": "^7.16.3",
92
71
  "@changesets/cli": "^2.14.0",
93
72
  "@changesets/get-github-info": "^0.4.5",
94
73
  "@octokit/rest": "^18.0.15",
@@ -131,6 +110,7 @@
131
110
  "husky": "^4.3.8",
132
111
  "ink": "^3.0.9",
133
112
  "js-yaml": "^4.0.0",
113
+ "mini-css-extract-plugin": "^2.4.5",
134
114
  "npm-registry-client": "^8.6.0",
135
115
  "panzoom": "^9.4.2",
136
116
  "patch-package": "^6.4.7",
@@ -150,7 +130,7 @@
150
130
  "recoil": "^0.3.1",
151
131
  "renovate-config-seek": "0.4.0",
152
132
  "sanitize-html": "^2.3.2",
153
- "sku": "^11.0.1",
133
+ "sku": "^11.2.5",
154
134
  "surge": "^0.21.7",
155
135
  "svgo": "^2.4.0",
156
136
  "title-case": "^3.0.3",
@@ -159,7 +139,23 @@
159
139
  "workerpool": "^6.1.5"
160
140
  },
161
141
  "volta": {
162
- "node": "16.13.0",
163
- "yarn": "1.21.1"
142
+ "node": "16.13.0"
143
+ },
144
+ "scripts": {
145
+ "test": "SKU_TELEMETRY=false sku test",
146
+ "start": "pnpm run setup && SKU_TELEMETRY=false concurrently -n \"docs-site,playroom\" -c \"magenta,greenBright\" \"sku start\" \"playroom start\"",
147
+ "lint": "pnpm run setup && SKU_TELEMETRY=false sku lint",
148
+ "format": "SKU_TELEMETRY=false sku format",
149
+ "generate-component-docs": "ts-node generate-component-docs",
150
+ "generate-icons": "node scripts/generateIcons.js",
151
+ "setup": "SKU_TELEMETRY=false sku configure && concurrently -n \"component-docs,icons\" -c \"blueBright,yellowBright\" \"pnpm generate-component-docs\" \"pnpm generate-icons\"",
152
+ "build-codemod": "node ./codemod/scripts/build",
153
+ "build": "pnpm run setup && NODE_ENV=production SKU_TELEMETRY=false concurrently -n \"docs-site,playroom\" -c \"magenta,greenBright\" \"sku build\" \"playroom build\"",
154
+ "storybook": "SKU_TELEMETRY=false sku storybook",
155
+ "build-storybook": "SKU_TELEMETRY=false sku build-storybook",
156
+ "deploy": "node scripts/deploy.js",
157
+ "post-commit-status": "node scripts/postCommitStatus.js",
158
+ "release": "pnpm run setup && pnpm build-codemod && changeset publish && pnpm build && pnpm deploy",
159
+ "version": "changeset version && ts-node scripts/versionComponentUpdates"
164
160
  }
165
- }
161
+ }
package/tsconfig.json CHANGED
@@ -25,9 +25,7 @@
25
25
  "/home/runner/work/braid-design-system/braid-design-system/scripts",
26
26
  "/home/runner/work/braid-design-system/braid-design-system/generate-component-docs",
27
27
  "/home/runner/work/braid-design-system/braid-design-system/reset",
28
- "/home/runner/work/braid-design-system/braid-design-system/test"
29
- ],
30
- "exclude": [
31
- "/home/runner/work/braid-design-system/braid-design-system/node_modules"
28
+ "/home/runner/work/braid-design-system/braid-design-system/test",
29
+ "/home/runner/work/braid-design-system/braid-design-system/node_modules/.pnpm/sku@11.2.5_291d4f9cd3027be4911977aa20588d0b/node_modules/sku/lib/placeholder.ts"
32
30
  ]
33
31
  }