@igne-agency/react-web-ui 0.3.1 → 0.5.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 (291) hide show
  1. package/README.md +32 -1
  2. package/dist/base.css +3 -0
  3. package/dist/components/accordion/accordion.css +24 -19
  4. package/dist/components/accordion/accordion.d.ts +19 -3
  5. package/dist/components/accordion/accordion.js +86 -32
  6. package/dist/components/accordion/accordion.module.js +8 -8
  7. package/dist/components/active-filters/active-filter-describers.d.ts +1 -1
  8. package/dist/components/active-filters/active-filter-describers.js +1 -1
  9. package/dist/components/active-filters/active-filters.d.ts +35 -2
  10. package/dist/components/active-filters/active-filters.js +57 -52
  11. package/dist/components/active-filters/index.js +2 -2
  12. package/dist/components/attachment-tile/attachment-preview.d.ts +11 -9
  13. package/dist/components/attachment-tile/attachment-preview.js +102 -68
  14. package/dist/components/attachment-tile/attachment-tile.css +22 -13
  15. package/dist/components/attachment-tile/attachment-tile.d.ts +51 -6
  16. package/dist/components/attachment-tile/attachment-tile.js +209 -85
  17. package/dist/components/attachment-tile/attachment-tile.module.js +10 -10
  18. package/dist/components/attachment-tile/index.d.ts +1 -1
  19. package/dist/components/attachment-tile/index.js +2 -2
  20. package/dist/components/avatar/avatar.d.ts +5 -5
  21. package/dist/components/avatar/avatar.js +64 -37
  22. package/dist/components/avatar-group/avatar-group.js +2 -2
  23. package/dist/components/badge/badge.js +1 -1
  24. package/dist/components/breadcrumbs/breadcrumbs.d.ts +22 -7
  25. package/dist/components/breadcrumbs/breadcrumbs.js +189 -170
  26. package/dist/components/button/button.d.ts +2 -3
  27. package/dist/components/button/button.js +58 -77
  28. package/dist/components/button/close-button.d.ts +4 -2
  29. package/dist/components/button/close-button.js +9 -9
  30. package/dist/components/checkbox-field/checkbox-field.d.ts +17 -3
  31. package/dist/components/checkbox-field/checkbox-field.js +108 -131
  32. package/dist/components/checkbox-field/checkbox.css +26 -34
  33. package/dist/components/checkbox-field/checkbox.d.ts +51 -8
  34. package/dist/components/checkbox-field/checkbox.js +221 -57
  35. package/dist/components/checkbox-field/checkbox.module.js +6 -8
  36. package/dist/components/checkbox-field/index.d.ts +0 -1
  37. package/dist/components/checkbox-field/index.js +1 -2
  38. package/dist/components/checkbox-field/tsf-checkbox-field.d.ts +2 -2
  39. package/dist/components/checkbox-group-field/checkbox-group-field.d.ts +4 -1
  40. package/dist/components/checkbox-group-field/checkbox-group-field.js +54 -50
  41. package/dist/components/checkbox-group-field/checkbox-group.d.ts +7 -2
  42. package/dist/components/checkbox-group-field/checkbox-group.js +8 -3
  43. package/dist/components/collapsible/collapsible.css +23 -18
  44. package/dist/components/collapsible/collapsible.d.ts +18 -3
  45. package/dist/components/collapsible/collapsible.js +85 -32
  46. package/dist/components/collapsible/collapsible.module.js +7 -7
  47. package/dist/components/combobox-field/combobox-field.d.ts +9 -1
  48. package/dist/components/combobox-field/combobox-field.js +195 -175
  49. package/dist/components/combobox-field/combobox-items.d.ts +2 -2
  50. package/dist/components/combobox-field/combobox-items.js +4 -4
  51. package/dist/components/combobox-field/combobox.css +99 -96
  52. package/dist/components/combobox-field/combobox.d.ts +94 -15
  53. package/dist/components/combobox-field/combobox.js +484 -159
  54. package/dist/components/combobox-field/combobox.module.js +21 -21
  55. package/dist/components/combobox-field/index.d.ts +0 -1
  56. package/dist/components/combobox-field/selection.d.ts +4 -1
  57. package/dist/components/combobox-field/value-state-view.css +7 -3
  58. package/dist/components/combobox-field/value-state-view.d.ts +4 -2
  59. package/dist/components/combobox-field/value-state-view.js +15 -15
  60. package/dist/components/combobox-field/value-state-view.module.js +6 -4
  61. package/dist/components/composer/composer-attachments.d.ts +11 -3
  62. package/dist/components/composer/composer-attachments.js +61 -47
  63. package/dist/components/composer/composer-editor.d.ts +2 -1
  64. package/dist/components/composer/composer-editor.js +79 -71
  65. package/dist/components/composer/composer-mentions.js +2 -2
  66. package/dist/components/composer/composer.d.ts +42 -21
  67. package/dist/components/composer/composer.js +201 -58
  68. package/dist/components/composer/mention-text.js +3 -3
  69. package/dist/components/confirm-dialog/confirm-dialog.d.ts +8 -7
  70. package/dist/components/confirm-dialog/confirm-dialog.js +10 -9
  71. package/dist/components/conversation/conversation.context.d.ts +0 -5
  72. package/dist/components/conversation/conversation.d.ts +63 -29
  73. package/dist/components/conversation/conversation.js +193 -82
  74. package/dist/components/conversation/index.d.ts +1 -1
  75. package/dist/components/date-field/date-field.d.ts +10 -4
  76. package/dist/components/date-field/date-field.js +57 -43
  77. package/dist/components/date-field/date-input.d.ts +20 -3
  78. package/dist/components/date-field/date-input.js +28 -13
  79. package/dist/components/date-field/index.d.ts +1 -1
  80. package/dist/components/date-field/tsf-date-field.d.ts +1 -1
  81. package/dist/components/date-field/tsf-date-field.js +1 -1
  82. package/dist/components/date-range-field/date-range-field.d.ts +8 -4
  83. package/dist/components/date-range-field/date-range-field.js +57 -45
  84. package/dist/components/date-range-field/date-range-input.d.ts +20 -3
  85. package/dist/components/date-range-field/date-range-input.js +27 -12
  86. package/dist/components/date-range-field/tsf-date-range-field.d.ts +1 -1
  87. package/dist/components/date-range-field/tsf-date-range-field.js +1 -1
  88. package/dist/components/detail-list/detail-list.d.ts +28 -27
  89. package/dist/components/detail-list/detail-list.js +177 -121
  90. package/dist/components/dialog/dialog.d.ts +47 -27
  91. package/dist/components/dialog/dialog.js +101 -38
  92. package/dist/components/divider/divider.js +1 -1
  93. package/dist/components/drawer/drawer.d.ts +48 -30
  94. package/dist/components/drawer/drawer.js +113 -41
  95. package/dist/components/email-field/email-field.d.ts +5 -3
  96. package/dist/components/email-field/email-field.js +1 -3
  97. package/dist/components/email-field/tsf-email-field.d.ts +3 -2
  98. package/dist/components/empty-message/empty-message.d.ts +3 -3
  99. package/dist/components/empty-message/empty-message.js +3 -3
  100. package/dist/components/error-boundary/error-boundary.d.ts +5 -2
  101. package/dist/components/error-boundary/error-boundary.js +2 -3
  102. package/dist/components/error-message/error-message.d.ts +1 -1
  103. package/dist/components/error-message/error-message.js +1 -1
  104. package/dist/components/error-text/error-text.js +3 -3
  105. package/dist/components/field/field.d.ts +5 -5
  106. package/dist/components/field/field.js +9 -9
  107. package/dist/components/field/index.js +2 -2
  108. package/dist/components/field/input-parts.js +1 -1
  109. package/dist/components/field-placeholder/field-placeholder.d.ts +4 -1
  110. package/dist/components/field-placeholder/field-placeholder.js +41 -26
  111. package/dist/components/fieldset/field-group.js +1 -1
  112. package/dist/components/fieldset/fieldset-root.js +1 -1
  113. package/dist/components/fieldset/fieldset.js +1 -1
  114. package/dist/components/file-field/file-field.css +19 -15
  115. package/dist/components/file-field/file-field.d.ts +10 -1
  116. package/dist/components/file-field/file-field.js +130 -109
  117. package/dist/components/file-field/file-field.module.js +6 -4
  118. package/dist/components/file-field/file-input.d.ts +32 -9
  119. package/dist/components/file-field/file-input.js +94 -74
  120. package/dist/components/filter-bar/filter-bar.d.ts +79 -51
  121. package/dist/components/filter-bar/filter-bar.js +552 -216
  122. package/dist/components/form/form.d.ts +4 -6
  123. package/dist/components/form/form.js +6 -8
  124. package/dist/components/icon/icon.d.ts +5 -10
  125. package/dist/components/icon/icon.js +4 -6
  126. package/dist/components/link/link.js +1 -1
  127. package/dist/components/link-button/link-button.d.ts +1 -2
  128. package/dist/components/link-button/link-button.js +12 -22
  129. package/dist/components/loading-message/loading-message.d.ts +2 -2
  130. package/dist/components/loading-message/loading-message.js +1 -1
  131. package/dist/components/locale-provider/locale-provider.js +1 -1
  132. package/dist/components/menu/menu.d.ts +40 -22
  133. package/dist/components/menu/menu.js +100 -40
  134. package/dist/components/nav/nav-context.d.ts +0 -1
  135. package/dist/components/nav/nav-context.js +1 -2
  136. package/dist/components/nav/nav-item-view.d.ts +7 -7
  137. package/dist/components/nav/nav-item-view.js +27 -51
  138. package/dist/components/nav/nav.css +72 -60
  139. package/dist/components/nav/nav.d.ts +15 -8
  140. package/dist/components/nav/nav.js +105 -52
  141. package/dist/components/nav/nav.module.js +14 -14
  142. package/dist/components/number-field/number-field.d.ts +7 -1
  143. package/dist/components/number-field/number-field.js +98 -82
  144. package/dist/components/number-field/number-input.d.ts +53 -4
  145. package/dist/components/number-field/number-input.js +68 -21
  146. package/dist/components/number-field/tsf-number-field.d.ts +1 -1
  147. package/dist/components/number-field/tsf-number-field.js +1 -1
  148. package/dist/components/otp-field/otp-input.d.ts +25 -0
  149. package/dist/components/otp-field/otp-input.js +26 -1
  150. package/dist/components/pagination/pagination.d.ts +82 -23
  151. package/dist/components/pagination/pagination.js +656 -229
  152. package/dist/components/password-field/password-field.d.ts +7 -1
  153. package/dist/components/password-field/password-field.js +117 -126
  154. package/dist/components/password-field/password-strength.js +1 -1
  155. package/dist/components/password-field/tsf-password-field.d.ts +1 -1
  156. package/dist/components/password-field/tsf-password-field.js +1 -1
  157. package/dist/components/photo-field/photo-field.d.ts +17 -3
  158. package/dist/components/photo-field/photo-field.js +168 -89
  159. package/dist/components/photo-field/photo-input-context.d.ts +25 -0
  160. package/dist/components/photo-field/photo-input-context.js +14 -0
  161. package/dist/components/photo-field/photo-input.d.ts +58 -23
  162. package/dist/components/photo-field/photo-input.js +459 -261
  163. package/dist/components/popover/popover.d.ts +55 -23
  164. package/dist/components/popover/popover.js +205 -61
  165. package/dist/components/radio-group-field/radio-group.js +1 -1
  166. package/dist/components/search-field/search-field.d.ts +7 -5
  167. package/dist/components/search-field/search-field.js +4 -6
  168. package/dist/components/search-field/tsf-search-field.d.ts +1 -1
  169. package/dist/components/search-field/tsf-search-field.js +1 -1
  170. package/dist/components/segmented-control-field/segmented-control.js +1 -1
  171. package/dist/components/select-field/select-field.d.ts +7 -1
  172. package/dist/components/select-field/select-field.js +151 -139
  173. package/dist/components/select-field/select.d.ts +28 -6
  174. package/dist/components/select-field/select.js +234 -149
  175. package/dist/components/skeleton/skeleton.js +1 -1
  176. package/dist/components/spinner/spinner.css +47 -1
  177. package/dist/components/spinner/spinner.js +28 -11
  178. package/dist/components/spinner/spinner.module.js +18 -3
  179. package/dist/components/stale/stale.d.ts +17 -21
  180. package/dist/components/stale/stale.js +307 -129
  181. package/dist/components/status-message/status-message.css +22 -21
  182. package/dist/components/status-message/status-message.d.ts +10 -5
  183. package/dist/components/status-message/status-message.js +20 -24
  184. package/dist/components/status-message/status-message.module.js +6 -6
  185. package/dist/components/status-message/status-preset.d.ts +4 -5
  186. package/dist/components/status-message/status-preset.js +3 -3
  187. package/dist/components/switch-field/switch.js +1 -1
  188. package/dist/components/tabs/tabs.d.ts +51 -28
  189. package/dist/components/tabs/tabs.js +219 -144
  190. package/dist/components/tag/tag.css +23 -21
  191. package/dist/components/tag/tag.d.ts +17 -15
  192. package/dist/components/tag/tag.js +140 -65
  193. package/dist/components/tag/tag.module.js +3 -3
  194. package/dist/components/tag-group/tag-group.css +30 -27
  195. package/dist/components/tag-group/tag-group.d.ts +10 -4
  196. package/dist/components/tag-group/tag-group.js +47 -35
  197. package/dist/components/tag-group/tag-group.module.js +4 -4
  198. package/dist/components/text-field/text-field.d.ts +14 -3
  199. package/dist/components/text-field/text-field.js +154 -133
  200. package/dist/components/text-field/text-input.d.ts +89 -3
  201. package/dist/components/text-field/text-input.js +184 -70
  202. package/dist/components/textarea-field/textarea.js +1 -1
  203. package/dist/components/time-field/time-input.d.ts +6 -0
  204. package/dist/components/time-field/time-input.js +6 -0
  205. package/dist/components/time-zone-provider/time-zone-provider.js +1 -1
  206. package/dist/components/toast/index.js +2 -2
  207. package/dist/components/toast/toast-provider.css +38 -34
  208. package/dist/components/toast/toast-provider.d.ts +65 -3
  209. package/dist/components/toast/toast-provider.js +313 -148
  210. package/dist/components/toast/toast-provider.module.js +11 -17
  211. package/dist/components/toast/toast.d.ts +5 -1
  212. package/dist/components/toast/toast.js +2 -1
  213. package/dist/components/toggle-group-field/toggle-group.js +1 -1
  214. package/dist/components/tooltip/tooltip.d.ts +6 -6
  215. package/dist/components/tooltip/tooltip.js +7 -7
  216. package/dist/data-table/data-table-content.d.ts +18 -10
  217. package/dist/data-table/data-table-content.js +145 -290
  218. package/dist/data-table/data-table-context.d.ts +4 -2
  219. package/dist/data-table/data-table-context.js +1 -1
  220. package/dist/data-table/data-table-parts.d.ts +99 -0
  221. package/dist/data-table/data-table-parts.js +1182 -0
  222. package/dist/data-table/data-table-selection.d.ts +7 -3
  223. package/dist/data-table/data-table-selection.js +62 -37
  224. package/dist/data-table/data-table.css +100 -95
  225. package/dist/data-table/data-table.d.ts +49 -25
  226. package/dist/data-table/data-table.js +95 -83
  227. package/dist/data-table/data-table.module.js +34 -34
  228. package/dist/data-table/index.d.ts +2 -1
  229. package/dist/data-table/index.js +2 -1
  230. package/dist/data-view/use-data-view.d.ts +2 -2
  231. package/dist/data-view/use-data-view.js +2 -2
  232. package/dist/index.js +7 -8
  233. package/dist/lib/calendar/calendar-navigation.d.ts +9 -2
  234. package/dist/lib/calendar/calendar-navigation.js +72 -73
  235. package/dist/lib/calendar/calendar-year.d.ts +4 -3
  236. package/dist/lib/calendar/calendar-year.js +137 -156
  237. package/dist/lib/calendar/temporal.d.ts +18 -12
  238. package/dist/lib/calendar/temporal.js +191 -147
  239. package/dist/lib/table-storage.d.ts +2 -2
  240. package/dist/lib/table-storage.js +2 -2
  241. package/dist/lib/unsaved-changes/leave-guard.js +1 -1
  242. package/dist/terrazzo/index.d.ts +20 -3
  243. package/dist/terrazzo/index.js +110 -7
  244. package/dist/tokens.css +94 -71
  245. package/package.json +4 -3
  246. package/tokens/ref.tokens.json +0 -30
  247. package/tokens/sys.tokens.json +0 -7
  248. package/dist/assets/spinner.js +0 -28
  249. package/dist/components/checkbox-field/checkbox-glyph.d.ts +0 -12
  250. package/dist/components/checkbox-field/checkbox-glyph.js +0 -38
  251. package/dist/components/combobox-field/combobox-popup-body.d.ts +0 -34
  252. package/dist/components/combobox-field/combobox-popup-body.js +0 -142
  253. package/dist/components/conversation/conversation.context.js +0 -4
  254. package/dist/vendor/@material-design-icons/svg/outlined/add.js +0 -12
  255. package/dist/vendor/@material-design-icons/svg/outlined/arrow_downward.js +0 -12
  256. package/dist/vendor/@material-design-icons/svg/outlined/arrow_forward.js +0 -12
  257. package/dist/vendor/@material-design-icons/svg/outlined/arrow_upward.js +0 -12
  258. package/dist/vendor/@material-design-icons/svg/outlined/attach_file.js +0 -12
  259. package/dist/vendor/@material-design-icons/svg/outlined/block.js +0 -12
  260. package/dist/vendor/@material-design-icons/svg/outlined/calendar_today.js +0 -12
  261. package/dist/vendor/@material-design-icons/svg/outlined/check.js +0 -12
  262. package/dist/vendor/@material-design-icons/svg/outlined/check_circle.js +0 -12
  263. package/dist/vendor/@material-design-icons/svg/outlined/chevron_left.js +0 -12
  264. package/dist/vendor/@material-design-icons/svg/outlined/chevron_right.js +0 -12
  265. package/dist/vendor/@material-design-icons/svg/outlined/close.js +0 -12
  266. package/dist/vendor/@material-design-icons/svg/outlined/content_copy.js +0 -12
  267. package/dist/vendor/@material-design-icons/svg/outlined/date_range.js +0 -12
  268. package/dist/vendor/@material-design-icons/svg/outlined/description.js +0 -12
  269. package/dist/vendor/@material-design-icons/svg/outlined/download.js +0 -12
  270. package/dist/vendor/@material-design-icons/svg/outlined/error.js +0 -12
  271. package/dist/vendor/@material-design-icons/svg/outlined/error_outline.js +0 -12
  272. package/dist/vendor/@material-design-icons/svg/outlined/expand_less.js +0 -12
  273. package/dist/vendor/@material-design-icons/svg/outlined/expand_more.js +0 -12
  274. package/dist/vendor/@material-design-icons/svg/outlined/filter_alt.js +0 -12
  275. package/dist/vendor/@material-design-icons/svg/outlined/filter_alt_off.js +0 -12
  276. package/dist/vendor/@material-design-icons/svg/outlined/first_page.js +0 -12
  277. package/dist/vendor/@material-design-icons/svg/outlined/info.js +0 -12
  278. package/dist/vendor/@material-design-icons/svg/outlined/keyboard_arrow_down.js +0 -12
  279. package/dist/vendor/@material-design-icons/svg/outlined/last_page.js +0 -12
  280. package/dist/vendor/@material-design-icons/svg/outlined/mail.js +0 -12
  281. package/dist/vendor/@material-design-icons/svg/outlined/more_horiz.js +0 -12
  282. package/dist/vendor/@material-design-icons/svg/outlined/photo_camera.js +0 -12
  283. package/dist/vendor/@material-design-icons/svg/outlined/remove.js +0 -12
  284. package/dist/vendor/@material-design-icons/svg/outlined/restart_alt.js +0 -12
  285. package/dist/vendor/@material-design-icons/svg/outlined/restore.js +0 -12
  286. package/dist/vendor/@material-design-icons/svg/outlined/search.js +0 -12
  287. package/dist/vendor/@material-design-icons/svg/outlined/unfold_more.js +0 -12
  288. package/dist/vendor/@material-design-icons/svg/outlined/upload_file.js +0 -12
  289. package/dist/vendor/@material-design-icons/svg/outlined/visibility.js +0 -12
  290. package/dist/vendor/@material-design-icons/svg/outlined/visibility_off.js +0 -12
  291. package/dist/vendor/@material-design-icons/svg/outlined/warning_amber.js +0 -12
