@igne-agency/react-web-ui 0.4.0 → 0.6.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 (257) hide show
  1. package/dist/base.css +3 -0
  2. package/dist/components/accordion/accordion.css +21 -21
  3. package/dist/components/accordion/accordion.d.ts +17 -4
  4. package/dist/components/accordion/accordion.js +83 -36
  5. package/dist/components/accordion/accordion.module.js +6 -6
  6. package/dist/components/attachment-tile/attachment-preview.d.ts +56 -13
  7. package/dist/components/attachment-tile/attachment-preview.js +388 -119
  8. package/dist/components/attachment-tile/attachment-tile.css +31 -25
  9. package/dist/components/attachment-tile/attachment-tile.d.ts +32 -10
  10. package/dist/components/attachment-tile/attachment-tile.js +160 -43
  11. package/dist/components/attachment-tile/attachment-tile.module.js +8 -8
  12. package/dist/components/attachment-tile/index.d.ts +1 -1
  13. package/dist/components/avatar/avatar.css +9 -9
  14. package/dist/components/avatar/avatar.d.ts +50 -5
  15. package/dist/components/avatar/avatar.js +178 -64
  16. package/dist/components/avatar/avatar.module.js +3 -3
  17. package/dist/components/avatar-group/avatar-group-context.d.ts +2 -4
  18. package/dist/components/avatar-group/avatar-group-context.js +2 -2
  19. package/dist/components/avatar-group/avatar-group.css +26 -20
  20. package/dist/components/avatar-group/avatar-group.d.ts +85 -27
  21. package/dist/components/avatar-group/avatar-group.js +400 -246
  22. package/dist/components/avatar-group/avatar-group.module.js +8 -8
  23. package/dist/components/breadcrumbs/breadcrumbs.css +12 -12
  24. package/dist/components/breadcrumbs/breadcrumbs.d.ts +69 -23
  25. package/dist/components/breadcrumbs/breadcrumbs.js +299 -248
  26. package/dist/components/breadcrumbs/breadcrumbs.module.js +8 -8
  27. package/dist/components/button/button.css +29 -31
  28. package/dist/components/button/button.d.ts +20 -16
  29. package/dist/components/button/button.js +140 -145
  30. package/dist/components/button/button.module.js +1 -1
  31. package/dist/components/button/index.js +1 -1
  32. package/dist/components/checkbox-field/checkbox-field.js +63 -49
  33. package/dist/components/checkbox-field/checkbox.css +105 -56
  34. package/dist/components/checkbox-field/checkbox.d.ts +3 -2
  35. package/dist/components/checkbox-field/checkbox.js +12 -9
  36. package/dist/components/checkbox-field/checkbox.module.js +4 -4
  37. package/dist/components/checkbox-group-field/checkbox-group-field.js +78 -72
  38. package/dist/components/checkbox-group-field/checkbox-group.css +14 -10
  39. package/dist/components/checkbox-group-field/checkbox-group.d.ts +2 -2
  40. package/dist/components/checkbox-group-field/checkbox-group.js +2 -2
  41. package/dist/components/checkbox-group-field/checkbox-group.module.js +2 -2
  42. package/dist/components/collapsible/collapsible.css +20 -20
  43. package/dist/components/collapsible/collapsible.d.ts +17 -4
  44. package/dist/components/collapsible/collapsible.js +83 -36
  45. package/dist/components/collapsible/collapsible.module.js +5 -5
  46. package/dist/components/combobox-field/combobox-field.js +206 -158
  47. package/dist/components/combobox-field/combobox.css +492 -277
  48. package/dist/components/combobox-field/combobox.d.ts +148 -39
  49. package/dist/components/combobox-field/combobox.js +506 -206
  50. package/dist/components/combobox-field/combobox.module.js +21 -21
  51. package/dist/components/combobox-field/value-state-view.css +5 -5
  52. package/dist/components/combobox-field/value-state-view.module.js +4 -4
  53. package/dist/components/composer/composer-attachments.d.ts +30 -11
  54. package/dist/components/composer/composer-attachments.js +45 -40
  55. package/dist/components/composer/composer-editor.css +40 -35
  56. package/dist/components/composer/composer-editor.d.ts +14 -4
  57. package/dist/components/composer/composer-editor.js +134 -44
  58. package/dist/components/composer/composer-editor.module.js +5 -5
  59. package/dist/components/composer/composer.css +22 -22
  60. package/dist/components/composer/composer.d.ts +13 -2
  61. package/dist/components/composer/composer.js +78 -63
  62. package/dist/components/composer/composer.module.js +5 -5
  63. package/dist/components/composer/index.d.ts +2 -2
  64. package/dist/components/composer/mention-text.css +5 -5
  65. package/dist/components/composer/mention-text.module.js +1 -1
  66. package/dist/components/confirm-dialog/confirm-dialog.css +29 -29
  67. package/dist/components/confirm-dialog/confirm-dialog.d.ts +57 -3
  68. package/dist/components/confirm-dialog/confirm-dialog.js +266 -108
  69. package/dist/components/confirm-dialog/confirm-dialog.module.js +5 -5
  70. package/dist/components/conversation/conversation.css +52 -52
  71. package/dist/components/conversation/conversation.d.ts +43 -18
  72. package/dist/components/conversation/conversation.js +120 -78
  73. package/dist/components/conversation/conversation.module.js +15 -15
  74. package/dist/components/date-field/date-field.d.ts +1 -1
  75. package/dist/components/date-field/date-field.js +202 -100
  76. package/dist/components/date-field/date-input.d.ts +73 -37
  77. package/dist/components/date-field/date-input.js +72 -45
  78. package/dist/components/date-field/index.d.ts +1 -1
  79. package/dist/components/date-range-field/date-range-field.d.ts +1 -1
  80. package/dist/components/date-range-field/date-range-field.js +219 -107
  81. package/dist/components/date-range-field/date-range-input.d.ts +84 -40
  82. package/dist/components/date-range-field/date-range-input.js +83 -48
  83. package/dist/components/dialog/dialog.css +32 -32
  84. package/dist/components/dialog/dialog.d.ts +8 -7
  85. package/dist/components/dialog/dialog.js +8 -26
  86. package/dist/components/dialog/dialog.module.js +6 -6
  87. package/dist/components/divider/divider.css +6 -6
  88. package/dist/components/divider/divider.d.ts +36 -2
  89. package/dist/components/divider/divider.js +195 -29
  90. package/dist/components/divider/divider.module.js +3 -3
  91. package/dist/components/drawer/drawer.css +55 -56
  92. package/dist/components/drawer/drawer.d.ts +8 -7
  93. package/dist/components/drawer/drawer.js +8 -26
  94. package/dist/components/drawer/drawer.module.js +6 -6
  95. package/dist/components/field/field.css +34 -24
  96. package/dist/components/field/field.d.ts +60 -37
  97. package/dist/components/field/field.js +242 -157
  98. package/dist/components/field/field.module.js +12 -10
  99. package/dist/components/field/input-parts.d.ts +11 -13
  100. package/dist/components/field/input-parts.js +23 -42
  101. package/dist/components/field-placeholder/field-placeholder.css +6 -6
  102. package/dist/components/field-placeholder/field-placeholder.module.js +4 -4
  103. package/dist/components/fieldset/field-group.d.ts +1 -1
  104. package/dist/components/fieldset/field-group.js +48 -42
  105. package/dist/components/fieldset/fieldset-root.d.ts +1 -1
  106. package/dist/components/fieldset/fieldset-root.js +19 -17
  107. package/dist/components/fieldset/fieldset.d.ts +2 -2
  108. package/dist/components/fieldset/fieldset.js +2 -2
  109. package/dist/components/file-field/file-field.css +126 -60
  110. package/dist/components/file-field/file-field.js +201 -109
  111. package/dist/components/file-field/file-field.module.js +4 -4
  112. package/dist/components/file-field/file-input.d.ts +66 -40
  113. package/dist/components/file-field/file-input.js +188 -132
  114. package/dist/components/filter-bar/filter-bar.css +8 -8
  115. package/dist/components/filter-bar/filter-bar.d.ts +12 -3
  116. package/dist/components/filter-bar/filter-bar.js +23 -25
  117. package/dist/components/filter-bar/filter-bar.module.js +5 -5
  118. package/dist/components/form/form.d.ts +19 -7
  119. package/dist/components/form/form.js +80 -29
  120. package/dist/components/icon/icon.css +2 -2
  121. package/dist/components/icon/icon.module.js +1 -1
  122. package/dist/components/link/link.css +6 -5
  123. package/dist/components/link/link.module.js +1 -1
  124. package/dist/components/menu/menu.css +52 -47
  125. package/dist/components/menu/menu.d.ts +32 -25
  126. package/dist/components/menu/menu.js +75 -124
  127. package/dist/components/menu/menu.module.js +8 -8
  128. package/dist/components/nav/nav-context.d.ts +1 -1
  129. package/dist/components/nav/nav-item-view.d.ts +10 -13
  130. package/dist/components/nav/nav-item-view.js +42 -54
  131. package/dist/components/nav/nav.css +150 -119
  132. package/dist/components/nav/nav.d.ts +61 -17
  133. package/dist/components/nav/nav.js +271 -176
  134. package/dist/components/nav/nav.module.js +17 -15
  135. package/dist/components/number-field/number-field.css +153 -64
  136. package/dist/components/number-field/number-field.d.ts +2 -2
  137. package/dist/components/number-field/number-field.js +112 -91
  138. package/dist/components/number-field/number-field.module.js +6 -6
  139. package/dist/components/number-field/number-input.d.ts +43 -23
  140. package/dist/components/number-field/number-input.js +179 -125
  141. package/dist/components/otp-field/otp-field.css +153 -60
  142. package/dist/components/otp-field/otp-field.d.ts +2 -2
  143. package/dist/components/otp-field/otp-field.js +62 -46
  144. package/dist/components/otp-field/otp-field.module.js +4 -4
  145. package/dist/components/otp-field/otp-input.d.ts +8 -6
  146. package/dist/components/otp-field/otp-input.js +92 -92
  147. package/dist/components/pagination/pagination.d.ts +46 -15
  148. package/dist/components/pagination/pagination.js +217 -224
  149. package/dist/components/password-field/password-field.css +23 -23
  150. package/dist/components/password-field/password-field.js +107 -85
  151. package/dist/components/password-field/password-field.module.js +8 -8
  152. package/dist/components/password-field/password-strength.d.ts +107 -3
  153. package/dist/components/password-field/password-strength.js +569 -92
  154. package/dist/components/photo-field/photo-field.js +137 -112
  155. package/dist/components/photo-field/photo-input.css +67 -44
  156. package/dist/components/photo-field/photo-input.d.ts +59 -15
  157. package/dist/components/photo-field/photo-input.js +173 -86
  158. package/dist/components/photo-field/photo-input.module.js +10 -8
  159. package/dist/components/popover/popover.css +41 -41
  160. package/dist/components/popover/popover.d.ts +66 -25
  161. package/dist/components/popover/popover.js +332 -217
  162. package/dist/components/popover/popover.module.js +15 -19
  163. package/dist/components/radio-group-field/radio-group-field.js +80 -71
  164. package/dist/components/radio-group-field/radio-group.css +112 -60
  165. package/dist/components/radio-group-field/radio-group.d.ts +19 -3
  166. package/dist/components/radio-group-field/radio-group.js +66 -23
  167. package/dist/components/radio-group-field/radio-group.module.js +4 -4
  168. package/dist/components/segmented-control-field/segmented-control-field.d.ts +1 -1
  169. package/dist/components/segmented-control-field/segmented-control-field.js +111 -96
  170. package/dist/components/segmented-control-field/segmented-control.css +132 -79
  171. package/dist/components/segmented-control-field/segmented-control.d.ts +39 -15
  172. package/dist/components/segmented-control-field/segmented-control.js +124 -41
  173. package/dist/components/segmented-control-field/segmented-control.module.js +4 -4
  174. package/dist/components/select-field/select.css +214 -101
  175. package/dist/components/select-field/select.d.ts +43 -11
  176. package/dist/components/select-field/select.js +194 -109
  177. package/dist/components/select-field/select.module.js +14 -14
  178. package/dist/components/skeleton/skeleton.css +4 -4
  179. package/dist/components/skeleton/skeleton.module.js +3 -3
  180. package/dist/components/stale/stale.css +15 -15
  181. package/dist/components/stale/stale.d.ts +27 -3
  182. package/dist/components/stale/stale.js +147 -66
  183. package/dist/components/stale/stale.module.js +6 -6
  184. package/dist/components/status-message/status-message.css +22 -22
  185. package/dist/components/status-message/status-message.module.js +6 -6
  186. package/dist/components/switch-field/switch-field.js +77 -57
  187. package/dist/components/switch-field/switch.css +112 -63
  188. package/dist/components/switch-field/switch.d.ts +20 -3
  189. package/dist/components/switch-field/switch.js +70 -27
  190. package/dist/components/switch-field/switch.module.js +4 -4
  191. package/dist/components/tabs/tabs.css +32 -32
  192. package/dist/components/tabs/tabs.d.ts +21 -7
  193. package/dist/components/tabs/tabs.js +73 -14
  194. package/dist/components/tabs/tabs.module.js +7 -7
  195. package/dist/components/tag/tag.css +84 -84
  196. package/dist/components/tag/tag.module.js +3 -3
  197. package/dist/components/tag-group/tag-group.css +94 -94
  198. package/dist/components/tag-group/tag-group.module.js +4 -4
  199. package/dist/components/text-field/text-field.css +159 -82
  200. package/dist/components/text-field/text-field.d.ts +1 -1
  201. package/dist/components/text-field/text-field.js +139 -110
  202. package/dist/components/text-field/text-field.module.js +9 -9
  203. package/dist/components/text-field/text-input.d.ts +81 -45
  204. package/dist/components/text-field/text-input.js +366 -217
  205. package/dist/components/textarea-field/textarea-field.css +7 -2
  206. package/dist/components/textarea-field/textarea-field.js +72 -56
  207. package/dist/components/textarea-field/textarea-field.module.js +2 -2
  208. package/dist/components/time-field/time-field.js +153 -60
  209. package/dist/components/time-field/time-input.d.ts +21 -10
  210. package/dist/components/time-field/time-input.js +22 -11
  211. package/dist/components/toast/toast-provider.css +34 -31
  212. package/dist/components/toast/toast-provider.d.ts +63 -14
  213. package/dist/components/toast/toast-provider.js +174 -111
  214. package/dist/components/toast/toast-provider.module.js +7 -7
  215. package/dist/components/toggle-group-field/toggle-group-field.d.ts +1 -1
  216. package/dist/components/toggle-group-field/toggle-group-field.js +95 -89
  217. package/dist/components/toggle-group-field/toggle-group.css +117 -67
  218. package/dist/components/toggle-group-field/toggle-group.d.ts +2 -2
  219. package/dist/components/toggle-group-field/toggle-group.js +2 -2
  220. package/dist/components/toggle-group-field/toggle-group.module.js +2 -2
  221. package/dist/components/tooltip/tooltip.css +4 -4
  222. package/dist/components/tooltip/tooltip.module.js +1 -1
  223. package/dist/data-table/data-table-content.js +6 -5
  224. package/dist/data-table/data-table-parts.d.ts +41 -13
  225. package/dist/data-table/data-table-parts.js +213 -172
  226. package/dist/data-table/data-table-selection.d.ts +105 -3
  227. package/dist/data-table/data-table-selection.js +654 -145
  228. package/dist/data-table/data-table.css +125 -128
  229. package/dist/data-table/data-table.d.ts +21 -26
  230. package/dist/data-table/data-table.js +20 -23
  231. package/dist/data-table/data-table.module.js +32 -34
  232. package/dist/data-table/index.d.ts +2 -2
  233. package/dist/index.js +3 -3
  234. package/dist/lib/calendar/calendar-navigation.d.ts +39 -5
  235. package/dist/lib/calendar/calendar-navigation.js +185 -118
  236. package/dist/lib/calendar/calendar-parts.d.ts +143 -0
  237. package/dist/lib/calendar/calendar-parts.js +540 -0
  238. package/dist/lib/calendar/calendar-prefab.d.ts +52 -0
  239. package/dist/lib/calendar/calendar-prefab.js +311 -0
  240. package/dist/lib/calendar/calendar-year.d.ts +3 -1
  241. package/dist/lib/calendar/calendar-year.js +139 -131
  242. package/dist/lib/calendar/temporal.css +325 -232
  243. package/dist/lib/calendar/temporal.d.ts +67 -82
  244. package/dist/lib/calendar/temporal.js +258 -569
  245. package/dist/lib/calendar/temporal.module.js +38 -38
  246. package/dist/lib/forms/use-connected-field.d.ts +1 -1
  247. package/dist/lib/forms/use-connected-field.js +1 -1
  248. package/dist/lib/render-as.d.ts +13 -0
  249. package/dist/lib/render-as.js +46 -0
  250. package/dist/terrazzo/index.d.ts +4 -3
  251. package/dist/terrazzo/index.js +17 -6
  252. package/dist/tokens.css +28 -4
  253. package/package.json +2 -2
  254. package/tokens/dark.tokens.json +6 -0
  255. package/tokens/sys.tokens.json +7 -0
  256. package/dist/components/button/close-button.d.ts +0 -16
  257. package/dist/components/button/close-button.js +0 -30
