@nxgt/material 2.7.0 → 2.8.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 (210) hide show
  1. package/CHANGELOG.md +180 -0
  2. package/README.md +7 -4
  3. package/dist/{_Uint8Array-JRUmWcRr.js → _Uint8Array-CALbCR7W.js} +1 -1
  4. package/dist/{_overRest-DvC5rm5s.js → _overRest-BQ8agsDH.js} +1 -1
  5. package/dist/{abnfDiagram-O67JEVCF-Cl4ukf6a.js → abnfDiagram-O67JEVCF-D-rmT4BY.js} +4 -4
  6. package/dist/{architectureDiagram-NJMV4G6O-WmFlBQF5.js → architectureDiagram-NJMV4G6O-DOc_c_T9.js} +7 -7
  7. package/dist/{async-slice-OftEOtMA.js → async-slice-BHMdvnqm.js} +2 -2
  8. package/dist/{blockDiagram-BEXU5L5S-BM-gkWAO.js → blockDiagram-BEXU5L5S-D4gI6nqs.js} +11 -11
  9. package/dist/{c4Diagram-YGBWAQC7-D9xSt2QO.js → c4Diagram-YGBWAQC7-El4SkIzX.js} +8 -8
  10. package/dist/{channel-Dg92Hoym.js → channel-CnLB6790.js} +1 -1
  11. package/dist/{chunk-3FUC2YCW-Cf18L00V.js → chunk-3FUC2YCW-BLMCnCFE.js} +8 -8
  12. package/dist/{chunk-5DYCD2WN-Cja1INgd.js → chunk-5DYCD2WN-Cd1zazNp.js} +3 -3
  13. package/dist/{chunk-6AEJRKK7-3YWRP4aV.js → chunk-6AEJRKK7-BLBlw8ui.js} +2 -2
  14. package/dist/{chunk-742MDFTN-Cs1qGiTK.js → chunk-742MDFTN-CsUjFyzK.js} +2 -2
  15. package/dist/{chunk-7INBJB4K-BY5n77ka.js → chunk-7INBJB4K-k-I67NSP.js} +6 -6
  16. package/dist/{chunk-7M6MHVWA-C3x6E3yT.js → chunk-7M6MHVWA-CUtKEeuL.js} +9 -9
  17. package/dist/{chunk-7PRAP22T-_Av9vcXz.js → chunk-7PRAP22T-0C6_H8Li.js} +1 -1
  18. package/dist/{chunk-GNY47TPC-D1E6DHDV.js → chunk-GNY47TPC-CB_83G7J.js} +11 -11
  19. package/dist/{chunk-GTNCS2PH-BZ9WMD1v.js → chunk-GTNCS2PH-AJi9PVT7.js} +3 -3
  20. package/dist/{chunk-GWA4HPMP-Co-A6dtV.js → chunk-GWA4HPMP-B8jXI0Tl.js} +3 -3
  21. package/dist/{chunk-MBY4JIJT-C3RQP_Nk.js → chunk-MBY4JIJT-BFIqOe-8.js} +4 -4
  22. package/dist/{chunk-NETBCI7D-DJUuN4EY.js → chunk-NETBCI7D-Cywmx0rz.js} +1 -1
  23. package/dist/{chunk-O7XYJQB3-A66QSOPA.js → chunk-O7XYJQB3-BChweQ_V.js} +1 -1
  24. package/dist/{chunk-UA2S7LBM-BNeHeMx9.js → chunk-UA2S7LBM-ChuksCDg.js} +6 -6
  25. package/dist/{chunk-WEXAMYUT-CucJfehv.js → chunk-WEXAMYUT-CbFOhEve.js} +2 -2
  26. package/dist/{chunk-XXDRQBXY-FgXU14Bh.js → chunk-XXDRQBXY-dKXxu_aj.js} +1 -1
  27. package/dist/{chunk-Z7XXMR3K-DMTBxZxM.js → chunk-Z7XXMR3K-Ccb3Rfjl.js} +8 -8
  28. package/dist/{chunk-ZIGJFQKS-C3xUAXJq.js → chunk-ZIGJFQKS-9VXArDKF.js} +3 -3
  29. package/dist/{classDiagram-v2-NBCMYWYE-BDaxYvDy.js → classDiagram-v2-NBCMYWYE-CRgxPgLD.js} +14 -14
  30. package/dist/clsx-CbxlCXZ3.js +16 -0
  31. package/dist/components/base-content.css +139 -0
  32. package/dist/components/base.css +150 -0
  33. package/dist/components/components.css +2 -0
  34. package/dist/components/reduced-motion.css +56 -0
  35. package/dist/components/theme-tokens.css +116 -0
  36. package/dist/components/ui/actions/button-group/button-group.css +1 -1
  37. package/dist/components/ui/feedback/toast/toast.css +21 -0
  38. package/dist/components/ui/primitives/label/label.css +33 -0
  39. package/dist/{components-DrStgM4J.js → components-Bg1bqGbc.js} +34666 -34274
  40. package/dist/components.js +6 -6
  41. package/dist/{cose-bilkent-JH36ORCC-DRUT3qBb.js → cose-bilkent-JH36ORCC-P94vkHv_.js} +2 -2
  42. package/dist/{cynefinDiagram-VND7K2PF-B9HrdQW8.js → cynefinDiagram-VND7K2PF-EIpXbLXm.js} +4 -4
  43. package/dist/{dagre-6A5THRUB-DZF0nICj.js → dagre-6A5THRUB-c8yG3_vh.js} +20 -20
  44. package/dist/{diagram-22UHCM2B-CVZYpeev.js → diagram-22UHCM2B-C3Xcfy6D.js} +15 -15
  45. package/dist/{diagram-3UASUU5V-D7MmBJbM.js → diagram-3UASUU5V-maEO61Bh.js} +7 -7
  46. package/dist/{diagram-ATOU4E4O-CNY-8kl0.js → diagram-ATOU4E4O-isL7nwg2.js} +3 -3
  47. package/dist/{diagram-CDSNMT55-C8Mk1smi.js → diagram-CDSNMT55-Bnhlo5at.js} +5 -5
  48. package/dist/{diagram-MLGK6HIB-CpfeILwW.js → diagram-MLGK6HIB-DvBcyz8v.js} +4 -4
  49. package/dist/{diagram-MPIPVDR6-Do7bUnTd.js → diagram-MPIPVDR6-iTevwmNE.js} +4 -4
  50. package/dist/{dist-C3YK_ean.js → dist-B6_-RPZ3.js} +1 -1
  51. package/dist/{dist-CRbPtqwD.js → dist-BvUQHUs_.js} +4 -4
  52. package/dist/dnd.js +1 -1
  53. package/dist/{ebnfDiagram-ZINNZB2B-1GewX9Zq.js → ebnfDiagram-ZINNZB2B-RVuQIpm0.js} +4 -4
  54. package/dist/{elk-276RUBZZ-DI4eicFj.js → elk-276RUBZZ-BoWoJr6K.js} +26 -26
  55. package/dist/{erDiagram-OPXOYQCR-CUbpVns3.js → erDiagram-OPXOYQCR-CVvgZCSJ.js} +14 -14
  56. package/dist/field-blur-Bwa48QBk.js +3637 -0
  57. package/dist/flowDiagram-KWPJA3E3-RdU0csul.js +17 -0
  58. package/dist/{ganttDiagram-FUAMR5RP-D3vmspam.js → ganttDiagram-FUAMR5RP-DPLDPJtJ.js} +6 -6
  59. package/dist/{gitGraphDiagram-X574FWY7-80yOq8dE.js → gitGraphDiagram-X574FWY7-DerJL1Q-.js} +3 -3
  60. package/dist/{graphlib-DLJn7qS3.js → graphlib-DHgEBs83.js} +6 -6
  61. package/dist/hooks.js +3 -3
  62. package/dist/{i18n-provider-DBFRz5uH.js → i18n-provider-CA8YAlje.js} +1 -1
  63. package/dist/i18n.js +6 -6
  64. package/dist/icon-button-G9zdQ3Ix.js +2753 -0
  65. package/dist/{infoDiagram-VRGFBTTK-Cboh-B9n.js → infoDiagram-VRGFBTTK-CtVsLyCQ.js} +3 -3
  66. package/dist/{isArrayLikeObject-CO5xeuaJ.js → isArrayLikeObject-BSfDsA7T.js} +3 -3
  67. package/dist/{isEmpty-DOC38Ces.js → isEmpty-BEe-nNXw.js} +3 -3
  68. package/dist/{ishikawaDiagram-OU5B5YK6-DwTd1YxL.js → ishikawaDiagram-OU5B5YK6-D1n8vp8C.js} +4 -4
  69. package/dist/{journeyDiagram-ZHPQQLJL-Dxvl3oeN.js → journeyDiagram-ZHPQQLJL-CTGnr-JY.js} +4 -4
  70. package/dist/{kanban-definition-PNTS6WVX-S8plI4wn.js → kanban-definition-PNTS6WVX-D1-Owjil.js} +10 -10
  71. package/dist/lib/components/ui/actions/button/busy-click-capture.d.ts +11 -0
  72. package/dist/lib/components/ui/actions/button/button-tones.d.ts +36 -0
  73. package/dist/lib/components/ui/actions/button/button.d.ts +19 -0
  74. package/dist/lib/components/ui/actions/button/button.wrap.d.ts +8 -0
  75. package/dist/lib/components/ui/actions/button/label-text.d.ts +10 -0
  76. package/dist/lib/components/ui/actions/button/use-click-lock.d.ts +18 -0
  77. package/dist/lib/components/ui/actions/copy-button/copy-button.d.ts +5 -1
  78. package/dist/lib/components/ui/actions/icon-button/icon-button.compound-variants.d.ts +114 -0
  79. package/dist/lib/components/ui/collections/data-table/hooks.d.ts +13 -13
  80. package/dist/lib/components/ui/collections/data-table/partials/data-table-empty-row.d.ts +5 -1
  81. package/dist/lib/components/ui/collections/data-table/partials/data-table-scroll-region.d.ts +16 -0
  82. package/dist/lib/components/ui/collections/data-table/partials/data-table-toolbar.d.ts +24 -0
  83. package/dist/lib/components/ui/collections/data-table/select-checkbox.d.ts +10 -0
  84. package/dist/lib/components/ui/collections/data-table/types.d.ts +9 -0
  85. package/dist/lib/components/ui/collections/data-table/use-data-table.d.ts +12 -1
  86. package/dist/lib/components/ui/collections/data-table/use-scroll-edges.d.ts +22 -0
  87. package/dist/lib/components/ui/dates/calendar/calendar-day.d.ts +8 -0
  88. package/dist/lib/components/ui/dates/calendar/calendar.d.ts +3 -3
  89. package/dist/lib/components/ui/dates/calendar/calendar.utils.d.ts +8 -0
  90. package/dist/lib/components/ui/dates/calendar/use-calendar-labels.d.ts +22 -0
  91. package/dist/lib/components/ui/display/description/description.d.ts +2 -1
  92. package/dist/lib/components/ui/display/list-tile/list-tile.d.ts +9 -1
  93. package/dist/lib/components/ui/display/list-tile/partials/list-tile-body.d.ts +11 -0
  94. package/dist/lib/components/ui/display/list-tile/partials/list-tile-classes.d.ts +10 -0
  95. package/dist/lib/components/ui/feedback/alert-dialog/alert-dialog.d.ts +1 -1
  96. package/dist/lib/components/ui/feedback/toast/partials/toast-actions.d.ts +3 -0
  97. package/dist/lib/components/ui/feedback/toast/toast.d.ts +27 -3
  98. package/dist/lib/components/ui/feedback/toast/toaster.d.ts +19 -0
  99. package/dist/lib/components/ui/feedback/toast/toasts.d.ts +3 -0
  100. package/dist/lib/components/ui/forms/field-blur.d.ts +7 -2
  101. package/dist/lib/components/ui/forms/use-field-blur.d.ts +8 -1
  102. package/dist/lib/components/ui/layout/app-shell/activity-content.d.ts +10 -1
  103. package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +26 -2
  104. package/dist/lib/components/ui/layout/app-shell/app-header.d.ts +8 -2
  105. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +8 -2
  106. package/dist/lib/components/ui/layout/app-shell/types.d.ts +3 -0
  107. package/dist/lib/components/ui/layout/app-shell/use-content-scroll.d.ts +10 -0
  108. package/dist/lib/components/ui/layout/app-shell/use-navigation-sheet.d.ts +19 -0
  109. package/dist/lib/components/ui/layout/sidebar/index.d.ts +5 -0
  110. package/dist/lib/components/ui/layout/sidebar/sidebar-content.d.ts +2 -0
  111. package/dist/lib/components/ui/layout/sidebar/sidebar-context.d.ts +7 -0
  112. package/dist/lib/components/ui/layout/sidebar/sidebar-footer.d.ts +2 -0
  113. package/dist/lib/components/ui/layout/sidebar/sidebar-header.d.ts +2 -0
  114. package/dist/lib/components/ui/layout/sidebar/sidebar-menu-item-tooltip.d.ts +7 -0
  115. package/dist/lib/components/ui/layout/sidebar/sidebar-menu-item.d.ts +31 -0
  116. package/dist/lib/components/ui/layout/sidebar/sidebar-menu-label.d.ts +4 -0
  117. package/dist/lib/components/ui/layout/sidebar/sidebar.d.ts +1 -12
  118. package/dist/lib/components/ui/overlays/context-menu/context-menu-items.d.ts +10 -0
  119. package/dist/lib/components/ui/overlays/context-menu/context-menu-sub.d.ts +8 -0
  120. package/dist/lib/components/ui/overlays/context-menu/context-menu.d.ts +4 -14
  121. package/dist/lib/components/ui/overlays/dialog/dialog-outside.d.ts +6 -0
  122. package/dist/lib/components/ui/overlays/dialog/dialog-scroll-content.d.ts +1 -1
  123. package/dist/lib/components/ui/overlays/dialog/dialog.d.ts +1 -1
  124. package/dist/lib/components/ui/overlays/dialog/use-return-focus.d.ts +3 -2
  125. package/dist/lib/components/ui/overlays/drawer/drawer.d.ts +1 -1
  126. package/dist/lib/components/ui/overlays/dropdown-menu/dropdown-menu-items.d.ts +11 -0
  127. package/dist/lib/components/ui/overlays/dropdown-menu/dropdown-menu-sub.d.ts +8 -0
  128. package/dist/lib/components/ui/overlays/dropdown-menu/dropdown-menu.d.ts +6 -21
  129. package/dist/lib/components/ui/overlays/popover/popover.d.ts +1 -1
  130. package/dist/lib/components/ui/overlays/sheet/sheet.d.ts +1 -1
  131. package/dist/lib/components/ui/primitives/card/card.d.ts +10 -1
  132. package/dist/lib/components/ui/primitives/link/link-component.d.ts +14 -0
  133. package/dist/lib/components/ui/selection/select/select.d.ts +1 -1
  134. package/dist/lib/components/ui/selection/select-chip-field/select-chip-field.d.ts +1 -1
  135. package/dist/lib/i18n/resources/en/en.d.ts +9 -0
  136. package/dist/lib/i18n/resources/en/material.json.d.ts +13 -4
  137. package/dist/lib/i18n/resources/fr/fr.d.ts +9 -0
  138. package/dist/lib/i18n/resources/fr/material.json.d.ts +13 -4
  139. package/dist/lib/i18n/resources/resources.d.ts +18 -0
  140. package/dist/lib/i18n/translator.d.ts +1 -1
  141. package/dist/lib/lib/redux/status-slice.d.ts +1 -1
  142. package/dist/lib.js +39 -55
  143. package/dist/main.js +13 -13
  144. package/dist/map.js +35 -35
  145. package/dist/material.css +1 -1
  146. package/dist/{merge-CuDTNgpm.js → merge-CRXQ4NSv.js} +4 -4
  147. package/dist/{mermaid.core-O7mtb1-p.js → mermaid.core-C_JPRVNa.js} +49 -49
  148. package/dist/{mindmap-definition-NLK3R4M7-CO0E97EZ.js → mindmap-definition-NLK3R4M7-OTZIWZah.js} +13 -13
  149. package/dist/{pegDiagram-GJSIUBJH-CAO6aYvj.js → pegDiagram-GJSIUBJH-CWKobqLl.js} +4 -4
  150. package/dist/{pieDiagram-5QR66LMP-BXxVfv5K.js → pieDiagram-5QR66LMP-BpmwlCYh.js} +5 -5
  151. package/dist/print.js +2 -2
  152. package/dist/{quadrantDiagram-O4NWA36T-BbidZDM8.js → quadrantDiagram-O4NWA36T-CIFt4MgA.js} +3 -3
  153. package/dist/{railroadDiagram-XR7U4H2S-DmKDXg8V.js → railroadDiagram-XR7U4H2S-fsZ7oqPG.js} +4 -4
  154. package/dist/{requirementDiagram-PLB6GJNP-wFvgSWJP.js → requirementDiagram-PLB6GJNP-BJaiDsKj.js} +13 -13
  155. package/dist/rolldown-runtime-BFFgcFxR.js +30 -0
  156. package/dist/{sankeyDiagram-IPEJSGJF-Cka5t09q.js → sankeyDiagram-IPEJSGJF-XDAIB5as.js} +3 -3
  157. package/dist/{sequenceDiagram-PO4LG4MO-B2qb55A5.js → sequenceDiagram-PO4LG4MO-Bgx1kuGA.js} +5 -5
  158. package/dist/{sortable-provider-C5VYhY8u.js → sortable-provider-MCgOzfRp.js} +24 -24
  159. package/dist/{src-C9kQSo6K.js → src-CsLQInsN.js} +1 -1
  160. package/dist/{stateDiagram-v2-GCMORJYK-EMa7q3ju.js → stateDiagram-v2-GCMORJYK-CGo16q99.js} +14 -14
  161. package/dist/{stored-language-B0o4cBh8.js → stored-language-Cz89IYZX.js} +26 -8
  162. package/dist/styles.css +10 -368
  163. package/dist/{swimlanes-2SLR337P-BtZ7Di5u.js → swimlanes-2SLR337P-DXZt0zyd.js} +12 -12
  164. package/dist/swimlanesDiagram-TC7HE7FX-Cno6MSMH.js +28 -0
  165. package/dist/{timeline-definition-EJHVYXUP-2Z6UABw8.js → timeline-definition-EJHVYXUP-CbPIZcT7.js} +5 -5
  166. package/dist/{translate-material-BCwQrt2G.js → translate-material-Caxsy0bp.js} +2 -2
  167. package/dist/{translator-CwpmpI24.js → translator-B85Q_O55.js} +1 -1
  168. package/dist/{use-heading-spy-BtBJiU63.js → use-heading-spy-C4yWEr5c.js} +37 -37
  169. package/dist/{use-material-translation-DG_7z3Q7.js → use-material-translation-Cm3Ej3bT.js} +2 -2
  170. package/dist/{usecaseDiagram-POWQR4AR-DT56cp_B.js → usecaseDiagram-POWQR4AR-D_gyFA3m.js} +13 -13
  171. package/dist/{utils-UBn-46YY.js → utils-DC8bw9A_.js} +346 -360
  172. package/dist/{vennDiagram-UO4OBE2U-CO0yFCI8.js → vennDiagram-UO4OBE2U-BpgP__1T.js} +4 -4
  173. package/dist/{wardleyDiagram-VNRHLVJA-QkwghAYo.js → wardleyDiagram-VNRHLVJA-CYqKMb2f.js} +4 -4
  174. package/dist/{xychartDiagram-PMCCYNJV-B2aZlrno.js → xychartDiagram-PMCCYNJV-W-fXV6iN.js} +7 -7
  175. package/docs/components/buttons-and-actions.md +60 -10
  176. package/docs/components/data-display.md +23 -1
  177. package/docs/components/data-table-filter-and-lists.md +88 -10
  178. package/docs/components/date-and-time.md +24 -0
  179. package/docs/components/feedback-and-status.md +85 -8
  180. package/docs/components/form-fields.md +14 -5
  181. package/docs/components/media-and-files.md +7 -0
  182. package/docs/components/navigation-and-layout.md +21 -3
  183. package/docs/components/overlays-and-menus.md +21 -6
  184. package/docs/components/primitives.md +16 -2
  185. package/docs/components/selection-and-choice.md +13 -2
  186. package/docs/getting-started.md +4 -2
  187. package/docs/guides/app-shell.md +97 -4
  188. package/docs/guides/forms.md +54 -5
  189. package/docs/guides/helpers.md +2 -2
  190. package/docs/guides/i18n.md +5 -2
  191. package/docs/guides/ssr.md +1 -1
  192. package/docs/guides/theming.md +133 -5
  193. package/docs/previews/data-display-description.webp +0 -0
  194. package/docs/previews/feedback-status-toast.webp +0 -0
  195. package/docs/roadmap.md +22 -1
  196. package/docs/troubleshooting.md +963 -11
  197. package/lib/components/base-content.css +139 -0
  198. package/lib/components/base.css +150 -0
  199. package/lib/components/components.css +2 -0
  200. package/lib/components/reduced-motion.css +56 -0
  201. package/lib/components/theme-tokens.css +116 -0
  202. package/lib/components/ui/actions/button-group/button-group.css +1 -1
  203. package/lib/components/ui/feedback/toast/toast.css +21 -0
  204. package/lib/components/ui/primitives/label/label.css +33 -0
  205. package/lib/styles.css +10 -368
  206. package/package.json +2 -2
  207. package/dist/field-blur-DWQtxiAe.js +0 -3483
  208. package/dist/flowDiagram-KWPJA3E3-DZxumFfu.js +0 -17
  209. package/dist/icon-button-BxySFfrr.js +0 -2718
  210. package/dist/swimlanesDiagram-TC7HE7FX-CROh8GTF.js +0 -28
