@nxgt/material 3.79.1 → 3.81.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 (352) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +48 -8
  3. package/dist/{alert-dialog-653apk3f.js → alert-dialog-DOZ0SfQs.js} +1 -1
  4. package/dist/{async-slice-CXLbQuOc.js → async-slice-BfVokA46.js} +1 -1
  5. package/dist/{button-3op3rtZh.js → button-CSKUtMI3.js} +2 -2
  6. package/dist/{calculator-KqIMBXSh.js → calculator-Cv00UQgR.js} +10 -10
  7. package/dist/calculator-field.js +6 -6
  8. package/dist/{calculator-segment-BlJE1LaS.js → calculator-segment-CwnC2cV_.js} +1 -1
  9. package/dist/calculator.js +1 -1
  10. package/dist/charts.js +3 -3
  11. package/dist/{chip-MuKDwtkG.js → chip-BGn0V6Pt.js} +3 -3
  12. package/dist/{code-editor-Bp2RrdNx.js → code-editor-B25-mWhb.js} +4 -4
  13. package/dist/code-editor.js +4 -4
  14. package/dist/{code-language-items-B7WR5ua_.js → code-language-items-oRjtO3qV.js} +2 -2
  15. package/dist/components/base-content.css +11 -0
  16. package/dist/components/components.css +5 -0
  17. package/dist/components/ui/actions/fab/fab-dock.css +19 -6
  18. package/dist/components/ui/collections/data-table/data-table-items-tiles.css +27 -1
  19. package/dist/components/ui/display/tube-cap/tube-cap.css +87 -0
  20. package/dist/components/ui/layout/app-search/app-search.css +62 -0
  21. package/dist/components/ui/layout/app-shell/activity-backdrop.css +10 -2
  22. package/dist/components/ui/layout/app-shell/app-header.css +108 -0
  23. package/dist/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
  24. package/dist/{components-CTyNC_zW.js → components-B00kDHzJ.js} +23101 -18734
  25. package/dist/components.js +37 -37
  26. package/dist/{conversion-variant-BDFAxqe9.js → conversion-variant-wZd-G6xR.js} +3 -3
  27. package/dist/{currency-field-DWHB5oms.js → currency-field-DizBTAat.js} +4 -4
  28. package/dist/{date.utils-DUvqcjan.js → date.utils-JTEIo3mM.js} +98 -98
  29. package/dist/{dialog-Bm5LvVlB.js → dialog-B-3s-oXt.js} +3 -3
  30. package/dist/dnd.js +2 -2
  31. package/dist/{dropdown-menu-xlZ6NYUA.js → dropdown-menu-C6rcYGB9.js} +1 -1
  32. package/dist/editor.js +19 -19
  33. package/dist/{empty-state-C0kviQdW.js → empty-state-CSkghnD9.js} +1 -1
  34. package/dist/{financial-variant-CggTpad2.js → financial-variant-igpGRbGw.js} +5 -5
  35. package/dist/{hooks-Dg94jPRq.js → hooks-DvIsom2p.js} +2 -2
  36. package/dist/hooks.js +9 -8
  37. package/dist/{hover-card-B1g55Hi6.js → hover-card-DuaVVKMb.js} +1 -1
  38. package/dist/i18n.js +3 -3
  39. package/dist/{icon-badge-BcW66bRk.js → icon-badge-3ThP6EOl.js} +1 -1
  40. package/dist/{icon-button-Cogxy1cy.js → icon-button-4PKlaI1g.js} +2 -2
  41. package/dist/lib/components/ui/actions/button/button-tones.d.ts +17 -16
  42. package/dist/lib/components/ui/collections/day-grouped-list/day-grouped-list.d.ts +6 -1
  43. package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +2 -0
  44. package/dist/lib/components/ui/collections/server-table/types-states.d.ts +5 -1
  45. package/dist/lib/components/ui/display/index.d.ts +1 -0
  46. package/dist/lib/components/ui/display/tube-cap/index.d.ts +2 -0
  47. package/dist/lib/components/ui/display/tube-cap/tube-cap.d.ts +27 -0
  48. package/dist/lib/components/ui/display/tube-cap/tube-cap.kinds.d.ts +7 -0
  49. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  50. package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-row.d.ts +3 -1
  51. package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-rows.d.ts +2 -1
  52. package/dist/lib/components/ui/fields/repeatable-group/repeatable-group.d.ts +1 -1
  53. package/dist/lib/components/ui/fields/repeatable-group/types.d.ts +7 -0
  54. package/dist/lib/components/ui/layout/app-bar/top-app-bar.d.ts +18 -3
  55. package/dist/lib/components/ui/layout/app-search/app-search-bar.d.ts +11 -0
  56. package/dist/lib/components/ui/layout/app-search/app-search.types.d.ts +47 -0
  57. package/dist/lib/components/ui/layout/app-search/index.d.ts +3 -0
  58. package/dist/lib/components/ui/layout/app-search/partials/on-phone.d.ts +2 -0
  59. package/dist/lib/components/ui/layout/app-search/partials/phone-search.d.ts +3 -0
  60. package/dist/lib/components/ui/layout/app-search/partials/pill-search.d.ts +3 -0
  61. package/dist/lib/components/ui/layout/app-search/pill-form.d.ts +18 -0
  62. package/dist/lib/components/ui/layout/app-search/search-panel.d.ts +24 -0
  63. package/dist/lib/components/ui/layout/app-search/search-results.d.ts +14 -0
  64. package/dist/lib/components/ui/layout/app-search/search-shortcut.d.ts +15 -0
  65. package/dist/lib/components/ui/layout/app-search/search-view.d.ts +22 -0
  66. package/dist/lib/components/ui/layout/app-search/use-pill-panel.d.ts +22 -0
  67. package/dist/lib/components/ui/layout/app-search/use-search-text.d.ts +8 -0
  68. package/dist/lib/components/ui/layout/app-shell/activity-app-bar.d.ts +35 -0
  69. package/dist/lib/components/ui/layout/app-shell/activity-chrome.d.ts +26 -3
  70. package/dist/lib/components/ui/layout/app-shell/activity-column-props.d.ts +22 -0
  71. package/dist/lib/components/ui/layout/app-shell/activity-column.d.ts +10 -2
  72. package/dist/lib/components/ui/layout/app-shell/activity-layout-navigation.types.d.ts +94 -0
  73. package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +8 -1
  74. package/dist/lib/components/ui/layout/app-shell/activity-layout.types.d.ts +2 -1
  75. package/dist/lib/components/ui/layout/app-shell/activity-rails.d.ts +16 -0
  76. package/dist/lib/components/ui/layout/app-shell/activity-sidebar-lane.d.ts +22 -0
  77. package/dist/lib/components/ui/layout/app-shell/activity-top-nav.d.ts +11 -0
  78. package/dist/lib/components/ui/layout/app-shell/activity-two-level-lane.d.ts +14 -0
  79. package/dist/lib/components/ui/layout/app-shell/app-back.d.ts +22 -0
  80. package/dist/lib/components/ui/layout/app-shell/app-header-row.d.ts +3 -0
  81. package/dist/lib/components/ui/layout/app-shell/app-header.d.ts +33 -1
  82. package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +8 -0
  83. package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +13 -0
  84. package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +3 -1
  85. package/dist/lib/components/ui/layout/app-shell/bottom-chrome.d.ts +13 -0
  86. package/dist/lib/components/ui/layout/app-shell/header-title.d.ts +18 -2
  87. package/dist/lib/components/ui/layout/app-shell/header.utils.d.ts +37 -0
  88. package/dist/lib/components/ui/layout/app-shell/index.d.ts +3 -0
  89. package/dist/lib/components/ui/layout/app-shell/navigation-parts.d.ts +38 -0
  90. package/dist/lib/components/ui/layout/app-shell/navigation.utils.d.ts +36 -0
  91. package/dist/lib/components/ui/layout/app-shell/page-title-scope.d.ts +14 -0
  92. package/dist/lib/components/ui/layout/app-shell/page-title.d.ts +12 -1
  93. package/dist/lib/components/ui/layout/app-shell/shell-scroll.d.ts +32 -0
  94. package/dist/lib/components/ui/layout/app-shell/sticky-offset.d.ts +8 -0
  95. package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -0
  96. package/dist/lib/components/ui/layout/app-shell/use-focus-while-hidden.d.ts +9 -0
  97. package/dist/lib/components/ui/layout/app-shell/use-header-height.d.ts +12 -0
  98. package/dist/lib/components/ui/layout/app-shell/use-header-scroll.d.ts +19 -0
  99. package/dist/lib/components/ui/layout/app-shell/use-shell-header.d.ts +20 -0
  100. package/dist/lib/components/ui/layout/auth-card/auth-card-split.d.ts +14 -0
  101. package/dist/lib/components/ui/layout/auth-card/auth-card.d.ts +13 -1
  102. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid-context.d.ts +21 -0
  103. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.d.ts +9 -0
  104. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.state.d.ts +30 -0
  105. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.tiles.d.ts +8 -0
  106. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.types.d.ts +50 -0
  107. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.utils.d.ts +70 -0
  108. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-tile.d.ts +7 -0
  109. package/dist/lib/components/ui/layout/dashboard-grid/index.d.ts +4 -0
  110. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-announcer.d.ts +6 -0
  111. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-edit-bar.d.ts +11 -0
  112. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-move-buttons.d.ts +9 -0
  113. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-toolbar.d.ts +7 -0
  114. package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-grid.d.ts +21 -0
  115. package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-moves.d.ts +22 -0
  116. package/dist/lib/components/ui/layout/doc/doc-context.d.ts +2 -0
  117. package/dist/lib/components/ui/layout/doc/doc.d.ts +5 -0
  118. package/dist/lib/components/ui/layout/doc/index.d.ts +1 -1
  119. package/dist/lib/components/ui/layout/doc/partials/doc-embedded-bar.d.ts +9 -0
  120. package/dist/lib/components/ui/layout/doc/partials/doc-embedded.d.ts +8 -0
  121. package/dist/lib/components/ui/layout/doc/use-doc.d.ts +9 -1
  122. package/dist/lib/components/ui/layout/editor-layout/editor-layout.d.ts +14 -0
  123. package/dist/lib/components/ui/layout/editor-layout/editor-layout.types.d.ts +31 -0
  124. package/dist/lib/components/ui/layout/editor-layout/index.d.ts +4 -0
  125. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-body.d.ts +11 -0
  126. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-canvas.d.ts +8 -0
  127. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-context.d.ts +12 -0
  128. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-start.d.ts +8 -0
  129. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-triggers.d.ts +10 -0
  130. package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-names.d.ts +8 -0
  131. package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-state.d.ts +21 -0
  132. package/dist/lib/components/ui/layout/index.d.ts +9 -0
  133. package/dist/lib/components/ui/layout/landing/index.d.ts +6 -0
  134. package/dist/lib/components/ui/layout/landing/landing-layout.d.ts +15 -0
  135. package/dist/lib/components/ui/layout/landing/landing-layout.types.d.ts +27 -0
  136. package/dist/lib/components/ui/layout/landing/landing-section.d.ts +12 -0
  137. package/dist/lib/components/ui/layout/landing/landing-section.types.d.ts +32 -0
  138. package/dist/lib/components/ui/layout/landing/landing.classes.d.ts +20 -0
  139. package/dist/lib/components/ui/layout/landing/partials/landing-header.d.ts +11 -0
  140. package/dist/lib/components/ui/layout/landing/partials/landing-section-intro.d.ts +13 -0
  141. package/dist/lib/components/ui/layout/landing/partials/site-footer-group.d.ts +8 -0
  142. package/dist/lib/components/ui/layout/landing/site-footer.d.ts +13 -0
  143. package/dist/lib/components/ui/layout/landing/site-footer.types.d.ts +29 -0
  144. package/dist/lib/components/ui/layout/list-details-layout/internal.d.ts +2 -0
  145. package/dist/lib/components/ui/layout/list-details-layout/list-details-layout.d.ts +9 -17
  146. package/dist/lib/components/ui/layout/list-details-layout/partials/history-mark.d.ts +2 -0
  147. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-context.d.ts +17 -1
  148. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-history.d.ts +8 -0
  149. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-inspector.d.ts +21 -0
  150. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-layout.types.d.ts +47 -0
  151. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-resizer.d.ts +9 -0
  152. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-root.d.ts +3 -0
  153. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-trigger.d.ts +13 -4
  154. package/dist/lib/components/ui/layout/list-details-layout/partials/use-inspector-focus.d.ts +8 -0
  155. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-param.d.ts +26 -0
  156. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-state.d.ts +15 -0
  157. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-width.d.ts +16 -0
  158. package/dist/lib/components/ui/layout/list-details-layout/partials/use-pane-focus.d.ts +6 -4
  159. package/dist/lib/components/ui/layout/navigation-bar/index.d.ts +3 -0
  160. package/dist/lib/components/ui/layout/navigation-bar/internal.d.ts +4 -0
  161. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.classes.d.ts +14 -0
  162. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.d.ts +35 -0
  163. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.utils.d.ts +19 -0
  164. package/dist/lib/components/ui/layout/navigation-bar/partials/bar-badge.d.ts +5 -0
  165. package/dist/lib/components/ui/layout/navigation-bar/partials/bar-entry.d.ts +12 -0
  166. package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-item.d.ts +22 -0
  167. package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-more.d.ts +24 -0
  168. package/dist/lib/components/ui/layout/navigation-bar/use-nav-bar-inset.d.ts +12 -0
  169. package/dist/lib/components/ui/layout/navigation-drawer/index.d.ts +5 -0
  170. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.classes.d.ts +9 -0
  171. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.d.ts +45 -0
  172. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.utils.d.ts +14 -0
  173. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-body.d.ts +3 -0
  174. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-item.d.ts +20 -0
  175. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-modal.d.ts +17 -0
  176. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-section.d.ts +15 -0
  177. package/dist/lib/components/ui/layout/navigation-rail/index.d.ts +3 -0
  178. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail-panel.d.ts +26 -0
  179. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.classes.d.ts +23 -0
  180. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.d.ts +42 -1
  181. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.utils.d.ts +4 -0
  182. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-body.d.ts +3 -0
  183. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-item.d.ts +20 -0
  184. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-panel-item.d.ts +7 -0
  185. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-toggle.d.ts +7 -0
  186. package/dist/lib/components/ui/layout/navigation-rail/use-rail-expanded.d.ts +13 -0
  187. package/dist/lib/components/ui/layout/navigation-toolbar/index.d.ts +2 -0
  188. package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.classes.d.ts +20 -0
  189. package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.d.ts +51 -0
  190. package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-item.d.ts +25 -0
  191. package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-more.d.ts +3 -0
  192. package/dist/lib/components/ui/layout/pane-layout/internal.d.ts +3 -0
  193. package/dist/lib/components/ui/layout/pane-layout/pane-layout.d.ts +16 -2
  194. package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-classes.d.ts +7 -0
  195. package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-context.d.ts +13 -0
  196. package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-layout-state.d.ts +16 -0
  197. package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-narrow.d.ts +6 -0
  198. package/dist/lib/components/ui/layout/responsive-grid/index.d.ts +4 -1
  199. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-item.d.ts +19 -0
  200. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-spans.d.ts +19 -0
  201. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.d.ts +24 -2
  202. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.utils.d.ts +12 -0
  203. package/dist/lib/components/ui/layout/settings-layout/index.d.ts +2 -0
  204. package/dist/lib/components/ui/layout/settings-layout/partials/settings-link.d.ts +7 -0
  205. package/dist/lib/components/ui/layout/settings-layout/partials/settings-list.d.ts +11 -0
  206. package/dist/lib/components/ui/layout/settings-layout/partials/settings-page.d.ts +5 -0
  207. package/dist/lib/components/ui/layout/settings-layout/settings-layout.d.ts +10 -0
  208. package/dist/lib/components/ui/layout/settings-layout/settings-layout.types.d.ts +33 -0
  209. package/dist/lib/components/ui/layout/settings-layout/settings-layout.utils.d.ts +13 -0
  210. package/dist/lib/components/ui/layout/thread-layout/thread-layout-classes.d.ts +17 -0
  211. package/dist/lib/components/ui/layout/thread-layout/thread-layout-parts.d.ts +14 -0
  212. package/dist/lib/components/ui/layout/thread-layout/thread-layout-stepper.d.ts +11 -0
  213. package/dist/lib/components/ui/layout/thread-layout/thread-layout.d.ts +30 -3
  214. package/dist/lib/components/ui/layout/top-nav/index.d.ts +5 -0
  215. package/dist/lib/components/ui/layout/top-nav/partials/top-nav-item.d.ts +23 -0
  216. package/dist/lib/components/ui/layout/top-nav/partials/top-nav-menu.d.ts +22 -0
  217. package/dist/lib/components/ui/layout/top-nav/top-nav.classes.d.ts +10 -0
  218. package/dist/lib/components/ui/layout/top-nav/top-nav.d.ts +34 -0
  219. package/dist/lib/components/ui/layout/top-nav/top-nav.utils.d.ts +10 -0
  220. package/dist/lib/components/ui/media/galleries/gallery.d.ts +1 -1
  221. package/dist/lib/components/ui/media/galleries/lightbox-gallery.d.ts +1 -1
  222. package/dist/lib/components/ui/media/galleries/mini-gallery.d.ts +1 -1
  223. package/dist/lib/components/ui/overlays/dialog/dialog-parts.d.ts +1 -1
  224. package/dist/lib/components/ui/overlays/sheet/sheet-parts.d.ts +5 -0
  225. package/dist/lib/components/ui/selection/choice-card-group/choice-card-balance.d.ts +4 -0
  226. package/dist/lib/components/ui/selection/choice-card-group/choice-card-group.d.ts +3 -1
  227. package/dist/lib/components/ui/selection/choice-card-group/choice-card-group.types.d.ts +7 -0
  228. package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-body.d.ts +5 -1
  229. package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-row-parts.d.ts +2 -1
  230. package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-row-props.d.ts +8 -5
  231. package/dist/lib/components/ui/selection/sortable-list/partials/use-owed-focus.d.ts +10 -0
  232. package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +2 -0
  233. package/dist/lib/components/ui/selection/sortable-list/sortable-list.keyboard.d.ts +1 -1
  234. package/dist/lib/components/ui/widgets/event-calendar/event-calendar-context.d.ts +3 -0
  235. package/dist/lib/components/ui/widgets/event-calendar/event-calendar-shell.d.ts +15 -0
  236. package/dist/lib/components/ui/widgets/event-calendar/event-calendar-template.d.ts +9 -0
  237. package/dist/lib/components/ui/widgets/event-calendar/event-calendar.d.ts +7 -3
  238. package/dist/lib/components/ui/widgets/event-calendar/event-calendar.template.d.ts +41 -0
  239. package/dist/lib/components/ui/widgets/event-calendar/index.d.ts +1 -0
  240. package/dist/lib/components/ui/widgets/event-calendar/partials/calendar-date-nav.d.ts +2 -0
  241. package/dist/lib/components/ui/widgets/event-calendar/partials/calendar-lane-toggle.d.ts +5 -0
  242. package/dist/lib/components/ui/widgets/event-calendar/partials/time-grid-header-template.d.ts +7 -0
  243. package/dist/lib/components/ui/widgets/event-calendar/template.types.d.ts +73 -0
  244. package/dist/lib/components/ui/widgets/event-calendar/types.d.ts +2 -0
  245. package/dist/lib/components/ui/widgets/event-calendar/use-chip-event.d.ts +1 -0
  246. package/dist/lib/components/ui/widgets/event-calendar/use-drawn-events.d.ts +4 -3
  247. package/dist/lib/components/ui/widgets/event-calendar/use-template-calendar.d.ts +18 -0
  248. package/dist/lib/components/ui/widgets/event-calendar/use-template-lane.d.ts +17 -0
  249. package/dist/lib/components/ui/widgets/kanban/index.d.ts +1 -1
  250. package/dist/lib/components/ui/widgets/kanban/kanban-context.d.ts +5 -2
  251. package/dist/lib/components/ui/widgets/kanban/kanban.d.ts +11 -2
  252. package/dist/lib/components/ui/widgets/kanban/kanban.slice.d.ts +32 -0
  253. package/dist/lib/components/ui/widgets/kanban/kanban.utils.d.ts +9 -0
  254. package/dist/lib/components/ui/widgets/kanban/partials/kanban-card-preview.d.ts +3 -1
  255. package/dist/lib/components/ui/widgets/kanban/partials/kanban-column.d.ts +6 -0
  256. package/dist/lib/components/ui/widgets/kanban/partials/kanban-move-to.d.ts +13 -0
  257. package/dist/lib/components/ui/widgets/kanban/partials/kanban-phone-tabs.d.ts +10 -0
  258. package/dist/lib/components/ui/widgets/kanban/types.d.ts +7 -0
  259. package/dist/lib/components/ui/widgets/kanban/use-kanban-board-keys.d.ts +7 -0
  260. package/dist/lib/components/ui/widgets/kanban/use-kanban-item-actions.d.ts +5 -0
  261. package/dist/lib/components/ui/widgets/kanban/use-kanban-phone-column.d.ts +18 -0
  262. package/dist/lib/components/ui/widgets/kanban/use-kanban.d.ts +6 -1
  263. package/dist/lib/hooks/index.d.ts +1 -0
  264. package/dist/lib/i18n/resources/en/en.d.ts +52 -0
  265. package/dist/lib/i18n/resources/en/material.json.d.ts +54 -2
  266. package/dist/lib/i18n/resources/fr/fr.d.ts +52 -0
  267. package/dist/lib/i18n/resources/fr/material.json.d.ts +54 -2
  268. package/dist/lib/i18n/resources/resources.d.ts +104 -0
  269. package/dist/lib/i18n/translator.d.ts +1 -1
  270. package/dist/lib.js +2 -2
  271. package/dist/main.js +53 -52
  272. package/dist/map.js +7 -7
  273. package/dist/material.css +1 -1
  274. package/dist/pdf-reader.js +1 -1
  275. package/dist/{percent-field--WIXV5dX.js → percent-field-QwU1l2Q4.js} +1 -1
  276. package/dist/{picker-surface-CV09H7Nb.js → picker-surface-CiTycWgV.js} +4 -4
  277. package/dist/{popover-Cd7DkND4.js → popover-YmbzbKQG.js} +1 -1
  278. package/dist/{pos-types-DKCkOTYy.js → pos-types-BFrapNmx.js} +1 -1
  279. package/dist/{pos-variant-GrUfbTTP.js → pos-variant-CctfqieO.js} +4 -4
  280. package/dist/print.js +1 -1
  281. package/dist/{programmer-variant-eKJNKENL.js → programmer-variant-Dd0YOixn.js} +2 -2
  282. package/dist/{public-y6g4ddxd.js → public-CshR_aW7.js} +10 -10
  283. package/dist/{rich-code-block-CRQ0iyLb.js → rich-code-block-BuJLDoBu.js} +5 -5
  284. package/dist/{scientific-variant-2y3UxAAU.js → scientific-variant-CjErQxuZ.js} +2 -2
  285. package/dist/{sortable-provider-DdiI3Fwk.js → sortable-provider-DU2nvpFc.js} +3 -3
  286. package/dist/{spinner-C1QIewWv.js → spinner-DH1mm8hH.js} +2 -2
  287. package/dist/{tabs-KGKvve3y.js → tabs-Um0SFyf1.js} +1 -1
  288. package/dist/theme-picker.js +2 -2
  289. package/dist/{theme-toggle-C_VeiiCm.js → theme-toggle-C-Ih4uQU.js} +1 -1
  290. package/dist/{toolbar-items-D310xDuM.js → toolbar-items-BoEY5bkt.js} +4 -4
  291. package/dist/{translate-material-BypJJ1l5.js → translate-material-D4rn5UaQ.js} +1 -1
  292. package/dist/{translator-DJkf4J7t.js → translator-CcEgQ-H7.js} +112 -4
  293. package/dist/{use-chat-composer-BFhRMHcX.js → use-chat-composer-BBF1BI_s.js} +47 -43
  294. package/dist/{use-click-lock-BZYtTmVt.js → use-click-lock-Bwg_caHO.js} +14 -14
  295. package/dist/{use-heading-spy-DJR8YYm6.js → use-heading-spy-BgyA6SJl.js} +19 -19
  296. package/dist/{use-material-translation-CD6QoVal.js → use-material-translation-DYrfV_JJ.js} +1 -1
  297. package/dist/{use-return-focus-Cevw_6yq.js → use-return-focus-C_Qz_yTk.js} +1 -1
  298. package/docs/README.md +1 -0
  299. package/docs/components/data-display.md +40 -8
  300. package/docs/components/data-table-filter-and-lists.md +7 -3
  301. package/docs/components/form-fields.md +1 -0
  302. package/docs/components/media-and-files.md +1 -0
  303. package/docs/components/navigation-and-layout.md +946 -28
  304. package/docs/components/overlays-and-menus.md +11 -5
  305. package/docs/components/rich-widgets.md +111 -1
  306. package/docs/components/selection-and-choice.md +49 -10
  307. package/docs/guides/app-shell.md +641 -2
  308. package/docs/guides/forms.md +7 -0
  309. package/docs/guides/helpers.md +23 -0
  310. package/docs/guides/i18n.md +13 -1
  311. package/docs/guides/layouts.md +215 -0
  312. package/docs/guides/ssr.md +1 -1
  313. package/docs/guides/theming.md +7 -7
  314. package/docs/previews/data-display-tubecap.webp +0 -0
  315. package/docs/previews/navigation-layout-appshell-page-ground.webp +0 -0
  316. package/docs/previews/navigation-layout-appshell.webp +0 -0
  317. package/docs/previews/navigation-layout-authcard-split.webp +0 -0
  318. package/docs/previews/navigation-layout-authcard.webp +0 -0
  319. package/docs/previews/navigation-layout-dashboardgrid.webp +0 -0
  320. package/docs/previews/navigation-layout-editorlayout.webp +0 -0
  321. package/docs/previews/navigation-layout-landinglayout.webp +0 -0
  322. package/docs/previews/navigation-layout-panelayout.webp +0 -0
  323. package/docs/previews/navigation-layout-settingslayout.webp +0 -0
  324. package/docs/previews/navigation-layout-threadlayout-pages.webp +0 -0
  325. package/docs/previews/navigation-layout-threadlayout.webp +0 -0
  326. package/docs/previews/selection-choice-sortablelist.webp +0 -0
  327. package/docs/roadmap.md +12 -2
  328. package/docs/troubleshooting.md +50 -2
  329. package/lib/components/base-content.css +11 -0
  330. package/lib/components/components.css +5 -0
  331. package/lib/components/ui/actions/fab/fab-dock.css +19 -6
  332. package/lib/components/ui/collections/data-table/data-table-items-tiles.css +27 -1
  333. package/lib/components/ui/display/tube-cap/tube-cap.css +87 -0
  334. package/lib/components/ui/layout/app-search/app-search.css +62 -0
  335. package/lib/components/ui/layout/app-shell/activity-backdrop.css +10 -2
  336. package/lib/components/ui/layout/app-shell/app-header.css +108 -0
  337. package/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
  338. package/lib/themes/ambre.css +1 -1
  339. package/lib/themes/ardoise.css +1 -1
  340. package/lib/themes/bleumono.css +1 -1
  341. package/lib/themes/bluemoon.css +1 -1
  342. package/lib/themes/corail.css +2 -2
  343. package/lib/themes/foret.css +1 -1
  344. package/lib/themes/lavande.css +1 -1
  345. package/lib/themes/menthe.css +2 -2
  346. package/lib/themes/ocean.css +1 -1
  347. package/lib/themes/pink.css +2 -2
  348. package/lib/themes/prune.css +1 -1
  349. package/lib/themes/sable.css +1 -1
  350. package/lib/themes/slate.css +1 -1
  351. package/lib/themes/teal.css +2 -2
  352. package/package.json +2 -2
