@arbor-education/design-system.components 3.0.2 → 3.2.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 (89) hide show
  1. package/.github/pull_request_template.md +4 -3
  2. package/CHANGELOG.md +16 -0
  3. package/CONTRIBUTING.md +1 -0
  4. package/dist/components/formField/FormField.d.ts +34 -18
  5. package/dist/components/formField/FormField.d.ts.map +1 -1
  6. package/dist/components/formField/FormField.js +5 -1
  7. package/dist/components/formField/FormField.js.map +1 -1
  8. package/dist/components/formField/FormField.stories.d.ts +4 -0
  9. package/dist/components/formField/FormField.stories.d.ts.map +1 -1
  10. package/dist/components/formField/FormField.stories.js +314 -7
  11. package/dist/components/formField/FormField.stories.js.map +1 -1
  12. package/dist/components/formField/FormField.test.js +66 -0
  13. package/dist/components/formField/FormField.test.js.map +1 -1
  14. package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts +1 -0
  15. package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts.map +1 -1
  16. package/dist/components/formField/inputs/checkbox/CheckboxGroup.js +2 -2
  17. package/dist/components/formField/inputs/checkbox/CheckboxGroup.js.map +1 -1
  18. package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts +1 -0
  19. package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts.map +1 -1
  20. package/dist/components/formField/inputs/checkbox/CheckboxInput.js +2 -2
  21. package/dist/components/formField/inputs/checkbox/CheckboxInput.js.map +1 -1
  22. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts +1 -0
  23. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts.map +1 -1
  24. package/dist/components/formField/inputs/radio/RadioButtonGroup.js +2 -2
  25. package/dist/components/formField/inputs/radio/RadioButtonGroup.js.map +1 -1
  26. package/dist/components/formField/inputs/selectDropdown/items/item/SelectDropdownItem.d.ts +2 -2
  27. package/dist/components/formField/inputs/selectDropdown/items/item/SelectDropdownItem.d.ts.map +1 -1
  28. package/dist/components/formField/inputs/selectDropdown/items/item/SelectDropdownItem.js +0 -1
  29. package/dist/components/formField/inputs/selectDropdown/items/item/SelectDropdownItem.js.map +1 -1
  30. package/dist/components/formField/inputs/time/TimeInput.d.ts +1 -1
  31. package/dist/components/formField/inputs/time/TimeInput.stories.d.ts +1 -1
  32. package/dist/components/icon/Icon.d.ts.map +1 -1
  33. package/dist/components/icon/Icon.js +18 -3
  34. package/dist/components/icon/Icon.js.map +1 -1
  35. package/dist/components/icon/Icon.stories.d.ts +4 -2
  36. package/dist/components/icon/Icon.stories.d.ts.map +1 -1
  37. package/dist/components/icon/Icon.stories.js +150 -102
  38. package/dist/components/icon/Icon.stories.js.map +1 -1
  39. package/dist/components/icon/Icon.test.js +146 -6
  40. package/dist/components/icon/Icon.test.js.map +1 -1
  41. package/dist/components/icon/LucideIcon.d.ts +17 -0
  42. package/dist/components/icon/LucideIcon.d.ts.map +1 -0
  43. package/dist/components/icon/LucideIcon.js +73 -0
  44. package/dist/components/icon/LucideIcon.js.map +1 -0
  45. package/dist/components/icon/allowedIcons.d.ts +44 -108
  46. package/dist/components/icon/allowedIcons.d.ts.map +1 -1
  47. package/dist/components/icon/allowedIcons.js +52 -112
  48. package/dist/components/icon/allowedIcons.js.map +1 -1
  49. package/dist/components/icon/types.d.ts +5 -4
  50. package/dist/components/icon/types.d.ts.map +1 -1
  51. package/dist/components/tabs/Tabs.d.ts +1 -1
  52. package/dist/components/tabs/Tabs.stories.d.ts +1 -1
  53. package/dist/components/tabs/Tabs.stories.js +1 -1
  54. package/dist/components/tabs/Tabs.stories.js.map +1 -1
  55. package/dist/components/tabs/TabsItem.d.ts +2 -2
  56. package/dist/components/tabs/TabsItem.d.ts.map +1 -1
  57. package/dist/components/tabs/TabsItem.stories.d.ts +5 -5
  58. package/dist/components/tabs/TabsItem.stories.d.ts.map +1 -1
  59. package/dist/components/tabs/TabsItem.stories.js +7 -4
  60. package/dist/components/tabs/TabsItem.stories.js.map +1 -1
  61. package/dist/components/toggle/Toggle.d.ts +7 -1
  62. package/dist/components/toggle/Toggle.d.ts.map +1 -1
  63. package/dist/components/toggle/Toggle.js +2 -2
  64. package/dist/components/toggle/Toggle.js.map +1 -1
  65. package/dist/components/toggle/Toggle.stories.d.ts +1 -1
  66. package/dist/index.css +21 -0
  67. package/dist/index.css.map +1 -1
  68. package/package.json +1 -1
  69. package/src/components/formField/FormField.stories.tsx +398 -7
  70. package/src/components/formField/FormField.test.tsx +100 -0
  71. package/src/components/formField/FormField.tsx +46 -27
  72. package/src/components/formField/inputs/checkbox/CheckboxGroup.tsx +3 -2
  73. package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +3 -0
  74. package/src/components/formField/inputs/checkbox/checkboxInput.scss +4 -0
  75. package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +11 -1
  76. package/src/components/formField/inputs/radio/radioButtonInput.scss +8 -0
  77. package/src/components/formField/inputs/selectDropdown/items/item/SelectDropdownItem.tsx +2 -2
  78. package/src/components/icon/Icon.stories.tsx +224 -119
  79. package/src/components/icon/Icon.test.tsx +178 -6
  80. package/src/components/icon/Icon.tsx +25 -3
  81. package/src/components/icon/LucideIcon.tsx +94 -0
  82. package/src/components/icon/allowedIcons.tsx +67 -207
  83. package/src/components/icon/lucideDynamic.d.ts +13 -0
  84. package/src/components/icon/types.ts +5 -4
  85. package/src/components/tabs/Tabs.stories.tsx +1 -1
  86. package/src/components/tabs/TabsItem.stories.tsx +8 -4
  87. package/src/components/tabs/TabsItem.tsx +2 -2
  88. package/src/components/toggle/Toggle.tsx +13 -3
  89. package/src/components/toggle/toggle.scss +22 -0
