@pearpages/pulp-react 0.2.2 → 0.3.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 (156) hide show
  1. package/README.md +14 -0
  2. package/dist/accordion.js +1 -1
  3. package/dist/alert.css +18 -0
  4. package/dist/alert.css.map +1 -1
  5. package/dist/alert.js +4 -4
  6. package/dist/avatar.css +46 -0
  7. package/dist/avatar.css.map +1 -0
  8. package/dist/avatar.d.ts +41 -0
  9. package/dist/avatar.js +5 -0
  10. package/dist/avatar.js.map +1 -0
  11. package/dist/badge.css +37 -0
  12. package/dist/badge.css.map +1 -1
  13. package/dist/badge.d.ts +22 -5
  14. package/dist/badge.js +2 -1
  15. package/dist/button.css +18 -0
  16. package/dist/button.css.map +1 -1
  17. package/dist/button.d.ts +11 -2
  18. package/dist/button.js +2 -2
  19. package/dist/calendar.js +1 -1
  20. package/dist/card.js +2 -2
  21. package/dist/checkbox.js +4 -4
  22. package/dist/chip.css +95 -0
  23. package/dist/chip.css.map +1 -0
  24. package/dist/chip.d.ts +43 -0
  25. package/dist/chip.js +4 -0
  26. package/dist/chip.js.map +1 -0
  27. package/dist/{chunk-N6E2E2OY.js → chunk-2NVC3C7K.js} +3 -3
  28. package/dist/{chunk-N6E2E2OY.js.map → chunk-2NVC3C7K.js.map} +1 -1
  29. package/dist/{chunk-MF66ICX6.js → chunk-56RSH7GQ.js} +3 -3
  30. package/dist/{chunk-MF66ICX6.js.map → chunk-56RSH7GQ.js.map} +1 -1
  31. package/dist/chunk-5TYCIBLW.js +27 -0
  32. package/dist/chunk-5TYCIBLW.js.map +1 -0
  33. package/dist/chunk-7O6FTCZL.js +101 -0
  34. package/dist/chunk-7O6FTCZL.js.map +1 -0
  35. package/dist/{chunk-N4C3NQIN.js → chunk-A7TMFEQ2.js} +3 -3
  36. package/dist/{chunk-N4C3NQIN.js.map → chunk-A7TMFEQ2.js.map} +1 -1
  37. package/dist/{chunk-2NSQPN7S.js → chunk-AZAI4OVR.js} +3 -3
  38. package/dist/{chunk-2NSQPN7S.js.map → chunk-AZAI4OVR.js.map} +1 -1
  39. package/dist/{chunk-DVZ46GQN.js → chunk-CLE2QGCU.js} +3 -3
  40. package/dist/{chunk-DVZ46GQN.js.map → chunk-CLE2QGCU.js.map} +1 -1
  41. package/dist/{chunk-5TTYVQ6Q.js → chunk-DE67ECD7.js} +5 -3
  42. package/dist/chunk-DE67ECD7.js.map +1 -0
  43. package/dist/{chunk-BAPNIZDV.js → chunk-F2YI5N4L.js} +3 -3
  44. package/dist/chunk-F2YI5N4L.js.map +1 -0
  45. package/dist/{chunk-U3N3G2UA.js → chunk-FFCEY76B.js} +10 -5
  46. package/dist/chunk-FFCEY76B.js.map +1 -0
  47. package/dist/{chunk-XWPXW46D.js → chunk-GWTHITZO.js} +3 -3
  48. package/dist/{chunk-XWPXW46D.js.map → chunk-GWTHITZO.js.map} +1 -1
  49. package/dist/chunk-HDC2IQV2.js +34 -0
  50. package/dist/chunk-HDC2IQV2.js.map +1 -0
  51. package/dist/{chunk-VQN5DQP6.js → chunk-HKNIEQ2V.js} +4 -4
  52. package/dist/{chunk-VQN5DQP6.js.map → chunk-HKNIEQ2V.js.map} +1 -1
  53. package/dist/{chunk-LA3YBXCR.js → chunk-HPQ462R5.js} +3 -3
  54. package/dist/{chunk-LA3YBXCR.js.map → chunk-HPQ462R5.js.map} +1 -1
  55. package/dist/chunk-KSLKNWWM.js +28 -0
  56. package/dist/chunk-KSLKNWWM.js.map +1 -0
  57. package/dist/chunk-OKA2PLDV.js +85 -0
  58. package/dist/chunk-OKA2PLDV.js.map +1 -0
  59. package/dist/{chunk-6BIEW4WJ.js → chunk-Q6SYKNZ5.js} +3 -3
  60. package/dist/{chunk-6BIEW4WJ.js.map → chunk-Q6SYKNZ5.js.map} +1 -1
  61. package/dist/chunk-QID6YYFF.js +33 -0
  62. package/dist/chunk-QID6YYFF.js.map +1 -0
  63. package/dist/{chunk-ZVDN3GRI.js → chunk-QJG5ILK5.js} +3 -3
  64. package/dist/{chunk-ZVDN3GRI.js.map → chunk-QJG5ILK5.js.map} +1 -1
  65. package/dist/chunk-QXHSA4QD.js +43 -0
  66. package/dist/chunk-QXHSA4QD.js.map +1 -0
  67. package/dist/chunk-S632WN4W.js +106 -0
  68. package/dist/chunk-S632WN4W.js.map +1 -0
  69. package/dist/{chunk-OFFFRIJG.js → chunk-SDIK6VSC.js} +3 -3
  70. package/dist/{chunk-OFFFRIJG.js.map → chunk-SDIK6VSC.js.map} +1 -1
  71. package/dist/{chunk-M5VL22MY.js → chunk-SXMORGSG.js} +3 -3
  72. package/dist/{chunk-M5VL22MY.js.map → chunk-SXMORGSG.js.map} +1 -1
  73. package/dist/{chunk-Z6SS4G4V.js → chunk-UMK4D234.js} +3 -3
  74. package/dist/{chunk-Z6SS4G4V.js.map → chunk-UMK4D234.js.map} +1 -1
  75. package/dist/{chunk-5PYLJQJX.js → chunk-VS2HPJIX.js} +3 -3
  76. package/dist/{chunk-5PYLJQJX.js.map → chunk-VS2HPJIX.js.map} +1 -1
  77. package/dist/{chunk-NOUUOH4R.js → chunk-WDIFWMKE.js} +3 -3
  78. package/dist/chunk-WDIFWMKE.js.map +1 -0
  79. package/dist/chunk-Y7KC2FDU.js +88 -0
  80. package/dist/chunk-Y7KC2FDU.js.map +1 -0
  81. package/dist/{chunk-OFKSU77Y.js → chunk-ZEVQQQOA.js} +3 -3
  82. package/dist/{chunk-OFKSU77Y.js.map → chunk-ZEVQQQOA.js.map} +1 -1
  83. package/dist/combobox.css +3 -0
  84. package/dist/combobox.css.map +1 -1
  85. package/dist/combobox.js +2 -2
  86. package/dist/component-manifest.json +679 -8
  87. package/dist/date-picker.js +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/divider.css +37 -0
  90. package/dist/divider.css.map +1 -0
  91. package/dist/divider.d.ts +35 -0
  92. package/dist/divider.js +4 -0
  93. package/dist/divider.js.map +1 -0
  94. package/dist/empty-state.css +175 -0
  95. package/dist/empty-state.css.map +1 -0
  96. package/dist/empty-state.d.ts +40 -0
  97. package/dist/empty-state.js +7 -0
  98. package/dist/empty-state.js.map +1 -0
  99. package/dist/field.js +2 -2
  100. package/dist/icon-button.css +18 -0
  101. package/dist/icon-button.css.map +1 -1
  102. package/dist/icon-button.js +3 -3
  103. package/dist/index.css +489 -0
  104. package/dist/index.css.map +1 -1
  105. package/dist/index.d.ts +8 -2
  106. package/dist/index.js +38 -32
  107. package/dist/link.css +35 -0
  108. package/dist/link.css.map +1 -0
  109. package/dist/link.d.ts +37 -0
  110. package/dist/link.js +5 -0
  111. package/dist/link.js.map +1 -0
  112. package/dist/listbox.js +1 -1
  113. package/dist/menu.js +2 -2
  114. package/dist/pagination.css +18 -0
  115. package/dist/pagination.css.map +1 -1
  116. package/dist/pagination.js +4 -4
  117. package/dist/picker.css +3 -0
  118. package/dist/picker.css.map +1 -1
  119. package/dist/picker.js +2 -2
  120. package/dist/popover.js +2 -2
  121. package/dist/radio.js +3 -3
  122. package/dist/segmented-control.css +111 -0
  123. package/dist/segmented-control.css.map +1 -0
  124. package/dist/segmented-control.d.ts +90 -0
  125. package/dist/segmented-control.js +5 -0
  126. package/dist/segmented-control.js.map +1 -0
  127. package/dist/select.js +3 -3
  128. package/dist/sheet.css +28 -0
  129. package/dist/sheet.css.map +1 -1
  130. package/dist/sheet.d.ts +9 -2
  131. package/dist/sheet.js +1 -1
  132. package/dist/slider.js +1 -1
  133. package/dist/switch.js +4 -4
  134. package/dist/table.js +1 -1
  135. package/dist/tabs.js +1 -1
  136. package/dist/text-field.css +63 -0
  137. package/dist/text-field.css.map +1 -1
  138. package/dist/text-field.d.ts +15 -2
  139. package/dist/text-field.js +3 -3
  140. package/dist/textarea.js +3 -3
  141. package/dist/toast.css +18 -0
  142. package/dist/toast.css.map +1 -1
  143. package/dist/toast.d.ts +21 -3
  144. package/dist/toast.js +5 -5
  145. package/dist/tooltip.js +2 -2
  146. package/package.json +36 -6
  147. package/dist/chunk-5TTYVQ6Q.js.map +0 -1
  148. package/dist/chunk-737GQSOB.js +0 -19
  149. package/dist/chunk-737GQSOB.js.map +0 -1
  150. package/dist/chunk-BAPNIZDV.js.map +0 -1
  151. package/dist/chunk-IFIQLIA3.js +0 -48
  152. package/dist/chunk-IFIQLIA3.js.map +0 -1
  153. package/dist/chunk-NOUUOH4R.js.map +0 -1
  154. package/dist/chunk-TJJBCS3N.js +0 -28
  155. package/dist/chunk-TJJBCS3N.js.map +0 -1
  156. package/dist/chunk-U3N3G2UA.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Button, ButtonProps, ButtonSize, ButtonVariant } from './button.js';
