@a-type/ui 1.3.0 → 1.3.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.
Files changed (233) hide show
  1. package/dist/cjs/components/actions/ActionButton.d.ts +1 -1
  2. package/dist/cjs/components/actions/ActionButton.js +4 -4
  3. package/dist/cjs/components/actions/ActionButton.js.map +1 -1
  4. package/dist/cjs/components/box/Box.d.ts +4 -2
  5. package/dist/cjs/components/box/Box.js +9 -6
  6. package/dist/cjs/components/box/Box.js.map +1 -1
  7. package/dist/cjs/components/box/Box.stories.d.ts +1 -1
  8. package/dist/cjs/components/button/Button.d.ts +3 -2
  9. package/dist/cjs/components/button/Button.js +4 -4
  10. package/dist/cjs/components/button/Button.js.map +1 -1
  11. package/dist/cjs/components/button/Button.stories.d.ts +1 -1
  12. package/dist/cjs/components/camera/Camera.d.ts +7 -5
  13. package/dist/cjs/components/camera/Camera.js +12 -10
  14. package/dist/cjs/components/camera/Camera.js.map +1 -1
  15. package/dist/cjs/components/camera/Camera.stories.d.ts +2 -2
  16. package/dist/cjs/components/card/Card.d.ts +10 -18
  17. package/dist/cjs/components/card/Card.js +11 -10
  18. package/dist/cjs/components/card/Card.js.map +1 -1
  19. package/dist/cjs/components/checkbox/Checkbox.d.ts +2 -1
  20. package/dist/cjs/components/checkbox/Checkbox.js +3 -3
  21. package/dist/cjs/components/checkbox/Checkbox.js.map +1 -1
  22. package/dist/cjs/components/chip/Chip.d.ts +3 -2
  23. package/dist/cjs/components/chip/Chip.js +4 -5
  24. package/dist/cjs/components/chip/Chip.js.map +1 -1
  25. package/dist/cjs/components/collapsible/Collapsible.d.ts +7 -4
  26. package/dist/cjs/components/collapsible/Collapsible.js +5 -5
  27. package/dist/cjs/components/collapsible/Collapsible.js.map +1 -1
  28. package/dist/cjs/components/contextMenu/contextMenu.d.ts +7 -2
  29. package/dist/cjs/components/contextMenu/contextMenu.js +5 -5
  30. package/dist/cjs/components/contextMenu/contextMenu.js.map +1 -1
  31. package/dist/cjs/components/dialog/Dialog.d.ts +37 -19
  32. package/dist/cjs/components/dialog/Dialog.js +20 -15
  33. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  34. package/dist/cjs/components/dialog/Dialog.stories.d.ts +14 -7
  35. package/dist/cjs/components/divider/Divider.d.ts +3 -1
  36. package/dist/cjs/components/divider/Divider.js +5 -5
  37. package/dist/cjs/components/divider/Divider.js.map +1 -1
  38. package/dist/cjs/components/dropdownMenu/DropdownMenu.d.ts +6 -2
  39. package/dist/cjs/components/dropdownMenu/DropdownMenu.js +3 -4
  40. package/dist/cjs/components/dropdownMenu/DropdownMenu.js.map +1 -1
  41. package/dist/cjs/components/dropdownMenu/DropdownMenu.stories.d.ts +3 -1
  42. package/dist/cjs/components/forms/TextField.d.ts +3 -1
  43. package/dist/cjs/components/forms/TextField.js +6 -5
  44. package/dist/cjs/components/forms/TextField.js.map +1 -1
  45. package/dist/cjs/components/icon/Icon.d.ts +3 -1
  46. package/dist/cjs/components/icon/Icon.js +4 -4
  47. package/dist/cjs/components/icon/Icon.js.map +1 -1
  48. package/dist/cjs/components/infiniteLoadTrigger/InfiniteLoadTrigger.d.ts +3 -1
  49. package/dist/cjs/components/infiniteLoadTrigger/InfiniteLoadTrigger.js +6 -5
  50. package/dist/cjs/components/infiniteLoadTrigger/InfiniteLoadTrigger.js.map +1 -1
  51. package/dist/cjs/components/input/Input.d.ts +3 -1
  52. package/dist/cjs/components/input/Input.js +4 -3
  53. package/dist/cjs/components/input/Input.js.map +1 -1
  54. package/dist/cjs/components/input/Input.stories.d.ts +3 -1
  55. package/dist/cjs/components/liveUpdateTextField/LiveUpdateTextField.d.ts +3 -2
  56. package/dist/cjs/components/liveUpdateTextField/LiveUpdateTextField.js +5 -4
  57. package/dist/cjs/components/liveUpdateTextField/LiveUpdateTextField.js.map +1 -1
  58. package/dist/cjs/components/marquee/marquee.d.ts +1 -1
  59. package/dist/cjs/components/navBar/NavBar.d.ts +10 -5
  60. package/dist/cjs/components/navBar/NavBar.js +8 -7
  61. package/dist/cjs/components/navBar/NavBar.js.map +1 -1
  62. package/dist/cjs/components/popover/Popover.d.ts +13 -8
  63. package/dist/cjs/components/popover/Popover.js +5 -5
  64. package/dist/cjs/components/popover/Popover.js.map +1 -1
  65. package/dist/cjs/components/progress/Progress.d.ts +4 -3
  66. package/dist/cjs/components/progress/Progress.js +3 -4
  67. package/dist/cjs/components/progress/Progress.js.map +1 -1
  68. package/dist/cjs/components/progress/Progress.stories.d.ts +4 -3
  69. package/dist/cjs/components/scrollArea/ScrollArea.d.ts +12 -5
  70. package/dist/cjs/components/scrollArea/ScrollArea.js +12 -9
  71. package/dist/cjs/components/scrollArea/ScrollArea.js.map +1 -1
  72. package/dist/cjs/components/select/Select.d.ts +23 -13
  73. package/dist/cjs/components/select/Select.js +18 -15
  74. package/dist/cjs/components/select/Select.js.map +1 -1
  75. package/dist/cjs/components/select/Select.stories.d.ts +10 -6
  76. package/dist/cjs/components/slider/Slider.d.ts +3 -1
  77. package/dist/cjs/components/slider/Slider.js +3 -4
  78. package/dist/cjs/components/slider/Slider.js.map +1 -1
  79. package/dist/cjs/components/slider/Slider.stories.d.ts +3 -1
  80. package/dist/cjs/components/spinner/Spinner.d.ts +6 -2
  81. package/dist/cjs/components/spinner/Spinner.js +8 -6
  82. package/dist/cjs/components/spinner/Spinner.js.map +1 -1
  83. package/dist/cjs/components/switch/Switch.d.ts +3 -1
  84. package/dist/cjs/components/switch/Switch.js +15 -4
  85. package/dist/cjs/components/switch/Switch.js.map +1 -1
  86. package/dist/cjs/components/textArea/TextArea.d.ts +3 -1
  87. package/dist/cjs/components/textArea/TextArea.js +4 -3
  88. package/dist/cjs/components/textArea/TextArea.js.map +1 -1
  89. package/dist/cjs/components/textArea/TextArea.stories.d.ts +3 -1
  90. package/dist/cjs/components/tooltip/Tooltip.d.ts +3 -1
  91. package/dist/cjs/components/tooltip/Tooltip.js +3 -4
  92. package/dist/cjs/components/tooltip/Tooltip.js.map +1 -1
  93. package/dist/cjs/components/tooltip/Tooltip.stories.d.ts +3 -1
  94. package/dist/cjs/components/utility/HideWhileKeyboardOpen.d.ts +3 -1
  95. package/dist/cjs/components/utility/HideWhileKeyboardOpen.js +5 -5
  96. package/dist/cjs/components/utility/HideWhileKeyboardOpen.js.map +1 -1
  97. package/dist/cjs/components/utility/SlotDiv.d.ts +1 -1
  98. package/dist/cjs/components/utility/SlotDiv.js +4 -4
  99. package/dist/cjs/components/utility/SlotDiv.js.map +1 -1
  100. package/dist/cjs/hooks/useMergedRef.d.ts +1 -1
  101. package/dist/cjs/hooks/useMergedRef.js.map +1 -1
  102. package/dist/esm/components/actions/ActionButton.d.ts +1 -1
  103. package/dist/esm/components/actions/ActionButton.js +4 -4
  104. package/dist/esm/components/actions/ActionButton.js.map +1 -1
  105. package/dist/esm/components/box/Box.d.ts +4 -2
  106. package/dist/esm/components/box/Box.js +9 -6
  107. package/dist/esm/components/box/Box.js.map +1 -1
  108. package/dist/esm/components/box/Box.stories.d.ts +1 -1
  109. package/dist/esm/components/button/Button.d.ts +3 -2
  110. package/dist/esm/components/button/Button.js +4 -4
  111. package/dist/esm/components/button/Button.js.map +1 -1
  112. package/dist/esm/components/button/Button.stories.d.ts +1 -1
  113. package/dist/esm/components/camera/Camera.d.ts +7 -5
  114. package/dist/esm/components/camera/Camera.js +7 -7
  115. package/dist/esm/components/camera/Camera.js.map +1 -1
  116. package/dist/esm/components/camera/Camera.stories.d.ts +2 -2
  117. package/dist/esm/components/card/Card.d.ts +10 -18
  118. package/dist/esm/components/card/Card.js +6 -7
  119. package/dist/esm/components/card/Card.js.map +1 -1
  120. package/dist/esm/components/checkbox/Checkbox.d.ts +2 -1
  121. package/dist/esm/components/checkbox/Checkbox.js +3 -3
  122. package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
  123. package/dist/esm/components/chip/Chip.d.ts +3 -2
  124. package/dist/esm/components/chip/Chip.js +3 -4
  125. package/dist/esm/components/chip/Chip.js.map +1 -1
  126. package/dist/esm/components/collapsible/Collapsible.d.ts +7 -4
  127. package/dist/esm/components/collapsible/Collapsible.js +4 -5
  128. package/dist/esm/components/collapsible/Collapsible.js.map +1 -1
  129. package/dist/esm/components/contextMenu/contextMenu.d.ts +7 -2
  130. package/dist/esm/components/contextMenu/contextMenu.js +4 -5
  131. package/dist/esm/components/contextMenu/contextMenu.js.map +1 -1
  132. package/dist/esm/components/dialog/Dialog.d.ts +37 -19
  133. package/dist/esm/components/dialog/Dialog.js +16 -16
  134. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  135. package/dist/esm/components/dialog/Dialog.stories.d.ts +14 -7
  136. package/dist/esm/components/divider/Divider.d.ts +3 -1
  137. package/dist/esm/components/divider/Divider.js +4 -5
  138. package/dist/esm/components/divider/Divider.js.map +1 -1
  139. package/dist/esm/components/dropdownMenu/DropdownMenu.d.ts +6 -2
  140. package/dist/esm/components/dropdownMenu/DropdownMenu.js +3 -4
  141. package/dist/esm/components/dropdownMenu/DropdownMenu.js.map +1 -1
  142. package/dist/esm/components/dropdownMenu/DropdownMenu.stories.d.ts +3 -1
  143. package/dist/esm/components/forms/TextField.d.ts +3 -1
  144. package/dist/esm/components/forms/TextField.js +6 -6
  145. package/dist/esm/components/forms/TextField.js.map +1 -1
  146. package/dist/esm/components/icon/Icon.d.ts +3 -1
  147. package/dist/esm/components/icon/Icon.js +3 -4
  148. package/dist/esm/components/icon/Icon.js.map +1 -1
  149. package/dist/esm/components/infiniteLoadTrigger/InfiniteLoadTrigger.d.ts +3 -1
  150. package/dist/esm/components/infiniteLoadTrigger/InfiniteLoadTrigger.js +5 -5
  151. package/dist/esm/components/infiniteLoadTrigger/InfiniteLoadTrigger.js.map +1 -1
  152. package/dist/esm/components/input/Input.d.ts +3 -1
  153. package/dist/esm/components/input/Input.js +4 -4
  154. package/dist/esm/components/input/Input.js.map +1 -1
  155. package/dist/esm/components/input/Input.stories.d.ts +3 -1
  156. package/dist/esm/components/liveUpdateTextField/LiveUpdateTextField.d.ts +3 -2
  157. package/dist/esm/components/liveUpdateTextField/LiveUpdateTextField.js +4 -4
  158. package/dist/esm/components/liveUpdateTextField/LiveUpdateTextField.js.map +1 -1
  159. package/dist/esm/components/marquee/marquee.d.ts +1 -1
  160. package/dist/esm/components/navBar/NavBar.d.ts +10 -5
  161. package/dist/esm/components/navBar/NavBar.js +6 -7
  162. package/dist/esm/components/navBar/NavBar.js.map +1 -1
  163. package/dist/esm/components/popover/Popover.d.ts +13 -8
  164. package/dist/esm/components/popover/Popover.js +4 -5
  165. package/dist/esm/components/popover/Popover.js.map +1 -1
  166. package/dist/esm/components/progress/Progress.d.ts +4 -3
  167. package/dist/esm/components/progress/Progress.js +3 -4
  168. package/dist/esm/components/progress/Progress.js.map +1 -1
  169. package/dist/esm/components/progress/Progress.stories.d.ts +4 -3
  170. package/dist/esm/components/scrollArea/ScrollArea.d.ts +12 -5
  171. package/dist/esm/components/scrollArea/ScrollArea.js +10 -9
  172. package/dist/esm/components/scrollArea/ScrollArea.js.map +1 -1
  173. package/dist/esm/components/select/Select.d.ts +23 -13
  174. package/dist/esm/components/select/Select.js +16 -16
  175. package/dist/esm/components/select/Select.js.map +1 -1
  176. package/dist/esm/components/select/Select.stories.d.ts +10 -6
  177. package/dist/esm/components/slider/Slider.d.ts +3 -1
  178. package/dist/esm/components/slider/Slider.js +3 -4
  179. package/dist/esm/components/slider/Slider.js.map +1 -1
  180. package/dist/esm/components/slider/Slider.stories.d.ts +3 -1
  181. package/dist/esm/components/spinner/Spinner.d.ts +6 -2
  182. package/dist/esm/components/spinner/Spinner.js +6 -6
  183. package/dist/esm/components/spinner/Spinner.js.map +1 -1
  184. package/dist/esm/components/switch/Switch.d.ts +3 -1
  185. package/dist/esm/components/switch/Switch.js +15 -4
  186. package/dist/esm/components/switch/Switch.js.map +1 -1
  187. package/dist/esm/components/textArea/TextArea.d.ts +3 -1
  188. package/dist/esm/components/textArea/TextArea.js +4 -4
  189. package/dist/esm/components/textArea/TextArea.js.map +1 -1
  190. package/dist/esm/components/textArea/TextArea.stories.d.ts +3 -1
  191. package/dist/esm/components/tooltip/Tooltip.d.ts +3 -1
  192. package/dist/esm/components/tooltip/Tooltip.js +3 -4
  193. package/dist/esm/components/tooltip/Tooltip.js.map +1 -1
  194. package/dist/esm/components/tooltip/Tooltip.stories.d.ts +3 -1
  195. package/dist/esm/components/utility/HideWhileKeyboardOpen.d.ts +3 -1
  196. package/dist/esm/components/utility/HideWhileKeyboardOpen.js +4 -5
  197. package/dist/esm/components/utility/HideWhileKeyboardOpen.js.map +1 -1
  198. package/dist/esm/components/utility/SlotDiv.d.ts +1 -1
  199. package/dist/esm/components/utility/SlotDiv.js +3 -4
  200. package/dist/esm/components/utility/SlotDiv.js.map +1 -1
  201. package/dist/esm/hooks/useMergedRef.d.ts +1 -1
  202. package/dist/esm/hooks/useMergedRef.js.map +1 -1
  203. package/package.json +1 -1
  204. package/src/components/actions/ActionButton.tsx +45 -45
  205. package/src/components/box/Box.tsx +27 -24
  206. package/src/components/button/Button.tsx +54 -57
  207. package/src/components/camera/Camera.tsx +133 -133
  208. package/src/components/card/Card.tsx +24 -23
  209. package/src/components/checkbox/Checkbox.tsx +9 -10
  210. package/src/components/chip/Chip.tsx +9 -5
  211. package/src/components/collapsible/Collapsible.tsx +56 -54
  212. package/src/components/contextMenu/contextMenu.tsx +60 -56
  213. package/src/components/dialog/Dialog.tsx +328 -312
  214. package/src/components/divider/Divider.tsx +32 -26
  215. package/src/components/dropdownMenu/DropdownMenu.tsx +126 -123
  216. package/src/components/forms/TextField.tsx +137 -140
  217. package/src/components/icon/Icon.tsx +33 -28
  218. package/src/components/infiniteLoadTrigger/InfiniteLoadTrigger.tsx +42 -38
  219. package/src/components/input/Input.tsx +75 -81
  220. package/src/components/liveUpdateTextField/LiveUpdateTextField.tsx +134 -138
  221. package/src/components/navBar/NavBar.tsx +105 -96
  222. package/src/components/popover/Popover.tsx +84 -87
  223. package/src/components/progress/Progress.tsx +40 -34
  224. package/src/components/scrollArea/ScrollArea.tsx +102 -94
  225. package/src/components/select/Select.tsx +294 -283
  226. package/src/components/slider/Slider.tsx +58 -55
  227. package/src/components/spinner/Spinner.tsx +66 -59
  228. package/src/components/switch/Switch.tsx +31 -27
  229. package/src/components/textArea/TextArea.tsx +114 -117
  230. package/src/components/tooltip/Tooltip.tsx +68 -63
  231. package/src/components/utility/HideWhileKeyboardOpen.tsx +30 -26
  232. package/src/components/utility/SlotDiv.tsx +16 -15
  233. package/src/hooks/useMergedRef.ts +3 -1