@@ -1,8 +1,8 @@
1
- import { n as e } from "./src-C9kQSo6K.js";
1
+ import { n as e } from "./src-CsLQInsN.js";
2
2
  import { n as t } from "./mermaid-parser.core-BXD_TD1T.js";
3
3
  import { n } from "./chunk-Y2CYZVJY-BAad7w_K.js";
4
- import { c as r } from "./chunk-O7XYJQB3-A66QSOPA.js";
5
- import { t as i } from "./chunk-6AEJRKK7-3YWRP4aV.js";
4
+ import { c as r } from "./chunk-O7XYJQB3-BChweQ_V.js";
5
+ import { t as i } from "./chunk-6AEJRKK7-BLBlw8ui.js";
6
6
  //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-VRGFBTTK.mjs
7
7
  var a = { parse: /* @__PURE__ */ n(async (n) => {
8
8
  let r = await t("info", n);
@@ -1,6 +1,6 @@
1
- import { x as e } from "./translator-CwpmpI24.js";
2
- import { i as t, o as n, t as r } from "./_overRest-DvC5rm5s.js";
3
- import { d as i } from "./_Uint8Array-JRUmWcRr.js";
1
+ import { x as e } from "./translator-B85Q_O55.js";
2
+ import { i as t, o as n, t as r } from "./_overRest-BQ8agsDH.js";
3
+ import { d as i } from "./_Uint8Array-CALbCR7W.js";
4
4
  //#region ../../node_modules/lodash-es/_baseRest.js
5
5
  function a(e, i) {
6
6
  return t(r(e, i, n), e + "");
@@ -1,6 +1,6 @@
1
- import { C as e, o as t, s as n, v as r } from "./translator-CwpmpI24.js";
2
- import { S as i, j as a, k as o } from "./async-slice-OftEOtMA.js";
3
- import { a as s, c, d as l, f as u, l as d, p as f, u as p } from "./_Uint8Array-JRUmWcRr.js";
1
+ import { C as e, o as t, s as n, v as r } from "./translator-B85Q_O55.js";
2
+ import { S as i, j as a, k as o } from "./async-slice-BHMdvnqm.js";
3
+ import { a as s, c, d as l, f as u, l as d, p as f, u as p } from "./_Uint8Array-CALbCR7W.js";
4
4
  //#region ../../node_modules/lodash-es/_isFlattenable.js
5
5
  var m = e ? e.isConcatSpreadable : void 0;
6
6
  function h(e) {
@@ -1,8 +1,8 @@
1
- import "./src-C9kQSo6K.js";
2
- import { p as e } from "./chunk-ZIGJFQKS-C3xUAXJq.js";
1
+ import "./src-CsLQInsN.js";
2
+ import { p as e } from "./chunk-ZIGJFQKS-9VXArDKF.js";
3
3
  import { n as t } from "./chunk-Y2CYZVJY-BAad7w_K.js";
4
- import { H as n, U as r, a as i, c as a, q as o, s, v as c, w as l, x as u, y as d } from "./chunk-O7XYJQB3-A66QSOPA.js";
5
- import { t as f } from "./chunk-6AEJRKK7-3YWRP4aV.js";
4
+ import { H as n, U as r, a as i, c as a, q as o, s, v as c, w as l, x as u, y as d } from "./chunk-O7XYJQB3-BChweQ_V.js";
5
+ import { t as f } from "./chunk-6AEJRKK7-BLBlw8ui.js";
6
6
  import { t as p } from "./rough.esm-Cvc79rxE.js";
7
7
  //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/ishikawaDiagram-OU5B5YK6.mjs
8
8
  var m = (function() {
@@ -1,9 +1,9 @@
1
- import { ct as e } from "./components-DrStgM4J.js";
2
- import { t } from "./src-C9kQSo6K.js";
1
+ import { ct as e } from "./components-Bg1bqGbc.js";
2
+ import { t } from "./src-CsLQInsN.js";
3
3
  import { n } from "./chunk-Y2CYZVJY-BAad7w_K.js";
4
- import { H as r, U as i, a, c as o, q as s, v as c, w as l, x as u, y as d } from "./chunk-O7XYJQB3-A66QSOPA.js";
4
+ import { H as r, U as i, a, c as o, q as s, v as c, w as l, x as u, y as d } from "./chunk-O7XYJQB3-BChweQ_V.js";
5
5
  import { t as f } from "./chunk-5VM5RSS4-BFskf6Qk.js";
6
- import { a as p, n as m, o as h, s as g } from "./chunk-GWA4HPMP-Co-A6dtV.js";
6
+ import { a as p, n as m, o as h, s as g } from "./chunk-GWA4HPMP-B8jXI0Tl.js";
7
7
  //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/journeyDiagram-ZHPQQLJL.mjs
8
8
  var _ = (function() {
9
9
  var e = /* @__PURE__ */ n(function(e, t, n, r) {
@@ -1,15 +1,15 @@
1
- import { n as e } from "./src-C9kQSo6K.js";
2
- import "./chunk-ZIGJFQKS-C3xUAXJq.js";
1
+ import { n as e } from "./src-CsLQInsN.js";
2
+ import "./chunk-ZIGJFQKS-9VXArDKF.js";
3
3
  import { n as t } from "./chunk-Y2CYZVJY-BAad7w_K.js";
4
- import { Y as n, f as r, it as i, nt as a, tt as o, x as s, z as c } from "./chunk-O7XYJQB3-A66QSOPA.js";
5
- import { t as l } from "./chunk-6AEJRKK7-3YWRP4aV.js";
6
- import "./chunk-742MDFTN-Cs1qGiTK.js";
7
- import "./chunk-MBY4JIJT-C3RQP_Nk.js";
4
+ import { Y as n, f as r, it as i, nt as a, tt as o, x as s, z as c } from "./chunk-O7XYJQB3-BChweQ_V.js";
5
+ import { t as l } from "./chunk-6AEJRKK7-BLBlw8ui.js";
6
+ import "./chunk-742MDFTN-CsUjFyzK.js";
7
+ import "./chunk-MBY4JIJT-BFIqOe-8.js";
8
8
  import { t as u } from "./chunk-5VM5RSS4-BFskf6Qk.js";
9
- import "./chunk-7PRAP22T-_Av9vcXz.js";
10
- import "./chunk-7INBJB4K-BY5n77ka.js";
11
- import { i as d, r as f } from "./chunk-5DYCD2WN-Cja1INgd.js";
12
- import { r as p } from "./chunk-UA2S7LBM-BNeHeMx9.js";
9
+ import "./chunk-7PRAP22T-0C6_H8Li.js";
10
+ import "./chunk-7INBJB4K-k-I67NSP.js";
11
+ import { i as d, r as f } from "./chunk-5DYCD2WN-Cd1zazNp.js";
12
+ import { r as p } from "./chunk-UA2S7LBM-ChuksCDg.js";
13
13
  import { n as m, t as h } from "./chunk-LNGE3PJU-DJjGTS7O.js";
14
14
  //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/kanban-definition-PNTS6WVX.mjs
15
15
  var g = (function() {
@@ -0,0 +1,11 @@
1
+ import { MouseEvent } from 'react';
2
+ import { useClickLock } from './use-click-lock';
3
+ /**
4
+ * A busy button cancels the click, which is also what Enter in a field of
5
+ * its form sends a submit button, in the capture phase: before the
6
+ * caller's `onClick` — an `asChild` child's own handler included, which a
7
+ * Slot runs before the slot's — and before any ancestor's. Read the lock
8
+ * now: the second click of a double click comes before the re-render that
9
+ * shows it.
10
+ */
11
+ export declare function busyClickCapture(busy: boolean, clickLock: ReturnType<typeof useClickLock>, onClickCapture?: (event: MouseEvent<HTMLButtonElement>) => void): (event: MouseEvent<HTMLButtonElement>) => void;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The text colour of the `tonal`, `outlined` and `link` variants of `Button`
3
+ * and `IconButton`, per `color`: the token itself where it reads at 4.5:1 on
4
+ * the page, on `--card` and on its own 15 % tint, else mixed toward black in
5
+ * the light theme and toward white in the dark one (WCAG 1.4.3). The class
6
+ * names are written out whole so Tailwind finds them.
7
+ */
8
+ export declare const toneText: {
9
+ readonly primary: "text-primary dark:text-[color-mix(in_oklab,var(--color-primary)_40%,white)]";
10
+ readonly secondary: "text-secondary";
11
+ readonly success: "text-success dark:text-[color-mix(in_oklab,var(--color-success)_85%,white)]";
12
+ readonly info: "text-info";
13
+ readonly warning: "text-[color-mix(in_oklab,var(--color-warning)_85%,black)] dark:text-[color-mix(in_oklab,var(--color-warning)_85%,white)]";
14
+ readonly error: "text-[color-mix(in_oklab,var(--color-error)_85%,black)] dark:text-[color-mix(in_oklab,var(--color-error)_70%,white)]";
15
+ readonly default: "text-foreground";
16
+ };
17
+ /** The same tones for an icon marked `data-slot="icon"`. */
18
+ export declare const toneIcon: {
19
+ readonly primary: "[&_svg]:data-[slot=icon]:text-primary dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-primary)_40%,white)]";
20
+ readonly secondary: "[&_svg]:data-[slot=icon]:text-secondary";
21
+ readonly success: "[&_svg]:data-[slot=icon]:text-success dark:[&_svg]:data-[slot=icon]:text-[color-mix(in_oklab,var(--color-success)_85%,white)]";
22
+ readonly info: "[&_svg]:data-[slot=icon]:text-info";
23
+ readonly 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)]";
24
+ readonly 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)]";
25
+ readonly default: "[&_svg]:data-[slot=icon]:text-foreground";
26
+ };
27
+ /** The same tones for `IconButton`'s icon line (`stroke`). */
28
+ export declare const toneStroke: {
29
+ readonly primary: "[&_svg]:stroke-primary dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-primary)_40%,white)]";
30
+ readonly secondary: "[&_svg]:stroke-secondary";
31
+ readonly success: "[&_svg]:stroke-success dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-success)_85%,white)]";
32
+ readonly info: "[&_svg]:stroke-info";
33
+ readonly warning: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-warning)_85%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-warning)_85%,white)]";
34
+ readonly error: "[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_85%,black)] dark:[&_svg]:stroke-[color-mix(in_oklab,var(--color-error)_70%,white)]";
35
+ readonly default: "[&_svg]:stroke-foreground";
36
+ };
@@ -3,8 +3,27 @@ import { SpinnerProps } from '../../feedback/spinner/spinner';
3
3
  import { ButtonVariants, buttonVariants } from './button.variants';
4
4
  export type ButtonProps = ComponentProps<'button'> & ButtonVariants & {
5
5
  asChild?: boolean;
6
+ /**
7
+ * Busy: `aria-busy` and `aria-disabled`, a spinner, and every click
8
+ * blocked — so a submit button does not submit, by a click or by Enter
9
+ * in a field. It stays focusable (no native `disabled`), so focus is
10
+ * not lost while the work runs. Pass `formState.isSubmitting`.
11
+ */
6
12
  loading?: boolean;
13
+ /**
14
+ * A click locks the button at once, before `loading` has rendered,
15
+ * until `loading` has turned true and back (or for a second when it
16
+ * does not turn true): for a `loading` that turns true only after an
17
+ * `await`, such as a mutation's pending state.
18
+ */
19
+ lockOnClick?: boolean;
7
20
  spinnerVariant?: SpinnerProps['variant'];
21
+ /**
22
+ * The label breaks onto several lines instead of being cut with an
23
+ * ellipsis at its container's width: the button grows taller, never
24
+ * shorter than its `size`. Without it a long label is truncated.
25
+ */
26
+ wrap?: boolean;
8
27
  } & {
9
28
  tooltip?: string;
10
29
  };
@@ -0,0 +1,8 @@
1
+ import { ButtonVariants } from './button.variants';
2
+ /**
3
+ * The classes of `wrap`: the label breaks onto as many lines as it needs,
4
+ * centred, instead of being cut with an ellipsis; the button grows taller,
5
+ * never shorter than its `size`, and keeps its vertical padding. An `icon*`
6
+ * size is square and ignores it.
7
+ */
8
+ export declare function buttonWrapClasses(wrap: boolean | undefined, size: ButtonVariants['size']): string | false;
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Puts each run of bare text (strings, numbers) among a button's children (in a fragment too) in one
4
+ * `<span data-slot="button-label">`, so `Delete {name}?` is one piece and not
5
+ * three separated by the button's gap. A text node is an anonymous flex item,
6
+ * which neither shrinks below its text nor shows an ellipsis; a span with
7
+ * `truncate` does both, so a long label is cut with "…" inside its
8
+ * container instead of sticking out of it. Elements are left as they are.
9
+ */
10
+ export declare function wrapLabelText(children: ReactNode): ReactNode;
@@ -0,0 +1,18 @@
1
+ /** How long a click locks the button when `loading` never turns true. */
2
+ export declare const CLICK_LOCK_FALLBACK_MS = 1000;
3
+ /**
4
+ * `lockOnClick`: a click locks the button, synchronously, so a second click
5
+ * (or Enter) before the caller's `loading` has rendered does nothing. The
6
+ * lock lasts until `loading` has turned true and back to false — the work the
7
+ * click started is over — or, when `loading` does not turn true within
8
+ * `CLICK_LOCK_FALLBACK_MS`, until then.
9
+ *
10
+ * `isLocked()` reads the lock as it is now (a ref: the second click of a
11
+ * double click comes before any re-render); `locked` is the same for the
12
+ * render, so the button shows it.
13
+ */
14
+ export declare function useClickLock(enabled: boolean | undefined, loading: boolean): {
15
+ locked: boolean;
16
+ lock: () => void;
17
+ isLocked: () => boolean;
18
+ };
@@ -2,8 +2,12 @@ import { ReactNode } from 'react';
2
2
  import { IconButtonProps } from '../icon-button/icon-button';
3
3
  export type CopyButtonProps = Omit<IconButtonProps, 'onClick' | 'children' | 'tooltip' | 'value'> & {
4
4
  value: string | (() => string);
5
+ /** The button's accessible name; it never changes after a click. */
5
6
  label?: string;
7
+ /** Announced (not a new name) once the text is on the clipboard. */
6
8
  copiedLabel?: string;
9
+ /** Announced when the clipboard refused the text. */
10
+ failedLabel?: string;
7
11
  icon?: ReactNode;
8
12
  };
9
- export declare function CopyButton({ value, label, copiedLabel, icon, variant, color, ...props }: CopyButtonProps): import("react").JSX.Element;
13
+ export declare function CopyButton({ value, label, copiedLabel, failedLabel, icon, variant, color, ...props }: CopyButtonProps): import("react").JSX.Element;
@@ -0,0 +1,114 @@
1
+ /** The colour of each variant: one entry per `variant` × `color`. */
2
+ export declare const iconButtonCompoundVariants: ({
3
+ variant: "filled";
4
+ color: "primary";
5
+ class: string;
6
+ } | {
7
+ variant: "filled";
8
+ color: "secondary";
9
+ class: string;
10
+ } | {
11
+ variant: "filled";
12
+ color: "success";
13
+ class: string;
14
+ } | {
15
+ variant: "filled";
16
+ color: "info";
17
+ class: string;
18
+ } | {
19
+ variant: "filled";
20
+ color: "warning";
21
+ class: string;
22
+ } | {
23
+ variant: "filled";
24
+ color: "error";
25
+ class: string;
26
+ } | {
27
+ variant: "filled";
28
+ color: "default";
29
+ class: string;
30
+ } | {
31
+ variant: "tonal";
32
+ color: "primary";
33
+ class: string;
34
+ } | {
35
+ variant: "tonal";
36
+ color: "secondary";
37
+ class: string;
38
+ } | {
39
+ variant: "tonal";
40
+ color: "success";
41
+ class: string;
42
+ } | {
43
+ variant: "tonal";
44
+ color: "info";
45
+ class: string;
46
+ } | {
47
+ variant: "tonal";
48
+ color: "warning";
49
+ class: string;
50
+ } | {
51
+ variant: "tonal";
52
+ color: "error";
53
+ class: string;
54
+ } | {
55
+ variant: "tonal";
56
+ color: "default";
57
+ class: string;
58
+ } | {
59
+ variant: "outlined";
60
+ color: "primary";
61
+ class: string;
62
+ } | {
63
+ variant: "outlined";
64
+ color: "secondary";
65
+ class: string;
66
+ } | {
67
+ variant: "outlined";
68
+ color: "success";
69
+ class: string;
70
+ } | {
71
+ variant: "outlined";
72
+ color: "info";
73
+ class: string;
74
+ } | {
75
+ variant: "outlined";
76
+ color: "warning";
77
+ class: string;
78
+ } | {
79
+ variant: "outlined";
80
+ color: "error";
81
+ class: string;
82
+ } | {
83
+ variant: "outlined";
84
+ color: "default";
85
+ class: string;
86
+ } | {
87
+ variant: "link";
88
+ color: "primary";
89
+ class: string;
90
+ } | {
91
+ variant: "link";
92
+ color: "secondary";
93
+ class: string;
94
+ } | {
95
+ variant: "link";
96
+ color: "success";
97
+ class: string;
98
+ } | {
99
+ variant: "link";
100
+ color: "info";
101
+ class: string;
102
+ } | {
103
+ variant: "link";
104
+ color: "warning";
105
+ class: string;
106
+ } | {
107
+ variant: "link";
108
+ color: "error";
109
+ class: string;
110
+ } | {
111
+ variant: "link";
112
+ color: "default";
113
+ class: string;
114
+ })[];
@@ -1,4 +1,4 @@
1
- import { Row, RowData, Table } from '@tanstack/react-table';
1
+ import { Row, RowData } from '@tanstack/react-table';
2
2
  import { DataTableFeatures } from './features';
3
3
  export declare function useColumnHelpers<T extends RowData>(): {
4
4
  columnHelper: import('@tanstack/table-core').ColumnHelper<{
@@ -8,10 +8,10 @@ export declare function useColumnHelpers<T extends RowData>(): {
8
8
  rowSortingFeature: import('@tanstack/table-core').TableFeature;
9
9
  rowExpandingFeature: import('@tanstack/table-core').TableFeature;
10
10
  rowPaginationFeature: import('@tanstack/table-core').TableFeature;
11
- filteredRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
12
- sortedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
13
- paginatedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
14
- expandedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
11
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
12
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
13
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
14
+ expandedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
15
15
  }, T>;
16
16
  predefinedColumns: () => {
17
17
  select: import('@tanstack/table-core').DisplayColumnDef<{
@@ -21,10 +21,10 @@ export declare function useColumnHelpers<T extends RowData>(): {
21
21
  rowSortingFeature: import('@tanstack/table-core').TableFeature;
22
22
  rowExpandingFeature: import('@tanstack/table-core').TableFeature;
23
23
  rowPaginationFeature: import('@tanstack/table-core').TableFeature;
24
- filteredRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
25
- sortedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
26
- paginatedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
27
- expandedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
24
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
25
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
26
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
27
+ expandedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
28
28
  }, T, unknown>;
29
29
  expand: import('@tanstack/table-core').DisplayColumnDef<{
30
30
  columnFilteringFeature: import('@tanstack/table-core').TableFeature;
@@ -33,10 +33,10 @@ export declare function useColumnHelpers<T extends RowData>(): {
33
33
  rowSortingFeature: import('@tanstack/table-core').TableFeature;
34
34
  rowExpandingFeature: import('@tanstack/table-core').TableFeature;
35
35
  rowPaginationFeature: import('@tanstack/table-core').TableFeature;
36
- filteredRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
37
- sortedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
38
- paginatedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
39
- expandedRowModel: (table: Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
36
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
37
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
38
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
39
+ expandedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
40
40
  }, T, unknown>;
41
41
  };
42
42
  };
@@ -6,7 +6,11 @@ export type DataTableEmptyState = {
6
6
  };
7
7
  export type DataTableEmpty = ReactNode | ((state: DataTableEmptyState) => ReactNode);
8
8
  /** `DataTable`'s "nothing here" row: one `TableEmpty` cell spanning every
9
- * visible column, holding `empty` or the default icon and text. */
9
+ * visible column, holding `empty` or the default icon and text. The content
10
+ * is centred in the width the scroll region shows (its
11
+ * `--table-visible-width`, at most; the cell's width before it is measured),
12
+ * and sticks to its start, so a table wider than a phone does not push it out of
13
+ * view. */
10
14
  export declare function DataTableEmptyRow({ columnCount, empty, filtered, }: {
11
15
  columnCount: number;
12
16
  empty?: DataTableEmpty;
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * The one box `DataTable`'s table scrolls in — the `Table` primitive's own
4
+ * container is made `overflow-visible` here, so there is no scroll inside a
5
+ * scroll. While its content overflows, it is a keyboard-focusable region with
6
+ * a name (axe `scrollable-region-focusable`), and an edge fades on each side
7
+ * where columns are hidden. Its measured visible width is set as
8
+ * `--table-visible-width`, so the empty state can centre itself within it —
9
+ * not a size container, which would collapse it inside a content-sized parent
10
+ * (`w-fit`, `inline-flex`, an `auto` grid track, a popover).
11
+ */
12
+ export declare function DataTableScrollRegion({ label, maxHeight, children, }: {
13
+ label: string;
14
+ maxHeight?: number | string;
15
+ children: ReactNode;
16
+ }): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { RowData } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ import { DataTableTable } from '../types';
4
+ /** Whether a node renders anything: `null`, `false`, whitespace-only
5
+ * strings, and arrays and fragments of them do not. A component that
6
+ * returns `null` cannot be seen from here. */
7
+ export declare function rendersContent(node: ReactNode): boolean;
8
+ /**
9
+ * `DataTable`'s toolbar: `actions(table)` and the view options. Rendered
10
+ * only when one of them has content — an empty `<fieldset>` is a nameless
11
+ * group to a screen reader. A fieldset disables every native control in it
12
+ * (filters, the view options) while loading, whoever rendered it.
13
+ *
14
+ * With `actions` and a `select` column, actions that show on the first
15
+ * selection must not push the rows down under a finger: the toolbar's height
16
+ * is reserved — an empty, hidden placeholder while `actions` render nothing,
17
+ * and the same minimum height once they do.
18
+ */
19
+ export declare function DataTableToolbar<TData extends RowData>({ table, actions, showViewOptions, loading, }: {
20
+ table: DataTableTable<TData>;
21
+ actions?: (table: DataTableTable<TData>) => ReactNode;
22
+ showViewOptions?: boolean;
23
+ loading: boolean;
24
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import { RowData, Table } from '@tanstack/react-table';
2
+ import { DataTableFeatures } from './features';
3
+ /** 16px boxes, with a centred 24px `::before` target (WCAG 2.5.8). */
4
+ export declare const SELECT_CHECKBOX_CLASS = "ml-2 relative before:absolute before:top-1/2 before:left-1/2 before:size-6 before:-translate-x-1/2 before:-translate-y-1/2";
5
+ /** The `select` column's header: disabled while the table loads, when the
6
+ * rows it would select are inert. */
7
+ export declare function SelectAllCheckbox<T extends RowData>({ table, label, }: {
8
+ table: Table<DataTableFeatures, T>;
9
+ label: string;
10
+ }): import("react").JSX.Element;
@@ -42,7 +42,16 @@ export interface DataTableProps<TData extends RowData> {
42
42
  actions?: (table: DataTableTable<TData>) => ReactNode;
43
43
  options?: DataTableOptions;
44
44
  renderExpandedRow?: (row: Row<DataTableFeatures, TData>) => ReactNode;
45
+ /** The header row (column names, sorting, "Select all"). Shown at every
46
+ * width; `false` hides it. */
45
47
  showHeader?: boolean;
48
+ /** Caps the table's height (`400`, `'60vh'`); the rows then scroll inside
49
+ * it. Default: none — the table is as tall as its rows, and the page
50
+ * scrolls. */
51
+ maxHeight?: number | string;
52
+ /** The name of the scroll region the table becomes while it overflows.
53
+ * Default: "Scrollable table" (`material.table.labels.scroll-region`). */
54
+ scrollLabel?: string;
46
55
  onLoadMore?: () => void;
47
56
  isLoadingMore?: boolean;
48
57
  showViewOptions?: boolean;
@@ -1,4 +1,4 @@
1
- import { ColumnDef, RowData, RowSelectionState, SortingState } from '@tanstack/react-table';
1
+ import { ColumnDef, OnChangeFn, RowData, RowSelectionState, SortingState } from '@tanstack/react-table';
2
2
  import { DataTableFeatures } from './features';
3
3
  export type UseDataTableOptions<TData extends RowData> = {
4
4
  data: TData[];
@@ -12,6 +12,17 @@ export type UseDataTableOptions<TData extends RowData> = {
12
12
  onRowSelectionChange?: (rowSelection: RowSelectionState) => void;
13
13
  getRowId?: (row: TData, index: number) => string;
14
14
  };
15
+ /** A state held here unless the caller passes `value`; `onChange` is told
16
+ * of every change, with the new value rather than TanStack's updater.
17
+ *
18
+ * An update that resolves to the current value is dropped: no `setState`,
19
+ * no `onChange`. TanStack's auto-resets (`expanded` when `data` changes) run
20
+ * in a microtask and hand an updater that returns the old state when it is
21
+ * already the reset one; calling `setState` for it anyway re-rendered the
22
+ * table after every page, and in a browser that runs that microtask while
23
+ * React renders (Firefox under Playwright does), React logged "Cannot update
24
+ * a component (`DataTable`) while rendering a different component". */
25
+ export declare function useControlled<T>(value: T | undefined, onChange: ((value: T) => void) | undefined, initial: T): [T, OnChangeFn<T>];
15
26
  /** `DataTable`'s table: sorting, filters, visibility, selection and expansion
16
27
  * held in local state (sorting and selection controllable), rows expandable
17
28
  * when the table renders them. */
@@ -0,0 +1,22 @@
1
+ import { RefObject } from 'react';
2
+ /** What `useScrollEdges` reads off a scroll container. */
3
+ export type ScrollEdges = {
4
+ /** Its content is wider or taller than it: it scrolls. */
5
+ scrollable: boolean;
6
+ /** Content is hidden before the inline start (scrolled away from it). */
7
+ start: boolean;
8
+ /** Content is hidden past the inline end. */
9
+ end: boolean;
10
+ /** Its visible width (`clientWidth`), in pixels; `0` until measured. */
11
+ width: number;
12
+ };
13
+ /**
14
+ * Whether `ref`'s element scrolls, and on which inline edges content is
15
+ * hidden — for an edge fade and a focusable scroll region — and how wide
16
+ * it shows its content. The scroll offset
17
+ * comes from react-use's `useScroll`; the sizes are re-read when the element
18
+ * or its `<table>` resizes (new rows, a column shown). `scrollLeft` is
19
+ * negative in a right-to-left table, so its absolute value is the distance
20
+ * from the start. Nothing scrolls on the server or before the first effect.
21
+ */
22
+ export declare function useScrollEdges(ref: RefObject<HTMLElement | null>): ScrollEdges;
@@ -0,0 +1,8 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { DayButton, DayProps } from 'react-day-picker';
3
+ declare function CalendarSelectedHint({ children }: {
4
+ children: ReactNode;
5
+ }): import("react").JSX.Element;
6
+ declare function CalendarDay({ day, modifiers, ...props }: DayProps): import("react").JSX.Element;
7
+ declare function CalendarDayButton({ className, day, modifiers, ...props }: Omit<ComponentProps<typeof DayButton>, 'color'>): import("react").JSX.Element;
8
+ export { CalendarDay, CalendarDayButton, CalendarSelectedHint };
@@ -1,12 +1,12 @@
1
1
  import { ComponentProps } from 'react';
2
- import { DateRange, DayButton, DayPicker } from 'react-day-picker';
2
+ import { DateRange, DayPicker } from 'react-day-picker';
3
3
  import { Button } from '../../actions/button/button';
4
- declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, month: monthProp, defaultMonth, onMonthChange, startMonth, endMonth, disabled, minDate, maxDate, disablePast, disableFuture, ...props }: ComponentProps<typeof DayPicker> & {
4
+ import { CalendarDayButton } from './calendar-day';
5
+ declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, month: monthProp, defaultMonth, onMonthChange, startMonth, endMonth, disabled, minDate, maxDate, disablePast, disableFuture, locale, labels, ...props }: ComponentProps<typeof DayPicker> & {
5
6
  buttonVariant?: ComponentProps<typeof Button>['variant'];
6
7
  minDate?: Date;
7
8
  maxDate?: Date;
8
9
  disablePast?: boolean;
9
10
  disableFuture?: boolean;
10
11
  }): import("react").JSX.Element;
11
- declare function CalendarDayButton({ className, day, modifiers, ...props }: Omit<ComponentProps<typeof DayButton>, 'color'>): import("react").JSX.Element;
12
12
  export { Calendar, CalendarDayButton, type DateRange };
@@ -14,7 +14,15 @@ declare function resolveDateBounds({ minDate, maxDate, disablePast, disableFutur
14
14
  maxDate?: Date;
15
15
  };
16
16
  declare function buildDisabledMatchers(disabled: Matcher | Matcher[] | undefined, minDate?: Date, maxDate?: Date): Matcher[] | undefined;
17
+ /**
18
+ * A day's accessible name: its full localized date ("Thursday, October 1,
19
+ * 2026", "jeudi 1 octobre 2026"), nothing else - the chosen and current states
20
+ * are `aria-selected`, `aria-current` and a described-by "Selected", not words
21
+ * in the name. An unknown language tag falls back to English.
22
+ */
23
+ declare function labelDay(date: Date, language?: string): string;
17
24
  export declare const CALENDAR_UTILS: {
25
+ labelDay: typeof labelDay;
18
26
  getYearPageStart: typeof getYearPageStart;
19
27
  getYearsForPage: typeof getYearsForPage;
20
28
  formatYearRange: typeof formatYearRange;
@@ -0,0 +1,22 @@
1
+ import { DayPickerProps } from 'react-day-picker';
2
+ /**
3
+ * The calendar's language and the labels built from it: the `locale` prop, else
4
+ * the active `I18nProvider` language, else English. A day is named by its full
5
+ * localized date; a consumer's `labels.labelDayButton` still wins.
6
+ */
7
+ export declare function useCalendarLabels(locale: DayPickerProps['locale'], labels: DayPickerProps['labels']): {
8
+ locale: import('date-fns').Locale | Partial<import('react-day-picker').DayPickerLocale>;
9
+ labels: {
10
+ labelNav?: typeof import('react-day-picker').labelNav | undefined;
11
+ labelGrid?: typeof import('react-day-picker').labelGrid | undefined;
12
+ labelGridcell?: typeof import('react-day-picker').labelGridcell | undefined;
13
+ labelMonthDropdown?: typeof import('react-day-picker').labelMonthDropdown | undefined;
14
+ labelYearDropdown?: typeof import('react-day-picker').labelYearDropdown | undefined;
15
+ labelNext?: typeof import('react-day-picker').labelNext | undefined;
16
+ labelPrevious?: typeof import('react-day-picker').labelPrevious | undefined;
17
+ labelDayButton: typeof import('react-day-picker').labelDayButton;
18
+ labelWeekday?: typeof import('react-day-picker').labelWeekday | undefined;
19
+ labelWeekNumber?: typeof import('react-day-picker').labelWeekNumber | undefined;
20
+ labelWeekNumberHeader?: typeof import('react-day-picker').labelWeekNumberHeader | undefined;
21
+ };
22
+ };
@@ -7,6 +7,7 @@ export type DescriptionProps = {
7
7
  * Description - Label/value pair for read-only detail panels.
8
8
  *
9
9
  * Renders nothing when `value` is falsy, so callers can drop it into a grid of
10
- * optional fields without guarding each one.
10
+ * optional fields without guarding each one. It takes one cell of the parent
11
+ * grid; pass `className="col-start-full"` for a full-width row.
11
12
  */
12
13
  export declare function Description({ label, value, className, children, ...props }: DescriptionProps): false | "" | 0 | 0n | import("react").JSX.Element | null | undefined;
@@ -1,4 +1,5 @@
1
1
  import { HTMLAttributes, MouseEventHandler, ReactNode } from 'react';
2
+ import { LinkComponent } from '../../primitives/link/link-component';
2
3
  export type ListTileProps = {
3
4
  leading?: ReactNode;
4
5
  trailing?: ReactNode;
@@ -7,7 +8,14 @@ export type ListTileProps = {
7
8
  selected?: boolean;
8
9
  size?: 'sm' | 'md';
9
10
  href?: string;
11
+ /**
12
+ * The link element of a tile with an `href`, with the app shell's contract
13
+ * ({@link LinkComponent}: it takes `href`, spreads every other prop and
14
+ * forwards `ref`). A plain `<a>` by default, which reloads the page; pass a
15
+ * router `Link` wrapper for client-side navigation.
16
+ */
17
+ linkComponent?: LinkComponent;
10
18
  disabled?: boolean;
11
19
  onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;
12
20
  } & Omit<HTMLAttributes<HTMLElement>, 'children' | 'title' | 'onClick'>;
13
- export declare function ListTile({ title, subtitle, leading, trailing, className, selected, size, href, disabled, onClick, ...props }: ListTileProps): import("react").JSX.Element;
21
+ export declare function ListTile({ title, subtitle, leading, trailing, className, selected, size, href, linkComponent, disabled, onClick, ...props }: ListTileProps): import("react").JSX.Element;