1
+ export { Button, ButtonProps, ButtonSize, ButtonTone, ButtonVariant } from './button.js';
2
2
  export { TextField, TextFieldProps, TextFieldSize } from './text-field.js';
3
3
  export { Card, CardPadding, CardProps, CardVariant } from './card.js';
4
4
  export { Tabs, TabsActivation, TabsOrientation, TabsProps } from './tabs.js';
@@ -19,7 +19,7 @@ export { Select, SelectProps, SelectSize } from './select.js';
19
19
  export { Spinner, SpinnerProps, SpinnerSize, SpinnerTone } from './spinner.js';
20
20
  export { Badge, BadgeProps, BadgeSize, BadgeTone, BadgeVariant } from './badge.js';
21
21
  export { Alert, AlertLive, AlertProps, AlertTone } from './alert.js';
22
- export { ToastContextValue, ToastItem, ToastOptions, ToastPlacement, ToastProvider, ToastProviderProps, useToast } from './toast.js';
22
+ export { ToastContextValue, ToastFunction, ToastItem, ToastOptions, ToastPlacement, ToastProvider, ToastProviderProps, ToastUndoOptions, useToast } from './toast.js';
23
23
  export { Progress, ProgressProps, ProgressSize, ProgressTone } from './progress.js';
24
24
  export { Skeleton, SkeletonProps, SkeletonShape, SkeletonSize } from './skeleton.js';
25
25
  export { Tooltip, TooltipPlacement, TooltipProps } from './tooltip.js';
@@ -36,6 +36,12 @@ export { Slider, SliderOrientation, SliderProps, SliderValue } from './slider.js
36
36
  export { Table, TableAlign, TableDensity, TableProps, TableSelectionMode, TableSort, TableSortDirection } from './table.js';
37
37
  export { Pagination, PaginationItem, PaginationProps, PaginationSize, paginationRange } from './pagination.js';
38
38
  export { Sheet, SheetContentProps, SheetPlacement, SheetProps } from './sheet.js';
39
+ export { Divider, DividerOrientation, DividerProps, DividerSpacing } from './divider.js';
40
+ export { Link, LinkProps, LinkTone, LinkUnderline } from './link.js';
41
+ export { Avatar, AvatarProps } from './avatar.js';
42
+ export { Chip, ChipProps } from './chip.js';
43
+ export { SegmentedControl, SegmentedControlProps } from './segmented-control.js';
44
+ export { EmptyState, EmptyStateProps } from './empty-state.js';
39
45
  import 'react';
40
46
  import '@pearpages/modals';
41
47
  import './ToggleField-C-qKSgHh.js';
package/dist/index.js CHANGED
@@ -1,50 +1,56 @@
1
- export { Text } from './chunk-LKWZZIRZ.js';
2
- export { Tabs } from './chunk-2IYYES7V.js';
3
- export { Card } from './chunk-LA3YBXCR.js';
4
- export { TextField } from './chunk-IFIQLIA3.js';
5
- export { Checkbox } from './chunk-Z6SS4G4V.js';
1
+ "use client";export { Tabs } from './chunk-2IYYES7V.js';
2
+ export { Card } from './chunk-HPQ462R5.js';
3
+ export { TextField } from './chunk-S632WN4W.js';
6
4
  export { Inline } from './chunk-VIGD7KHC.js';
7
- export { Stack } from './chunk-2E2ESMS2.js';
8
- export { Heading } from './chunk-F3S5BHX2.js';
9
- export { ToastProvider, useToast } from './chunk-U3N3G2UA.js';
10
- export { Alert } from './chunk-N4C3NQIN.js';
11
- export { Badge } from './chunk-737GQSOB.js';
12
- export { Select } from './chunk-OFKSU77Y.js';
13
- export { Textarea } from './chunk-5PYLJQJX.js';
14
- export { Radio, RadioGroup } from './chunk-N6E2E2OY.js';
15
- export { Switch } from './chunk-DVZ46GQN.js';
16
- import './chunk-6BIEW4WJ.js';
17
- export { Field, useField } from './chunk-M5VL22MY.js';
18
- export { Listbox } from './chunk-WJDDKNE7.js';
19
- export { Combobox } from './chunk-NOUUOH4R.js';
20
- export { Menu } from './chunk-2NSQPN7S.js';
5
+ export { Badge } from './chunk-KSLKNWWM.js';
6
+ export { Select } from './chunk-ZEVQQQOA.js';
7
+ export { Textarea } from './chunk-VS2HPJIX.js';
8
+ export { Radio, RadioGroup } from './chunk-2NVC3C7K.js';
9
+ export { Switch } from './chunk-CLE2QGCU.js';
10
+ export { Checkbox } from './chunk-UMK4D234.js';
11
+ import './chunk-Q6SYKNZ5.js';
12
+ export { Field, useField } from './chunk-SXMORGSG.js';
13
+ export { Menu } from './chunk-AZAI4OVR.js';
21
14
  export { Accordion } from './chunk-W2UUZ2DC.js';
22
15
  import './chunk-I5OZ63W7.js';
23
- export { Popover } from './chunk-OFFFRIJG.js';
16
+ export { Popover } from './chunk-SDIK6VSC.js';
24
17
  import './chunk-NAYFLTK6.js';
25
- export { Tooltip } from './chunk-XWPXW46D.js';
18
+ export { Tooltip } from './chunk-GWTHITZO.js';
26
19
  import './chunk-U6QRAD73.js';
27
20
  export { Skeleton } from './chunk-BR2EH4TK.js';
28
21
  export { Progress } from './chunk-YK2OOM56.js';