@@ -1,26 +1,32 @@
1
- import { HTMLAttributes, forwardRef } from 'react';
2
- import { withClassName } from '../../hooks/withClassName.js';
3
- import classNames from 'clsx';
4
-
5
- const DividerBase = withClassName('div', 'w-full h-1px bg-black relative');
6
-
7
- export interface DividerProps extends HTMLAttributes<HTMLDivElement> {
8
- compensate?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
9
- padded?: boolean;
10
- }
11
-
12
- export const Divider = forwardRef<HTMLDivElement, DividerProps>(
13
- function Divider({ compensate, padded, className, ...props }, ref) {
14
- return (
15
- <DividerBase
16
- ref={ref}
17
- style={{
18
- left: compensate ? `calc(${compensate} * 0.25rem)` : undefined,
19
- width: compensate ? `calc(100% - ${compensate} * 0.5rem)` : undefined,
20
- }}
21
- {...props}
22
- className={classNames(padded && 'my-4', className)}
23
- />
24
- );
25
- },
26
- );
1
+ import classNames from 'clsx';
2
+ import { HTMLAttributes } from 'react';
3
+ import { withClassName } from '../../hooks/withClassName.js';
4
+
5
+ const DividerBase = withClassName('div', 'w-full h-1px bg-black relative');
6
+
7
+ export interface DividerProps extends HTMLAttributes<HTMLDivElement> {
8
+ compensate?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
9
+ padded?: boolean;
10
+ }
11
+
12
+ export const Divider = function Divider({
13
+ ref,
14
+ compensate,
15
+ padded,
16
+ className,
17
+ ...props
18
+ }: DividerProps & {
19
+ ref?: React.Ref<HTMLDivElement>;
20
+ }) {
21
+ return (
22
+ <DividerBase
23
+ ref={ref}
24
+ style={{
25
+ left: compensate ? `calc(${compensate} * 0.25rem)` : undefined,
26
+ width: compensate ? `calc(100% - ${compensate} * 0.5rem)` : undefined,
27
+ }}
28
+ {...props}
29
+ className={classNames(padded && 'my-4', className)}
30
+ />
31
+ );
32
+ };
@@ -1,123 +1,126 @@
1
- 'use client';
2
-
3
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
- import classNames, { clsx } from 'clsx';
5
- import { forwardRef } from 'react';
6
- import { withClassName } from '../../hooks/withClassName.js';
7
-
8
- const StyledContent = withClassName(
9
- DropdownMenuPrimitive.Content,
10
- 'min-w-220px bg-white z-menu shadow-lg rounded-xl border-default',
11
- 'layer-components:transform-origin-[var(--radix-dropdown-menu-transform-origin)]',
12
- 'layer-components:[&[data-state=open]]:animate-popover-in',
13
- 'layer-components:[&[data-state=closed]]:animate-popover-out',
14
- 'layer-components:(max-h-[var(--radix-dropdown-menu-content-available-height)])',
15
- 'important:motion-reduce:animate-none',
16
- 'will-change-transform',
17
- );
18
- const itemClassName = classNames(
19
- 'layer-components:(text-md leading-4 color-black rounded-sm flex items-center pr-4 pl-8 py-3 relative text-left select-none cursor-pointer)',
20
- 'layer-components:[&[data-disabled]]:(color-gray9 pointer-events-none)',
21
- 'layer-components:focus-visible:(bg-gray2 color-gray9)',
22
- 'layer-components:focus:outline-none',
23
- );
24
- const StyledItemBase = withClassName(DropdownMenuPrimitive.Item, itemClassName);
25
- export interface DropdownMenuItemProps
26
- extends DropdownMenuPrimitive.DropdownMenuItemProps {
27
- color?: 'default' | 'destructive';
28
- }
29
- const StyledItem = forwardRef<HTMLDivElement, DropdownMenuItemProps>(
30
- ({ className, color, ...props }, forwardedRef) => {
31
- return (
32
- <StyledItemBase
33
- {...props}
34
- className={clsx(
35
- color === 'destructive' &&
36
- 'layer-variants:(text-attention-dark hover:bg-attention-wash focus-visible:bg-attention-wash)',
37
- className,
38
- )}
39
- ref={forwardedRef}
40
- />
41
- );
42
- },
43
- );
44
- const StyledCheckboxItem = withClassName(
45
- DropdownMenuPrimitive.CheckboxItem,
46
- itemClassName,
47
- );
48
- const StyledRadioItem = withClassName(
49
- DropdownMenuPrimitive.RadioItem,
50
- itemClassName,
51
- );
52
-
53
- const StyledLabel = withClassName(
54
- DropdownMenuPrimitive.Label,
55
- 'pl-25px text-md leading-6 color-gray-9',
56
- );
57
-
58
- const StyledSeparator = withClassName(
59
- DropdownMenuPrimitive.Separator,
60
- 'h-1px bg-gray5 m-5px',
61
- );
62
-
63
- const StyledItemIndicator = withClassName(
64
- DropdownMenuPrimitive.ItemIndicator,
65
- 'absolute left-0 w-25px inline-flex items-center justify-center',
66
- );
67
-
68
- const StyledArrow = withClassName(
69
- DropdownMenuPrimitive.Arrow,
70
- 'fill-white stroke-black stroke-1',
71
- );
72
-
73
- const StyledTrigger = withClassName(
74
- DropdownMenuPrimitive.Trigger,
75
- 'select-none',
76
- );
77
-
78
- const StyledPortal = DropdownMenuPrimitive.Portal;
79
-
80
- // Exports
81
- export const DropdownMenuRoot = DropdownMenuPrimitive.Root;
82
- export const DropdownMenuTrigger = StyledTrigger;
83
- export const DropdownMenuItem = StyledItem;
84
- export const DropdownMenuCheckboxItem = StyledCheckboxItem;
85
- export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
86
- export const DropdownMenuRadioItem = StyledRadioItem;
87
- export const DropdownMenuItemIndicator = StyledItemIndicator;
88
- export const DropdownMenuLabel = StyledLabel;
89
- export const DropdownMenuSeparator = StyledSeparator;
90
- export const DropdownMenuArrow = StyledArrow;
91
-
92
- export const DropdownMenuContent = ({
93
- children,
94
- forceMount,
95
- ...props
96
- }: DropdownMenuPrimitive.DropdownMenuContentProps & {
97
- forceMount?: boolean;
98
- }) => {
99
- return (
100
- <StyledPortal forceMount={forceMount}>
101
- <StyledContent {...props}>
102
- <div className="overflow-hidden rounded-xl">{children}</div>
103
- <StyledArrow />
104
- </StyledContent>
105
- </StyledPortal>
106
- );
107
- };
108
-
109
- export const DropdownMenuItemRightSlot = withClassName('div', 'ml-auto');
110
-
111
- export const DropdownMenu = Object.assign(DropdownMenuRoot, {
112
- Content: DropdownMenuContent,
113
- Trigger: StyledTrigger,
114
- Item: StyledItem,
115
- CheckboxItem: StyledCheckboxItem,
116
- RadioGroup: DropdownMenuPrimitive.RadioGroup,
117
- RadioItem: StyledRadioItem,
118
- ItemIndicator: StyledItemIndicator,
119
- Label: StyledLabel,
120
- Separator: StyledSeparator,
121
- Arrow: StyledArrow,
122
- ItemRightSlot: DropdownMenuItemRightSlot,
123
- });
1
+ 'use client';
2
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
3
+ import classNames, { clsx } from 'clsx';
4
+ import { withClassName } from '../../hooks/withClassName.js';
5
+
6
+ const StyledContent = withClassName(
7
+ DropdownMenuPrimitive.Content,
8
+ 'min-w-220px bg-white z-menu shadow-lg rounded-xl border-default',
9
+ 'layer-components:transform-origin-[var(--radix-dropdown-menu-transform-origin)]',
10
+ 'layer-components:[&[data-state=open]]:animate-popover-in',
11
+ 'layer-components:[&[data-state=closed]]:animate-popover-out',
12
+ 'layer-components:(max-h-[var(--radix-dropdown-menu-content-available-height)])',
13
+ 'important:motion-reduce:animate-none',
14
+ 'will-change-transform',
15
+ );
16
+ const itemClassName = classNames(
17
+ 'layer-components:(text-md leading-4 color-black rounded-sm flex items-center pr-4 pl-8 py-3 relative text-left select-none cursor-pointer)',
18
+ 'layer-components:[&[data-disabled]]:(color-gray9 pointer-events-none)',
19
+ 'layer-components:focus-visible:(bg-gray2 color-gray9)',
20
+ 'layer-components:focus:outline-none',
21
+ );
22
+ const StyledItemBase = withClassName(DropdownMenuPrimitive.Item, itemClassName);
23
+ export interface DropdownMenuItemProps
24
+ extends DropdownMenuPrimitive.DropdownMenuItemProps {
25
+ color?: 'default' | 'destructive';
26
+ }
27
+ const StyledItem = ({
28
+ ref: forwardedRef,
29
+ className,
30
+ color,
31
+ ...props
32
+ }: DropdownMenuItemProps & {
33
+ ref?: React.Ref<HTMLDivElement>;
34
+ }) => {
35
+ return (
36
+ <StyledItemBase
37
+ {...props}
38
+ className={clsx(
39
+ color === 'destructive' &&
40
+ 'layer-variants:(text-attention-dark hover:bg-attention-wash focus-visible:bg-attention-wash)',
41
+ className,
42
+ )}
43
+ ref={forwardedRef}
44
+ />
45
+ );
46
+ };
47
+ const StyledCheckboxItem = withClassName(
48
+ DropdownMenuPrimitive.CheckboxItem,
49
+ itemClassName,
50
+ );
51
+ const StyledRadioItem = withClassName(
52
+ DropdownMenuPrimitive.RadioItem,
53
+ itemClassName,
54
+ );
55
+
56
+ const StyledLabel = withClassName(
57
+ DropdownMenuPrimitive.Label,
58
+ 'pl-25px text-md leading-6 color-gray-9',
59
+ );
60
+
61
+ const StyledSeparator = withClassName(
62
+ DropdownMenuPrimitive.Separator,
63
+ 'h-1px bg-gray5 m-5px',
64
+ );
65
+
66
+ const StyledItemIndicator = withClassName(
67
+ DropdownMenuPrimitive.ItemIndicator,
68
+ 'absolute left-0 w-25px inline-flex items-center justify-center',
69
+ );
70
+
71
+ const StyledArrow = withClassName(
72
+ DropdownMenuPrimitive.Arrow,
73
+ 'fill-white stroke-black stroke-1',
74
+ );
75
+
76
+ const StyledTrigger = withClassName(
77
+ DropdownMenuPrimitive.Trigger,
78
+ 'select-none',
79
+ );
80
+
81
+ const StyledPortal = DropdownMenuPrimitive.Portal;
82
+
83
+ // Exports
84
+ export const DropdownMenuRoot = DropdownMenuPrimitive.Root;
85
+ export const DropdownMenuTrigger = StyledTrigger;
86
+ export const DropdownMenuItem = StyledItem;
87
+ export const DropdownMenuCheckboxItem = StyledCheckboxItem;
88
+ export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
89
+ export const DropdownMenuRadioItem = StyledRadioItem;
90
+ export const DropdownMenuItemIndicator = StyledItemIndicator;
91
+ export const DropdownMenuLabel = StyledLabel;
92
+ export const DropdownMenuSeparator = StyledSeparator;
93
+ export const DropdownMenuArrow = StyledArrow;
94
+
95
+ export const DropdownMenuContent = ({
96
+ children,
97
+ forceMount,
98
+ ...props
99
+ }: DropdownMenuPrimitive.DropdownMenuContentProps & {
100
+ forceMount?: boolean;
101
+ }) => {
102
+ return (
103
+ <StyledPortal forceMount={forceMount}>
104
+ <StyledContent {...props}>
105
+ <div className="overflow-hidden rounded-xl">{children}</div>
106
+ <StyledArrow />
107
+ </StyledContent>
108
+ </StyledPortal>
109
+ );
110
+ };
111
+
112
+ export const DropdownMenuItemRightSlot = withClassName('div', 'ml-auto');
113
+
114
+ export const DropdownMenu = Object.assign(DropdownMenuRoot, {
115
+ Content: DropdownMenuContent,
116
+ Trigger: StyledTrigger,
117
+ Item: StyledItem,
118
+ CheckboxItem: StyledCheckboxItem,
119
+ RadioGroup: DropdownMenuPrimitive.RadioGroup,
120
+ RadioItem: StyledRadioItem,
121
+ ItemIndicator: StyledItemIndicator,
122
+ Label: StyledLabel,
123
+ Separator: StyledSeparator,
124
+ Arrow: StyledArrow,
125
+ ItemRightSlot: DropdownMenuItemRightSlot,
126
+ });
@@ -1,140 +1,137 @@
1
- 'use client';
2
-
3
- import { useField, useFormikContext } from 'formik';
4
- import {
5
- ComponentProps,
6
- InputHTMLAttributes,
7
- useEffect,
8
- useRef,
9
- Ref,
10
- forwardRef,
11
- KeyboardEvent,
12
- useCallback,
13
- } from 'react';
14
- import useMergedRef from '../../hooks/useMergedRef.js';
15
- import { Input } from '../input/Input.js';
16
- import { TextArea, TextAreaProps } from '../textArea/TextArea.js';
17
- import { withClassName } from '../../hooks.js';
18
- import { useIdOrGenerated } from '../../hooks/useIdOrGenerated.js';
19
-
20
- export type TextFieldProps = {
21
- name: string;
22
- label?: string;
23
- required?: boolean;
24
- type?: InputHTMLAttributes<HTMLInputElement>['type'];
25
- className?: string;
26
- placeholder?: string;
27
- autoComplete?: InputHTMLAttributes<HTMLInputElement>['autoComplete'];
28
- autoFocus?: InputHTMLAttributes<HTMLInputElement>['autoFocus'];
29
- autoFocusDelay?: number;
30
- inputRef?: Ref<HTMLInputElement>;
31
- } & ComponentProps<typeof Input>;
32
-
33
- const emptyRef = (() => {}) as any;
34
-
35
- export const TextField = forwardRef<HTMLDivElement, TextFieldProps>(
36
- function TextField(
37
- {
38
- name,
39
- label,
40
- className,
41
- autoFocusDelay,
42
- autoFocus,
43
- inputRef,
44
- onChange,
45
- onFocus,
46
- onBlur,
47
- id: providedId,
48
- ...rest
49
- },
50
- ref,
51
- ) {
52
- const [props] = useField({
53
- name,
54
- onChange,
55
- onFocus,
56
- onBlur,
57
- });
58
- const innerInputRef = useRef<HTMLInputElement>(null);
59
- const id = useIdOrGenerated(providedId);
60
-
61
- useEffect(() => {
62
- if (autoFocusDelay) {
63
- setTimeout(() => {
64
- if (innerInputRef.current) innerInputRef.current.focus();
65
- }, autoFocusDelay);
66
- }
67
- }, [autoFocusDelay]);
68
-
69
- return (
70
- <FieldRoot className={className} ref={ref}>
71
- {label && <FieldLabel htmlFor={id}>{label}</FieldLabel>}
72
- <Input
73
- {...props}
74
- {...rest}
75
- id={id}
76
- autoFocus={autoFocus}
77
- ref={useMergedRef(innerInputRef, inputRef || emptyRef)}
78
- />
79
- </FieldRoot>
80
- );
81
- },
82
- );
83
-
84
- export type TextAreaFieldProps = {
85
- name: string;
86
- label?: string;
87
- required?: boolean;
88
- rows?: number;
89
- disabled?: boolean;
90
- className?: string;
91
- inputRef?: Ref<HTMLTextAreaElement>;
92
- submitOnEnter?: boolean;
93
- } & TextAreaProps;
94
-
95
- export function TextAreaField({
96
- name,
97
- label,
98
- className,
99
- inputRef,
100
- onKeyDown,
101
- submitOnEnter,
102
- id: providedId,
103
- ...rest
104
- }: TextAreaFieldProps) {
105
- const [props] = useField(name);
106
- const { submitForm } = useFormikContext();
107
- const onKeyDownInner = useCallback(
108
- (e: KeyboardEvent<HTMLTextAreaElement>) => {
109
- if (submitOnEnter && e.key === 'Enter' && !e.shiftKey) {
110
- e.preventDefault();
111
- submitForm();
112
- }
113
- onKeyDown?.(e);
114
- },
115
- [submitOnEnter, onKeyDown, submitForm],
116
- );
117
- const id = useIdOrGenerated(providedId);
118
-
119
- return (
120
- <FieldRoot className={className}>
121
- {label && <FieldLabel htmlFor={id}>{label}</FieldLabel>}
122
- <TextArea
123
- ref={inputRef}
124
- {...props}
125
- {...rest}
126
- id={id}
127
- onKeyDown={onKeyDownInner}
128
- />
129
- </FieldRoot>
130
- );
131
- }
132
-
133
- export const FieldRoot = withClassName(
134
- 'div',
135
- 'flex flex-col items-stretch gap-1 self-stretch',
136
- );
137
- export const FieldLabel = withClassName(
138
- 'label',
139
- 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1',
140
- );
1
+ 'use client';
2
+
3
+ import { useField, useFormikContext } from 'formik';
4
+ import {
5
+ ComponentProps,
6
+ InputHTMLAttributes,
7
+ KeyboardEvent,
8
+ Ref,
9
+ useCallback,
10
+ useEffect,
11
+ useRef,
12
+ } from 'react';
13
+ import { withClassName } from '../../hooks.js';
14
+ import { useIdOrGenerated } from '../../hooks/useIdOrGenerated.js';
15
+ import useMergedRef from '../../hooks/useMergedRef.js';
16
+ import { Input } from '../input/Input.js';
17
+ import { TextArea, TextAreaProps } from '../textArea/TextArea.js';
18
+
19
+ export type TextFieldProps = {
20
+ name: string;
21
+ label?: string;
22
+ required?: boolean;
23
+ type?: InputHTMLAttributes<HTMLInputElement>['type'];
24
+ className?: string;
25
+ placeholder?: string;
26
+ autoComplete?: InputHTMLAttributes<HTMLInputElement>['autoComplete'];
27
+ autoFocus?: InputHTMLAttributes<HTMLInputElement>['autoFocus'];
28
+ autoFocusDelay?: number;
29
+ inputRef?: Ref<HTMLInputElement>;
30
+ } & ComponentProps<typeof Input>;
31
+
32
+ const emptyRef = (() => {}) as any;
33
+
34
+ export const TextField = function TextField({
35
+ ref,
36
+ name,
37
+ label,
38
+ className,
39
+ autoFocusDelay,
40
+ autoFocus,
41
+ inputRef,
42
+ onChange,
43
+ onFocus,
44
+ onBlur,
45
+ id: providedId,
46
+ ...rest
47
+ }: TextFieldProps & {
48
+ ref?: React.Ref<HTMLDivElement>;
49
+ }) {
50
+ const [props] = useField({
51
+ name,
52
+ onChange,
53
+ onFocus,
54
+ onBlur,
55
+ });
56
+ const innerInputRef = useRef<HTMLInputElement>(null);
57
+ const id = useIdOrGenerated(providedId);
58
+
59
+ useEffect(() => {
60
+ if (autoFocusDelay) {
61
+ setTimeout(() => {
62
+ if (innerInputRef.current) innerInputRef.current.focus();
63
+ }, autoFocusDelay);
64
+ }
65
+ }, [autoFocusDelay]);
66
+
67
+ return (
68
+ <FieldRoot className={className} ref={ref}>
69
+ {label && <FieldLabel htmlFor={id}>{label}</FieldLabel>}
70
+ <Input
71
+ {...props}
72
+ {...rest}
73
+ id={id}
74
+ autoFocus={autoFocus}
75
+ ref={useMergedRef(innerInputRef, inputRef || emptyRef)}
76
+ />
77
+ </FieldRoot>
78
+ );
79
+ };
80
+
81
+ export type TextAreaFieldProps = {
82
+ name: string;
83
+ label?: string;
84
+ required?: boolean;
85
+ rows?: number;
86
+ disabled?: boolean;
87
+ className?: string;
88
+ inputRef?: Ref<HTMLTextAreaElement>;
89
+ submitOnEnter?: boolean;
90
+ } & TextAreaProps;
91
+
92
+ export function TextAreaField({
93
+ name,
94
+ label,
95
+ className,
96
+ inputRef,
97
+ onKeyDown,
98
+ submitOnEnter,
99
+ id: providedId,
100
+ ...rest
101
+ }: TextAreaFieldProps) {
102
+ const [props] = useField(name);
103
+ const { submitForm } = useFormikContext();
104
+ const onKeyDownInner = useCallback(
105
+ (e: KeyboardEvent<HTMLTextAreaElement>) => {
106
+ if (submitOnEnter && e.key === 'Enter' && !e.shiftKey) {
107
+ e.preventDefault();
108
+ submitForm();
109
+ }
110
+ onKeyDown?.(e);
111
+ },
112
+ [submitOnEnter, onKeyDown, submitForm],
113
+ );
114
+ const id = useIdOrGenerated(providedId);
115
+
116
+ return (
117
+ <FieldRoot className={className}>
118
+ {label && <FieldLabel htmlFor={id}>{label}</FieldLabel>}
119
+ <TextArea
120
+ ref={inputRef}
121
+ {...props}
122
+ {...rest}
123
+ id={id}
124
+ onKeyDown={onKeyDownInner}
125
+ />
126
+ </FieldRoot>
127
+ );
128
+ }
129
+
130
+ export const FieldRoot = withClassName(
131
+ 'div',
132
+ 'flex flex-col items-stretch gap-1 self-stretch',
133
+ );
134
+ export const FieldLabel = withClassName(
135
+ 'label',
136
+ 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1',
137
+ );
@@ -1,28 +1,33 @@
1
- import { forwardRef, HTMLAttributes } from 'react';
2
- import classNames from 'clsx';
3
- import { IconName } from './generated/iconNames.js';
4
-
5
- export interface IconProps extends HTMLAttributes<SVGSVGElement> {
6
- name: IconName;
7
- size?: number;
8
- }
9
-
10
- export const Icon = forwardRef<SVGSVGElement, IconProps>(function Icon(
11
- { name, size = 15, className, ...rest },
12
- ref,
13
- ) {
14
- return (
15
- <svg
16
- ref={ref}
17
- className={classNames(
18
- 'flex-shrink-0 layer-components:fill-none',
19
- className,
20
- )}
21
- width={size}
22
- height={size}
23
- {...rest}
24
- >
25
- <use xlinkHref={`#icon-${name}`} />
26
- </svg>
27
- );
28
- });
1
+ import classNames from 'clsx';
2
+ import { HTMLAttributes } from 'react';
3
+ import { IconName } from './generated/iconNames.js';
4
+
5
+ export interface IconProps extends HTMLAttributes<SVGSVGElement> {
6
+ name: IconName;
7
+ size?: number;
8
+ }
9
+
10
+ export const Icon = function Icon({
11
+ ref,
12
+ name,
13
+ size = 15,
14
+ className,
15
+ ...rest
16
+ }: IconProps & {
17
+ ref?: React.Ref<SVGSVGElement>;
18
+ }) {
19
+ return (
20
+ <svg
21
+ ref={ref}
22
+ className={classNames(
23
+ 'flex-shrink-0 layer-components:fill-none',
24
+ className,
25
+ )}
26
+ width={size}
27
+ height={size}
28
+ {...rest}
29
+ >
30
+ <use xlinkHref={`#icon-${name}`} />
31
+ </svg>
32
+ );
33
+ };