@@ -4,28 +4,28 @@ import { t as n } from "./utils-BLfntITJ.js";
4
4
  import { n as r } from "./use-shape-morph-BKA_R5P5.js";
5
5
  import { n as i, o as a, t as o } from "./dist-DVRQkaTK.js";
6
6
  import { i as s, n as c, r as l, t as u } from "./dist-DWZXlCZR.js";
7
- import { _ as d, a as f, b as p, g as m, h, i as g, m as _, n as v, o as y, r as b, s as x, t as S, v as C, y as w } from "./spinner-C1QIewWv.js";
7
+ import { _ as d, a as f, b as p, g as m, h, i as g, m as _, n as v, o as y, r as b, s as x, t as S, v as C, y as w } from "./spinner-DH1mm8hH.js";
8
8
  import { a as T, i as E, n as D, r as O, t as k } from "./dist-DHdUUM1w.js";
9
9
  import { a as A, i as ee } from "./dist-DOK3zo5C.js";
10
10
  import { i as j, n as M } from "./in-dialog-D61Yeaol.js";
11
- import { c as N, l as P, n as te, r as F, t as ne } from "./alert-dialog-653apk3f.js";
11
+ import { c as N, l as P, n as te, r as F, t as ne } from "./alert-dialog-DOZ0SfQs.js";
12
12
  import { A as re, C as ie, D as ae, E as oe, O as se, S as I, T as ce, _ as le, a as ue, b as de, d as fe, f as pe, g as me, h as he, i as ge, k as _e, l as ve, m as ye, n as be, o as xe, p as Se, r as Ce, s as we, t as Te, u as Ee, v as De, w as Oe, x as ke, y as Ae } from "./floating-ui.dom-KkZSW8_E.js";