29
- export { Sheet } from './chunk-TJJBCS3N.js';
30
- export { Dialog, DialogSystem } from './chunk-55QUKGK2.js';
31
- export { Pagination, paginationRange } from './chunk-VQN5DQP6.js';
32
- export { IconButton } from './chunk-MF66ICX6.js';
33
- export { Button } from './chunk-5TTYVQ6Q.js';
34
- export { Spinner } from './chunk-ZL5MMRLG.js';
35
- import './chunk-ZVDN3GRI.js';
22
+ export { ToastProvider, useToast } from './chunk-FFCEY76B.js';
23
+ export { Alert } from './chunk-A7TMFEQ2.js';
24
+ export { Pagination, paginationRange } from './chunk-HKNIEQ2V.js';
25
+ export { IconButton } from './chunk-56RSH7GQ.js';
26
+ export { Button } from './chunk-DE67ECD7.js';
36
27
  export { Table } from './chunk-XGWFTFGR.js';
37
- import './chunk-CZBCGLEM.js';
38
- export { VisuallyHidden } from './chunk-IB5UUE3S.js';
39
28
  export { Slider } from './chunk-YBECKOVP.js';
40
29
  export { DatePicker } from './chunk-Y4YVAHD2.js';
41
30
  export { Calendar } from './chunk-W6HEBHA7.js';
42
31
  import './chunk-JOGIN4SS.js';
43
- export { Picker } from './chunk-BAPNIZDV.js';
44
- import './chunk-EDTA65L5.js';
32
+ export { Picker } from './chunk-F2YI5N4L.js';
33
+ export { Listbox } from './chunk-WJDDKNE7.js';
34
+ import './chunk-CZBCGLEM.js';
35
+ export { Combobox } from './chunk-WDIFWMKE.js';
36
+ export { Spinner } from './chunk-ZL5MMRLG.js';
37
+ export { VisuallyHidden } from './chunk-IB5UUE3S.js';
45
38
  import './chunk-IRNTXAA7.js';
46
39
  import './chunk-DGIXNUNI.js';
40
+ import './chunk-EDTA65L5.js';
47
41
  export { Icon } from './chunk-O5LII5XP.js';
42
+ export { EmptyState } from './chunk-5TYCIBLW.js';
43
+ export { Stack } from './chunk-2E2ESMS2.js';
44
+ export { Heading } from './chunk-F3S5BHX2.js';
45
+ export { Text } from './chunk-LKWZZIRZ.js';
46
+ export { SegmentedControl } from './chunk-Y7KC2FDU.js';
47
+ export { Chip } from './chunk-OKA2PLDV.js';
48
+ export { Avatar } from './chunk-QXHSA4QD.js';
49
+ export { Link } from './chunk-HDC2IQV2.js';
50
+ import './chunk-QJG5ILK5.js';
51
+ export { Divider } from './chunk-QID6YYFF.js';
52
+ export { Sheet } from './chunk-7O6FTCZL.js';
53
+ export { Dialog, DialogSystem } from './chunk-55QUKGK2.js';
48
54
  import './chunk-MI4QUKQS.js';
49
55
  //# sourceMappingURL=index.js.map
50
56
  //# sourceMappingURL=index.js.map
package/dist/link.css ADDED
@@ -0,0 +1,35 @@
1
+ /* src/link/Link.module.css */
2
+ @layer reset, tokens, vendor, base, components, utilities;
3
+ @layer components {
4
+ .Link_link {
5
+ border-radius: var(--link-radius);
6
+ color: var(--link-tone-action);
7
+ font-weight: var(--link-weight);
8
+ text-decoration-line: underline;
9
+ text-decoration-thickness: from-font;
10
+ text-underline-offset: 0.2em;
11
+ cursor: pointer;
12
+ transition: color var(--link-duration) var(--motion-easing-standard);
13
+ &[data-tone=default] {
14
+ color: var(--link-tone-default);
15
+ }
16
+ &[data-tone=muted] {
17
+ color: var(--link-tone-muted);
18
+ }
19
+ &[data-underline=hover] {
20
+ text-decoration-line: none;
21
+ }
22
+ &:hover {
23
+ color: var(--link-hover);
24
+ text-decoration-line: underline;
25
+ }
26
+ &:focus-visible {
27
+ outline: var(--link-focus-ring-width) solid var(--link-focus-ring-color);
28
+ outline-offset: var(--link-focus-ring-offset);
29
+ }
30
+ @media (prefers-reduced-motion: reduce) {
31
+ transition: none;
32
+ }
33
+ }
34
+ }
35
+ /*# sourceMappingURL=link.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/link/Link.module.css"],"sourcesContent":["/* Every value is a token: --link-* in packages/tokens/tokens/component/link.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .link {\n border-radius: var(--link-radius);\n color: var(--link-tone-action);\n font-weight: var(--link-weight);\n text-decoration-line: underline;\n text-decoration-thickness: from-font;\n text-underline-offset: 0.2em;\n cursor: pointer;\n transition: color var(--link-duration) var(--motion-easing-standard);\n\n &[data-tone=\"default\"] { color: var(--link-tone-default); }\n &[data-tone=\"muted\"] { color: var(--link-tone-muted); }\n\n &[data-underline=\"hover\"] { text-decoration-line: none; }\n\n &:hover {\n color: var(--link-hover);\n text-decoration-line: underline;\n }\n\n &:focus-visible {\n outline: var(--link-focus-ring-width) solid var(--link-focus-ring-color);\n outline-offset: var(--link-focus-ring-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,mBAAe,IAAI;AACnB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,0BAAsB;AACtB,+BAA2B;AAC3B,2BAAuB;AACvB,YAAQ;AACR,gBAAY,MAAM,IAAI,iBAAiB,IAAI;AAE3C,KAAC,CAAC;AAAuB,aAAO,IAAI;AAAsB;AAC1D,KAAC,CAAC;AAAqB,aAAO,IAAI;AAAoB;AAEtD,KAAC,CAAC;AAA0B,4BAAsB;AAAM;AAExD,KAAC;AACC,aAAO,IAAI;AACX,4BAAsB;AACxB;AAEA,KAAC;AACC,eAAS,IAAI,yBAAyB,MAAM,IAAI;AAChD,sBAAgB,IAAI;AACtB;AAEA,YAAO,wBAAyB;AAC9B,kBAAY;AACd;AACF;AACF;","names":["link"]}
package/dist/link.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import * as react from 'react';
2
+ import { AnchorHTMLAttributes, Ref, ReactNode } from 'react';
3
+
4
+ type LinkTone = 'action' | 'default' | 'muted';
5
+ type LinkUnderline = 'always' | 'hover';
6
+ interface LinkProps<E extends HTMLElement = HTMLAnchorElement> extends AnchorHTMLAttributes<HTMLAnchorElement> {
7
+ /** `action` is the brand's link colour; `default` and `muted` take the text colours. @default 'action' */
8
+ tone?: LinkTone;
9
+ /**
10
+ * `hover` drops the underline until the pointer is over it. Only for links that
11
+ * are obviously links from where they sit (a nav, a footer list). @default 'always'
12
+ */
13
+ underline?: LinkUnderline;
14
+ /** Render the single child instead of an `a`: a router's link component. @default false */
15
+ asChild?: boolean;
16
+ ref?: Ref<E>;
17
+ children: ReactNode;
18
+ }
19
+ /**
20
+ * A text link. Underlined by default, because colour alone must not be what
21
+ * tells a link from the words around it. With `asChild` the styles and props
22
+ * land on a router's own link, so client-side navigation keeps working.
23
+ *
24
+ * @status experimental
25
+ * @category Typography
26
+ * @accessibility A native `a`: focusable and activated with Enter only when it has an `href` (or the `asChild` element provides one). The focus ring comes from the semantic focus tokens. `underline="hover"` removes the only non-colour cue, so it is for lists of links, never for a link inside a sentence (WCAG 1.4.1).
27
+ * @do Use `asChild` with the router's link: `<Link asChild><NextLink href="/feed">Feed</NextLink></Link>`.
28
+ * @do Write link text that makes sense out of context; screen readers list links on their own.
29
+ * @dont Use it for an action that does not navigate; that is a Button (`variant="ghost"`).
30
+ * @dont Use `underline="hover"` for a link inside running text.
31
+ */
32
+ declare function Link<E extends HTMLElement = HTMLAnchorElement>({ tone, underline, asChild, className, ref, children, ...rest }: LinkProps<E>): react.JSX.Element;
33
+ declare namespace Link {
34
+ var displayName: string;
35
+ }
36
+
37
+ export { Link, type LinkProps, type LinkTone, type LinkUnderline };
package/dist/link.js ADDED
@@ -0,0 +1,5 @@
1
+ export { Link } from './chunk-HDC2IQV2.js';
2
+ import './chunk-QJG5ILK5.js';
3
+ import './chunk-MI4QUKQS.js';
4
+ //# sourceMappingURL=link.js.map
5
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"link.js"}
package/dist/listbox.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Listbox } from './chunk-WJDDKNE7.js';
1
+ "use client";export { Listbox } from './chunk-WJDDKNE7.js';
2
2
  import './chunk-CZBCGLEM.js';