@@ -1,3 +1,4 @@
1
+ import { Field } from "../field/field.js";
1
2
  import { normalizeFieldErrors } from "../../lib/forms/errors.js";
2
3
  import { SegmentedControl } from "./segmented-control.js";
3
4
  import { c } from "react/compiler-runtime";
@@ -17,7 +18,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
17
18
  * />
18
19
  */
19
20
  var SegmentedControlField = (t0) => {
20
- const $ = c(50);
21
+ const $ = c(53);
21
22
  const { label, description, errors, requiredness, optionalLabel, dirty, touched, pending, options, value, onValueChange, onBlur, name, disabled, readOnly, orientation, className } = t0;
22
23
  const { descriptionId, errorId, describedBy } = SegmentedControl.useIds();
23
24
  let t1;
@@ -29,98 +30,109 @@ var SegmentedControlField = (t0) => {
29
30
  const invalid = t1.length > 0;
30
31
  const t2 = value !== null;
31
32
  let t3;
32
- if ($[2] !== label || $[3] !== optionalLabel || $[4] !== requiredness) {
33
- t3 = /* @__PURE__ */ jsx(SegmentedControl.Legend, {
34
- requiredness,
35
- optionalLabel,
36
- children: label
37
- });
38
- $[2] = label;
39
- $[3] = optionalLabel;
40
- $[4] = requiredness;
33
+ if ($[2] !== optionalLabel) {
34
+ t3 = /* @__PURE__ */ jsx(Field.Requiredness, { optionalLabel });
35
+ $[2] = optionalLabel;
36
+ $[3] = t3;
37
+ } else t3 = $[3];
38
+ let t4;
39
+ if ($[4] !== label || $[5] !== t3) {
40
+ t4 = /* @__PURE__ */ jsxs(SegmentedControl.Legend, { children: [
41
+ label,
42
+ " ",
43
+ t3
44
+ ] });
45
+ $[4] = label;
41
46
  $[5] = t3;
42
- } else t3 = $[5];
43
- const t4 = description !== void 0;
44
- let t5;
45
- if ($[6] !== describedBy || $[7] !== invalid || $[8] !== t4) {
46
- t5 = describedBy(t4, invalid);
47
- $[6] = describedBy;
48
- $[7] = invalid;
49
- $[8] = t4;
50
- $[9] = t5;
51
- } else t5 = $[9];
47
+ $[6] = t4;
48
+ } else t4 = $[6];
49
+ const t5 = description !== void 0;
52
50
  let t6;
53
- if ($[10] !== value) {
54
- t6 = value === null ? [] : [value];
55
- $[10] = value;
56
- $[11] = t6;
57
- } else t6 = $[11];
51
+ if ($[7] !== describedBy || $[8] !== invalid || $[9] !== t5) {
52
+ t6 = describedBy(t5, invalid);
53
+ $[7] = describedBy;
54
+ $[8] = invalid;
55
+ $[9] = t5;
56
+ $[10] = t6;
57
+ } else t6 = $[10];
58
58
  let t7;
59
- if ($[12] !== onValueChange) {
60
- t7 = (next) => onValueChange(next[0] ?? null);
61
- $[12] = onValueChange;
62
- $[13] = t7;
63
- } else t7 = $[13];
59
+ if ($[11] !== value) {
60
+ t7 = value === null ? [] : [value];
61
+ $[11] = value;
62
+ $[12] = t7;
63
+ } else t7 = $[12];
64
64
  let t8;
65
- if ($[14] !== options) {
66
- t8 = options.map(_temp);
67
- $[14] = options;
68
- $[15] = t8;
69
- } else t8 = $[15];
65
+ if ($[13] !== onValueChange) {
66
+ t8 = (next) => onValueChange(next[0] ?? null);
67
+ $[13] = onValueChange;
68
+ $[14] = t8;
69
+ } else t8 = $[14];
70
70
  let t9;
71
- if ($[16] !== options) {
72
- t9 = /* @__PURE__ */ jsx(SegmentedControl.Indicator, { options });
73
- $[16] = options;
74
- $[17] = t9;
75
- } else t9 = $[17];
71
+ if ($[15] !== options) {
72
+ t9 = options.map(_temp);
73
+ $[15] = options;
74
+ $[16] = t9;
75
+ } else t9 = $[16];
76
76
  let t10;
77
- if ($[18] !== disabled || $[19] !== invalid || $[20] !== onBlur || $[21] !== orientation || $[22] !== readOnly || $[23] !== t5 || $[24] !== t6 || $[25] !== t7 || $[26] !== t8 || $[27] !== t9) {
78
- t10 = /* @__PURE__ */ jsxs(SegmentedControl.Group, {
79
- "aria-describedby": t5,
77
+ if ($[17] !== options) {
78
+ t10 = options.map(_temp2);
79
+ $[17] = options;
80
+ $[18] = t10;
81
+ } else t10 = $[18];
82
+ let t11;
83
+ if ($[19] !== t10) {
84
+ t11 = /* @__PURE__ */ jsx(SegmentedControl.Indicator, { children: /* @__PURE__ */ jsx(SegmentedControl.IndicatorLabels, { children: t10 }) });
85
+ $[19] = t10;
86
+ $[20] = t11;
87
+ } else t11 = $[20];
88
+ let t12;
89
+ if ($[21] !== disabled || $[22] !== invalid || $[23] !== onBlur || $[24] !== orientation || $[25] !== readOnly || $[26] !== t11 || $[27] !== t6 || $[28] !== t7 || $[29] !== t8 || $[30] !== t9) {
90
+ t12 = /* @__PURE__ */ jsxs(SegmentedControl.Group, {
91
+ "aria-describedby": t6,
80
92
  readOnly,
81
93
  invalid,
82
94
  orientation,
83
95
  disabled,
84
- value: t6,
85
- onValueChange: t7,
96
+ value: t7,
97
+ onValueChange: t8,
86
98
  onBlur,
87
- children: [t8, t9]
99
+ children: [t9, t11]
88
100
  });
89
- $[18] = disabled;
90
- $[19] = invalid;
91
- $[20] = onBlur;
92
- $[21] = orientation;
93
- $[22] = readOnly;
94
- $[23] = t5;
95
- $[24] = t6;
96
- $[25] = t7;
97
- $[26] = t8;
98
- $[27] = t9;
99
- $[28] = t10;
100
- } else t10 = $[28];
101
- let t11;
102
- if ($[29] !== description || $[30] !== descriptionId) {
103
- t11 = /* @__PURE__ */ jsx(SegmentedControl.Description, {
101
+ $[21] = disabled;
102
+ $[22] = invalid;
103
+ $[23] = onBlur;
104
+ $[24] = orientation;
105
+ $[25] = readOnly;
106
+ $[26] = t11;
107
+ $[27] = t6;
108
+ $[28] = t7;
109
+ $[29] = t8;
110
+ $[30] = t9;
111
+ $[31] = t12;
112
+ } else t12 = $[31];
113
+ let t13;
114
+ if ($[32] !== description || $[33] !== descriptionId) {
115
+ t13 = /* @__PURE__ */ jsx(SegmentedControl.Description, {
104
116
  id: descriptionId,
105
117
  children: description
106
118
  });
107
- $[29] = description;
108
- $[30] = descriptionId;
109
- $[31] = t11;
110
- } else t11 = $[31];
111
- let t12;
112
- if ($[32] !== errorId || $[33] !== errors) {
113
- t12 = /* @__PURE__ */ jsx(SegmentedControl.Error, {
119
+ $[32] = description;
120
+ $[33] = descriptionId;
121
+ $[34] = t13;
122
+ } else t13 = $[34];
123
+ let t14;
124
+ if ($[35] !== errorId || $[36] !== errors) {
125
+ t14 = /* @__PURE__ */ jsx(SegmentedControl.Error, {
114
126
  id: errorId,
115
127
  children: errors
116
128
  });
117
- $[32] = errorId;
118
- $[33] = errors;
119
- $[34] = t12;
120
- } else t12 = $[34];
121
- let t13;
122
- if ($[35] !== className || $[36] !== dirty || $[37] !== disabled || $[38] !== errors || $[39] !== name || $[40] !== pending || $[41] !== readOnly || $[42] !== requiredness || $[43] !== t10 || $[44] !== t11 || $[45] !== t12 || $[46] !== t2 || $[47] !== t3 || $[48] !== touched) {
123
- t13 = /* @__PURE__ */ jsxs(SegmentedControl.Root, {
129
+ $[35] = errorId;
130
+ $[36] = errors;
131
+ $[37] = t14;
132
+ } else t14 = $[37];
133
+ let t15;
134
+ if ($[38] !== className || $[39] !== dirty || $[40] !== disabled || $[41] !== errors || $[42] !== name || $[43] !== pending || $[44] !== readOnly || $[45] !== requiredness || $[46] !== t12 || $[47] !== t13 || $[48] !== t14 || $[49] !== t2 || $[50] !== t4 || $[51] !== touched) {
135
+ t15 = /* @__PURE__ */ jsxs(SegmentedControl.Root, {
124
136
  name,
125
137
  className,
126
138
  disabled,
@@ -132,29 +144,29 @@ var SegmentedControlField = (t0) => {
132
144
  pending,
133
145
  filled: t2,
134
146
  children: [
135
- t3,
136
- t10,
137
- t11,
138
- t12
147
+ t4,
148
+ t12,
149
+ t13,
150
+ t14
139
151
  ]
140
152
  });
141
- $[35] = className;
142
- $[36] = dirty;
143
- $[37] = disabled;
144
- $[38] = errors;
145
- $[39] = name;
146
- $[40] = pending;
147
- $[41] = readOnly;
148
- $[42] = requiredness;
149
- $[43] = t10;
150
- $[44] = t11;
151
- $[45] = t12;
152
- $[46] = t2;
153
- $[47] = t3;
154
- $[48] = touched;
155
- $[49] = t13;
156
- } else t13 = $[49];
157
- return t13;
153
+ $[38] = className;
154
+ $[39] = dirty;
155
+ $[40] = disabled;
156
+ $[41] = errors;
157
+ $[42] = name;
158
+ $[43] = pending;
159
+ $[44] = readOnly;
160
+ $[45] = requiredness;
161
+ $[46] = t12;
162
+ $[47] = t13;
163
+ $[48] = t14;
164
+ $[49] = t2;
165
+ $[50] = t4;
166
+ $[51] = touched;
167
+ $[52] = t15;
168
+ } else t15 = $[52];
169
+ return t15;
158
170
  };
159
171
  function _temp(option) {
160
172
  return /* @__PURE__ */ jsx(SegmentedControl.Option, {
@@ -163,4 +175,7 @@ function _temp(option) {
163
175
  children: option.label
164
176
  }, option.value);
165
177
  }
178
+ function _temp2(option_0) {
179
+ return /* @__PURE__ */ jsx(SegmentedControl.IndicatorLabel, { children: option_0.label }, option_0.value);
180
+ }
166
181
  export { SegmentedControlField };
@@ -1,19 +1,26 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._group_1tamn_3 {
4
- --field-fg: var(--sys-color-text);
5
- --field-muted-fg: var(--sys-color-text-muted);
6
- --field-placeholder-fg: var(--sys-color-text-placeholder);
7
- --field-fg: var(
3
+ ._group_1gt1b_3 {
4
+ --_field-fg: var(--field-fg, var(--sys-color-text));
5
+ --_field-muted-fg: var(
6
+ --field-muted-fg,
7
+ var(--sys-color-text-muted)
8
+ );
9
+ --_field-placeholder-fg: var(
10
+ --field-placeholder-fg,
11
+ var(--sys-color-text-placeholder)
12
+ );
13
+ --_field-caret: var(--field-caret, auto);
14
+ --_field-fg: var(
8
15
  --segmented-control-fg,
9
16
  var(--sys-color-on-primary-container)
10
17
  );
11
- --_segmented-control-fill: var(
12
- --segmented-control-fill,
18
+ --_segmented-control-indicator-bg: var(
19
+ --segmented-control-indicator-bg,
13
20
  var(--sys-color-primary)
14
21
  );
15
- --_segmented-control-on-fill: var(
16
- --segmented-control-on-fill,
22
+ --_segmented-control-indicator-fg: var(
23
+ --segmented-control-indicator-fg,
17
24
  var(--sys-color-on-primary)
18
25
  );
19
26
  position: relative;
@@ -22,81 +29,118 @@
22
29
  box-sizing: border-box;
23
30
  max-inline-size: 100%;
24
31
  gap: 0;
25
- border: 1px solid transparent;
26
- border-radius: var(--sys-radius-full);
32
+ border: var(--segmented-control-track-border-width, var(--field-border-width, 1px)) solid var(--segmented-control-track-border, transparent);
33
+ border-radius: var(--segmented-control-track-radius, var(--sys-radius-full));
27
34
  background: var(--segmented-control-track-bg, var(--sys-color-primary-container));
28
35
  }
29
- ._group_1tamn_3[data-orientation=vertical] {
36
+ ._group_1gt1b_3[data-orientation=vertical] {
30
37
  flex-direction: column;
31
38
  }
32
- ._group_1tamn_3[data-readonly] {
33
- --field-fg: var(--sys-color-text);
34
- border-style: dashed;
35
- border-color: var(--sys-color-outline);
36
- background: var(--sys-color-surface-high);
37
- color: var(--field-fg);
38
- --_segmented-control-fill: var(
39
- --sys-color-primary-container
39
+ ._group_1gt1b_3[data-readonly] {
40
+ --_field-fg: var(
41
+ --field-readonly-fg,
42
+ var(--sys-color-text)
43
+ );
44
+ --_field-fill: var(
45
+ --field-readonly-bg,
46
+ var(--sys-color-surface-high)
40
47
  );
41
- --_segmented-control-on-fill: var(
42
- --sys-color-on-primary-container
48
+ border-style: var(--field-readonly-border-style, dashed);
49
+ border-color: var(--field-readonly-border, var(--sys-color-outline));
50
+ background: var(--_field-fill);
51
+ color: var(--_field-fg);
52
+ --_segmented-control-indicator-bg: var(
53
+ --segmented-control-indicator-readonly-bg,
54
+ var(--sys-color-primary-container)
55
+ );
56
+ --_segmented-control-indicator-fg: var(
57
+ --segmented-control-indicator-readonly-fg,
58
+ var(--sys-color-on-primary-container)
43
59
  );
44
60
  pointer-events: none;
45
61
  }
46
- ._group_1tamn_3[data-invalid] {
47
- --field-fg: var(--sys-color-error-fg);
48
- --field-muted-fg: var(--sys-color-error-fg);
49
- --field-placeholder-fg: var(--sys-color-error-fg);
50
- border-color: var(--sys-color-error-fg);
51
- background-color: var(--sys-color-error-bg);
52
- color: var(--field-fg);
53
- --_segmented-control-fill: var(--sys-color-error-fg);
54
- --_segmented-control-on-fill: var(
55
- --sys-color-error-bg
56
- );
57
- }
58
- ._group_1tamn_3[data-disabled] {
59
- --field-fg: var(--sys-color-disabled-fg);
60
- --field-muted-fg: var(--sys-color-disabled-fg);
61
- --field-placeholder-fg: var(--sys-color-disabled-fg);
62
- color: var(--sys-color-disabled-fg);
62
+ ._group_1gt1b_3[data-invalid] {
63
+ --_field-fg: var(
64
+ --field-invalid-fg,
65
+ var(--sys-color-error-fg)
66
+ );
67
+ --_field-muted-fg: var(
68
+ --field-invalid-muted-fg,
69
+ var(--field-invalid-fg, var(--sys-color-error-fg))
70
+ );
71
+ --_field-placeholder-fg: var(
72
+ --field-invalid-placeholder-fg,
73
+ var(--field-invalid-fg, var(--sys-color-error-fg))
74
+ );
75
+ --_field-fill: var(
76
+ --field-invalid-bg,
77
+ var(--sys-color-error-bg)
78
+ );
79
+ border-color: var(--field-invalid-border, var(--sys-color-error-fg));
80
+ background-color: var(--_field-fill);
81
+ color: var(--_field-fg);
82
+ --_segmented-control-indicator-bg: var(
83
+ --segmented-control-indicator-invalid-bg,
84
+ var(--sys-color-error-fg)
85
+ );
86
+ --_segmented-control-indicator-fg: var(
87
+ --segmented-control-indicator-invalid-fg,
88
+ var(--sys-color-error-bg)
89
+ );
90
+ }
91
+ ._group_1gt1b_3[data-disabled] {
92
+ --_field-fg: var(
93
+ --field-disabled-fg,
94
+ var(--sys-color-disabled-fg)
95
+ );
96
+ --_field-muted-fg: var(
97
+ --field-disabled-muted-fg,
98
+ var(--field-disabled-fg, var(--sys-color-disabled-fg))
99
+ );
100
+ --_field-placeholder-fg: var(
101
+ --field-disabled-placeholder-fg,
102
+ var(--field-disabled-fg, var(--sys-color-disabled-fg))
103
+ );
104
+ color: var(--field-disabled-fg, var(--sys-color-disabled-fg));
63
105
  cursor: not-allowed;
64
- --_segmented-control-fill: var(
65
- --sys-color-disabled-fg
106
+ --_segmented-control-indicator-bg: var(
107
+ --segmented-control-indicator-disabled-bg,
108
+ var(--sys-color-disabled-fg)
66
109
  );
67
- --_segmented-control-on-fill: var(
68
- --sys-color-disabled-bg
110
+ --_segmented-control-indicator-fg: var(
111
+ --segmented-control-indicator-disabled-fg,
112
+ var(--sys-color-disabled-bg)
69
113
  );
70
- background: var(--sys-color-disabled-bg);
114
+ background: var(--segmented-control-track-disabled-bg, var(--sys-color-disabled-bg));
71
115
  }
72
- ._option_1tamn_72 {
116
+ ._option_1gt1b_116 {
73
117
  display: inline-flex;
74
118
  flex: 0 0 auto;
75
119
  align-items: center;
76
120
  justify-content: center;
77
- gap: var(--sys-unit-3);
121
+ gap: var(--segmented-control-option-gap, var(--sys-unit-3));
78
122
  box-sizing: border-box;
79
123
  min-block-size: var(--segmented-control-option-block-size, var(--sys-unit-20));
80
124
  border: 0;
81
- border-radius: var(--sys-radius-full);
125
+ border-radius: var(--segmented-control-option-radius, var(--sys-radius-full));
82
126
  background: none;
83
- padding-inline: var(--segmented-control-option-padding-inline, var(--sys-unit-10));
84
- color: var(--field-fg);
127
+ padding-inline: var(--segmented-control-option-pad-x, var(--sys-unit-10));
128
+ color: var(--_field-fg);
85
129
  font: var(--segmented-control-font, var(--sys-font-label-medium));
86
130
  cursor: pointer;
87
131
  }
88
- ._option_1tamn_72 {
132
+ ._option_1gt1b_116 {
89
133
  outline: 0 solid var(--sys-color-focus-ring);
90
134
  outline-offset: var(--sys-focus-ring-offset);
91
135
  }
92
- ._option_1tamn_72[data-focus-visible] {
136
+ ._option_1gt1b_116[data-focus-visible] {
93
137
  outline-width: var(--sys-focus-ring-width);
94
138
  }
95
- ._option_1tamn_72 {
139
+ ._option_1gt1b_116 {
96
140
  position: relative;
97
141
  isolation: isolate;
98
142
  }
99
- ._option_1tamn_72::after {
143
+ ._option_1gt1b_116::after {
100
144
  content: "";
101
145
  position: absolute;
102
146
  z-index: -1;
@@ -107,32 +151,41 @@
107
151
  pointer-events: none;
108
152
  }
109
153
  @media not (prefers-reduced-motion) {
110
- ._option_1tamn_72::after {
154
+ ._option_1gt1b_116::after {
111
155
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard);
112
156
  }
113
157
  }
114
- ._option_1tamn_72:hover:not(:disabled, [data-disabled])::after {
158
+ ._option_1gt1b_116:hover:not(:disabled, [data-disabled])::after {
115
159
  opacity: var(--sys-state-hover);
116
160
  }
117
- ._option_1tamn_72:active:not(:disabled, [data-disabled])::after {
161
+ ._option_1gt1b_116:active:not(:disabled, [data-disabled])::after {
118
162
  opacity: var(--sys-state-pressed);
119
163
  }
120
- ._option_1tamn_72 {
164
+ ._option_1gt1b_116 {
121
165
  outline-offset: calc(-1 * var(--sys-focus-ring-width));
122
166
  }
123
167
  @media not (prefers-reduced-motion) {
124
- ._option_1tamn_72 {
168
+ ._option_1gt1b_116 {
125
169
  transition: color var(--sys-motion-short) var(--sys-motion-standard);
126
170
  }
127
171
  }
128
- ._option_1tamn_72[data-disabled] {
129
- --field-fg: var(--sys-color-disabled-fg);
130
- --field-muted-fg: var(--sys-color-disabled-fg);
131
- --field-placeholder-fg: var(--sys-color-disabled-fg);
132
- color: var(--sys-color-disabled-fg);
172
+ ._option_1gt1b_116[data-disabled] {
173
+ --_field-fg: var(
174
+ --field-disabled-fg,
175
+ var(--sys-color-disabled-fg)
176
+ );
177
+ --_field-muted-fg: var(
178
+ --field-disabled-muted-fg,
179
+ var(--field-disabled-fg, var(--sys-color-disabled-fg))
180
+ );
181
+ --_field-placeholder-fg: var(
182
+ --field-disabled-placeholder-fg,
183
+ var(--field-disabled-fg, var(--sys-color-disabled-fg))
184
+ );
185
+ color: var(--field-disabled-fg, var(--sys-color-disabled-fg));
133
186
  cursor: not-allowed;
134
187
  }
135
- ._indicator_1tamn_135 {
188
+ ._indicator_1gt1b_188 {
136
189
  --_indicator-slack: var(
137
190
  --sliding-indicator-slack,
138
191
  0.5px
@@ -150,34 +203,34 @@
150
203
  pointer-events: none;
151
204
  }
152
205
  @media not (prefers-reduced-motion) {
153
- ._indicator_1tamn_135 {
206
+ ._indicator_1gt1b_188 {
154
207
  transition: inset-inline-start var(--_indicator-slide), inset-block-start var(--_indicator-slide), inline-size var(--_indicator-slide), block-size var(--_indicator-slide), opacity var(--sys-motion-instant) var(--sys-motion-standard), scale var(--sys-motion-short) var(--sys-motion-overshoot);
155
208
  }
156
209
  }
157
- ._indicator_1tamn_135[data-jump] {
210
+ ._indicator_1gt1b_188[data-jump] {
158
211
  --_indicator-slide: 0s;
159
212
  }
160
- ._indicator_1tamn_135[data-empty] {
213
+ ._indicator_1gt1b_188[data-empty] {
161
214
  opacity: 0;
162
215
  scale: 0;
163
216
  }
164
217
  @media not (prefers-reduced-motion) {
165
- ._indicator_1tamn_135[data-empty] {
218
+ ._indicator_1gt1b_188[data-empty] {
166
219
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard), scale var(--sys-motion-instant) var(--sys-motion-standard);
167
220
  }
168
221
  }
169
- ._indicator_1tamn_135 {
222
+ ._indicator_1gt1b_188 {
170
223
  outline: 0 solid var(--sys-color-focus-ring);
171
224
  outline-offset: var(--sys-focus-ring-offset);
172
225
  }
173
- ._indicator_1tamn_135 {
174
- border-radius: var(--sys-radius-full);
175
- background: var(--_segmented-control-fill);
226
+ ._indicator_1gt1b_188 {
227
+ border-radius: var(--segmented-control-indicator-radius, var(--sys-radius-full));
228
+ background: var(--_segmented-control-indicator-bg);
176
229
  }
177
- ._option_1tamn_72[data-pressed][data-focus-visible] ~ ._indicator_1tamn_135 {
230
+ ._option_1gt1b_116[data-pressed][data-focus-visible] ~ ._indicator_1gt1b_188 {
178
231
  outline-width: var(--sys-focus-ring-width);
179
232
  }
180
- ._indicatorLabels_1tamn_180 {
233
+ ._indicatorLabels_1gt1b_233 {
181
234
  position: absolute;
182
235
  inset-inline-start: calc(var(--_indicator-slack) - var(--active-item-left, 0));
183
236
  inset-block-start: calc(var(--_indicator-slack) - var(--active-item-top, 0));
@@ -185,19 +238,19 @@
185
238
  inline-size: max-content;
186
239
  }
187
240
  @media not (prefers-reduced-motion) {
188
- ._indicatorLabels_1tamn_180 {
241
+ ._indicatorLabels_1gt1b_233 {
189
242
  transition: inset-inline-start var(--_indicator-slide), inset-block-start var(--_indicator-slide);
190
243
  }
191
244
  }
192
- ._group_1tamn_3[data-orientation=vertical] ._indicatorLabels_1tamn_180 {
245
+ ._group_1gt1b_3[data-orientation=vertical] ._indicatorLabels_1gt1b_233 {
193
246
  flex-direction: column;
194
247
  align-items: stretch;
195
248
  }
196
- ._indicatorLabels_1tamn_180 ._option_1tamn_72 {
197
- color: var(--_segmented-control-on-fill);
249
+ ._indicatorLabels_1gt1b_233 ._option_1gt1b_116 {
250
+ color: var(--_segmented-control-indicator-fg);
198
251
  cursor: default;
199
252
  }
200
- ._indicatorLabels_1tamn_180 ._option_1tamn_72::after {
253
+ ._indicatorLabels_1gt1b_233 ._option_1gt1b_116::after {
201
254
  content: none;
202
255
  }
203
256
  }
@@ -1,7 +1,7 @@
1
1
  import { Toggle as BaseToggle } from "@base-ui/react/toggle";
2
2
  import { ToggleGroup as BaseToggleGroup } from "@base-ui/react/toggle-group";
3
- import type { ReactNode } from "react";
4
- import { Field, type ChoiceOption } from "../field/index.ts";
3
+ import type { ComponentProps, ReactNode } from "react";
4
+ import { Field } from "../field/index.ts";
5
5
  import { FieldsetLegend, FieldsetRoot, type FieldsetRootProps } from "../fieldset/fieldset-root.tsx";
6
6
  export type SegmentedControlRootProps = FieldsetRootProps;
7
7
  export type SegmentedControlGroupProps = Omit<BaseToggleGroup.Props, "multiple"> & Readonly<{
@@ -13,20 +13,37 @@ export type SegmentedControlGroupProps = Omit<BaseToggleGroup.Props, "multiple">
13
13
  declare const SegmentedControlGroup: ({ className, readOnly, invalid, disabled, onValueChange, children, ...props }: SegmentedControlGroupProps) => ReactNode;
14
14
  export type SegmentedControlOptionProps = BaseToggle.Props;
15
15
  declare const SegmentedControlOption: ({ className, children, ...props }: SegmentedControlOptionProps) => ReactNode;
16
- export type SegmentedControlIndicatorProps = Readonly<{
17
- /** The choices, in the order the group renders them. */
18
- options: readonly ChoiceOption[];
19
- }>;
16
+ export type SegmentedControlIndicatorProps = Omit<ComponentProps<"span">, "ref">;
17
+ /**
18
+ * The pill that slides to the pressed option, after the options in the group.
19
+ * Arriving from an empty group it lands in place and pops. Give it
20
+ * `IndicatorLabels` for ink that changes colour as the pill arrives.
21
+ *
22
+ * @example
23
+ * <SegmentedControl.Indicator>
24
+ * <SegmentedControl.IndicatorLabels>…</SegmentedControl.IndicatorLabels>
25
+ * </SegmentedControl.Indicator>
26
+ */
27
+ declare const SegmentedControlIndicator: ({ className, ...props }: SegmentedControlIndicatorProps) => ReactNode;
28
+ /**
29
+ * A second copy of every option's label inside the pill, offset so that only
30
+ * the pressed one falls inside it. Holds one `IndicatorLabel` per option, in
31
+ * the order the group renders them.
32
+ *
33
+ * @example
34
+ * <SegmentedControl.IndicatorLabels>
35
+ * <SegmentedControl.IndicatorLabel>List</SegmentedControl.IndicatorLabel>
36
+ * <SegmentedControl.IndicatorLabel>Board</SegmentedControl.IndicatorLabel>
37
+ * </SegmentedControl.IndicatorLabels>
38
+ */
39
+ declare const SegmentedControlIndicatorLabels: ({ className, ...props }: ComponentProps<"span">) => ReactNode;
20
40
  /**
21
- * The pill that slides to the pressed option. It holds a second copy of every
22
- * label, offset so that only the pressed one falls inside the pill, so the ink
23
- * changes colour as the pill arrives rather than the instant the value does.
24
- * Arriving from an empty group it lands in place and pops.
41
+ * One option's label as the pill shows it, matching that option's content.
25
42
  *
26
43
  * @example
27
- * <SegmentedControl.Indicator options={options} />
44
+ * <SegmentedControl.IndicatorLabel>List</SegmentedControl.IndicatorLabel>
28
45
  */
29
- declare const SegmentedControlIndicator: ({ options, }: SegmentedControlIndicatorProps) => ReactNode;
46
+ declare const SegmentedControlIndicatorLabel: ({ className, ...props }: ComponentProps<"span">) => ReactNode;
30
47
  /** The parts of a segmented control. */
31
48
  export type SegmentedControlParts = Readonly<{
32
49
  Root: typeof FieldsetRoot;
@@ -34,6 +51,8 @@ export type SegmentedControlParts = Readonly<{
34
51
  Group: typeof SegmentedControlGroup;
35
52
  Option: typeof SegmentedControlOption;
36
53
  Indicator: typeof SegmentedControlIndicator;
54
+ IndicatorLabels: typeof SegmentedControlIndicatorLabels;
55
+ IndicatorLabel: typeof SegmentedControlIndicatorLabel;
37
56
  Description: typeof Field.Description;
38
57
  Error: typeof Field.Error;
39
58
  useIds: typeof Field.useIds;
@@ -45,12 +64,17 @@ export type SegmentedControlParts = Readonly<{
45
64
  * `SegmentedControlField`.
46
65
  *
47
66
  * @example
48
- * <SegmentedControl.Root filled={view !== null}>
49
- * <SegmentedControl.Legend optionalLabel="optional">View</SegmentedControl.Legend>
67
+ * <SegmentedControl.Root filled={view !== null} requiredness="optional">
68
+ * <SegmentedControl.Legend>View <Field.Requiredness optionalLabel="optional" /></SegmentedControl.Legend>
50
69
  * <SegmentedControl.Group value={view === null ? [] : [view]} onValueChange={next => setView(next[0] ?? null)}>
51
70
  * <SegmentedControl.Option value="list">List</SegmentedControl.Option>
52
71
  * <SegmentedControl.Option value="board">Board</SegmentedControl.Option>
53
- * <SegmentedControl.Indicator options={views} />
72
+ * <SegmentedControl.Indicator>
73
+ * <SegmentedControl.IndicatorLabels>
74
+ * <SegmentedControl.IndicatorLabel>List</SegmentedControl.IndicatorLabel>
75
+ * <SegmentedControl.IndicatorLabel>Board</SegmentedControl.IndicatorLabel>
76
+ * </SegmentedControl.IndicatorLabels>
77
+ * </SegmentedControl.Indicator>
54
78
  * </SegmentedControl.Group>
55
79
  * </SegmentedControl.Root>
56
80
  */