13
- import { D as je, E as Me, N as Ne, O as Pe, c as Fe, d as Ie, f as Le, i as Re, k as ze, m as Be, n as Ve, o as He, p as Ue, t as We, u as Ge } from "./dropdown-menu-xlZ6NYUA.js";
13
+ import { D as je, E as Me, N as Ne, O as Pe, c as Fe, d as Ie, f as Le, i as Re, k as ze, m as Be, n as Ve, o as He, p as Ue, t as We, u as Ge } from "./dropdown-menu-C6rcYGB9.js";
14
14
  import { a as Ke, i as qe, n as Je } from "./field-blur-context-BLGgf_3z.js";
15
- import { i as Ye, n as Xe, r as Ze, t as Qe } from "./popover-Cd7DkND4.js";
15
+ import { i as Ye, n as Xe, r as Ze, t as Qe } from "./popover-YmbzbKQG.js";
16
16
  import { a as $e, i as et, n as tt, o as nt, t as rt } from "./bubble-input-CQwVSoU3.js";
17
- import { n as it, r as at, t as ot, u as st } from "./tabs-KGKvve3y.js";
18
- import { a as ct, n as lt, o as ut, s as dt, v as ft, y as pt } from "./toolbar-items-D310xDuM.js";
17
+ import { n as it, r as at, t as ot, u as st } from "./tabs-Um0SFyf1.js";
18
+ import { a as ct, n as lt, o as ut, s as dt, v as ft, y as pt } from "./toolbar-items-BoEY5bkt.js";
19
19
  import { t as mt } from "./dist-DkQbkF9T.js";
