@igne-agency/react-web-ui 0.5.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 (254) hide show
  1. package/dist/components/accordion/accordion.css +21 -21
  2. package/dist/components/accordion/accordion.d.ts +17 -4
  3. package/dist/components/accordion/accordion.js +83 -36
  4. package/dist/components/accordion/accordion.module.js +6 -6
  5. package/dist/components/attachment-tile/attachment-preview.d.ts +56 -13
  6. package/dist/components/attachment-tile/attachment-preview.js +388 -119
  7. package/dist/components/attachment-tile/attachment-tile.css +31 -25
  8. package/dist/components/attachment-tile/attachment-tile.d.ts +32 -10
  9. package/dist/components/attachment-tile/attachment-tile.js +160 -43
  10. package/dist/components/attachment-tile/attachment-tile.module.js +8 -8
  11. package/dist/components/attachment-tile/index.d.ts +1 -1
  12. package/dist/components/avatar/avatar.css +9 -9
  13. package/dist/components/avatar/avatar.d.ts +50 -5
  14. package/dist/components/avatar/avatar.js +178 -64
  15. package/dist/components/avatar/avatar.module.js +3 -3
  16. package/dist/components/avatar-group/avatar-group-context.d.ts +2 -4
  17. package/dist/components/avatar-group/avatar-group-context.js +2 -2
  18. package/dist/components/avatar-group/avatar-group.css +26 -20
  19. package/dist/components/avatar-group/avatar-group.d.ts +85 -27
  20. package/dist/components/avatar-group/avatar-group.js +400 -246
  21. package/dist/components/avatar-group/avatar-group.module.js +8 -8
  22. package/dist/components/breadcrumbs/breadcrumbs.css +12 -12
  23. package/dist/components/breadcrumbs/breadcrumbs.d.ts +69 -23
  24. package/dist/components/breadcrumbs/breadcrumbs.js +299 -248
  25. package/dist/components/breadcrumbs/breadcrumbs.module.js +8 -8
  26. package/dist/components/button/button.css +29 -31
  27. package/dist/components/button/button.d.ts +20 -16
  28. package/dist/components/button/button.js +140 -145
  29. package/dist/components/button/button.module.js +1 -1
  30. package/dist/components/button/index.js +1 -1
  31. package/dist/components/checkbox-field/checkbox-field.js +63 -49
  32. package/dist/components/checkbox-field/checkbox.css +105 -56
  33. package/dist/components/checkbox-field/checkbox.d.ts +3 -2
  34. package/dist/components/checkbox-field/checkbox.js +12 -9
  35. package/dist/components/checkbox-field/checkbox.module.js +4 -4
  36. package/dist/components/checkbox-group-field/checkbox-group-field.js +78 -72
  37. package/dist/components/checkbox-group-field/checkbox-group.css +14 -10
  38. package/dist/components/checkbox-group-field/checkbox-group.d.ts +2 -2
  39. package/dist/components/checkbox-group-field/checkbox-group.js +2 -2
  40. package/dist/components/checkbox-group-field/checkbox-group.module.js +2 -2
  41. package/dist/components/collapsible/collapsible.css +20 -20
  42. package/dist/components/collapsible/collapsible.d.ts +17 -4
  43. package/dist/components/collapsible/collapsible.js +83 -36
  44. package/dist/components/collapsible/collapsible.module.js +5 -5
  45. package/dist/components/combobox-field/combobox-field.js +206 -158
  46. package/dist/components/combobox-field/combobox.css +492 -277
  47. package/dist/components/combobox-field/combobox.d.ts +148 -39
  48. package/dist/components/combobox-field/combobox.js +506 -206
  49. package/dist/components/combobox-field/combobox.module.js +21 -21
  50. package/dist/components/combobox-field/value-state-view.css +5 -5
  51. package/dist/components/combobox-field/value-state-view.module.js +4 -4
  52. package/dist/components/composer/composer-attachments.d.ts +30 -11
  53. package/dist/components/composer/composer-attachments.js +45 -40
  54. package/dist/components/composer/composer-editor.css +40 -35
  55. package/dist/components/composer/composer-editor.d.ts +14 -4
  56. package/dist/components/composer/composer-editor.js +134 -44
  57. package/dist/components/composer/composer-editor.module.js +5 -5
  58. package/dist/components/composer/composer.css +22 -22
  59. package/dist/components/composer/composer.d.ts +13 -2
  60. package/dist/components/composer/composer.js +78 -63
  61. package/dist/components/composer/composer.module.js +5 -5
  62. package/dist/components/composer/index.d.ts +2 -2
  63. package/dist/components/composer/mention-text.css +5 -5
  64. package/dist/components/composer/mention-text.module.js +1 -1
  65. package/dist/components/confirm-dialog/confirm-dialog.css +29 -29
  66. package/dist/components/confirm-dialog/confirm-dialog.d.ts +57 -3
  67. package/dist/components/confirm-dialog/confirm-dialog.js +266 -108
  68. package/dist/components/confirm-dialog/confirm-dialog.module.js +5 -5
  69. package/dist/components/conversation/conversation.css +52 -52
  70. package/dist/components/conversation/conversation.d.ts +43 -18
  71. package/dist/components/conversation/conversation.js +120 -78
  72. package/dist/components/conversation/conversation.module.js +15 -15
  73. package/dist/components/date-field/date-field.d.ts +1 -1
  74. package/dist/components/date-field/date-field.js +202 -100
  75. package/dist/components/date-field/date-input.d.ts +73 -37
  76. package/dist/components/date-field/date-input.js +72 -45
  77. package/dist/components/date-field/index.d.ts +1 -1
  78. package/dist/components/date-range-field/date-range-field.d.ts +1 -1
  79. package/dist/components/date-range-field/date-range-field.js +219 -107
  80. package/dist/components/date-range-field/date-range-input.d.ts +84 -40
  81. package/dist/components/date-range-field/date-range-input.js +83 -48
  82. package/dist/components/dialog/dialog.css +32 -32
  83. package/dist/components/dialog/dialog.d.ts +8 -7
  84. package/dist/components/dialog/dialog.js +8 -26
  85. package/dist/components/dialog/dialog.module.js +6 -6
  86. package/dist/components/divider/divider.css +6 -6
  87. package/dist/components/divider/divider.d.ts +36 -2
  88. package/dist/components/divider/divider.js +195 -29
  89. package/dist/components/divider/divider.module.js +3 -3
  90. package/dist/components/drawer/drawer.css +55 -56
  91. package/dist/components/drawer/drawer.d.ts +8 -7
  92. package/dist/components/drawer/drawer.js +8 -26
  93. package/dist/components/drawer/drawer.module.js +6 -6
  94. package/dist/components/field/field.css +34 -24
  95. package/dist/components/field/field.d.ts +60 -37
  96. package/dist/components/field/field.js +242 -157
  97. package/dist/components/field/field.module.js +12 -10
  98. package/dist/components/field/input-parts.d.ts +11 -13
  99. package/dist/components/field/input-parts.js +23 -42
  100. package/dist/components/field-placeholder/field-placeholder.css +6 -6
  101. package/dist/components/field-placeholder/field-placeholder.module.js +4 -4
  102. package/dist/components/fieldset/field-group.d.ts +1 -1
  103. package/dist/components/fieldset/field-group.js +48 -42
  104. package/dist/components/fieldset/fieldset-root.d.ts +1 -1
  105. package/dist/components/fieldset/fieldset-root.js +19 -17
  106. package/dist/components/fieldset/fieldset.d.ts +2 -2
  107. package/dist/components/fieldset/fieldset.js +2 -2
  108. package/dist/components/file-field/file-field.css +126 -60
  109. package/dist/components/file-field/file-field.js +201 -109
  110. package/dist/components/file-field/file-field.module.js +4 -4
  111. package/dist/components/file-field/file-input.d.ts +66 -40
  112. package/dist/components/file-field/file-input.js +188 -132
  113. package/dist/components/filter-bar/filter-bar.css +8 -8
  114. package/dist/components/filter-bar/filter-bar.d.ts +12 -3
  115. package/dist/components/filter-bar/filter-bar.js +23 -25
  116. package/dist/components/filter-bar/filter-bar.module.js +5 -5
  117. package/dist/components/form/form.d.ts +19 -7
  118. package/dist/components/form/form.js +80 -29
  119. package/dist/components/icon/icon.css +2 -2
  120. package/dist/components/icon/icon.module.js +1 -1
  121. package/dist/components/link/link.css +6 -5
  122. package/dist/components/link/link.module.js +1 -1
  123. package/dist/components/menu/menu.css +52 -47
  124. package/dist/components/menu/menu.d.ts +32 -25
  125. package/dist/components/menu/menu.js +75 -124
  126. package/dist/components/menu/menu.module.js +8 -8
  127. package/dist/components/nav/nav-context.d.ts +1 -1
  128. package/dist/components/nav/nav-item-view.d.ts +10 -13
  129. package/dist/components/nav/nav-item-view.js +42 -54
  130. package/dist/components/nav/nav.css +150 -119
  131. package/dist/components/nav/nav.d.ts +61 -17
  132. package/dist/components/nav/nav.js +271 -176
  133. package/dist/components/nav/nav.module.js +17 -15
  134. package/dist/components/number-field/number-field.css +153 -64
  135. package/dist/components/number-field/number-field.d.ts +2 -2
  136. package/dist/components/number-field/number-field.js +112 -91
  137. package/dist/components/number-field/number-field.module.js +6 -6
  138. package/dist/components/number-field/number-input.d.ts +43 -23
  139. package/dist/components/number-field/number-input.js +179 -125
  140. package/dist/components/otp-field/otp-field.css +153 -60
  141. package/dist/components/otp-field/otp-field.d.ts +2 -2
  142. package/dist/components/otp-field/otp-field.js +62 -46
  143. package/dist/components/otp-field/otp-field.module.js +4 -4
  144. package/dist/components/otp-field/otp-input.d.ts +8 -6
  145. package/dist/components/otp-field/otp-input.js +92 -92
  146. package/dist/components/pagination/pagination.d.ts +46 -15
  147. package/dist/components/pagination/pagination.js +217 -224
  148. package/dist/components/password-field/password-field.css +23 -23
  149. package/dist/components/password-field/password-field.js +107 -85
  150. package/dist/components/password-field/password-field.module.js +8 -8
  151. package/dist/components/password-field/password-strength.d.ts +107 -3
  152. package/dist/components/password-field/password-strength.js +569 -92
  153. package/dist/components/photo-field/photo-field.js +137 -112
  154. package/dist/components/photo-field/photo-input.css +67 -44
  155. package/dist/components/photo-field/photo-input.d.ts +59 -15
  156. package/dist/components/photo-field/photo-input.js +173 -86
  157. package/dist/components/photo-field/photo-input.module.js +10 -8
  158. package/dist/components/popover/popover.css +41 -41
  159. package/dist/components/popover/popover.d.ts +66 -25
  160. package/dist/components/popover/popover.js +332 -217
  161. package/dist/components/popover/popover.module.js +15 -19
  162. package/dist/components/radio-group-field/radio-group-field.js +80 -71
  163. package/dist/components/radio-group-field/radio-group.css +112 -60
  164. package/dist/components/radio-group-field/radio-group.d.ts +19 -3
  165. package/dist/components/radio-group-field/radio-group.js +66 -23
  166. package/dist/components/radio-group-field/radio-group.module.js +4 -4
  167. package/dist/components/segmented-control-field/segmented-control-field.d.ts +1 -1
  168. package/dist/components/segmented-control-field/segmented-control-field.js +111 -96
  169. package/dist/components/segmented-control-field/segmented-control.css +132 -79
  170. package/dist/components/segmented-control-field/segmented-control.d.ts +39 -15
  171. package/dist/components/segmented-control-field/segmented-control.js +124 -41
  172. package/dist/components/segmented-control-field/segmented-control.module.js +4 -4
  173. package/dist/components/select-field/select.css +214 -101
  174. package/dist/components/select-field/select.d.ts +43 -11
  175. package/dist/components/select-field/select.js +194 -109
  176. package/dist/components/select-field/select.module.js +14 -14
  177. package/dist/components/skeleton/skeleton.css +4 -4
  178. package/dist/components/skeleton/skeleton.module.js +3 -3
  179. package/dist/components/stale/stale.css +15 -15
  180. package/dist/components/stale/stale.d.ts +27 -3
  181. package/dist/components/stale/stale.js +147 -66
  182. package/dist/components/stale/stale.module.js +6 -6
  183. package/dist/components/status-message/status-message.css +22 -22
  184. package/dist/components/status-message/status-message.module.js +6 -6
  185. package/dist/components/switch-field/switch-field.js +77 -57
  186. package/dist/components/switch-field/switch.css +112 -63
  187. package/dist/components/switch-field/switch.d.ts +20 -3
  188. package/dist/components/switch-field/switch.js +70 -27
  189. package/dist/components/switch-field/switch.module.js +4 -4
  190. package/dist/components/tabs/tabs.css +32 -32
  191. package/dist/components/tabs/tabs.d.ts +21 -7
  192. package/dist/components/tabs/tabs.js +73 -14
  193. package/dist/components/tabs/tabs.module.js +7 -7
  194. package/dist/components/tag/tag.css +84 -84
  195. package/dist/components/tag/tag.module.js +3 -3
  196. package/dist/components/tag-group/tag-group.css +94 -94
  197. package/dist/components/tag-group/tag-group.module.js +4 -4
  198. package/dist/components/text-field/text-field.css +159 -82
  199. package/dist/components/text-field/text-field.d.ts +1 -1
  200. package/dist/components/text-field/text-field.js +139 -110
  201. package/dist/components/text-field/text-field.module.js +9 -9
  202. package/dist/components/text-field/text-input.d.ts +81 -45
  203. package/dist/components/text-field/text-input.js +366 -217
  204. package/dist/components/textarea-field/textarea-field.css +7 -2
  205. package/dist/components/textarea-field/textarea-field.js +72 -56
  206. package/dist/components/textarea-field/textarea-field.module.js +2 -2
  207. package/dist/components/time-field/time-field.js +153 -60
  208. package/dist/components/time-field/time-input.d.ts +21 -10
  209. package/dist/components/time-field/time-input.js +22 -11
  210. package/dist/components/toast/toast-provider.css +34 -31
  211. package/dist/components/toast/toast-provider.d.ts +63 -14
  212. package/dist/components/toast/toast-provider.js +174 -111
  213. package/dist/components/toast/toast-provider.module.js +7 -7
  214. package/dist/components/toggle-group-field/toggle-group-field.d.ts +1 -1
  215. package/dist/components/toggle-group-field/toggle-group-field.js +95 -89
  216. package/dist/components/toggle-group-field/toggle-group.css +117 -67
  217. package/dist/components/toggle-group-field/toggle-group.d.ts +2 -2
  218. package/dist/components/toggle-group-field/toggle-group.js +2 -2
  219. package/dist/components/toggle-group-field/toggle-group.module.js +2 -2
  220. package/dist/components/tooltip/tooltip.css +4 -4
  221. package/dist/components/tooltip/tooltip.module.js +1 -1
  222. package/dist/data-table/data-table-content.js +6 -5
  223. package/dist/data-table/data-table-parts.d.ts +41 -13
  224. package/dist/data-table/data-table-parts.js +213 -172
  225. package/dist/data-table/data-table-selection.d.ts +105 -3
  226. package/dist/data-table/data-table-selection.js +654 -145
  227. package/dist/data-table/data-table.css +125 -128
  228. package/dist/data-table/data-table.d.ts +21 -26
  229. package/dist/data-table/data-table.js +20 -23
  230. package/dist/data-table/data-table.module.js +32 -34
  231. package/dist/data-table/index.d.ts +2 -2
  232. package/dist/index.js +3 -3
  233. package/dist/lib/calendar/calendar-navigation.d.ts +39 -5
  234. package/dist/lib/calendar/calendar-navigation.js +185 -118
  235. package/dist/lib/calendar/calendar-parts.d.ts +143 -0
  236. package/dist/lib/calendar/calendar-parts.js +540 -0
  237. package/dist/lib/calendar/calendar-prefab.d.ts +52 -0
  238. package/dist/lib/calendar/calendar-prefab.js +311 -0
  239. package/dist/lib/calendar/calendar-year.d.ts +3 -1
  240. package/dist/lib/calendar/calendar-year.js +139 -131
  241. package/dist/lib/calendar/temporal.css +325 -232
  242. package/dist/lib/calendar/temporal.d.ts +67 -82
  243. package/dist/lib/calendar/temporal.js +258 -569
  244. package/dist/lib/calendar/temporal.module.js +38 -38
  245. package/dist/lib/forms/use-connected-field.d.ts +1 -1
  246. package/dist/lib/forms/use-connected-field.js +1 -1
  247. package/dist/lib/render-as.d.ts +13 -0
  248. package/dist/lib/render-as.js +46 -0
  249. package/dist/tokens.css +6 -3
  250. package/package.json +1 -1
  251. package/tokens/dark.tokens.json +6 -0
  252. package/tokens/sys.tokens.json +7 -0
  253. package/dist/components/button/close-button.d.ts +0 -16
  254. package/dist/components/button/close-button.js +0 -30