3
3
  import './chunk-EDTA65L5.js';
4
4
  import './chunk-O5LII5XP.js';
package/dist/menu.js CHANGED
@@ -1,9 +1,9 @@
1
- export { Menu } from './chunk-2NSQPN7S.js';
1
+ "use client";export { Menu } from './chunk-AZAI4OVR.js';
2
2
  import './chunk-I5OZ63W7.js';
3
3
  import './chunk-NAYFLTK6.js';
4
4
  import './chunk-U6QRAD73.js';
5
- import './chunk-ZVDN3GRI.js';
6
5
  import './chunk-O5LII5XP.js';
6
+ import './chunk-QJG5ILK5.js';
7
7
  import './chunk-MI4QUKQS.js';
8
8
  //# sourceMappingURL=menu.js.map
9
9
  //# sourceMappingURL=menu.js.map
@@ -160,6 +160,24 @@
160
160
  }
161
161
  }
162
162
  }
163
+ .Button_button[data-tone=danger] {
164
+ &[data-variant=primary] {
165
+ background-color: var(--button-danger-bg);
166
+ color: var(--button-danger-fg);
167
+ &:hover:not(:disabled, [aria-disabled=true]) {
168
+ background-color: var(--button-danger-bg-hover);
169
+ }
170
+ &:active:not(:disabled, [aria-disabled=true]) {
171
+ background-color: var(--button-danger-bg-active);
172
+ }
173
+ }
174
+ &:is([data-variant=secondary], [data-variant=ghost]) {
175
+ color: var(--button-danger-text);
176
+ &:hover:not(:disabled, [aria-disabled=true]) {
177
+ background-color: var(--button-danger-quiet-bg-hover);
178
+ }
179
+ }
180
+ }
163
181
  .Button_label {
164
182
  display: inline-block;
165
183
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css","../src/pagination/Pagination.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n","/* Every value is a token (--pagination-*). The controls are Buttons; this file lays them out. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_size: var(--pagination-ellipsis-size-md);\n --_font-size: var(--pagination-font-size-md);\n\n font-family: var(--pagination-font-family);\n\n &[data-size=\"sm\"] {\n --_size: var(--pagination-ellipsis-size-sm);\n --_font-size: var(--pagination-font-size-sm);\n }\n }\n\n .list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--pagination-gap);\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .page {\n min-inline-size: var(--_size);\n padding-inline: 0;\n font-variant-numeric: tabular-nums;\n }\n\n .ellipsis {\n display: grid;\n place-items: center;\n min-inline-size: var(--_size);\n block-size: var(--_size);\n color: var(--pagination-ellipsis-fg);\n font-size: var(--_font-size);\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton","root","list","page","ellipsis"]}
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css","../src/pagination/Pagination.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n /* tone=\"danger\", after the variants so it wins at equal specificity plus one attribute. */\n .button[data-tone=\"danger\"] {\n &[data-variant=\"primary\"] {\n background-color: var(--button-danger-bg);\n color: var(--button-danger-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-active);\n }\n }\n\n &:is([data-variant=\"secondary\"], [data-variant=\"ghost\"]) {\n color: var(--button-danger-text);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-quiet-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n","/* Every value is a token (--pagination-*). The controls are Buttons; this file lays them out. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_size: var(--pagination-ellipsis-size-md);\n --_font-size: var(--pagination-font-size-md);\n\n font-family: var(--pagination-font-family);\n\n &[data-size=\"sm\"] {\n --_size: var(--pagination-ellipsis-size-sm);\n --_font-size: var(--pagination-font-size-sm);\n }\n }\n\n .list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--pagination-gap);\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .page {\n min-inline-size: var(--_size);\n padding-inline: 0;\n font-variant-numeric: tabular-nums;\n }\n\n .ellipsis {\n display: grid;\n place-items: center;\n min-inline-size: var(--_size);\n block-size: var(--_size);\n color: var(--pagination-ellipsis-fg);\n font-size: var(--_font-size);\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton","root","list","page","ellipsis"]}
@@ -1,10 +1,10 @@
1
- export { Pagination, paginationRange } from './chunk-VQN5DQP6.js';
2
- import './chunk-MF66ICX6.js';
3
- import './chunk-5TTYVQ6Q.js';
1
+ export { Pagination, paginationRange } from './chunk-HKNIEQ2V.js';
2
+ import './chunk-56RSH7GQ.js';
3
+ import './chunk-DE67ECD7.js';
4
4
  import './chunk-ZL5MMRLG.js';
5
- import './chunk-ZVDN3GRI.js';
6
5
  import './chunk-IB5UUE3S.js';
7
6
  import './chunk-O5LII5XP.js';
7
+ import './chunk-QJG5ILK5.js';
8
8
  import './chunk-MI4QUKQS.js';
9
9
  //# sourceMappingURL=pagination.js.map
10
10
  //# sourceMappingURL=pagination.js.map
package/dist/picker.css CHANGED
@@ -199,6 +199,9 @@
199
199
  .Picker_list {
200
200
  box-shadow: var(--picker-popover-shadow);
201
201
  }