20
- import { o as ht, s as gt, t as _t } from "./use-click-lock-BZYtTmVt.js";
20
+ import { o as ht, s as gt, t as _t } from "./use-click-lock-Bwg_caHO.js";
21
21
  import { a as vt, r as yt } from "./icon-sprites-CaYXzOL4.js";
22
22
  import { t as bt } from "./warn-once-C_e47JM8.js";
23
- import { r as xt, t as St } from "./button-3op3rtZh.js";
24
- import { a as Ct } from "./translator-DJkf4J7t.js";
23
+ import { r as xt, t as St } from "./button-CSKUtMI3.js";
24
+ import { a as Ct } from "./translator-CcEgQ-H7.js";
25
25
  import { h as wt } from "./get-CTzJAwfc.js";
26
26
  import { t as Tt } from "./isEmpty-F_g3jLf8.js";
27
- import { t as L } from "./use-material-translation-CD6QoVal.js";
28
- import { t as R } from "./icon-button-Cogxy1cy.js";
27
+ import { t as L } from "./use-material-translation-DYrfV_JJ.js";
28
+ import { t as R } from "./icon-button-4PKlaI1g.js";
29
29
  import { t as Et } from "./use-ssr-media-query-C6M5m8sf.js";
30
30
  import { n as Dt, t as Ot } from "./typography-CYEquVeb.js";
31
31
  import { n as kt, t as At } from "./util-4heV2LPI.js";
@@ -36,14 +36,14 @@ import { a as Bt } from "./toggle-group-CVMxEpWi.js";
36
36
  import { n as Vt } from "./use-slice-reducer-BGkeGtML.js";
37
37
  import { t as Ht } from "./browser-only-DQ94lWF8.js";
38
38
  import { t as Ut } from "./compose-refs-G4J4kaUA.js";
39
- import { n as Wt, r as Gt, t as Kt } from "./chip-MuKDwtkG.js";
39
+ import { n as Wt, r as Gt, t as Kt } from "./chip-BGn0V6Pt.js";
40
40
  import { a as qt, c as Jt, o as Yt, r as Xt, s as Zt, t as Qt } from "./input-CC2joTjB.js";
41
41
  import { t as $t } from "./text-field-BAdY-kpO.js";
42
42
  import { r as en } from "./use-csp-nonce-ZKs9k-ov.js";
43
- import { t as tn } from "./empty-state-C0kviQdW.js";
43
+ import { t as tn } from "./empty-state-CSkghnD9.js";
44
44
  import { t as nn } from "./skeleton-DSdtr2qc.js";
45
- import { l as rn, n as an, o as on, r as sn, s as cn, t as ln, u as un } from "./dialog-Bm5LvVlB.js";
46
- import { t as dn } from "./icon-badge-BcW66bRk.js";
45
+ import { l as rn, n as an, o as on, r as sn, s as cn, t as ln, u as un } from "./dialog-B-3s-oXt.js";
46
+ import { t as dn } from "./icon-badge-3ThP6EOl.js";
47
47
  import { H as fn, V as pn, X as mn, bt as hn, it as gn, lt as _n, n as vn, t as yn, xt as bn, yt as xn } from "./dist-moutbfbd.js";
48
48
  import { t as Sn } from "./markdown-Dw_uH7j7.js";
49
49
  import { r as Cn, t as wn } from "./create-store-Dqp-PLLn.js";