@@ -9,7 +9,7 @@ import {
9
9
  } from '@storybook/addon-docs/blocks';
10
10
  import { TabsItem } from './TabsItem.js';
11
11
  import { Tabs } from './Tabs.js';
12
- import { allowedIcons } from 'Components/icon/allowedIcons';
12
+ import type { IconName } from 'Components/icon/allowedIcons';
13
13
 
14
14
  // ---------------------------------------------------------------------------
15
15
  // Docs page
@@ -93,10 +93,14 @@ const meta = {
93
93
  },
94
94
  iconName: {
95
95
  control: 'select',
96
- options: Object.keys(allowedIcons),
97
- description: 'Optional icon rendered before the label text at 16 px.',
96
+ // Any Icon name works; these are the ones that read well in a tab.
97
+ options: [
98
+ 'house', 'user', 'guardians', 'staff', 'date', 'sheet', 'table', 'settings',
99
+ 'chart-column-increasing', 'clipboard-list', 'mail', 'archive',
100
+ ] satisfies IconName[],
101
+ description: 'Optional icon rendered before the label text at 16 px. Accepts any `IconName`.',
98
102
  table: {
99
- type: { summary: 'keyof allowedIcons' },
103
+ type: { summary: 'IconName' },
100
104
  defaultValue: { summary: 'undefined' },
101
105
  },
102
106
  },
@@ -1,11 +1,11 @@
1
1
  import classNames from 'classnames';
2
- import type { allowedIcons } from 'Components/icon/allowedIcons';
2
+ import type { IconName } from 'Components/icon/allowedIcons';
3
3
  import { Icon } from 'Components/icon/Icon';
4
4
  import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes } from 'react';
5
5
 
6
6
  type TabsItemProps = {
7
7
  active?: boolean;
8
- iconName?: keyof typeof allowedIcons;
8
+ iconName?: IconName;
9
9
  } & (
10
10
  | { tabElement?: 'button'; tabElementProps?: ButtonHTMLAttributes<HTMLButtonElement> }
11
11
  | { tabElement?: 'link'; tabElementProps?: AnchorHTMLAttributes<HTMLAnchorElement> }
@@ -1,12 +1,22 @@
1
1
  import classNames from 'classnames';
2
2
  import { Switch } from 'radix-ui';
3
3
 
4
- export const Toggle = (props: Switch.SwitchProps) => {
5
- const { className, ...rest } = props;
4
+ export type ToggleProps = Switch.SwitchProps & { hasError?: boolean };
5
+
6
+ export const Toggle = (props: ToggleProps) => {
7
+ const { className, hasError, ...rest } = props;
6
8
 
7
9
  return (
8
- <Switch.Root className={classNames('ds-toggle', className)} {...rest}>
10
+ <Switch.Root
11
+ className={classNames('ds-toggle', { 'ds-toggle--error': hasError }, className)}
12
+ aria-invalid={hasError}
13
+ {...rest}
14
+ >
9
15
  <Switch.Thumb className="ds-toggle__thumb" />
10
16
  </Switch.Root>
11
17
  );
12
18
  };
19
+
20
+ export namespace Toggle {
21
+ export type Props = ToggleProps;
22
+ }
@@ -36,6 +36,28 @@
36
36
  }
37
37
  }
38
38
 
39
+ &--error {
40
+ border-color: var(--form-field-text-error-color-border);
41
+ }
42
+
43
+ &.ds-toggle--error:not(:disabled) {
44
+ &:focus,
45
+ &:hover,
46
+ &:active {
47
+ border-color: var(--form-field-text-error-color-border);
48
+ }
49
+
50
+ &[data-state="checked"] {
51
+ border-color: var(--form-field-text-error-color-border);
52
+
53
+ &:focus,
54
+ &:hover,
55
+ &:active {
56
+ border-color: var(--form-field-text-error-color-border);
57
+ }
58
+ }
59
+ }
60
+
39
61
  &[data-state="checked"] {
40
62
  background-color: var(--toggle-on-default-color-background);
41
63
  border-color: var(--toggle-on-default-color-border);