202
+ .Picker_popover .Picker_list {
203
+ background-color: var(--picker-popover-bg);
204
+ }
202
205
  @keyframes Picker_fade {
203
206
  from {
204
207
  opacity: 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icon/Icon.module.css","../src/internal/AriaField.module.css","../src/listbox/Listbox.module.css","../src/picker/Picker.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The same --field-* tokens Field reads, on React Aria's label, description and error parts. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--field-gap);\n font-family: var(--font-family-body);\n }\n\n .label {\n font-size: var(--field-label-font-size);\n font-weight: var(--field-label-font-weight);\n color: var(--field-label-fg);\n }\n\n .required {\n margin-inline-start: var(--field-required-gap);\n color: var(--field-required-fg);\n }\n\n .description {\n margin: 0;\n font-size: var(--field-description-font-size);\n color: var(--field-description-fg);\n }\n\n .error {\n margin: 0;\n font-size: var(--field-error-font-size);\n color: var(--field-error-fg);\n }\n}\n","/*\n * Every value is a token (--listbox-*). React Aria writes the state:\n * data-focused (real or virtual focus), data-selected, data-disabled,\n * data-hovered, data-focus-visible, data-empty. The tick is in the DOM for\n * every option and revealed by data-selected.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .list {\n display: flex;\n flex-direction: column;\n max-block-size: var(--listbox-max-height);\n padding: var(--listbox-padding);\n overflow: auto;\n border: var(--size-hairline) solid var(--listbox-border);\n border-radius: var(--listbox-radius);\n background-color: var(--listbox-bg);\n color: var(--listbox-fg);\n font-family: var(--listbox-font-family);\n font-size: var(--listbox-font-size);\n outline: none;\n\n &[data-focus-visible] {\n outline: var(--listbox-focus-ring-width) solid var(--listbox-focus-ring);\n outline-offset: var(--listbox-focus-ring-offset);\n }\n }\n\n .check {\n flex: none;\n visibility: hidden;\n color: var(--listbox-item-check);\n }\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--listbox-item-gap);\n padding-block: var(--listbox-item-padding-block);\n padding-inline: var(--listbox-item-padding-inline);\n border-radius: var(--listbox-item-radius);\n color: var(--listbox-item-fg);\n cursor: default;\n outline: none;\n\n &[data-hovered],\n &[data-focused] {\n background-color: var(--listbox-item-bg-focus);\n }\n\n &[data-selected] {\n background-color: var(--listbox-item-bg-selected);\n\n .check {\n visibility: visible;\n }\n }\n\n &[data-disabled] {\n color: var(--listbox-item-fg-disabled);\n cursor: not-allowed;\n }\n }\n\n .itemBody {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n }\n\n .itemLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .itemDescription {\n color: var(--listbox-item-fg-muted);\n font-size: var(--listbox-item-description-font-size);\n }\n\n .empty {\n padding: var(--listbox-empty-padding);\n color: var(--listbox-empty-fg);\n }\n}\n","/*\n * Every value is a token (--picker-*); the options read --listbox-*. The\n * trigger is a button drawn like a text field. The popover is positioned by\n * React Aria; the gap is its own padding and --trigger-width (vendor) sizes it.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--picker-height-md);\n --_font-size: var(--picker-font-size-md);\n --_border: var(--picker-border-default);\n\n font-family: var(--picker-font-family);\n\n &[data-size=\"sm\"] {\n --_height: var(--picker-height-sm);\n --_font-size: var(--picker-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n --_height: var(--picker-height-lg);\n --_font-size: var(--picker-font-size-lg);\n }\n\n &[data-invalid] { --_border: var(--picker-border-invalid); }\n }\n\n .trigger {\n display: flex;\n align-items: center;\n gap: var(--picker-gap);\n inline-size: 100%;\n min-block-size: var(--_height);\n padding-block: 0;\n padding-inline: var(--picker-padding-inline);\n border: var(--size-hairline) solid var(--_border);\n border-radius: var(--picker-radius);\n background-color: var(--picker-bg);\n color: var(--picker-fg);\n font-family: inherit;\n font-size: var(--_font-size);\n text-align: start;\n cursor: pointer;\n transition: border-color var(--picker-motion-duration) var(--motion-easing-standard);\n\n &[data-focus-visible] {\n border-color: var(--picker-border-focus);\n outline: var(--picker-focus-ring-width) solid var(--picker-focus-ring);\n outline-offset: var(--picker-focus-ring-offset);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-hovered]:not([data-focus-visible], [data-disabled]) {\n border-color: var(--picker-border-hover);\n }\n }\n\n .value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &[data-placeholder] {\n color: var(--picker-placeholder);\n }\n }\n\n .chevron {\n flex: none;\n color: var(--picker-icon);\n }\n\n .popover {\n inline-size: var(--trigger-width);\n padding-block-start: var(--picker-gap);\n animation: fade var(--picker-popover-duration) var(--motion-easing-standard);\n\n &[data-placement=\"top\"] {\n padding-block: 0 var(--picker-gap);\n }\n }\n\n .list {\n box-shadow: var(--picker-popover-shadow);\n }\n\n @keyframes fade {\n from {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .popover {\n animation: none;\n }\n }\n}\n"],"mappings":"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","names":["icon","field","label","required","description","error","list","check","item","itemBody","itemLabel","itemDescription","empty","root","trigger","value","chevron","popover","list","fade"]}
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/internal/AriaField.module.css","../src/listbox/Listbox.module.css","../src/picker/Picker.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The same --field-* tokens Field reads, on React Aria's label, description and error parts. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--field-gap);\n font-family: var(--font-family-body);\n }\n\n .label {\n font-size: var(--field-label-font-size);\n font-weight: var(--field-label-font-weight);\n color: var(--field-label-fg);\n }\n\n .required {\n margin-inline-start: var(--field-required-gap);\n color: var(--field-required-fg);\n }\n\n .description {\n margin: 0;\n font-size: var(--field-description-font-size);\n color: var(--field-description-fg);\n }\n\n .error {\n margin: 0;\n font-size: var(--field-error-font-size);\n color: var(--field-error-fg);\n }\n}\n","/*\n * Every value is a token (--listbox-*). React Aria writes the state:\n * data-focused (real or virtual focus), data-selected, data-disabled,\n * data-hovered, data-focus-visible, data-empty. The tick is in the DOM for\n * every option and revealed by data-selected.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .list {\n display: flex;\n flex-direction: column;\n max-block-size: var(--listbox-max-height);\n padding: var(--listbox-padding);\n overflow: auto;\n border: var(--size-hairline) solid var(--listbox-border);\n border-radius: var(--listbox-radius);\n background-color: var(--listbox-bg);\n color: var(--listbox-fg);\n font-family: var(--listbox-font-family);\n font-size: var(--listbox-font-size);\n outline: none;\n\n &[data-focus-visible] {\n outline: var(--listbox-focus-ring-width) solid var(--listbox-focus-ring);\n outline-offset: var(--listbox-focus-ring-offset);\n }\n }\n\n .check {\n flex: none;\n visibility: hidden;\n color: var(--listbox-item-check);\n }\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--listbox-item-gap);\n padding-block: var(--listbox-item-padding-block);\n padding-inline: var(--listbox-item-padding-inline);\n border-radius: var(--listbox-item-radius);\n color: var(--listbox-item-fg);\n cursor: default;\n outline: none;\n\n &[data-hovered],\n &[data-focused] {\n background-color: var(--listbox-item-bg-focus);\n }\n\n &[data-selected] {\n background-color: var(--listbox-item-bg-selected);\n\n .check {\n visibility: visible;\n }\n }\n\n &[data-disabled] {\n color: var(--listbox-item-fg-disabled);\n cursor: not-allowed;\n }\n }\n\n .itemBody {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n }\n\n .itemLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .itemDescription {\n color: var(--listbox-item-fg-muted);\n font-size: var(--listbox-item-description-font-size);\n }\n\n .empty {\n padding: var(--listbox-empty-padding);\n color: var(--listbox-empty-fg);\n }\n}\n","/*\n * Every value is a token (--picker-*); the options read --listbox-*. The\n * trigger is a button drawn like a text field. The popover is positioned by\n * React Aria; the gap is its own padding and --trigger-width (vendor) sizes it.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--picker-height-md);\n --_font-size: var(--picker-font-size-md);\n --_border: var(--picker-border-default);\n\n font-family: var(--picker-font-family);\n\n &[data-size=\"sm\"] {\n --_height: var(--picker-height-sm);\n --_font-size: var(--picker-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n --_height: var(--picker-height-lg);\n --_font-size: var(--picker-font-size-lg);\n }\n\n &[data-invalid] { --_border: var(--picker-border-invalid); }\n }\n\n .trigger {\n display: flex;\n align-items: center;\n gap: var(--picker-gap);\n inline-size: 100%;\n min-block-size: var(--_height);\n padding-block: 0;\n padding-inline: var(--picker-padding-inline);\n border: var(--size-hairline) solid var(--_border);\n border-radius: var(--picker-radius);\n background-color: var(--picker-bg);\n color: var(--picker-fg);\n font-family: inherit;\n font-size: var(--_font-size);\n text-align: start;\n cursor: pointer;\n transition: border-color var(--picker-motion-duration) var(--motion-easing-standard);\n\n &[data-focus-visible] {\n border-color: var(--picker-border-focus);\n outline: var(--picker-focus-ring-width) solid var(--picker-focus-ring);\n outline-offset: var(--picker-focus-ring-offset);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-hovered]:not([data-focus-visible], [data-disabled]) {\n border-color: var(--picker-border-hover);\n }\n }\n\n .value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &[data-placeholder] {\n color: var(--picker-placeholder);\n }\n }\n\n .chevron {\n flex: none;\n color: var(--picker-icon);\n }\n\n .popover {\n inline-size: var(--trigger-width);\n padding-block-start: var(--picker-gap);\n animation: fade var(--picker-popover-duration) var(--motion-easing-standard);\n\n &[data-placement=\"top\"] {\n padding-block: 0 var(--picker-gap);\n }\n }\n\n .list {\n box-shadow: var(--picker-popover-shadow);\n }\n\n /* The shared list styles paint an inline Listbox's surface; here the list floats. Two classes, so it wins whatever the stylesheet order. */\n .popover .list {\n background-color: var(--picker-popover-bg);\n }\n\n @keyframes fade {\n from {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .popover {\n animation: none;\n }\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,gBAAY;AACZ,eAAW,IAAI;AACf,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAuB,iBAAW;AAAS;AAE7C,MAAE,EAAE;AACF,mBAAa;AACb,kBAAY;AACd;AACF;AACF;;;ACpBA;AAEA;AACE,GAACC;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,iBAAa,IAAI;AACnB;AAEA,GAACC;AACC,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,WAAO,IAAI;AACb;AAEA,GAACC;AACC,yBAAqB,IAAI;AACzB,WAAO,IAAI;AACb;AAEA,GAACC;AACC,YAAQ;AACR,eAAW,IAAI;AACf,WAAO,IAAI;AACb;AAEA,GAACC;AACC,YAAQ;AACR,eAAW,IAAI;AACf,WAAO,IAAI;AACb;AACF;;;AC3BA;AAEA;AACE,GAACC;AACC,aAAS;AACT,oBAAgB;AAChB,oBAAgB,IAAI;AACpB,aAAS,IAAI;AACb,cAAU;AACV,YAAQ,IAAI,iBAAiB,MAAM,IAAI;AACvC,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,aAAS;AAET,KAAC,CAAC;AACA,eAAS,IAAI,4BAA4B,MAAM,IAAI;AACnD,sBAAgB,IAAI;AACtB;AACF;AAEA,GAACC;AACC,UAAM;AACN,gBAAY;AACZ,WAAO,IAAI;AACb;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,SAAK,IAAI;AACT,mBAAe,IAAI;AACnB,oBAAgB,IAAI;AACpB,mBAAe,IAAI;AACnB,WAAO,IAAI;AACX,YAAQ;AACR,aAAS;AAET,KAAC,CAAC;AAAA,IACF,CAAC,CAAC;AACA,wBAAkB,IAAI;AACxB;AAEA,KAAC,CAAC;AACA,wBAAkB,IAAI;AAEtB,OAzBHD;AA0BK,oBAAY;AACd;AACF;AAEA,KAAC,CAAC;AACA,aAAO,IAAI;AACX,cAAQ;AACV;AACF;AAEA,GAACE;AACC,aAAS;AACT,oBAAgB;AAChB,qBAAiB;AACnB;AAEA,GAACC;AACC,cAAU;AACV,mBAAe;AACf,iBAAa;AACf;AAEA,GAACC;AACC,WAAO,IAAI;AACX,eAAW,IAAI;AACjB;AAEA,GAACC;AACC,aAAS,IAAI;AACb,WAAO,IAAI;AACb;AACF;;;ACjFA;AAEA;AACE,GAACC;AACC,eAAW,IAAI;AACf,kBAAc,IAAI;AAClB,eAAW,IAAI;AAEf,iBAAa,IAAI;AAEjB,KAAC,CAAC;AACA,iBAAW,IAAI;AACf,oBAAc,IAAI;AACpB;AAEA,KAAC,CAAC;AACA,iBAAW,IAAI;AACf,oBAAc,IAAI;AACpB;AAEA,KAAC,CAAC;AAAgB,iBAAW,IAAI;AAA0B;AAC7D;AAEA,GAACC;AACC,aAAS;AACT,iBAAa;AACb,SAAK,IAAI;AACT,iBAAa;AACb,oBAAgB,IAAI;AACpB,mBAAe;AACf,oBAAgB,IAAI;AACpB,YAAQ,IAAI,iBAAiB,MAAM,IAAI;AACvC,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,WAAO,IAAI;AACX,iBAAa;AACb,eAAW,IAAI;AACf,gBAAY;AACZ,YAAQ;AACR,gBAAY,aAAa,IAAI,0BAA0B,IAAI;AAE3D,KAAC,CAAC;AACA,oBAAc,IAAI;AAClB,eAAS,IAAI,2BAA2B,MAAM,IAAI;AAClD,sBAAgB,IAAI;AACtB;AAEA,KAAC,CAAC;AACA,cAAQ;AACR,eAAS;AACX;AAEA,KAAC,CAAC,aAAa,KAAK,CAAC,qBAAqB,CAAC;AACzC,oBAAc,IAAI;AACpB;AACF;AAEA,GAACC;AACC,UAAM;AACN,cAAU;AACV,mBAAe;AACf,iBAAa;AAEb,KAAC,CAAC;AACA,aAAO,IAAI;AACb;AACF;AAEA,GAACC;AACC,UAAM;AACN,WAAO,IAAI;AACb;AAEA,GAACC;AACC,iBAAa,IAAI;AACjB,yBAAqB,IAAI;AACzB,eAAW,YAAK,IAAI,2BAA2B,IAAI;AAEnD,KAAC,CAAC;AACA,qBAAe,EAAE,IAAI;AACvB;AACF;AAEA,GAACC;AACC,gBAAY,IAAI;AAClB;AAGA,GAfCD,eAeQ,CALRC;AAMC,sBAAkB,IAAI;AACxB;AAEA,aAhBaC;AAiBX;AACE,eAAS;AACX;AACF;AAEA,UAAO,wBAAyB;AAC9B,KA1BDF;AA2BG,iBAAW;AACb;AACF;AACF;","names":["icon","field","label","required","description","error","list","check","item","itemBody","itemLabel","itemDescription","empty","root","trigger","value","chevron","popover","list","fade"]}
package/dist/picker.js CHANGED
@@ -1,7 +1,7 @@
1
- export { Picker } from './chunk-BAPNIZDV.js';
2
- import './chunk-EDTA65L5.js';
1
+ "use client";export { Picker } from './chunk-F2YI5N4L.js';
3
2
  import './chunk-IRNTXAA7.js';
4
3
  import './chunk-DGIXNUNI.js';
4
+ import './chunk-EDTA65L5.js';
5
5
  import './chunk-O5LII5XP.js';
6
6
  import './chunk-MI4QUKQS.js';
7
7
  //# sourceMappingURL=picker.js.map
package/dist/popover.js CHANGED
@@ -1,7 +1,7 @@
1
- export { Popover } from './chunk-OFFFRIJG.js';
1
+ "use client";export { Popover } from './chunk-SDIK6VSC.js';
2
2
  import './chunk-NAYFLTK6.js';
3
3
  import './chunk-U6QRAD73.js';
4
- import './chunk-ZVDN3GRI.js';
4
+ import './chunk-QJG5ILK5.js';
5
5
  import './chunk-MI4QUKQS.js';
6
6
  //# sourceMappingURL=popover.js.map
7
7
  //# sourceMappingURL=popover.js.map
package/dist/radio.js CHANGED
@@ -1,6 +1,6 @@
1
- export { Radio, RadioGroup } from './chunk-N6E2E2OY.js';
2
- import './chunk-M5VL22MY.js';
3
- import './chunk-ZVDN3GRI.js';
1
+ "use client";export { Radio, RadioGroup } from './chunk-2NVC3C7K.js';
2
+ import './chunk-SXMORGSG.js';
3
+ import './chunk-QJG5ILK5.js';
4
4
  import './chunk-MI4QUKQS.js';
5
5
  //# sourceMappingURL=radio.js.map
6
6
  //# sourceMappingURL=radio.js.map
@@ -0,0 +1,111 @@
1
+ /* src/segmented-control/SegmentedControl.module.css */
2
+ @layer reset, tokens, vendor, base, components, utilities;
3
+ @layer components {
4
+ .SegmentedControl_root {
5
+ --_height: var(--segmented-control-height-md);
6
+ --_padding: var(--segmented-control-padding-x-md);
7
+ display: inline-flex;
8
+ box-sizing: border-box;
9
+ max-inline-size: 100%;
10
+ color: var(--segmented-control-fg);
11
+ font-family: var(--font-family-body);
12
+ font-size: var(--segmented-control-font-size-md);
13
+ font-weight: var(--segmented-control-weight);
14
+ line-height: 1;
15
+ &[data-size=sm] {
16
+ --_height: var(--segmented-control-height-sm);
17
+ --_padding: var(--segmented-control-padding-x-sm);
18
+ font-size: var(--segmented-control-font-size-sm);
19
+ }
20
+ &[data-look=segmented] {
21
+ padding: var(--segmented-control-inset);
22
+ border: var(--segmented-control-border-width) solid var(--segmented-control-track-border);
23
+ border-radius: var(--segmented-control-track-radius);
24
+ background: var(--segmented-control-track-bg);
25
+ }
26
+ &[data-look=chips] {
27
+ flex-wrap: wrap;
28
+ gap: var(--segmented-control-gap);
29
+ }
30
+ &[data-full-width][data-look=segmented] {
31
+ display: flex;
32
+ }
33
+ &[aria-disabled=true] {
34
+ opacity: 0.55;
35
+ }
36
+ }
37
+ .SegmentedControl_list {
38
+ display: contents;
39
+ }
40
+ .SegmentedControl_option {
41
+ display: inline-flex;
42
+ position: relative;
43
+ min-inline-size: 0;
44
+ .SegmentedControl_root[data-full-width] & {
45
+ flex: 1;
46
+ }
47
+ }
48
+ .SegmentedControl_input {
49
+ position: absolute;
50
+ inset: 0;
51
+ inline-size: 100%;
52
+ block-size: 100%;
53
+ margin: 0;
54
+ opacity: 0;
55
+ cursor: pointer;
56
+ &:disabled {
57
+ cursor: not-allowed;
58
+ }
59
+ }
60
+ .SegmentedControl_segment {
61
+ display: inline-flex;
62
+ flex: 1;
63
+ align-items: center;
64
+ justify-content: center;
65
+ gap: var(--segmented-control-gap);
66
+ box-sizing: border-box;
67
+ min-block-size: calc(var(--_height) - 2 * var(--segmented-control-inset) - 2 * var(--segmented-control-border-width));
68
+ padding-block: 0;
69
+ padding-inline: var(--_padding);
70
+ border: var(--segmented-control-border-width) solid transparent;
71
+ border-radius: var(--segmented-control-segment-radius);
72
+ color: inherit;
73
+ text-decoration: none;
74
+ white-space: nowrap;
75
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-standard), color var(--motion-duration-fast) var(--motion-easing-standard);
76
+ .SegmentedControl_root[data-look=chips] & {
77
+ min-block-size: var(--_height);
78
+ border-color: var(--segmented-control-chip-border);
79
+ border-radius: var(--segmented-control-chip-radius);
80
+ background: var(--segmented-control-chip-bg);
81
+ }
82
+ }
83
+ .SegmentedControl_option:hover .SegmentedControl_segment,
84
+ a.SegmentedControl_segment:hover {
85
+ color: var(--segmented-control-fg-hover);
86
+ }
87
+ .SegmentedControl_option[data-selected] .SegmentedControl_segment {
88
+ border-color: var(--segmented-control-segment-selected-border);
89
+ background: var(--segmented-control-segment-selected-bg);
90
+ box-shadow: var(--segmented-control-segment-selected-shadow);
91
+ color: var(--segmented-control-segment-selected-fg);
92
+ .SegmentedControl_root[data-look=chips] & {
93
+ border-color: var(--segmented-control-chip-selected-border);
94
+ background: var(--segmented-control-chip-selected-bg);
95
+ box-shadow: none;
96
+ color: var(--segmented-control-chip-selected-fg);
97
+ }
98
+ }
99
+ .SegmentedControl_input:focus-visible + .SegmentedControl_segment,
100
+ a.SegmentedControl_segment:focus-visible {
101
+ outline: var(--segmented-control-focus-ring-width) solid var(--segmented-control-focus-ring);
102
+ outline-offset: var(--segmented-control-focus-ring-offset);
103
+ }
104
+ .SegmentedControl_input:disabled + .SegmentedControl_segment {
105
+ opacity: 0.55;
106
+ }
107
+ .SegmentedControl_icon {
108
+ display: inline-flex;
109
+ }
110
+ }
111
+ /*# sourceMappingURL=segmented-control.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/segmented-control/SegmentedControl.module.css"],"sourcesContent":["/* Every value is a token: --segmented-control-* in packages/tokens/tokens/component/segmented-control.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n --_height: var(--segmented-control-height-md);\n --_padding: var(--segmented-control-padding-x-md);\n\n display: inline-flex;\n box-sizing: border-box;\n max-inline-size: 100%;\n color: var(--segmented-control-fg);\n font-family: var(--font-family-body);\n font-size: var(--segmented-control-font-size-md);\n font-weight: var(--segmented-control-weight);\n line-height: 1;\n\n &[data-size='sm'] {\n --_height: var(--segmented-control-height-sm);\n --_padding: var(--segmented-control-padding-x-sm);\n\n font-size: var(--segmented-control-font-size-sm);\n }\n\n &[data-look='segmented'] {\n padding: var(--segmented-control-inset);\n border: var(--segmented-control-border-width) solid var(--segmented-control-track-border);\n border-radius: var(--segmented-control-track-radius);\n background: var(--segmented-control-track-bg);\n }\n\n &[data-look='chips'] {\n flex-wrap: wrap;\n gap: var(--segmented-control-gap);\n }\n\n &[data-full-width][data-look='segmented'] {\n display: flex;\n }\n\n &[aria-disabled='true'] {\n opacity: 0.55;\n }\n }\n\n /* The Nav flavour: the list is the flex row the root is for the radios. */\n .list {\n display: contents;\n }\n\n .option {\n display: inline-flex;\n position: relative;\n min-inline-size: 0;\n\n .root[data-full-width] & {\n flex: 1;\n }\n }\n\n /* Visually hidden, still focusable and still in the form: the segment draws its state. */\n .input {\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n margin: 0;\n opacity: 0;\n cursor: pointer;\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n .segment {\n display: inline-flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n gap: var(--segmented-control-gap);\n box-sizing: border-box;\n min-block-size: calc(var(--_height) - 2 * var(--segmented-control-inset) - 2 * var(--segmented-control-border-width));\n padding-block: 0;\n padding-inline: var(--_padding);\n border: var(--segmented-control-border-width) solid transparent;\n border-radius: var(--segmented-control-segment-radius);\n color: inherit;\n text-decoration: none;\n white-space: nowrap;\n transition:\n background-color var(--motion-duration-fast) var(--motion-easing-standard),\n color var(--motion-duration-fast) var(--motion-easing-standard);\n\n .root[data-look='chips'] & {\n min-block-size: var(--_height);\n border-color: var(--segmented-control-chip-border);\n border-radius: var(--segmented-control-chip-radius);\n background: var(--segmented-control-chip-bg);\n }\n }\n\n .option:hover .segment,\n a.segment:hover {\n color: var(--segmented-control-fg-hover);\n }\n\n .option[data-selected] .segment {\n border-color: var(--segmented-control-segment-selected-border);\n background: var(--segmented-control-segment-selected-bg);\n box-shadow: var(--segmented-control-segment-selected-shadow);\n color: var(--segmented-control-segment-selected-fg);\n\n .root[data-look='chips'] & {\n border-color: var(--segmented-control-chip-selected-border);\n background: var(--segmented-control-chip-selected-bg);\n box-shadow: none;\n color: var(--segmented-control-chip-selected-fg);\n }\n }\n\n .input:focus-visible + .segment,\n a.segment:focus-visible {\n outline: var(--segmented-control-focus-ring-width) solid var(--segmented-control-focus-ring);\n outline-offset: var(--segmented-control-focus-ring-offset);\n }\n\n .input:disabled + .segment {\n opacity: 0.55;\n }\n\n .icon {\n display: inline-flex;\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,eAAW,IAAI;AACf,gBAAY,IAAI;AAEhB,aAAS;AACT,gBAAY;AACZ,qBAAiB;AACjB,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,iBAAa;AAEb,KAAC,CAAC;AACA,iBAAW,IAAI;AACf,kBAAY,IAAI;AAEhB,iBAAW,IAAI;AACjB;AAEA,KAAC,CAAC;AACA,eAAS,IAAI;AACb,cAAQ,IAAI,kCAAkC,MAAM,IAAI;AACxD,qBAAe,IAAI;AACnB,kBAAY,IAAI;AAClB;AAEA,KAAC,CAAC;AACA,iBAAW;AACX,WAAK,IAAI;AACX;AAEA,KAAC,CAAC,gBAAgB,CAAC;AACjB,eAAS;AACX;AAEA,KAAC,CAAC;AACA,eAAS;AACX;AACF;AAGA,GAACC;AACC,aAAS;AACX;AAEA,GAACC;AACC,aAAS;AACT,cAAU;AACV,qBAAiB;AAEjB,KAnDDF,qBAmDM,CAAC,iBAAiB;AACrB,YAAM;AACR;AACF;AAGA,GAACG;AACC,cAAU;AACV,WAAO;AACP,iBAAa;AACb,gBAAY;AACZ,YAAQ;AACR,aAAS;AACT,YAAQ;AAER,KAAC;AACC,cAAQ;AACV;AACF;AAEA,GAACC;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,qBAAiB;AACjB,SAAK,IAAI;AACT,gBAAY;AACZ,oBAAgB,KAAK,IAAI,WAAW,EAAE,EAAE,EAAE,IAAI,2BAA2B,EAAE,EAAE,EAAE,IAAI;AACnF,mBAAe;AACf,oBAAgB,IAAI;AACpB,YAAQ,IAAI,kCAAkC,MAAM;AACpD,mBAAe,IAAI;AACnB,WAAO;AACP,qBAAiB;AACjB,iBAAa;AACb,gBACE,iBAAiB,IAAI,wBAAwB,IAAI,yBAAyB,EAC1E,MAAM,IAAI,wBAAwB,IAAI;AAExC,KA1FDJ,qBA0FM,CAAC,iBAAmB;AACvB,sBAAgB,IAAI;AACpB,oBAAc,IAAI;AAClB,qBAAe,IAAI;AACnB,kBAAY,IAAI;AAClB;AACF;AAEA,GApDCE,uBAoDM,OAAO,CA3BbE;AAAA,EA4BD,CAAC,CA5BAA,wBA4BQ;AACP,WAAO,IAAI;AACb;AAEA,GAzDCF,uBAyDM,CAAC,eAAe,CAhCtBE;AAiCC,kBAAc,IAAI;AAClB,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAChB,WAAO,IAAI;AAEX,KA7GDJ,qBA6GM,CAAC,iBAAmB;AACvB,oBAAc,IAAI;AAClB,kBAAY,IAAI;AAChB,kBAAY;AACZ,aAAO,IAAI;AACb;AACF;AAEA,GA5DCG,sBA4DK,eAAe,EAAE,CA9CtBC;AAAA,EA+CD,CAAC,CA/CAA,wBA+CQ;AACP,aAAS,IAAI,sCAAsC,MAAM,IAAI;AAC7D,oBAAgB,IAAI;AACtB;AAEA,GAlECD,sBAkEK,UAAU,EAAE,CApDjBC;AAqDC,aAAS;AACX;AAEA,GAACC;AACC,aAAS;AACX;AACF;","names":["root","list","option","input","segment","icon"]}
@@ -0,0 +1,90 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode, Ref, AnchorHTMLAttributes } from 'react';
3
+
4
+ type SegmentedControlSize = 'sm' | 'md';
5
+ type SegmentedControlLook = 'segmented' | 'chips';
6
+ interface SegmentedControlOption<T extends string = string> {
7
+ value: T;
8
+ label: ReactNode;
9
+ /** Decorative: hidden from assistive technology, so the label must stand on its own. */
10
+ icon?: ReactNode;
11
+ disabled?: boolean;
12
+ }
13
+ interface SegmentedControlProps<T extends string = string> extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'children'> {
14
+ /** Names the group for assistive technology. Not rendered; label it visibly with `aria-labelledby` instead when there is a heading. */
15
+ label?: string;
16
+ options: ReadonlyArray<SegmentedControlOption<T>>;
17
+ /** Controlled selected value. */
18
+ value?: T;
19
+ /** Initially selected value when uncontrolled. */
20
+ defaultValue?: T;
21
+ onValueChange?: (value: T) => void;
22
+ /** Form field name shared by the radios. Generated when omitted. */
23
+ name?: string;
24
+ /** `segmented` is one track with a raised thumb; `chips` is separate pills that wrap. @default 'segmented' */
25
+ look?: SegmentedControlLook;
26
+ /** @default 'md' */
27
+ size?: SegmentedControlSize;
28
+ /** Segments share the container's width equally. `segmented` look only. @default false */
29
+ fullWidth?: boolean;
30
+ disabled?: boolean;
31
+ ref?: Ref<HTMLDivElement>;
32
+ }
33
+ /**
34
+ * One choice out of a few, all visible, switching what is shown in place: a
35
+ * view mode, a unit, a sort order. Generic over a string union, so `value`
36
+ * and `onValueChange` are typed by the options. For links that navigate to
37
+ * another page use `SegmentedControl.Nav`, which looks the same and is a `nav`.
38
+ *
39
+ * @status experimental
40
+ * @category Forms
41
+ * @accessibility A `radiogroup` of native radio inputs, exactly as RadioGroup: the keyboard is the browser's own (arrows move and select, Tab enters on the checked radio and leaves the group), nothing is re-implemented. Name the group with `label` or `aria-labelledby`. The inputs are visually hidden, not removed, so the focus ring is drawn on the visible segment and the control takes part in a form (`name`). Icons are decorative.
42
+ * @do Use it for two to five short options that change the view in place.
43
+ * @do Use `SegmentedControl.Nav` when each option is a URL.
44
+ * @dont Use it for on/off; that is a Switch. For several at once, toggle Chips.
45
+ * @dont Use it for a form question with longer labels or a description; that is a RadioGroup.
46
+ */
47
+ declare function SegmentedControl<T extends string = string>({ label, options, value, defaultValue, onValueChange, name, look, size, fullWidth, disabled, className, ref, ...rest }: SegmentedControlProps<T>): react.JSX.Element;
48
+ declare namespace SegmentedControl {
49
+ var displayName: string;
50
+ var Nav: typeof SegmentedControlNav;
51
+ var NavItem: typeof SegmentedControlNavItem;
52
+ }
53
+ interface SegmentedControlNavProps extends HTMLAttributes<HTMLElement> {
54
+ /** Names the landmark ("Feed view"). Required: a page with several `nav`s needs them told apart. */
55
+ label: string;
56
+ /** @default 'segmented' */
57
+ look?: SegmentedControlLook;
58
+ /** @default 'md' */
59
+ size?: SegmentedControlSize;
60
+ /** @default false */
61
+ fullWidth?: boolean;
62
+ ref?: Ref<HTMLElement>;
63
+ /** `SegmentedControl.NavItem`s. */
64
+ children: ReactNode;
65
+ }
66
+ /**
67
+ * The same look for links that navigate: a labelled `nav` with a list of
68
+ * links, the current one marked `aria-current="page"`. Not a radiogroup and
69
+ * not tabs: following a link loads another page, and a screen reader user
70
+ * should be told so.
71
+ */
72
+ declare function SegmentedControlNav({ label, look, size, fullWidth, className, ref, children, ...rest }: SegmentedControlNavProps): react.JSX.Element;
73
+ declare namespace SegmentedControlNav {
74
+ var displayName: string;
75
+ }
76
+ interface SegmentedControlNavItemProps<E extends HTMLElement = HTMLAnchorElement> extends AnchorHTMLAttributes<HTMLAnchorElement> {
77
+ /** This link is the page being shown: `aria-current="page"` and the selected look. @default false */
78
+ current?: boolean;
79
+ /** Render the single child instead of an `a`: a router's link component. @default false */
80
+ asChild?: boolean;
81
+ ref?: Ref<E>;
82
+ children: ReactNode;
83
+ }
84
+ /** One link of a `SegmentedControl.Nav`. With `asChild`, the router's own link takes the styles. */
85
+ declare function SegmentedControlNavItem<E extends HTMLElement = HTMLAnchorElement>({ current, asChild, className, ref, children, ...rest }: SegmentedControlNavItemProps<E>): react.JSX.Element;
86
+ declare namespace SegmentedControlNavItem {
87
+ var displayName: string;
88
+ }
89
+
90
+ export { SegmentedControl, type SegmentedControlProps };