@@ -1474,7 +1474,7 @@ function Ul({ label: e, helperText: t, className: r, ...i }) {
1474
1474
  let a = Hr(), o = Hr(), s = i["aria-invalid"] === !0 || i["aria-invalid"] === "true", c = [i["aria-describedby"], t ? o : void 0].filter(Boolean).join(" ") || void 0;
1475
1475
  return e || t ? /* @__PURE__ */ K("div", {
1476
1476
  "data-slot": "checkbox-field",
1477
- className: n("flex gap-1.5 w-full min-w-[280px] pointer-coarse:py-3", r),
1477
+ className: n("flex gap-1.5 w-full min-w-[min(280px,100%)] pointer-coarse:py-3", r),
1478
1478
  children: [/* @__PURE__ */ G(Wl, {
1479
1479
  ...i,
1480
1480
  "aria-describedby": c,
@@ -7124,7 +7124,7 @@ function F_({ className: e, ...t }) {
7124
7124
  return /* @__PURE__ */ G("textarea", {
7125
7125
  "data-slot": "input-group-control",
7126
7126
  "data-pw": t.name ?? "textarea",
7127
- className: n("field-sizing-content min-h-16 w-full min-w-[280px] flex-1 resize-none bg-transparent px-3 py-3 text-base outline-none md:text-sm", "placeholder:text-muted-foreground disabled:pointer-events-none", e),
7127
+ className: n("field-sizing-content min-h-16 w-full min-w-[min(280px,100%)] flex-1 resize-none bg-transparent px-3 py-3 text-base outline-none md:text-sm", "placeholder:text-muted-foreground disabled:pointer-events-none", e),
7128
7128
  ...t,
7129
7129
  placeholder: qt(t.placeholder, "text")
7130
7130
  });
@@ -8781,7 +8781,7 @@ function eb({ className: e, ...t }) {
8781
8781
  return /* @__PURE__ */ G("textarea", {
8782
8782
  "data-slot": "textarea",
8783
8783
  "data-pw": t.name ?? "textarea",
8784
- className: n(Yt, "placeholder:text-muted-foreground flex resize-none outline-none", "field-sizing-content min-h-16 w-full min-w-[280px] px-3 py-2 text-base md:text-sm", e),
8784
+ className: n(Yt, "placeholder:text-muted-foreground flex resize-none outline-none", "field-sizing-content min-h-16 w-full min-w-[min(280px,100%)] px-3 py-2 text-base md:text-sm", e),
8785
8785
  ...t,
8786
8786
  placeholder: t.placeholder || " "
8787
8787
  });
@@ -11229,7 +11229,7 @@ var aS = (e = {}) => Cn({
11229
11229
  let [{ default: t }, { lowlight: n }, { richCodeBlock: r }] = await Promise.all([
11230
11230
  import("./dist-CRMFGjng.js"),
11231
11231
  import("./lowlight-OtcjU2Sa.js"),
11232
- import("./rich-code-block-CRQ0iyLb.js")
11232
+ import("./rich-code-block-BuJLDoBu.js")
11233
11233
  ]);
11234
11234
  return [r(t, {
11235
11235
  lowlight: n,
@@ -14829,7 +14829,7 @@ function wE(e, t) {
14829
14829
  }
14830
14830
  //#endregion
14831
14831
  //#region lib/components/ui/media/media-player-mini/corner-classes.ts
14832
- var TE = "top-[calc(1rem+env(safe-area-inset-top))]", EE = "bottom-[calc(1rem+max(var(--nxgt-media-dock,0px),env(safe-area-inset-bottom)))]", DE = "start-[max(1rem,env(safe-area-inset-left))] rtl:start-[max(1rem,env(safe-area-inset-right))]", OE = "end-[max(1rem,env(safe-area-inset-right))] rtl:end-[max(1rem,env(safe-area-inset-left))]", kE = {
14832
+ var TE = "top-[calc(1rem+env(safe-area-inset-top))]", EE = "bottom-[calc(1rem+max(var(--nxgt-bottom-chrome,calc(var(--nxgt-nav-bar,0px)+var(--nxgt-media-dock,0px))),env(safe-area-inset-bottom)))]", DE = "start-[max(1rem,env(safe-area-inset-left))] rtl:start-[max(1rem,env(safe-area-inset-right))]", OE = "end-[max(1rem,env(safe-area-inset-right))] rtl:end-[max(1rem,env(safe-area-inset-left))]", kE = {
14833
14833
  "top-start": `${TE} ${DE}`,
14834
14834
  "top-end": `${TE} ${OE}`,
14835
14835
  "bottom-start": `${EE} ${DE}`,
@@ -20376,36 +20376,40 @@ function iP(e) {
20376
20376
  }
20377
20377
  //#endregion
20378
20378
  //#region lib/components/ui/media/galleries/gallery.tsx
20379
- function aP({ className: e, ...t }) {
20379
+ function aP(e) {
20380
+ let t = iP(e), { items: n, preset: r, layout: i, columns: a, aspect: o, loop: s, maxItems: c, lightbox: l, captions: u, shape: d, carousel: f, carouselAlign: p, carouselOrientation: m, defaultIndex: h, currentIndex: g, onIndexChange: _, open: v, defaultOpen: y, onOpenChange: b, onDelete: x, selectable: S, onSelectionChange: C, trigger: w, ...T } = e;
20380
20381
  return /* @__PURE__ */ G(GC, {
20381
- value: iP(t),
20382
- children: /* @__PURE__ */ G(oP, { className: e })
20382
+ value: t,
20383
+ children: /* @__PURE__ */ G(oP, { ...T })
20383
20384
  });
20384
20385
  }
20385
- function oP({ className: e }) {
20386
- let { items: t, resolved: r, trigger: i, openAt: a, onKeyDown: o } = KC(), { t: s } = L(), c = r.layout, l = t.length === 0 && c !== "none";
20386
+ function oP({ className: e, onKeyDown: t, ...r }) {
20387
+ let { items: i, resolved: a, trigger: o, openAt: s, onKeyDown: c } = KC(), { t: l } = L(), u = a.layout, d = i.length === 0 && u !== "none", f = r["aria-label"] ?? (r["aria-labelledby"] ? void 0 : l("material.gallery.label", "Gallery"));
20387
20388
  return /* @__PURE__ */ K("div", {
20388
- "data-slot": "gallery",
20389
- "data-layout": c,
20389
+ tabIndex: 0,
20390
+ ...r,
20390
20391
  role: "application",
20391
- "aria-label": s("material.gallery.label", "Gallery"),
20392
+ "data-slot": "gallery",
20393
+ "data-layout": u,
20394
+ "aria-label": f,
20392
20395
  className: n("@container outline-none", e),
20393
- tabIndex: 0,
20394
- onKeyDown: o,
20396
+ onKeyDown: (e) => {
20397
+ t?.(e), e.defaultPrevented || c(e);
20398
+ },
20395
20399
  children: [
20396
20400
  /* @__PURE__ */ G(IN, {}),
20397
- l && /* @__PURE__ */ G(NM, {}),
20398
- !l && c === "grid" && /* @__PURE__ */ G(IM, {}),
20399
- !l && c === "masonry" && /* @__PURE__ */ G(PN, {}),
20400
- !l && c === "justified" && /* @__PURE__ */ G(LM, {}),
20401
- !l && c === "featured" && /* @__PURE__ */ G(FM, {}),
20402
- !l && c === "carousel" && /* @__PURE__ */ G(jM, {}),
20403
- !l && c === "strip" && /* @__PURE__ */ G(LN, {}),
20404
- !l && c === "quilted" && /* @__PURE__ */ G(FN, {}),
20405
- !l && c === "woven" && /* @__PURE__ */ G(zN, {}),
20406
- c === "none" && i && /* @__PURE__ */ G(RN, {
20407
- trigger: i,
20408
- onOpen: () => a(0)
20401
+ d && /* @__PURE__ */ G(NM, {}),
20402
+ !d && u === "grid" && /* @__PURE__ */ G(IM, {}),
20403
+ !d && u === "masonry" && /* @__PURE__ */ G(PN, {}),
20404
+ !d && u === "justified" && /* @__PURE__ */ G(LM, {}),
20405
+ !d && u === "featured" && /* @__PURE__ */ G(FM, {}),
20406
+ !d && u === "carousel" && /* @__PURE__ */ G(jM, {}),
20407
+ !d && u === "strip" && /* @__PURE__ */ G(LN, {}),
20408
+ !d && u === "quilted" && /* @__PURE__ */ G(FN, {}),
20409
+ !d && u === "woven" && /* @__PURE__ */ G(zN, {}),
20410
+ u === "none" && o && /* @__PURE__ */ G(RN, {
20411
+ trigger: o,
20412
+ onOpen: () => s(0)
20409
20413
  }),
20410
20414
  /* @__PURE__ */ G(NN, {})
20411
20415
  ]
@@ -23881,4 +23885,4 @@ function IL({ value: e, onSend: t, placeholder: n, disabled: r, isLoading: i, se
23881
23885
  };
23882
23886
  }
23883
23887
  //#endregion
23884
- export { aP as $, xv as $n, zg as $r, zT as $t, VF as A, Yl as Ai, yb as An, w_ as Ar, hk as At, pF as B, yl as Bi, Ky as Bn, l_ as Br, TD as Bt, qI as C, Kd as Ci, ix as Cn, k_ as Cr, tA as Ct, aI as D, J as Di, xb as Dn, N_ as Dr, Mk as Dt, cI as E, Ju as Ei, Eb as En, P_ as Er, Ik as Et, SF as F, Bl as Fi, Yy as Fn, v_ as Fr, PD as Ft, NP as G, Ls as Gi, ry as Gn, e_ as Gr, FE as Gt, cF as H, Bs as Hi, Fy as Hn, o_ as Hr, HE as Ht, yF as I, Nl as Ii, Qy as In, b_ as Ir, AD as It, OP as J, hs as Ji, Av as Jn, Zg as Jr, gE as Jt, MP as K, xs as Ki, ey as Kn, $g as Kr, vE as Kt, _F as L, Ml as Li, Xy as Ln, g_ as Lr, jD as Lt, wF as M, Ul as Mi, nb as Mn, x_ as Mr, UO as Mt, TF as N, Hl as Ni, eb as Nn, C_ as Nr, ND as Nt, XF as O, q as Oi, vb as On, F_ as Or, kk as Ot, xF as P, Vl as Pi, $y as Pn, y_ as Pr, FD as Pt, fP as Q, Tv as Qn, Hg as Qr, BT as Qt, mF as R, jl as Ri, Zy as Rn, m_ as Rr, MD as Rt, YI as S, zf as Si, sx as Sn, I_ as Sr, nA as St, fI as T, sd as Ti, zb as Tn, M_ as Tr, Bk as Tt, uF as U, Ps as Ui, oy as Un, r_ as Ur, zE as Ut, dF as V, vl as Vi, Ly as Vn, s_ as Vr, CD as Vt, lF as W, Ms as Wi, dy as Wn, t_ as Wr, RE as Wt, CP as X, Pv as Xn, Kg as Xr, $ as Xt, wP as Y, Ov as Yn, Xg as Yr, hE as Yt, bP as Z, Dv as Zn, Ug as Zr, VT as Zt, vL as _, dh as _i, Zx as _n, V_ as _r, mA as _t, ML as a, fg as ai, HC as an, dv as ar, Nj as at, lL as b, X as bi, vx as bn, W_ as br, cA as bt, kL as c, sg as ci, FC as cn, ev as cr, bj as ct, EL as d, Qh as di, CC as dn, X_ as dr, dj as dt, Lg as ei, RT as en, Cv as er, eP as et, wL as f, qh as fi, xC as fn, Z_ as fr, aj as ft, SL as g, Z as gi, rS as gn, z_ as gr, yA as gt, CL as h, Ah as hi, aS as hn, B_ as hr, xA as ht, PL as i, gg as ii, JC as in, _v as ir, Pj as it, AF as j, ql as ji, db as jn, D_ as jr, rk as jt, qF as k, Ql as ki, bb as kn, O_ as kr, vk as kt, OL as l, rg as li, MC as ln, Q_ as lr, yj as lt, xL as m, Nh as mi, gC as mn, H_ as mr, zA as mt, IL as n, bg as ni, FT as nn, bv as nr, dM as nt, jL as o, ug as oi, LC as on, fv as or, Mj as ot, bL as p, Rh as pi, _C as pn, G_ as pr, tj as pt, kP as q, ms as qi, kv as qn, Qg as qr, _E as qt, NL as r, _g as ri, PT as rn, hv as rr, Wj as rt, AL as s, lg as si, IC as sn, uv as sr, jj as st, FL as t, Cg as ti, IT as tn, yv as tr, fM as tt, DL as u, eg as ui, kC as un, $_ as ur, gj as ut, yL as v, lh as vi, Dx as vn, U_ as vr, pA as vt, KI as w, Id as wi, Yb as wn, j_ as wr, Kk as wt, eL as x, Rf as xi, hx as xn, L_ as xr, aA as xt, _L as y, Xm as yi, Ex as yn, R_ as yr, fA as yt, fF as z, bl as zi, qy as zn, c_ as zr, kD as zt };
23888
+ export { aP as $, xv as $n, Hg as $r, zT as $t, VF as A, Ql as Ai, yb as An, O_ as Ar, hk as At, pF as B, bl as Bi, Ky as Bn, c_ as Br, TD as Bt, qI as C, zf as Ci, ix as Cn, I_ as Cr, tA as Ct, aI as D, Ju as Di, xb as Dn, P_ as Dr, Mk as Dt, cI as E, sd as Ei, Eb as En, M_ as Er, Ik as Et, SF as F, Vl as Fi, Yy as Fn, y_ as Fr, PD as Ft, NP as G, Ms as Gi, ry as Gn, t_ as Gr, FE as Gt, cF as H, vl as Hi, Fy as Hn, s_ as Hr, HE as Ht, yF as I, Bl as Ii, Qy as In, v_ as Ir, AD as It, OP as J, ms as Ji, Av as Jn, Qg as Jr, gE as Jt, MP as K, Ls as Ki, ey as Kn, e_ as Kr, vE as Kt, _F as L, Nl as Li, Xy as Ln, b_ as Lr, jD as Lt, wF as M, ql as Mi, nb as Mn, D_ as Mr, UO as Mt, TF as N, Ul as Ni, eb as Nn, x_ as Nr, ND as Nt, XF as O, J as Oi, vb as On, N_ as Or, kk as Ot, xF as P, Hl as Pi, $y as Pn, C_ as Pr, FD as Pt, fP as Q, Tv as Qn, Ug as Qr, BT as Qt, mF as R, Ml as Ri, Zy as Rn, g_ as Rr, MD as Rt, YI as S, Rf as Si, sx as Sn, L_ as Sr, nA as St, fI as T, Id as Ti, zb as Tn, j_ as Tr, Bk as Tt, uF as U, Bs as Ui, oy as Un, o_ as Ur, zE as Ut, dF as V, yl as Vi, Ly as Vn, l_ as Vr, CD as Vt, lF as W, Ps as Wi, dy as Wn, r_ as Wr, RE as Wt, CP as X, Pv as Xn, Xg as Xr, $ as Xt, wP as Y, hs as Yi, Ov as Yn, Zg as Yr, hE as Yt, bP as Z, Dv as Zn, Kg as Zr, VT as Zt, vL as _, Z as _i, Zx as _n, z_ as _r, mA as _t, ML as a, gg as ai, HC as an, _v as ar, Nj as at, lL as b, Xm as bi, vx as bn, R_ as br, cA as bt, kL as c, lg as ci, FC as cn, uv as cr, bj as ct, EL as d, eg as di, CC as dn, $_ as dr, dj as dt, zg as ei, RT as en, Cv as er, eP as et, wL as f, Qh as fi, xC as fn, X_ as fr, aj as ft, SL as g, Ah as gi, rS as gn, B_ as gr, yA as gt, CL as h, Nh as hi, aS as hn, H_ as hr, xA as ht, PL as i, _g as ii, JC as in, gv as ir, Pj as it, AF as j, Yl as ji, db as jn, w_ as jr, rk as jt, qF as k, q as ki, bb as kn, F_ as kr, vk as kt, OL as l, sg as li, MC as ln, ev as lr, yj as lt, xL as m, Rh as mi, gC as mn, G_ as mr, zA as mt, IL as n, Cg as ni, FT as nn, bv as nr, dM as nt, jL as o, fg as oi, LC as on, dv as or, Mj as ot, bL as p, qh as pi, _C as pn, Z_ as pr, tj as pt, kP as q, xs as qi, kv as qn, $g as qr, _E as qt, NL as r, bg as ri, PT as rn, hv as rr, Wj as rt, AL as s, ug as si, IC as sn, fv as sr, jj as st, FL as t, Lg as ti, IT as tn, yv as tr, fM as tt, DL as u, rg as ui, kC as un, Q_ as ur, gj as ut, yL as v, dh as vi, Dx as vn, V_ as vr, pA as vt, KI as w, Kd as wi, Yb as wn, k_ as wr, Kk as wt, eL as x, X as xi, hx as xn, W_ as xr, aA as xt, _L as y, lh as yi, Ex as yn, U_ as yr, fA as yt, fF as z, jl as zi, qy as zn, m_ as zr, kD as zt };
@@ -16,35 +16,35 @@ function o(e, t, n) {
16
16
  //#region lib/components/ui/actions/button/button-tones.ts
17
17
  var s = {
18
18
  primary: "text-primary-text",
19
- secondary: "text-secondary",
20
- success: "text-success dark:text-[color-mix(in_oklab,var(--color-success)_85%,white)]",
21
- info: "text-info",
19
+ secondary: "text-[color-mix(in_oklab,var(--color-secondary)_90%,black)] dark:text-[color-mix(in_oklab,var(--color-secondary)_80%,white)]",
20
+ success: "text-[color-mix(in_oklab,var(--color-success)_90%,black)] dark:text-[color-mix(in_oklab,var(--color-success)_70%,white)]",
21
+ info: "text-[color-mix(in_oklab,var(--color-info)_90%,black)] dark:text-[color-mix(in_oklab,var(--color-info)_85%,white)]",
22
22
  warning: "text-[color-mix(in_oklab,var(--color-warning)_85%,black)] dark:text-[color-mix(in_oklab,var(--color-warning)_85%,white)]",
23
- error: "text-[color-mix(in_oklab,var(--color-error)_85%,black)] dark:text-[color-mix(in_oklab,var(--color-error)_70%,white)]",
23
+ error: "text-[color-mix(in_oklab,var(--color-error)_80%,black)] dark:text-[color-mix(in_oklab,var(--color-error)_70%,white)]",
24
24
  default: "text-foreground"
25
25
  }, c = {
26
26
  primary: "[&_svg]:data-[slot=icon]:text-primary-text",
27
- secondary: "[&_svg]:data-[slot=icon]:text-secondary",
28
- success: "[&_svg]:data-[slot=icon]:text-success dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-success)_85%,white)]",
29
- info: "[&_svg]:data-[slot=icon]:text-info",
27
+ secondary: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-secondary)_90%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-secondary)_80%,white)]",
28
+ success: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-success)_90%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-success)_70%,white)]",
29
+ info: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-info)_90%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-info)_85%,white)]",
30
30
  warning: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-warning)_85%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-warning)_85%,white)]",
31
- error: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-error)_85%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-error)_70%,white)]",
31
+ error: "[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-error)_80%,black)] dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-error)_70%,white)]",
32
32
  default: "[&_svg]:data-[slot=icon]:text-foreground"
33
33
  }, l = {
34
34
  primary: "[&_svg]:stroke-primary-text",
35
- secondary: "[&_svg]:stroke-secondary",
36
- success: "[&_svg]:stroke-success dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-success)_85%,white)]",
37
- info: "[&_svg]:stroke-info",
35
+ secondary: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-secondary)_90%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-secondary)_80%,white)]",
36
+ success: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-success)_90%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-success)_70%,white)]",
37
+ info: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-info)_90%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-info)_85%,white)]",
38
38
  warning: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-warning)_85%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-warning)_85%,white)]",