@@ -1,26 +1,24 @@
1
- import { Icon } from "../icon/icon.js";
2
- import { NavContext, NavItemLayoutContext } from "./nav-context.js";
1
+ import { NavContext } from "./nav-context.js";
3
2
  import nav_module_default from "./nav.module.js";
4
3
  import { c } from "react/compiler-runtime";
5
- import { use } from "react";
6
- import { jsx } from "react/jsx-runtime";
4
+ import { useRender } from "@base-ui/react/use-render";
7
5
  import { clsx } from "clsx";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { use } from "react";
8
8
  import { Tooltip } from "@base-ui/react/tooltip";
9
- import { useRender } from "@base-ui/react/use-render";
10
9
  // src/components/nav/nav-item-view.tsx
11
10
  /**
12
11
  * Hangs an entry's element off the nav's one tooltip, which names it while it
13
12
  * is unlabelled. Outside a `Nav.Root` the element stands alone.
14
13
  */
15
14
  var EntryShell = (t0) => {
16
- const $ = c(8);
17
- const { layout: t1, labelled: t2, label, element } = t0;
18
- const layout = t1 === void 0 ? "row" : t1;
19
- const labelled = t2 === void 0 ? true : t2;
15
+ const $ = c(5);
16
+ const { labelled: t1, label, element } = t0;
17
+ const labelled = t1 === void 0 ? true : t1;
20
18
  const nav = use(NavContext);
21
- let t3;
19
+ let t2;
22
20
  if ($[0] !== element || $[1] !== label || $[2] !== labelled || $[3] !== nav) {
23
- t3 = nav === null ? element : /* @__PURE__ */ jsx(Tooltip.Trigger, {
21
+ t2 = nav === null ? element : /* @__PURE__ */ jsx(Tooltip.Trigger, {
24
22
  handle: nav.hint,
25
23
  payload: label,
26
24
  disabled: labelled,
@@ -30,19 +28,9 @@ var EntryShell = (t0) => {
30
28
  $[1] = label;
31
29
  $[2] = labelled;
32
30
  $[3] = nav;
33
- $[4] = t3;
34
- } else t3 = $[4];
35
- let t4;
36
- if ($[5] !== layout || $[6] !== t3) {
37
- t4 = /* @__PURE__ */ jsx(NavItemLayoutContext, {
38
- value: layout,
39
- children: t3
40
- });
41
- $[5] = layout;
42
- $[6] = t3;
43
- $[7] = t4;
44
- } else t4 = $[7];
45
- return t4;
31
+ $[4] = t2;
32
+ } else t2 = $[4];
33
+ return t2;
46
34
  };
47
35
  /** The attributes an entry's element carries for its layout and label. */
48
36
  var entryAttributes = ({ layout = "row", labelled = true, label }) => ({
@@ -155,42 +143,30 @@ var Root = (t0) => {
155
143
  return t4;
156
144
  };
157
145
  /**
158
- * The entry's glyph. A stacked entry's icon carries the destination on its own,
159
- * so it takes 24px over the row's text-matched 16px.
146
+ * The entry's icon slot. A stacked entry's icon carries the destination on its
147
+ * own, so it takes 1.5em over the row's text-matched 1em.
160
148
  */
161
149
  var NavItemIcon = (t0) => {
162
- const $ = c(8);
163
- const { svg, className } = t0;
164
- const layout = use(NavItemLayoutContext);
150
+ const $ = c(5);
151
+ const { className, children } = t0;
165
152
  let t1;
166
153
  if ($[0] !== className) {
167
154
  t1 = clsx(nav_module_default.iconSlot, className);
168
155
  $[0] = className;
169
156
  $[1] = t1;
170
157
  } else t1 = $[1];
171
- const t2 = layout === "stack" ? 1.5 : 1;
172
- let t3;
173
- if ($[2] !== svg || $[3] !== t2) {
174
- t3 = /* @__PURE__ */ jsx(Icon, {
175
- svg,
176
- label: "",
177
- size: t2
178
- });
179
- $[2] = svg;
180
- $[3] = t2;
181
- $[4] = t3;
182
- } else t3 = $[4];
183
- let t4;
184
- if ($[5] !== t1 || $[6] !== t3) {
185
- t4 = /* @__PURE__ */ jsx("span", {
158
+ let t2;
159
+ if ($[2] !== children || $[3] !== t1) {
160
+ t2 = /* @__PURE__ */ jsx("span", {
161
+ "aria-hidden": "true",
186
162
  className: t1,
187
- children: t3
163
+ children
188
164
  });
189
- $[5] = t1;
190
- $[6] = t3;
191
- $[7] = t4;
192
- } else t4 = $[7];
193
- return t4;
165
+ $[2] = children;
166
+ $[3] = t1;
167
+ $[4] = t2;
168
+ } else t2 = $[4];
169
+ return t2;
194
170
  };
195
171
  /** The entry's text. Fades out where the entry is named by its tooltip instead. */
196
172
  var Label = (t0) => {
@@ -231,7 +207,7 @@ var Label = (t0) => {
231
207
  *
232
208
  * @example
233
209
  * <NavItemView.Root render={<Drawer.Trigger />} label="More" layout="stack">
234
- * <NavItemView.Icon svg={MoreIcon} />
210
+ * <NavItemView.Icon><MoreIcon /></NavItemView.Icon>
235
211
  * <NavItemView.Label>More</NavItemView.Label>
236
212
  * </NavItemView.Root>
237
213
  */
@@ -1,24 +1,24 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._scroller_t5y6k_3 {
3
+ ._scroller_9ce88_3 {
4
4
  overflow-x: auto;
5
5
  overscroll-behavior-x: contain;
6
6
  }
7
- ._list_t5y6k_7 {
7
+ ._list_9ce88_7 {
8
8
  list-style: none;
9
9
  }
10
- ._list_t5y6k_7[data-orientation=vertical] {
10
+ ._list_9ce88_7[data-orientation=vertical] {
11
11
  display: flex;
12
12
  flex-direction: column;
13
13
  gap: var(--nav-gap, var(--sys-unit-2));
14
14
  }
15
- ._list_t5y6k_7[data-orientation=horizontal] {
15
+ ._list_9ce88_7[data-orientation=horizontal] {
16
16
  position: relative;
17
17
  display: flex;
18
18
  gap: var(--tab-gap, var(--sys-unit-2));
19
19
  min-inline-size: max-content;
20
20
  }
21
- ._indicator_t5y6k_21 {
21
+ ._indicator_9ce88_21 {
22
22
  --_indicator-slack: var(
23
23
  --sliding-indicator-slack,
24
24
  0px
@@ -36,27 +36,27 @@
36
36
  pointer-events: none;
37
37
  }
38
38
  @media not (prefers-reduced-motion) {
39
- ._indicator_t5y6k_21 {
39
+ ._indicator_9ce88_21 {
40
40
  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);
41
41
  }
42
42
  }
43
- ._indicator_t5y6k_21[data-jump] {
43
+ ._indicator_9ce88_21[data-jump] {
44
44
  --_indicator-slide: 0s;
45
45
  }
46
- ._indicator_t5y6k_21[data-empty] {
46
+ ._indicator_9ce88_21[data-empty] {
47
47
  opacity: 0;
48
48
  scale: 0;
49
49
  }
50
50
  @media not (prefers-reduced-motion) {
51
- ._indicator_t5y6k_21[data-empty] {
51
+ ._indicator_9ce88_21[data-empty] {
52
52
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard), scale var(--sys-motion-instant) var(--sys-motion-standard);
53
53
  }
54
54
  }
55
- ._indicator_t5y6k_21 {
55
+ ._indicator_9ce88_21 {
56
56
  border-radius: var(--sys-radius-full);
57
57
  background: var(--tab-indicator, var(--sys-color-primary));
58
58
  }
59
- ._tab_t5y6k_59 {
59
+ ._tab_9ce88_59 {
60
60
  display: inline-flex;
61
61
  align-items: center;
62
62
  gap: var(--sys-unit-4);
@@ -68,45 +68,46 @@
68
68
  white-space: nowrap;
69
69
  cursor: pointer;
70
70
  }
71
- ._tab_t5y6k_59 {
71
+ ._tab_9ce88_59 {
72
72
  outline: 0 solid var(--sys-color-focus-ring);
73
73
  outline-offset: var(--sys-focus-ring-offset);
74
74
  }
75
- ._tab_t5y6k_59:focus-visible {
75
+ ._tab_9ce88_59:focus-visible {
76
76
  outline-width: var(--sys-focus-ring-width);
77
77
  }
78
- ._tab_t5y6k_59 {
78
+ ._tab_9ce88_59 {
79
79
  outline-offset: calc(-1 * var(--sys-focus-ring-width));
80
80
  }
81
81
  @media not (prefers-reduced-motion) {
82
- ._tab_t5y6k_59 {
82
+ ._tab_9ce88_59 {
83
83
  transition: background-color var(--sys-motion-instant) var(--sys-motion-standard);
84
84
  }
85
85
  }
86
- ._tab_t5y6k_59:hover {
86
+ ._tab_9ce88_59:hover {
87
87
  background: var(--tab-bg-hover, var(--sys-color-primary-container));
88
88
  }
89
- ._tab_t5y6k_59 {
89
+ ._tab_9ce88_59 {
90
90
  position: relative;
91
91
  }
92
92
  @media not (prefers-reduced-motion) {
93
- ._tab_t5y6k_59 {
93
+ ._tab_9ce88_59 {
94
94
  transition: background-color var(--sys-motion-instant) var(--sys-motion-standard), color var(--sys-motion-short) var(--sys-motion-emphasized);
95
95
  }
96
96
  }
97
- ._tab_t5y6k_59[aria-current=page], ._tab_t5y6k_59[data-active=true] {
97
+ ._tab_9ce88_59[aria-current=page], ._tab_9ce88_59[data-active=true] {
98
98
  color: var(--tab-fg-active, var(--sys-color-on-primary));
99
99
  }
100
- ._tab_t5y6k_59[aria-current=page]:hover, ._tab_t5y6k_59[data-active=true]:hover {
100
+ ._tab_9ce88_59[aria-current=page]:hover, ._tab_9ce88_59[data-active=true]:hover {
101
101
  background: none;
102
102
  }
103
- ._iconSlot_t5y6k_103 {
103
+ ._iconSlot_9ce88_103 {
104
104
  display: inline-flex;
105
105
  flex-shrink: 0;
106
106
  align-items: center;
107
107
  justify-content: center;
108
+ font-size: var(--nav-icon-size, 1em);
108
109
  }
109
- ._item_t5y6k_109 {
110
+ ._item_9ce88_110 {
110
111
  display: flex;
111
112
  gap: var(--sys-unit-6);
112
113
  align-items: center;
@@ -120,18 +121,18 @@
120
121
  text-align: start;
121
122
  text-decoration: none;
122
123
  }
123
- ._item_t5y6k_109 {
124
+ ._item_9ce88_110 {
124
125
  outline: 0 solid var(--sys-color-focus-ring);
125
126
  outline-offset: var(--sys-focus-ring-offset);
126
127
  }
127
- ._item_t5y6k_109:focus-visible {
128
+ ._item_9ce88_110:focus-visible {
128
129
  outline-width: var(--sys-focus-ring-width);
129
130
  }
130
- ._item_t5y6k_109 {
131
+ ._item_9ce88_110 {
131
132
  position: relative;
132
133
  isolation: isolate;
133
134
  }
134
- ._item_t5y6k_109::after {
135
+ ._item_9ce88_110::after {
135
136
  content: "";
136
137
  position: absolute;
137
138
  z-index: -1;
@@ -142,30 +143,30 @@
142
143
  pointer-events: none;
143
144
  }
144
145
  @media not (prefers-reduced-motion) {
145
- ._item_t5y6k_109::after {
146
+ ._item_9ce88_110::after {
146
147
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard);
147
148
  }
148
149
  }
149
- ._item_t5y6k_109:hover:not(:disabled, [data-disabled])::after {
150
+ ._item_9ce88_110:hover:not(:disabled, [data-disabled])::after {
150
151
  opacity: var(--sys-state-hover);
151
152
  }
152
- ._item_t5y6k_109:active:not(:disabled, [data-disabled])::after {
153
+ ._item_9ce88_110:active:not(:disabled, [data-disabled])::after {
153
154
  opacity: var(--sys-state-pressed);
154
155
  }
155
156
  @media not (prefers-reduced-motion) {
156
- ._item_t5y6k_109 {
157
+ ._item_9ce88_110 {
157
158
  transition: background-color var(--sys-motion-short) var(--sys-motion-standard), color var(--sys-motion-short) var(--sys-motion-standard);
158
159
  }
159
160
  }
160
- ._item_t5y6k_109[data-active=true], ._item_t5y6k_109[aria-current=page] {
161
+ ._item_9ce88_110[data-active=true], ._item_9ce88_110[aria-current=page] {
161
162
  background-color: var(--sys-color-primary-container);
162
163
  color: var(--sys-color-on-primary-container);
163
164
  font: var(--sys-font-label-medium-strong);
164
165
  }
165
- ._item_t5y6k_109[data-labelled=false] > ._label_t5y6k_165 {
166
+ ._item_9ce88_110[data-labelled=false] > ._label_9ce88_166 {
166
167
  opacity: 0;
167
168
  }
168
- ._item_t5y6k_109[data-layout=stack] {
169
+ ._item_9ce88_110[data-layout=stack] {
169
170
  display: grid;
170
171
  grid-row: span 2;
171
172
  grid-template-rows: subgrid;
@@ -178,63 +179,66 @@
178
179
  font: var(--sys-font-label-small);
179
180
  text-align: center;
180
181
  }
181
- ._item_t5y6k_109[data-layout=stack][data-active=true], ._item_t5y6k_109[data-layout=stack][aria-current=page] {
182
+ ._item_9ce88_110[data-layout=stack][data-active=true], ._item_9ce88_110[data-layout=stack][aria-current=page] {
182
183
  background-color: transparent;
183
184
  color: var(--sys-color-on-primary-container);
184
185
  font: var(--sys-font-label-small-strong);
185
186
  }
186
- ._item_t5y6k_109[data-layout=stack] > ._iconSlot_t5y6k_103 {
187
+ ._item_9ce88_110[data-layout=stack] > ._iconSlot_9ce88_103 {
187
188
  inline-size: 100%;
188
189
  max-inline-size: var(--sys-unit-24);
189
190
  block-size: var(--sys-unit-16);
190
191
  border-radius: var(--sys-radius-full);
191
192
  }
192
193
  @media not (prefers-reduced-motion) {
193
- ._item_t5y6k_109[data-layout=stack] > ._iconSlot_t5y6k_103 {
194
+ ._item_9ce88_110[data-layout=stack] > ._iconSlot_9ce88_103 {
194
195
  transition: background-color var(--sys-motion-short) var(--sys-motion-standard);
195
196
  }
196
197
  }
197
- ._item_t5y6k_109[data-layout=stack][data-active=true] > ._iconSlot_t5y6k_103, ._item_t5y6k_109[data-layout=stack][aria-current=page] > ._iconSlot_t5y6k_103 {
198
+ ._item_9ce88_110[data-layout=stack] > ._iconSlot_9ce88_103 {
199
+ font-size: var(--nav-icon-size, 1.5em);
200
+ }
201
+ ._item_9ce88_110[data-layout=stack][data-active=true] > ._iconSlot_9ce88_103, ._item_9ce88_110[data-layout=stack][aria-current=page] > ._iconSlot_9ce88_103 {
198
202
  background-color: var(--sys-color-primary-container);
199
203
  }
200
- ._label_t5y6k_165 {
204
+ ._label_9ce88_166 {
201
205
  min-inline-size: 0;
202
206
  overflow-wrap: normal;
203
207
  hyphens: auto;
204
208
  white-space: var(--nav-label-wrap, normal);
205
209
  }
206
210
  @media not (prefers-reduced-motion) {
207
- ._label_t5y6k_165 {
211
+ ._label_9ce88_166 {
208
212
  transition: opacity var(--sys-motion-short) var(--sys-motion-standard);
209
213
  }
210
214
  }
211
- ._hintPositioner_t5y6k_211 {
215
+ ._hintPositioner_9ce88_215 {
212
216
  inline-size: var(--positioner-width);
213
217
  block-size: var(--positioner-height);
214
218
  }
215
219
  @media not (prefers-reduced-motion) {
216
- ._hintPositioner_t5y6k_211 {
220
+ ._hintPositioner_9ce88_215 {
217
221
  transition: top var(--sys-motion-short) var(--sys-motion-standard), left var(--sys-motion-short) var(--sys-motion-standard);
218
222
  }
219
223
  }
220
- ._hintViewport_t5y6k_220 {
224
+ ._hintViewport_9ce88_224 {
221
225
  overflow: hidden;
222
226
  }
223
227
  @media not (prefers-reduced-motion) {
224
- ._hintViewport_t5y6k_220 > [data-current],
225
- ._hintViewport_t5y6k_220 > [data-previous] {
228
+ ._hintViewport_9ce88_224 > [data-current],
229
+ ._hintViewport_9ce88_224 > [data-previous] {
226
230
  transition: opacity var(--sys-motion-short) var(--sys-motion-standard);
227
231
  }
228
- ._hintViewport_t5y6k_220 > [data-current][data-starting-style],
229
- ._hintViewport_t5y6k_220 > [data-previous][data-ending-style] {
232
+ ._hintViewport_9ce88_224 > [data-current][data-starting-style],
233
+ ._hintViewport_9ce88_224 > [data-previous][data-ending-style] {
230
234
  opacity: 0;
231
235
  }
232
236
  }
233
- ._group_t5y6k_233 {
237
+ ._group_9ce88_237 {
234
238
  display: flex;
235
239
  flex-direction: column;
236
240
  }
237
- ._groupHeader_t5y6k_237 {
241
+ ._groupHeader_9ce88_241 {
238
242
  display: grid;
239
243
  grid-auto-flow: column;
240
244
  grid-template-columns: minmax(0, 1fr);
@@ -243,32 +247,40 @@
243
247
  border-radius: var(--sys-radius-full);
244
248
  }
245
249
  @media not (prefers-reduced-motion) {
246
- ._groupHeader_t5y6k_237 {
250
+ ._groupHeader_9ce88_241 {
247
251
  transition: background-color var(--sys-motion-short) var(--sys-motion-standard);
248
252
  }
249
253
  }
250
- ._groupHeader_t5y6k_237:has(> [data-active=true]), ._groupHeader_t5y6k_237:has(> [aria-current=page]) {
254
+ ._groupHeader_9ce88_241:has(> [data-active=true]), ._groupHeader_9ce88_241:has(> [aria-current=page]) {
251
255
  background-color: var(--sys-color-primary-container);
252
256
  }
253
- ._groupToggle_t5y6k_253 {
257
+ ._groupToggle_9ce88_257 {
254
258
  --btn-pad-y: var(--sys-unit-8);
255
259
  }
256
- ._groupPanel_t5y6k_256 {
260
+ @media not (prefers-reduced-motion) {
261
+ ._groupToggle_9ce88_257 svg {
262
+ transition: rotate var(--sys-motion-short) var(--sys-motion-standard);
263
+ }
264
+ }
265
+ ._groupToggle_9ce88_257[data-panel-open] svg {
266
+ rotate: 180deg;
267
+ }
268
+ ._groupPanel_9ce88_268 {
257
269
  overflow: hidden;
258
270
  }
259
- ._groupPanel_t5y6k_256[hidden]:not([hidden=until-found]) {
271
+ ._groupPanel_9ce88_268[hidden]:not([hidden=until-found]) {
260
272
  display: none;
261
273
  }
262
274
  @media not (prefers-reduced-motion) {
263
- ._groupPanel_t5y6k_256 {
275
+ ._groupPanel_9ce88_268 {
264
276
  block-size: var(--collapsible-panel-height);
265
277
  transition: block-size var(--sys-motion-short) var(--sys-motion-standard);
266
278
  }
267
- ._groupPanel_t5y6k_256[data-starting-style], ._groupPanel_t5y6k_256[data-ending-style] {
279
+ ._groupPanel_9ce88_268[data-starting-style], ._groupPanel_9ce88_268[data-ending-style] {
268
280
  block-size: 0;
269
281
  }
270
282
  }
271
- ._groupList_t5y6k_271 {
283
+ ._groupList_9ce88_283 {
272
284
  --branch-reach: var(--sys-unit-8);
273
285
  --branch-line: color-mix(
274
286
  in oklab,
@@ -284,10 +296,10 @@
284
296
  padding-inline-start: var(--sys-unit-20);
285
297
  list-style: none;
286
298
  }
287
- ._groupList_t5y6k_271 > li {
299
+ ._groupList_9ce88_283 > li {
288
300
  position: relative;
289
301
  }
290
- ._groupList_t5y6k_271 > li::before {
302
+ ._groupList_9ce88_283 > li::before {
291
303
  content: "";
292
304
  position: absolute;
293
305
  inset-block-start: calc(-1 * var(--sys-unit-2));
@@ -297,10 +309,10 @@
297
309
  border-inline-start: 1px solid var(--branch-line);
298
310
  border-block-end: 1px solid var(--branch-line);
299
311
  }
300
- ._groupList_t5y6k_271 > li:last-child::before {
312
+ ._groupList_9ce88_283 > li:last-child::before {
301
313
  border-end-start-radius: var(--sys-radius-sm);
302
314
  }
303
- ._groupList_t5y6k_271 > li:not(:last-child)::after {
315
+ ._groupList_9ce88_283 > li:not(:last-child)::after {
304
316
  content: "";
305
317
  position: absolute;
306
318
  inset-block: 50% 0;
@@ -1,3 +1,4 @@
1
+ import { Collapsible as BaseCollapsible } from "@base-ui/react/collapsible";
1
2
  import { type ComponentPropsWithRef, type ReactNode } from "react";
2
3
  import { type NavOrientation } from "./nav-context.ts";
3
4
  import { type NavEntryProps } from "./nav-item-view.tsx";
@@ -36,23 +37,28 @@ export type NavGroupProps = Omit<ComponentPropsWithRef<"div">, "onToggle"> & (Re
36
37
  }>);
37
38
  /**
38
39
  * A destination with subpages: a `GroupHeader` holding its own `Link` and a
39
- * `GroupToggle`, over a `GroupPanel` that folds the subpages open.
40
+ * `GroupToggle`, over a `GroupPanel` that folds open a `GroupList` of subpages.
40
41
  */
41
42
  declare const Group: ({ open, defaultOpen, onOpenChange, className, children, ...props }: NavGroupProps) => ReactNode;
42
43
  export type NavGroupHeaderProps = ComponentPropsWithRef<"div">;
43
44
  /** The group's row: its own `Link`, then its `GroupToggle`. Filled while that link is current. */
44
45
  declare const GroupHeader: ({ className, ...props }: NavGroupHeaderProps) => ReactNode;
45
- export type NavGroupToggleProps = Readonly<{
46
+ export type NavGroupToggleProps = Omit<ComponentPropsWithRef<"button">, "children" | "aria-label"> & Readonly<{
46
47
  /** Accessible name, such as "Show subpages", surfaced as the tooltip hint and the `aria-label`. */
47
48
  label: string;
49
+ /** The expand chevron, pointing down while closed; it turns over while open. */
50
+ children: ReactNode;
48
51
  }>;
49
- declare const GroupToggle: ({ label, }: NavGroupToggleProps) => ReactNode;
50
- export type NavGroupPanelProps = Readonly<{
52
+ /** The icon-only button that folds the group's subpages open and shut; its children are the chevron. */
53
+ declare const GroupToggle: ({ label, children, className, ...props }: NavGroupToggleProps) => ReactNode;
54
+ export type NavGroupPanelProps = Omit<BaseCollapsible.Panel.Props, "className"> & Readonly<{
51
55
  className?: string;
52
- /** The subpages, each a `Nav.Item` holding a `Nav.Link`. */
53
- children: ReactNode;
54
56
  }>;
55
- declare const GroupPanel: ({ className, children, }: NavGroupPanelProps) => ReactNode;
57
+ /** The fold that opens and shuts the group's `GroupList`. */
58
+ declare const GroupPanel: ({ className, ...props }: NavGroupPanelProps) => ReactNode;
59
+ export type NavGroupListProps = ComponentPropsWithRef<"ul">;
60
+ /** The subpages, each a `Nav.Item` holding a `Nav.Link`, joined to the group by branch lines. */
61
+ declare const GroupList: ({ className, ...props }: NavGroupListProps) => ReactNode;
56
62
  type NavParts = Readonly<{
57
63
  Root: typeof Root;
58
64
  List: typeof List;
@@ -62,6 +68,7 @@ type NavParts = Readonly<{
62
68
  GroupHeader: typeof GroupHeader;
63
69
  GroupToggle: typeof GroupToggle;
64
70
  GroupPanel: typeof GroupPanel;
71
+ GroupList: typeof GroupList;
65
72
  }>;
66
73
  /**
67
74
  * Navigation between pages as `nav > ul > li > a`: a horizontal bar of tabs
@@ -76,7 +83,7 @@ type NavParts = Readonly<{
76
83
  * <Nav.List>
77
84
  * <Nav.Item>
78
85
  * <NavLink to="/" label="Home" activeOptions={{ exact: true }}>
79
- * <NavItemView.Icon svg={HomeIcon} />
86
+ * <NavItemView.Icon><HomeIcon /></NavItemView.Icon>
80
87
  * <NavItemView.Label>Home</NavItemView.Label>
81
88
  * </NavLink>
82
89
  * </Nav.Item>