@@ -1,107 +1,130 @@
1
1
  import { normalizeFieldErrors } from "../../lib/forms/errors.js";
2
2
  import { ErrorText } from "../error-text/error-text.js";
3
- import { Spinner } from "../spinner/spinner.js";
4
3
  import { FieldRowContext, useFieldGroupLineIds } from "./field-group-context.js";
5
4
  import field_module_default from "./field.module.js";
6
5
  import { c } from "react/compiler-runtime";
6
+ import { useRender } from "@base-ui/react/use-render";
7
7
  import { clsx } from "clsx";
8
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
- import { useContext, useId } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { createContext, useContext, useId } from "react";
10
10
  import { Field } from "@base-ui/react/field";
11
11
  // src/components/field/field.tsx
12
12
  var isEmpty = (children) => children === void 0 || children === null || children === false || children === "";
13
+ var RequirednessContext = createContext(void 0);
13
14
  /**
14
15
  * The mark a label carries when its field is required. Decoration only: the
15
16
  * control's own `required` tells assistive tech.
16
17
  *
17
18
  * @example
18
- * <Field.RequiredMark requiredness="required" />
19
+ * <Field.Label>Email <Field.RequiredMark /></Field.Label>
19
20
  */
20
21
  var RequiredMark = (t0) => {
21
- const $ = c(2);
22
+ const $ = c(3);
22
23
  const { requiredness } = t0;
24
+ const fieldRequiredness = useContext(RequirednessContext);
23
25
  let t1;
24
- if ($[0] !== requiredness) {
25
- t1 = requiredness === "required" ? /* @__PURE__ */ jsx("span", {
26
+ if ($[0] !== fieldRequiredness || $[1] !== requiredness) {
27
+ t1 = (requiredness ?? fieldRequiredness) === "required" ? /* @__PURE__ */ jsx("span", {
26
28
  className: field_module_default.required,
27
29
  "aria-hidden": "true"
28
30
  }) : null;
29
- $[0] = requiredness;
30
- $[1] = t1;
31
- } else t1 = $[1];
31
+ $[0] = fieldRequiredness;
32
+ $[1] = requiredness;
33
+ $[2] = t1;
34
+ } else t1 = $[2];
32
35
  return t1;
33
36
  };
34
37
  /**
35
38
  * The suffix a label trails: the required mark, or the optional word.
36
39
  *
37
40
  * @example
38
- * <Field.Requiredness requiredness="optional" optionalLabel="optional" />
41
+ * <Field.Label>Notes <Field.Requiredness optionalLabel="optional" /></Field.Label>
39
42
  */
40
43
  var FieldRequiredness = (t0) => {
41
44
  const $ = c(3);
42
45
  const { requiredness, optionalLabel } = t0;
46
+ const fieldRequiredness = useContext(RequirednessContext);
47
+ const asserted = requiredness ?? fieldRequiredness;
43
48
  let t1;
44
- if ($[0] !== optionalLabel || $[1] !== requiredness) {
45
- t1 = requiredness === "optional" ? /* @__PURE__ */ jsx("span", {
49
+ if ($[0] !== asserted || $[1] !== optionalLabel) {
50
+ t1 = asserted === "optional" ? /* @__PURE__ */ jsx("span", {
46
51
  className: field_module_default.optional,
47
52
  children: optionalLabel
48
- }) : /* @__PURE__ */ jsx(RequiredMark, { requiredness });
49
- $[0] = optionalLabel;
50
- $[1] = requiredness;
53
+ }) : /* @__PURE__ */ jsx(RequiredMark, { requiredness: asserted });
54
+ $[0] = asserted;
55
+ $[1] = optionalLabel;
51
56
  $[2] = t1;
52
57
  } else t1 = $[2];
53
58
  return t1;
54
59
  };
55
60
  /**
56
- * The text beside a control that shares its label, carrying the suffix a
57
- * `fieldLabel` above the row would otherwise carry.
61
+ * The optional word of a label beside its control, on a row of its own under
62
+ * the label's text. Renders nothing unless the field is optional.
58
63
  *
59
64
  * @example
60
65
  * <Checkbox.Label>
61
- * <Checkbox.Control><Checkbox.Indicator><CheckIcon /></Checkbox.Indicator></Checkbox.Control>
62
- * <Field.InlineLabelText label={label} requiredness="optional" optionalLabel="optional" />
66
+ * <Checkbox.Control>…</Checkbox.Control>
67
+ * <Field.InlineLabelText>Send me a copy <Field.RequiredMark /></Field.InlineLabelText>
68
+ * <Field.InlineOptional optionalLabel="optional" />
63
69
  * </Checkbox.Label>
64
70
  */
65
- var InlineLabelText = (t0) => {
66
- const $ = c(13);
67
- const { label, fieldLabel, requiredness, optionalLabel } = t0;
71
+ var InlineOptional = (t0) => {
72
+ const $ = c(4);
73
+ const { requiredness, optionalLabel } = t0;
74
+ const fieldRequiredness = useContext(RequirednessContext);
68
75
  let t1;
69
- if ($[0] !== fieldLabel || $[1] !== requiredness) {
70
- t1 = fieldLabel === void 0 && requiredness === "required" && /* @__PURE__ */ jsxs(Fragment, { children: [" ", /* @__PURE__ */ jsx(RequiredMark, { requiredness })] });
71
- $[0] = fieldLabel;
72
- $[1] = requiredness;
73
- $[2] = t1;
74
- } else t1 = $[2];
75
- let t2;
76
- if ($[3] !== label || $[4] !== t1) {
77
- t2 = /* @__PURE__ */ jsxs("span", {
78
- className: field_module_default.inlineText,
79
- children: [label, t1]
80
- });
81
- $[3] = label;
82
- $[4] = t1;
83
- $[5] = t2;
84
- } else t2 = $[5];
85
- let t3;
86
- if ($[6] !== fieldLabel || $[7] !== optionalLabel || $[8] !== requiredness) {
87
- t3 = requiredness === "optional" && fieldLabel === void 0 && /* @__PURE__ */ jsx("span", {
76
+ if ($[0] !== fieldRequiredness || $[1] !== optionalLabel || $[2] !== requiredness) {
77
+ t1 = (requiredness ?? fieldRequiredness) === "optional" ? /* @__PURE__ */ jsx("span", {
88
78
  "data-optional-suffix": "",
89
79
  className: clsx(field_module_default.optional, field_module_default.inlineOptional),
90
80
  children: optionalLabel
81
+ }) : null;
82
+ $[0] = fieldRequiredness;
83
+ $[1] = optionalLabel;
84
+ $[2] = requiredness;
85
+ $[3] = t1;
86
+ } else t1 = $[3];
87
+ return t1;
88
+ };
89
+ /**
90
+ * The text of a label beside its control, such as a lone checkbox's.
91
+ *
92
+ * @example
93
+ * <Checkbox.Label>
94
+ * <Checkbox.Control><Checkbox.Indicator><CheckIcon /></Checkbox.Indicator></Checkbox.Control>
95
+ * <Field.InlineLabelText>I agree to the terms <Field.RequiredMark /></Field.InlineLabelText>
96
+ * </Checkbox.Label>
97
+ */
98
+ var InlineLabelText = (t0) => {
99
+ const $ = c(8);
100
+ let className;
101
+ let props;
102
+ if ($[0] !== t0) {
103
+ ({className, ...props} = t0);
104
+ $[0] = t0;
105
+ $[1] = className;
106
+ $[2] = props;
107
+ } else {
108
+ className = $[1];
109
+ props = $[2];
110
+ }
111
+ let t1;
112
+ if ($[3] !== className) {
113
+ t1 = clsx(field_module_default.inlineText, className);
114
+ $[3] = className;
115
+ $[4] = t1;
116
+ } else t1 = $[4];
117
+ let t2;
118
+ if ($[5] !== props || $[6] !== t1) {
119
+ t2 = /* @__PURE__ */ jsx("span", {
120
+ className: t1,
121
+ ...props
91
122
  });
92
- $[6] = fieldLabel;
93
- $[7] = optionalLabel;
94
- $[8] = requiredness;
95
- $[9] = t3;
96
- } else t3 = $[9];
97
- let t4;
98
- if ($[10] !== t2 || $[11] !== t3) {
99
- t4 = /* @__PURE__ */ jsxs(Fragment, { children: [t2, t3] });
100
- $[10] = t2;
101
- $[11] = t3;
102
- $[12] = t4;
103
- } else t4 = $[12];
104
- return t4;
123
+ $[5] = props;
124
+ $[6] = t1;
125
+ $[7] = t2;
126
+ } else t2 = $[7];
127
+ return t2;
105
128
  };
106
129
  /**
107
130
  * The field frame: label, control, description and error stacked full width.
@@ -111,104 +134,95 @@ var InlineLabelText = (t0) => {
111
134
  * <Field.Root name="email" invalid={invalid}>…</Field.Root>
112
135
  */
113
136
  var FieldRoot = (t0) => {
114
- const $ = c(13);
137
+ const $ = c(15);
115
138
  let children;
116
139
  let className;
117
140
  let props;
141
+ let requiredness;
118
142
  if ($[0] !== t0) {
119
- ({className, children, ...props} = t0);
143
+ ({className, requiredness, children, ...props} = t0);
120
144
  $[0] = t0;
121
145
  $[1] = children;
122
146
  $[2] = className;
123
147
  $[3] = props;
148
+ $[4] = requiredness;
124
149
  } else {
125
150
  children = $[1];
126
151
  className = $[2];
127
152
  props = $[3];
153
+ requiredness = $[4];
128
154
  }
129
155
  const inRow = useContext(FieldRowContext);
130
156
  let t1;
131
- if ($[4] !== className) {
157
+ if ($[5] !== className) {
132
158
  t1 = clsx(field_module_default.field, className);
133
- $[4] = className;
134
- $[5] = t1;
135
- } else t1 = $[5];
159
+ $[5] = className;
160
+ $[6] = t1;
161
+ } else t1 = $[6];
136
162
  const t2 = inRow ? "" : void 0;
137
163
  let t3;
138
- if ($[6] !== children) {
164
+ if ($[7] !== children || $[8] !== requiredness) {
139
165
  t3 = /* @__PURE__ */ jsx(FieldRowContext, {
140
166
  value: false,
141
- children
167
+ children: /* @__PURE__ */ jsx(RequirednessContext, {
168
+ value: requiredness,
169
+ children
170
+ })
142
171
  });
143
- $[6] = children;
144
- $[7] = t3;
145
- } else t3 = $[7];
172
+ $[7] = children;
173
+ $[8] = requiredness;
174
+ $[9] = t3;
175
+ } else t3 = $[9];
146
176
  let t4;
147
- if ($[8] !== props || $[9] !== t1 || $[10] !== t2 || $[11] !== t3) {
177
+ if ($[10] !== props || $[11] !== t1 || $[12] !== t2 || $[13] !== t3) {
148
178
  t4 = /* @__PURE__ */ jsx(Field.Root, {
149
179
  className: t1,
150
180
  "data-field-group-member": t2,
151
181
  ...props,
152
182
  children: t3
153
183
  });
154
- $[8] = props;
155
- $[9] = t1;
156
- $[10] = t2;
157
- $[11] = t3;
158
- $[12] = t4;
159
- } else t4 = $[12];
184
+ $[10] = props;
185
+ $[11] = t1;
186
+ $[12] = t2;
187
+ $[13] = t3;
188
+ $[14] = t4;
189
+ } else t4 = $[14];
160
190
  return t4;
161
191
  };
162
192
  /**
163
- * The label above a control, trailing its requiredness. Renders nothing without
164
- * children.
193
+ * The label above a control. Renders nothing without children.
165
194
  *
166
195
  * @example
167
- * <Field.Label requiredness="optional" optionalLabel="optional">Notes</Field.Label>
196
+ * <Field.Label>Notes <Field.Requiredness optionalLabel="optional" /></Field.Label>
168
197
  */
169
198
  var FieldLabel = (t0) => {
170
- const $ = c(12);
199
+ const $ = c(8);
171
200
  let children;
172
201
  let className;
173
- let optionalLabel;
174
202
  let props;
175
- let requiredness;
176
203
  if ($[0] !== t0) {
177
- ({children, requiredness, optionalLabel, className, ...props} = t0);
204
+ ({children, className, ...props} = t0);
178
205
  $[0] = t0;
179
206
  $[1] = children;
180
207
  $[2] = className;
181
- $[3] = optionalLabel;
182
- $[4] = props;
183
- $[5] = requiredness;
208
+ $[3] = props;
184
209
  } else {
185
210
  children = $[1];
186
211
  className = $[2];
187
- optionalLabel = $[3];
188
- props = $[4];
189
- requiredness = $[5];
212
+ props = $[3];
190
213
  }
191
214
  let t1;
192
- if ($[6] !== children || $[7] !== className || $[8] !== optionalLabel || $[9] !== props || $[10] !== requiredness) {
193
- t1 = isEmpty(children) ? null : /* @__PURE__ */ jsxs(Field.Label, {
215
+ if ($[4] !== children || $[5] !== className || $[6] !== props) {
216
+ t1 = isEmpty(children) ? null : /* @__PURE__ */ jsx(Field.Label, {
194
217
  className: clsx(field_module_default.label, className),
195
218
  ...props,
196
- children: [
197
- children,
198
- " ",
199
- /* @__PURE__ */ jsx(FieldRequiredness, {
200
- requiredness,
201
- optionalLabel
202
- })
203
- ]
219
+ children
204
220
  });
205
- $[6] = children;
206
- $[7] = className;
207
- $[8] = optionalLabel;
208
- $[9] = props;
209
- $[10] = requiredness;
210
- $[11] = t1;
211
- } else t1 = $[11];
221
+ $[4] = children;
222
+ $[5] = className;
223
+ $[6] = props;
224
+ $[7] = t1;
225
+ } else t1 = $[7];
212
226
  return t1;
213
227
  };
214
228
  /**
@@ -217,51 +231,36 @@ var FieldLabel = (t0) => {
217
231
  * a control that already carries its own name. To name something, use `Label`.
218
232
  *
219
233
  * @example
220
- * <Field.Caption optionalLabel="optional">Theme</Field.Caption>
234
+ * <Field.Caption>Theme <Field.Requiredness requiredness="optional" optionalLabel="optional" /></Field.Caption>
221
235
  */
222
236
  var FieldCaption = (t0) => {
223
- const $ = c(12);
237
+ const $ = c(8);
224
238
  let children;
225
239
  let className;
226
- let optionalLabel;
227
240
  let props;
228
- let requiredness;
229
241
  if ($[0] !== t0) {
230
- ({children, requiredness, optionalLabel, className, ...props} = t0);
242
+ ({children, className, ...props} = t0);
231
243
  $[0] = t0;
232
244
  $[1] = children;
233
245
  $[2] = className;
234
- $[3] = optionalLabel;
235
- $[4] = props;
236
- $[5] = requiredness;
246
+ $[3] = props;
237
247
  } else {
238
248
  children = $[1];
239
249
  className = $[2];
240
- optionalLabel = $[3];
241
- props = $[4];
242
- requiredness = $[5];
250
+ props = $[3];
243
251
  }
244
252
  let t1;
245
- if ($[6] !== children || $[7] !== className || $[8] !== optionalLabel || $[9] !== props || $[10] !== requiredness) {
246
- t1 = isEmpty(children) ? null : /* @__PURE__ */ jsxs("p", {
253
+ if ($[4] !== children || $[5] !== className || $[6] !== props) {
254
+ t1 = isEmpty(children) ? null : /* @__PURE__ */ jsx("p", {
247
255
  className: clsx(field_module_default.label, className),
248
256
  ...props,
249
- children: [
250
- children,
251
- " ",
252
- /* @__PURE__ */ jsx(FieldRequiredness, {
253
- requiredness,
254
- optionalLabel
255
- })
256
- ]
257
+ children
257
258
  });
258
- $[6] = children;
259
- $[7] = className;
260
- $[8] = optionalLabel;
261
- $[9] = props;
262
- $[10] = requiredness;
263
- $[11] = t1;
264
- } else t1 = $[11];
259
+ $[4] = children;
260
+ $[5] = className;
261
+ $[6] = props;
262
+ $[7] = t1;
263
+ } else t1 = $[7];
265
264
  return t1;
266
265
  };
267
266
  /**
@@ -362,38 +361,122 @@ var FieldError = (t0) => {
362
361
  return t2;
363
362
  };
364
363
  /**
365
- * The spinner a field shows while background work is in flight, sized to sit
366
- * in the box beside the control. The control decides when it is mounted, once
367
- * the wait is worth showing. It is decoration: the wait reaches assistive tech
368
- * as the `aria-busy` that `fieldStateAttributes` projects.
364
+ * The box beside the control that a field's wait shows in, holding what it is
365
+ * given, such as a spinner. The control decides when it is mounted, once the
366
+ * wait is worth showing. It is decoration: the wait reaches assistive tech as
367
+ * the `aria-busy` that `fieldStateAttributes` projects.
369
368
  *
370
369
  * @example
371
- * {phase !== "fresh" && <Field.Pending />}
370
+ * {phase !== "fresh" && <Field.Pending><Spinner size={1} /></Field.Pending>}
372
371
  */
373
372
  var FieldPending = (t0) => {
374
- const $ = c(5);
375
- const { className } = t0;
373
+ const $ = c(14);
374
+ let className;
375
+ let props;
376
+ let ref;
377
+ let render;
378
+ if ($[0] !== t0) {
379
+ ({className, render, ref, ...props} = t0);
380
+ $[0] = t0;
381
+ $[1] = className;
382
+ $[2] = props;
383
+ $[3] = ref;
384
+ $[4] = render;
385
+ } else {
386
+ className = $[1];
387
+ props = $[2];
388
+ ref = $[3];
389
+ render = $[4];
390
+ }
376
391
  let t1;
377
- if ($[0] !== className) {
392
+ if ($[5] !== className) {
378
393
  t1 = clsx(field_module_default.pending, className);
379
- $[0] = className;
380
- $[1] = t1;
381
- } else t1 = $[1];
394
+ $[5] = className;
395
+ $[6] = t1;
396
+ } else t1 = $[6];
382
397
  let t2;
383
- if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
384
- t2 = /* @__PURE__ */ jsx(Spinner, { size: 1 });
385
- $[2] = t2;
386
- } else t2 = $[2];
398
+ if ($[7] !== props || $[8] !== t1) {
399
+ t2 = {
400
+ ...props,
401
+ className: t1
402
+ };
403
+ $[7] = props;
404
+ $[8] = t1;
405
+ $[9] = t2;
406
+ } else t2 = $[9];
387
407
  let t3;
388
- if ($[3] !== t1) {
389
- t3 = /* @__PURE__ */ jsx("span", {
390
- className: t1,
391
- children: t2
392
- });
393
- $[3] = t1;
394
- $[4] = t3;
395
- } else t3 = $[4];
396
- return t3;
408
+ if ($[10] !== ref || $[11] !== render || $[12] !== t2) {
409
+ t3 = {
410
+ defaultTagName: "span",
411
+ render,
412
+ ref,
413
+ props: t2
414
+ };
415
+ $[10] = ref;
416
+ $[11] = render;
417
+ $[12] = t2;
418
+ $[13] = t3;
419
+ } else t3 = $[13];
420
+ return useRender(t3);
421
+ };
422
+ /**
423
+ * A row holding a field's label and what sits beside it, such as a link or a
424
+ * counter, in place of the bare label.
425
+ *
426
+ * @example
427
+ * <Field.LabelRow>
428
+ * <TextInput.Label>Password</TextInput.Label>
429
+ * <Link href="/reset">Forgot password?</Link>
430
+ * </Field.LabelRow>
431
+ */
432
+ var FieldLabelRow = (t0) => {
433
+ const $ = c(14);
434
+ let className;
435
+ let props;
436
+ let ref;
437
+ let render;
438
+ if ($[0] !== t0) {
439
+ ({className, render, ref, ...props} = t0);
440
+ $[0] = t0;
441
+ $[1] = className;
442
+ $[2] = props;
443
+ $[3] = ref;
444
+ $[4] = render;
445
+ } else {
446
+ className = $[1];
447
+ props = $[2];
448
+ ref = $[3];
449
+ render = $[4];
450
+ }
451
+ let t1;
452
+ if ($[5] !== className) {
453
+ t1 = clsx(field_module_default.labelRow, className);
454
+ $[5] = className;
455
+ $[6] = t1;
456
+ } else t1 = $[6];
457
+ let t2;
458
+ if ($[7] !== props || $[8] !== t1) {
459
+ t2 = {
460
+ ...props,
461
+ className: t1
462
+ };
463
+ $[7] = props;
464
+ $[8] = t1;
465
+ $[9] = t2;
466
+ } else t2 = $[9];
467
+ let t3;
468
+ if ($[10] !== ref || $[11] !== render || $[12] !== t2) {
469
+ t3 = {
470
+ render,
471
+ ref,
472
+ props: t2
473
+ };
474
+ $[10] = ref;
475
+ $[11] = render;
476
+ $[12] = t2;
477
+ $[13] = t3;
478
+ } else t3 = $[13];
479
+ return useRender(t3);
397
480
  };
398
481
  /**
399
482
  * Stable ids for a field's label, description and error, for controls that
@@ -442,8 +525,8 @@ var useFieldIds = () => {
442
525
  * before `Error`, the field's only live region.
443
526
  *
444
527
  * @example
445
- * <Field.Root name="email" invalid={invalid}>
446
- * <Field.Label requiredness="required" optionalLabel="optional">Email</Field.Label>
528
+ * <Field.Root name="email" invalid={invalid} requiredness="required">
529
+ * <Field.Label>Email <Field.Requiredness optionalLabel="optional" /></Field.Label>
447
530
  * <Field.Control />
448
531
  * <Field.Description>We send the receipt here.</Field.Description>
449
532
  * <Field.Error>{errors}</Field.Error>
@@ -452,6 +535,7 @@ var useFieldIds = () => {
452
535
  var Field$1 = {
453
536
  Root: FieldRoot,
454
537
  Label: FieldLabel,
538
+ LabelRow: FieldLabelRow,
455
539
  Caption: FieldCaption,
456
540
  Control: Field.Control,
457
541
  Description: FieldDescription,
@@ -462,6 +546,7 @@ var Field$1 = {
462
546
  Requiredness: FieldRequiredness,
463
547
  RequiredMark,
464
548
  InlineLabelText,
549
+ InlineOptional,
465
550
  useIds: useFieldIds
466
551
  };
467
552
  function _temp(lineId) {
@@ -1,16 +1,18 @@
1
1
  import './field.css';// src/components/field/field.module.scss
2
- var field = "_field_dzutr_3";
3
- var label = "_label_dzutr_13";
4
- var description = "_description_dzutr_22";
5
- var error = "_error_dzutr_25";
6
- var optional = "_optional_dzutr_33";
7
- var inlineText = "_inlineText_dzutr_39";
8
- var inlineOptional = "_inlineOptional_dzutr_42";
9
- var required = "_required_dzutr_45";
10
- var pending = "_pending_dzutr_58";
2
+ var field = "_field_160cj_3";
3
+ var label = "_label_160cj_16";
4
+ var labelRow = "_labelRow_160cj_16";
5
+ var description = "_description_160cj_25";
6
+ var error = "_error_160cj_28";
7
+ var optional = "_optional_160cj_43";
8
+ var inlineText = "_inlineText_160cj_49";
9
+ var inlineOptional = "_inlineOptional_160cj_52";
10
+ var required = "_required_160cj_55";
11
+ var pending = "_pending_160cj_68";
11
12
  var field_module_default = {
12
13
  field,
13
14
  label,
15
+ labelRow,
14
16
  description,
15
17
  error,
16
18
  optional,
@@ -19,4 +21,4 @@ var field_module_default = {
19
21
  required,
20
22
  pending
21
23
  };
22
- export { field_module_default as default, description, error, field, inlineOptional, inlineText, label, optional, pending, required };
24
+ export { field_module_default as default, description, error, field, inlineOptional, inlineText, label, labelRow, optional, pending, required };
@@ -1,6 +1,6 @@
1
1
  import { type Context, type ReactNode } from "react";
2
2
  import type { BusyPhase } from "../../lib/hooks/use-busy-phase.ts";
3
- import { type FieldErrorProps, type FieldLabelProps } from "./field.tsx";
3
+ import { type FieldErrorProps, type FieldLabelProps, type FieldPendingProps } from "./field.tsx";
4
4
  import type { FieldState } from "./field-state.ts";
5
5
  /** What a raw input's `Root` hands its label, pending and error parts. */
6
6
  export type InputPartsContextValue = Readonly<{
@@ -8,8 +8,6 @@ export type InputPartsContextValue = Readonly<{
8
8
  state: FieldState;
9
9
  /** The errors `Root` was given, which `Error` renders. */
10
10
  errors: unknown;
11
- /** The word an optional field's label trails. */
12
- optionalLabel: string;
13
11
  phase: BusyPhase;
14
12
  }>;
15
13
  /** The context a raw input's `Root` provides its shared parts. */
@@ -21,24 +19,24 @@ export declare const InputPartsContext: Context<InputPartsContextValue | null>;
21
19
  * const { state } = useInputPartsContext();
22
20
  */
23
21
  export declare const useInputPartsContext: () => InputPartsContextValue;
24
- export type InputLabelProps = Omit<FieldLabelProps, "requiredness" | "optionalLabel">;
22
+ export type InputLabelProps = FieldLabelProps;
25
23
  /**
26
- * The label above a raw input, trailing the requiredness its `Root` was given.
24
+ * The label above a raw input. Add `Field.Requiredness` to trail the
25
+ * requiredness its `Root` was given.
27
26
  *
28
27
  * @example
29
- * <TextInput.Label>Email</TextInput.Label>
28
+ * <TextInput.Label>Email <Field.Requiredness optionalLabel="optional" /></TextInput.Label>
30
29
  */
31
- export declare const InputLabel: ({ children, ...props }: InputLabelProps) => ReactNode;
32
- export type InputPendingProps = Readonly<{
33
- className?: string;
34
- }>;
30
+ export declare const InputLabel: (props: InputLabelProps) => ReactNode;
31
+ export type InputPendingProps = FieldPendingProps;
35
32
  /**
36
- * The spinner a raw input shows once its `Root`'s wait is worth showing.
33
+ * The box a raw input's wait shows in, holding what it is given, such as a
34
+ * spinner. It renders once its `Root`'s wait is worth showing.
37
35
  *
38
36
  * @example
39
- * <TextInput.Pending />
37
+ * <TextInput.Pending><Spinner size={1} /></TextInput.Pending>
40
38
  */
41
- export declare const InputPending: ({ className, }: InputPendingProps) => ReactNode;
39
+ export declare const InputPending: (props: InputPendingProps) => ReactNode;
42
40
  export type InputErrorProps = Omit<FieldErrorProps, "children">;
43
41
  /**
44
42
  * The errors a raw input's `Root` was given.