39
- error: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_85%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_70%,white)]",
39
+ error: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_80%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_70%,white)]",
40
40
  default: "[&_svg]:stroke-foreground"
41
41
  }, u = {
42
42
  primary: "[--morph-on:var(--color-primary)] [--morph-on-fg:var(--color-primary-foreground)] [--btn-focus:var(--color-primary-text)] [--btn-line:var(--color-primary)]",
43
43
  secondary: "[--morph-on:var(--color-secondary)] dark:[--morph-on:color-mix(in_oklab,var(--color-secondary)_70%,var(--color-background))] [--morph-on-fg:var(--color-secondary-foreground)] [--btn-focus:var(--color-secondary)] [--btn-line:var(--color-secondary)]",
44
- success: "[--morph-on:var(--color-success)] dark:[--morph-on:color-mix(in_oklab,var(--color-success)_60%,var(--color-background))] [--morph-on-fg:var(--color-success-foreground)] [--btn-focus:var(--color-success)] dark:[--btn-focus:color-mix(in_oklab,var(--color-success)_85%,white)] [--btn-line:var(--color-success)]",
44
+ success: "[--morph-on:var(--color-success)] dark:[--morph-on:color-mix(in_oklab,var(--color-success)_60%,var(--color-background))] [--morph-on-fg:var(--color-success-foreground)] [--btn-focus:var(--color-success)] dark:[--btn-focus:color-mix(in_oklab,var(--color-success)_70%,white)] [--btn-line:var(--color-success)]",
45
45
  info: "[--morph-on:var(--color-info)] dark:[--morph-on:color-mix(in_oklab,var(--color-info)_60%,var(--color-background))] [--morph-on-fg:var(--color-info-foreground)] [--btn-focus:var(--color-info)] [--btn-line:var(--color-info)]",
46
46
  warning: "[--morph-on:var(--color-warning)] dark:[--morph-on:color-mix(in_oklab,var(--color-warning)_60%,var(--color-background))] [--morph-on-fg:var(--color-warning-foreground)] [--btn-focus:color-mix(in_oklab,var(--color-warning)_85%,black)] dark:[--btn-focus:color-mix(in_oklab,var(--color-warning)_85%,white)] [--btn-line:var(--color-warning)]",
47
- error: "[--morph-on:var(--color-error)] [--morph-on-fg:var(--color-error-foreground)] [--btn-focus:color-mix(in_oklab,var(--color-error)_85%,black)] dark:[--btn-focus:color-mix(in_oklab,var(--color-error)_70%,white)] [--btn-line:var(--color-error)]",
47
+ error: "[--morph-on:var(--color-error)] [--morph-on-fg:var(--color-error-foreground)] [--btn-focus:color-mix(in_oklab,var(--color-error)_80%,black)] dark:[--btn-focus:color-mix(in_oklab,var(--color-error)_70%,white)] [--btn-line:var(--color-error)]",
48
48
  default: "[--morph-on:var(--color-foreground)] [--morph-on-fg:var(--color-background)] [--btn-focus:var(--color-foreground)] [--btn-line:var(--color-foreground)]"
49
49
  }, d = 1e3;
50
50
  function f(e, a) {
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { a as t, c as n, d as r, i, n as a, r as o, t as s, u as c } from "./alert-dialog-653apk3f.js";
3
- import { a as l } from "./button-3op3rtZh.js";
4
- import { i as u } from "./translate-material-BypJJ1l5.js";
5
- import { t as d } from "./use-material-translation-CD6QoVal.js";
6
- import { _ as f, g as p, h as m, m as h, t as g, v as _ } from "./date.utils-DUvqcjan.js";
2
+ import { a as t, c as n, d as r, i, n as a, r as o, t as s, u as c } from "./alert-dialog-DOZ0SfQs.js";
3
+ import { a as l } from "./button-CSKUtMI3.js";
4
+ import { i as u } from "./translate-material-D4rn5UaQ.js";
5
+ import { t as d } from "./use-material-translation-DYrfV_JJ.js";
6
+ import { _ as f, g as p, h as m, t as h, v as g, y as _ } from "./date.utils-JTEIo3mM.js";
7
7
  import { useCallback as v, useEffect as y, useMemo as b, useRef as x, useState as S } from "react";
8
8
  import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
9
9
  import { busySettler as E, busySettler as D, createSubmitGuard as O, createSubmitGuard as k } from "@nxgt/material-core/submit-guard";
@@ -254,7 +254,7 @@ var A = {
254
254
  ], a;
255
255
  return a = n === 1 ? r && i.includes(r) ? "ère" : "er" : "ème", n + a;
256
256
  }, z = ["MMM", "MMMM"], B = {
257
- en: h,
257
+ en: m,
258
258
  fr: {
259
259
  code: "fr",
260
260
  formatDistance: j,
@@ -266,35 +266,35 @@ var A = {
266
266
  value: "d"
267
267
  } : e),
268
268
  ordinalNumber: R,
269
- era: f({
269
+ era: g({
270
270
  values: ee,
271
271
  defaultWidth: "wide"
272
272
  }),
273
- quarter: f({
273
+ quarter: g({
274
274
  values: te,
275
275
  defaultWidth: "wide",
276
276
  argumentCallback: (e) => e - 1
277
277
  }),
278
- month: f({
278
+ month: g({
279
279
  values: F,
280
280
  defaultWidth: "wide"
281
281
  }),
282
- day: f({
282
+ day: g({
283
283
  values: I,
284
284
  defaultWidth: "wide"
285
285
  }),
286
- dayPeriod: f({
286
+ dayPeriod: g({
287
287
  values: L,
288
288
  defaultWidth: "wide"
289
289
  })
290
290
  },
291
291
  match: {
292
- ordinalNumber: m({
292
+ ordinalNumber: p({
293
293
  matchPattern: /^(\d+)(ième|ère|ème|er|e)?/i,
294
294
  parsePattern: /\d+/i,
295
295
  valueCallback: (e) => parseInt(e)
296
296
  }),
297
- era: p({
297
+ era: f({
298
298
  matchPatterns: {
299
299
  narrow: /^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,
300
300
  abbreviated: /^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,
@@ -304,7 +304,7 @@ var A = {
304
304
  parsePatterns: { any: [/^av/i, /^ap/i] },
305
305
  defaultParseWidth: "any"
306
306
  }),
307
- quarter: p({
307
+ quarter: f({
308
308
  matchPatterns: {
309
309
  narrow: /^T?[1234]/i,
310
310
  abbreviated: /^[1234](er|ème|e)? trim\.?/i,
@@ -320,7 +320,7 @@ var A = {
320
320
  defaultParseWidth: "any",
321
321
  valueCallback: (e) => e + 1
322
322
  }),
323
- month: p({
323
+ month: f({
324
324
  matchPatterns: {
325
325
  narrow: /^[jfmasond]/i,
326
326
  abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,
@@ -359,7 +359,7 @@ var A = {
359
359
  },
360
360
  defaultParseWidth: "any"
361
361
  }),
362
- day: p({
362
+ day: f({
363
363
  matchPatterns: {
364
364
  narrow: /^[lmjvsd]/i,
365
365
  short: /^(di|lu|ma|me|je|ve|sa)/i,
@@ -389,7 +389,7 @@ var A = {
389
389
  },
390
390
  defaultParseWidth: "any"
391
391
  }),
392
- dayPeriod: p({
392
+ dayPeriod: f({
393
393
  matchPatterns: {
394
394
  narrow: /^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,
395
395
  any: /^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i
@@ -415,11 +415,11 @@ var A = {
415
415
  }
416
416
  };
417
417
  function V() {
418
- let e = u()?.language ?? "en", t = b(() => B[e] ?? h, [e]);
418
+ let e = u()?.language ?? "en", t = b(() => B[e] ?? m, [e]);
419
419
  return {
420
420
  language: e,
421
421
  locale: t,
422
- format: v((e, n) => g.format(e, n, t), [t])
422
+ format: v((e, n) => h.format(e, n, t), [t])
423
423
  };
424
424
  }
425
425
  //#endregion
@@ -1,4 +1,4 @@
1
- import { i as e, t } from "./translate-material-BypJJ1l5.js";
1
+ import { i as e, t } from "./translate-material-D4rn5UaQ.js";
2
2
  import { useCallback as n } from "react";
3
3
  //#region lib/i18n/use-material-translation.ts
4
4
  function r() {
@@ -1,6 +1,6 @@
1
1
  import { o as e, r as t } from "./dist-DVRQkaTK.js";
2
2
  import { i as n, n as r, r as i, t as a } from "./dist-DWZXlCZR.js";
3
- import { C as o, S as s, x as c } from "./spinner-C1QIewWv.js";
3
+ import { C as o, S as s, x as c } from "./spinner-DH1mm8hH.js";
4
4
  import { a as l, i as u, r as d } from "./dist-DHdUUM1w.js";
5
5
  import { c as f, i as p, l as m, o as h, r as g, s as ee } from "./in-dialog-D61Yeaol.js";
6
6
  import { r as te } from "./escape-owner-DpaP0lm1.js";
package/docs/README.md CHANGED
@@ -17,6 +17,7 @@ detail: every option, the second example, and the traps.
17
17
  | [Code editor](guides/code-editor.md) | You want `CodeEditor` or `CodeDiff` in a theme preset or your own (`defineCodeTheme`), several themes on one page, Monaco bundled instead of the CDN, or the new `@nxgt/material/code-editor` import (the reader look, the view props, the `ref` handle and the file tabs are in the component's own page) |
18
18
  | [i18n](guides/i18n.md) | You want the components in French, your own strings typed, or translated Zod messages |
19
19
  | [App shell](guides/app-shell.md) | You are mounting the sidebar, header and breadcrumbs (`ActivityLayout`) around your routes |
20
+ | [Layouts](guides/layouts.md) | You are choosing a navigation preset, an app bar variant or a page layout, and want one working example of each |
20
21
  | [Animations](guides/animations.md) | You animate with `animate-*` classes: setup next to `tw-animate-css`, every animation with its defaults, the modifiers, stagger, text splitting, scroll-driven animation, appear/disappear, reduced motion, recipes and browser support |
21
22
  | [Theming](guides/theming.md) | You want to change colours or radius, use a shipped theme (`@nxgt/material/themes/<name>.css`) or a themed zone, add dark mode without a flash, use tones (the `data-tone` channel and app tones), or use the compiled CSS without Tailwind |
22
23
  | [Printing](guides/printing.md) | You render PDF documents with `@nxgt/material/print`, turn them into a download, a new tab or a server response, write them as plain data, or bundle them into an SSR server |
@@ -21,6 +21,7 @@ from `@nxgt/material/components`.
21
21
  | <img src="../previews/data-display-metric-cards.webp" width="96" alt=""> | [Metric cards](#metric-cards) | Sixteen dashboard tiles |
22
22
  | <img src="../previews/data-display-card-presets.webp" width="96" alt=""> | [Card presets](#card-presets) | Twenty-seven ready-made cards |
23
23
  | <img src="../previews/data-display-statusindicator.webp" width="96" alt=""> | [StatusIndicator](#statusindicator) | Coloured status dot with a label |
24
+ | <img src="../previews/data-display-tubecap.webp" width="96" alt=""> | [TubeCap](#tubecap) | A specimen tube's chip: a cap in its fixed convention colour, the container's name beside it, optional volume, accession and action |
24
25
  | <img src="../previews/data-display-summarydata.webp" width="96" alt=""> | [SummaryData](#summarydata) | Label / value pairs as a grid or inline |
25
26
  | <img src="../previews/data-display-description.webp" width="96" alt=""> | [Description](#description) | One read-only label / value pair |
26
27
  | <img src="../previews/data-display-descriptionlist.webp" width="96" alt=""> | [DescriptionList](#descriptionlist) | A dense auto-fill grid of label / value pairs in a `dl`, with a panels variant |
@@ -193,7 +194,7 @@ no `style` attribute and a strict CSP is fine.
193
194
  - Seat changes are not animated beyond a colour fade, which stops under
194
195
  `prefers-reduced-motion`.
195
196
 
196
- **Storybook:** `Data display/SeatRing` · **Vue:** not yet (#1931)
197
+ **Storybook:** `Data display/SeatRing` · **Vue:** not yet (#2470) (#1931)
197
198
 
198
199
  ---
199
200
 
@@ -268,7 +269,7 @@ const [open, setOpen] = useState(false);
268
269
  the layout follows `dir` (RTL) and dark mode.
269
270
  - Keep `front` and `description` free of the secret: they are always in the page.
270
271
 
271
- **Storybook:** `Data display/SecretCard` · **Vue:** not yet (#1938)
272
+ **Storybook:** `Data display/SecretCard` · **Vue:** not yet (#2470) (#1938)
272
273
 
273
274
  ---
274
275
 
@@ -425,7 +426,7 @@ import { CountBadge, IconButton } from '@nxgt/material/components';
425
426
 
426
427
  ![HighlightedText](../previews/data-display-highlightedtext.webp)
427
428
 
428
- A string with the words of a search query in a themed `<mark>`. Case, accents and ligatures are folded (`œ` is `oe`, `æ` is `ae`, `ß` is `ss`), and a query word matches at the start of a word, as a search engine's normaliser does.
429
+ A string with the words of a search query in a themed `<mark>`. Case, accents and ligatures are folded (`œ` is `oe`, `æ` is `ae`, `ß` is `ss`), and a query word matches at the start of a word, as a search engine's normaliser does. The `Guides/Recipes/Search dialog and results page` story marks the matches in command rows and result cards with it.
429
430
 
430
431
  ```tsx
431
432
  import { HighlightedText, highlightRanges } from '@nxgt/material/components';
@@ -709,6 +710,10 @@ its shape needs (`series`, `items`, `values`, `percent`, `current` /
709
710
  `previous`…) and the props of `Card`. Every tile lays itself out from its own
710
711
  width, not the window's, so the same card works in a sidebar and a wide grid.
711
712
 
713
+ To let users rearrange the cards, put each in a `DashboardTile` (`plain`) inside a
714
+ [`DashboardGrid`](./navigation-and-layout.md#dashboardgrid); to span columns in a
715
+ plain grid, use `ResponsiveGrid.Item`.
716
+
712
717
  **`tone`.** Every card takes a `tone`: a named tone, or one the app declared in
713
718
  `AppTones`. It sets `data-tone` on the card and draws its accent in the tone's
714
719
  text colour (4.5:1 on the card; the full heatmap step and every solid mark
@@ -786,6 +791,33 @@ import { StatusIndicator } from '@nxgt/material/components';
786
791
 
787
792
  ---
788
793
 
794
+ ## TubeCap
795
+
796
+ ![TubeCap](../previews/data-display-tubecap.webp)
797
+
798
+ A chip for a specimen tube. The cap colour comes from the international tube convention, so it is a fixed value: it does not follow the theme and is the same in light and dark. The container's name is written beside the cap (`label` is required), so colour never carries the meaning alone; the text uses the theme's foreground, which keeps the theme's 4.5:1 contrast.
799
+
800
+ ```tsx
801
+ import { TubeCap } from '@nxgt/material/components';
802
+
803
+ <TubeCap kind="edta" label="EDTA" volume="4 mL" accession="L00000042-1" />
804
+ ```
805
+
806
+ | Prop | Type | Default | Effect |
807
+ | --- | --- | --- | --- |
808
+ | `kind` | `'edta' \| 'heparin' \| 'citrate' \| 'esr' \| 'serum' \| 'gel' \| 'fluoride' \| 'trace' \| 'other'` | required | the cap colour: lavender, green, light blue, black, red, gold, grey, royal blue, plain |
809
+ | `label` | `ReactNode` | required | the container's name beside the cap; it also names the chip (`role="group"`) |
810
+ | `volume` | `ReactNode` | none | the volume, as text |
811
+ | `accession` | `ReactNode` | none | the tube's accession label |
812
+ | `action` | `ReactNode` | none | trailing slot, such as an `IconButton` |
813
+ | `size` | `'sm' \| 'default' \| 'lg'` | `'default'` | cap of 20, 28 or 40px |
814
+
815
+ `TUBE_CAP_KINDS` lists the kinds. The look is CSS on `data-kind`, with no inline style (strict CSP). The cap is `aria-hidden`.
816
+
817
+ **Storybook:** `Data display/TubeCap` · **Vue:** not yet (#2470)
818
+
819
+ ---
820
+
789
821
  ## SummaryData
790
822
 
791
823
  ![SummaryData](../previews/data-display-summarydata.webp)
@@ -1335,7 +1367,7 @@ and the user's zone) and both sides agree:
1335
1367
  <ChangeHistory entries={entries} now={loaderData.now} timeZone={loaderData.timeZone} />
1336
1368
  ```
1337
1369
 
1338
- **Storybook:** `Data display/ChangeHistory` · **Vue:** not yet (tracked as a `vue` issue)
1370
+ **Storybook:** `Data display/ChangeHistory` · **Vue:** not yet (#2470) (tracked as a `vue` issue)
1339
1371
 
1340
1372
  ---
1341
1373
 
@@ -1372,7 +1404,7 @@ The offset follows the instant (`Europe/Paris` is `UTC+1` in winter and
1372
1404
  `UTC+2` in summer). `ChangeHistory` takes a `timeZone` and `RelativeTime` a `now`
1373
1405
  the same way; pass the app's zone from the server so every screen agrees.
1374
1406
 
1375
- **Storybook:** `Data display/ZonedTime` · **Vue:** not yet (tracked as a `vue` issue)
1407
+ **Storybook:** `Data display/ZonedTime` · **Vue:** not yet (#2470) (tracked as a `vue` issue)
1376
1408
 
1377
1409
  ---
1378
1410
 
@@ -1441,7 +1473,7 @@ own, so they add up to less.
1441
1473
  - Bar widths are SVG attributes, so server markup has no `style` attribute and
1442
1474
  a strict CSP is fine.
1443
1475
 
1444
- **Storybook:** `Data display/VoteTally` · **Vue:** not yet (#1940)
1476
+ **Storybook:** `Data display/VoteTally` · **Vue:** not yet (#2470) (#1940)
1445
1477
 
1446
1478
  ---
1447
1479
 
@@ -1774,7 +1806,7 @@ lock set by another code form disables its field and leaves Cancel usable.
1774
1806
  button by `getByRole('button', { name: 'Activate' })` and the lock by
1775
1807
  `getByRole('alert')`.
1776
1808
 
1777
- **Storybook:** `Data display/EnrolmentCard`, `…/Shared lock`, `Guides/Accessibility/Touch targets/Verification code` · **Vue:** not yet
1809
+ **Storybook:** `Data display/EnrolmentCard`, `…/Shared lock`, `Guides/Accessibility/Touch targets/Verification code` · **Vue:** not yet (#2470)
1778
1810
 
1779
1811
  ---
1780
1812
 
@@ -1917,4 +1949,4 @@ import { RecoveryCodesStatus, VerificationLockProvider } from '@nxgt/material/co
1917
1949
 
1918
1950
  It reads the page-wide lock like [EnrolmentCard](#enrolmentcard) does. With `requireCode={false}` there is no code form, so `error` and `attemptsLeft` are not shown: the plain button follows `pending`, and is disabled by `locked` and by the page-wide lock; then the lock's text (the message of the answer that locked, or "Too many wrong codes. Try again later.") shows above it as a muted line that describes the button.
1919
1951
 
1920
- **Storybook:** `Data display/RecoveryCodesStatus`, `Data display/EnrolmentCard/Shared lock` · **Vue:** not yet
1952
+ **Storybook:** `Data display/RecoveryCodesStatus`, `Data display/EnrolmentCard/Shared lock` · **Vue:** not yet (#2470)
@@ -864,8 +864,9 @@ export default function Students() {
864
864
  search. When rows come back while the focus was on the empty page, it
865
865
  goes to the search; rows that come back on their own leave the focus
866
866
  alone. The empty page stays while the next answer loads (`data-busy`).
867
- - **A failed fetch.** Pass `error` (`{ title?, description?, cause?, kind? }`,
868
- `null` when there is none; `kind` takes `ErrorState`'s kinds, `generic`
867
+ - **A failed fetch.** Pass `error` (`{ title?, description?, cause?, kind?, illustration? }`,
868
+ `null` when there is none; `illustration` is a scene id, a node, `true` or
869
+ `false`, as on `ListEmptyPage`, and replaces the scene `kind` picks; `kind` takes `ErrorState`'s kinds, `generic`
869
870
  (default), `offline` or `maintenance`; `title` and `description` default to
870
871
  the two strings below, `cause` to none) and `onRetry`: the failure replaces the rows,
871
872
  the header, the footer and the empty page, with a Retry (a returned promise,
@@ -1667,6 +1668,7 @@ import { DayGroupedList } from '@nxgt/material/components';
1667
1668
  | `labels` | `Partial<Record<DayGroupKey, ReactNode>>` | — | replaces a heading |
1668
1669
  | `sticky` | `boolean` | `true` | headings stick while their items scroll |
1669
1670
  | `showCount` | `boolean` | `false` | the count beside each heading |
1671
+ | `headingLevel` | `2 \| 3 \| 4 \| 5 \| 6` | `3` | the level of each heading (`<h2>`…`<h6>`), to follow the heading above the list |
1670
1672
  | `headerClassName` / `listClassName` | `string` | — | a heading's background on a tinted parent, the `<ul>`'s dividers |
1671
1673
 
1672
1674
  **Storybook:** `Data table, filter & lists/DayGroupedList` · **Vue:** — (later)
@@ -2992,7 +2994,9 @@ import { Avatar, ListPane, ListPaneItem } from '@nxgt/material/components';
2992
2994
  `trailing`, `selected`, `focused` (a ring while its `group/listbox` parent has
2993
2995
  visible focus), `disabled`, `density` (`comfortable` or `compact`, one line),
2994
2996
  `appearance` (`plain` or `card`) and `lifted` (raised, as under a drag). It is
2995
- purely visual: give it the role and the events of the list it sits in. The
2997
+ purely visual: give it the role and the events of the list it sits in. A
2998
+ `title` or `description` cut by the ellipsis keeps its full text in a `title`
2999
+ attribute (when it is a string). The
2996
3000
  badge steps aside when the pane is narrower than 20rem.
2997
3001
 
2998
3002
  The height reaches the body as a CSS custom property set from script, never
@@ -245,6 +245,7 @@ export function PlanForm({ onSave }: { onSave: (values: Values) => void }) {
245
245
  | `reorderable` | `boolean` | `false` | move up / move down buttons on each row |
246
246
  | `max` | `number` | — | at this many rows, Add is disabled and says why |
247
247
  | `min` | `number` | — | at this many rows, Remove is disabled |
248
+ | `removeAtMin` | `'disable' \| 'hide'` | `'disable'` | at `min` rows, `'hide'` does not render Remove instead of disabling it |
248
249
  | `removable` | `(row, index) => boolean` | every row | a row it refuses keeps its Remove button `aria-disabled` (focusable; activating it does nothing). `row` is the `useFieldArray` field (`RepeatableGroupFormField`) or your item |
249
250
  | `removeDisabledReason` | `(row, index) => string \| undefined` | — | why a row cannot be removed: its Remove button's tooltip (on hover, focus, tap and click) and `aria-describedby` description |
250
251
  | `emptyTitle`, `emptyDescription` | `ReactNode` | — | an `EmptyState` when there is no row |
@@ -624,6 +624,7 @@ with a `+N` tile).
624
624
  | `selectable` | `boolean` | — | checkboxes on tiles; `onSelectionChange(ids)` |
625
625
  | `open` / `defaultOpen` / `onOpenChange` | `boolean` | — | control the lightbox |
626
626
  | `onDelete` | `(item) => void` | — | adds a delete button on each tile |
627
+ | `aria-label` / `aria-labelledby` | `string` | `'Gallery'` label | names the gallery (the root has `role="application"`); a given `aria-labelledby` replaces the default label. `MiniGallery` and `LightboxGallery` take both. Other `div` props (`id`, `data-*`, `onKeyDown`) reach the root element |
627
628
 
628
629
  **States.** Tiles use the `md` corner and round to `lg-plus` on hover (an
629
630
  effects easing, so the radius never overshoots) with a spring press scale. A