@nxgt/material 3.79.1 → 3.80.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 (277) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +45 -6
  3. package/dist/{alert-dialog-653apk3f.js → alert-dialog-DgHtXZuB.js} +1 -1
  4. package/dist/{async-slice-CXLbQuOc.js → async-slice-YBQsGtQT.js} +1 -1
  5. package/dist/{button-3op3rtZh.js → button-_vm-xSBU.js} +1 -1
  6. package/dist/{calculator-KqIMBXSh.js → calculator-CTd_S23A.js} +10 -10
  7. package/dist/calculator-field.js +6 -6
  8. package/dist/{calculator-segment-BlJE1LaS.js → calculator-segment-OI1BT3bA.js} +1 -1
  9. package/dist/calculator.js +1 -1
  10. package/dist/charts.js +3 -3
  11. package/dist/{chip-MuKDwtkG.js → chip-DumcVzUO.js} +2 -2
  12. package/dist/{code-editor-Bp2RrdNx.js → code-editor-CiwgfSOK.js} +4 -4
  13. package/dist/code-editor.js +4 -4
  14. package/dist/{code-language-items-B7WR5ua_.js → code-language-items-Dip0xnmc.js} +2 -2
  15. package/dist/components/components.css +3 -0
  16. package/dist/components/ui/actions/fab/fab-dock.css +19 -6
  17. package/dist/components/ui/layout/app-search/app-search.css +62 -0
  18. package/dist/components/ui/layout/app-shell/activity-backdrop.css +10 -2
  19. package/dist/components/ui/layout/app-shell/app-header.css +108 -0
  20. package/dist/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
  21. package/dist/{components-CTyNC_zW.js → components-CJFHhkZv.js} +21798 -17784
  22. package/dist/components.js +37 -37
  23. package/dist/{conversion-variant-BDFAxqe9.js → conversion-variant-CqrPwPjC.js} +3 -3
  24. package/dist/{currency-field-DWHB5oms.js → currency-field-CMFvctye.js} +4 -4
  25. package/dist/{dialog-Bm5LvVlB.js → dialog-B0iU3fmh.js} +3 -3
  26. package/dist/dnd.js +2 -2
  27. package/dist/{dropdown-menu-xlZ6NYUA.js → dropdown-menu-CPOgcajv.js} +1 -1
  28. package/dist/editor.js +7 -7
  29. package/dist/{empty-state-C0kviQdW.js → empty-state-D3Jggupu.js} +1 -1
  30. package/dist/{financial-variant-CggTpad2.js → financial-variant-BdyfYhnp.js} +5 -5
  31. package/dist/{hooks-Dg94jPRq.js → hooks-Z7KKbv4G.js} +2 -2
  32. package/dist/hooks.js +2 -2
  33. package/dist/{hover-card-B1g55Hi6.js → hover-card-CFGIX6kg.js} +1 -1
  34. package/dist/i18n.js +3 -3
  35. package/dist/{icon-badge-BcW66bRk.js → icon-badge-kxGWUvcO.js} +1 -1
  36. package/dist/{icon-button-Cogxy1cy.js → icon-button-BamxMwZs.js} +1 -1
  37. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  38. package/dist/lib/components/ui/layout/app-bar/top-app-bar.d.ts +18 -3
  39. package/dist/lib/components/ui/layout/app-search/app-search-bar.d.ts +11 -0
  40. package/dist/lib/components/ui/layout/app-search/app-search.types.d.ts +47 -0
  41. package/dist/lib/components/ui/layout/app-search/index.d.ts +3 -0
  42. package/dist/lib/components/ui/layout/app-search/partials/on-phone.d.ts +2 -0
  43. package/dist/lib/components/ui/layout/app-search/partials/phone-search.d.ts +3 -0
  44. package/dist/lib/components/ui/layout/app-search/partials/pill-search.d.ts +3 -0
  45. package/dist/lib/components/ui/layout/app-search/pill-form.d.ts +18 -0
  46. package/dist/lib/components/ui/layout/app-search/search-panel.d.ts +24 -0
  47. package/dist/lib/components/ui/layout/app-search/search-results.d.ts +14 -0
  48. package/dist/lib/components/ui/layout/app-search/search-shortcut.d.ts +15 -0
  49. package/dist/lib/components/ui/layout/app-search/search-view.d.ts +22 -0
  50. package/dist/lib/components/ui/layout/app-search/use-pill-panel.d.ts +22 -0
  51. package/dist/lib/components/ui/layout/app-search/use-search-text.d.ts +8 -0
  52. package/dist/lib/components/ui/layout/app-shell/activity-app-bar.d.ts +35 -0
  53. package/dist/lib/components/ui/layout/app-shell/activity-chrome.d.ts +26 -3
  54. package/dist/lib/components/ui/layout/app-shell/activity-column-props.d.ts +22 -0
  55. package/dist/lib/components/ui/layout/app-shell/activity-column.d.ts +10 -2
  56. package/dist/lib/components/ui/layout/app-shell/activity-layout-navigation.types.d.ts +94 -0
  57. package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +8 -1
  58. package/dist/lib/components/ui/layout/app-shell/activity-layout.types.d.ts +2 -1
  59. package/dist/lib/components/ui/layout/app-shell/activity-rails.d.ts +16 -0
  60. package/dist/lib/components/ui/layout/app-shell/activity-sidebar-lane.d.ts +22 -0
  61. package/dist/lib/components/ui/layout/app-shell/activity-top-nav.d.ts +11 -0
  62. package/dist/lib/components/ui/layout/app-shell/activity-two-level-lane.d.ts +14 -0
  63. package/dist/lib/components/ui/layout/app-shell/app-back.d.ts +22 -0
  64. package/dist/lib/components/ui/layout/app-shell/app-header-row.d.ts +3 -0
  65. package/dist/lib/components/ui/layout/app-shell/app-header.d.ts +33 -1
  66. package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +8 -0
  67. package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +13 -0
  68. package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +3 -1
  69. package/dist/lib/components/ui/layout/app-shell/bottom-chrome.d.ts +13 -0
  70. package/dist/lib/components/ui/layout/app-shell/header-title.d.ts +18 -2
  71. package/dist/lib/components/ui/layout/app-shell/header.utils.d.ts +37 -0
  72. package/dist/lib/components/ui/layout/app-shell/index.d.ts +3 -0
  73. package/dist/lib/components/ui/layout/app-shell/navigation-parts.d.ts +38 -0
  74. package/dist/lib/components/ui/layout/app-shell/navigation.utils.d.ts +36 -0
  75. package/dist/lib/components/ui/layout/app-shell/page-title-scope.d.ts +14 -0
  76. package/dist/lib/components/ui/layout/app-shell/page-title.d.ts +12 -1
  77. package/dist/lib/components/ui/layout/app-shell/shell-scroll.d.ts +32 -0
  78. package/dist/lib/components/ui/layout/app-shell/sticky-offset.d.ts +8 -0
  79. package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -0
  80. package/dist/lib/components/ui/layout/app-shell/use-focus-while-hidden.d.ts +9 -0
  81. package/dist/lib/components/ui/layout/app-shell/use-header-height.d.ts +12 -0
  82. package/dist/lib/components/ui/layout/app-shell/use-header-scroll.d.ts +19 -0
  83. package/dist/lib/components/ui/layout/app-shell/use-shell-header.d.ts +20 -0
  84. package/dist/lib/components/ui/layout/auth-card/auth-card-split.d.ts +14 -0
  85. package/dist/lib/components/ui/layout/auth-card/auth-card.d.ts +13 -1
  86. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid-context.d.ts +21 -0
  87. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.d.ts +9 -0
  88. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.state.d.ts +30 -0
  89. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.tiles.d.ts +8 -0
  90. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.types.d.ts +50 -0
  91. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.utils.d.ts +70 -0
  92. package/dist/lib/components/ui/layout/dashboard-grid/dashboard-tile.d.ts +7 -0
  93. package/dist/lib/components/ui/layout/dashboard-grid/index.d.ts +4 -0
  94. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-announcer.d.ts +6 -0
  95. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-edit-bar.d.ts +11 -0
  96. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-move-buttons.d.ts +9 -0
  97. package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-toolbar.d.ts +7 -0
  98. package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-grid.d.ts +21 -0
  99. package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-moves.d.ts +22 -0
  100. package/dist/lib/components/ui/layout/doc/doc-context.d.ts +2 -0
  101. package/dist/lib/components/ui/layout/doc/doc.d.ts +5 -0
  102. package/dist/lib/components/ui/layout/doc/index.d.ts +1 -1
  103. package/dist/lib/components/ui/layout/doc/partials/doc-embedded-bar.d.ts +9 -0
  104. package/dist/lib/components/ui/layout/doc/partials/doc-embedded.d.ts +8 -0
  105. package/dist/lib/components/ui/layout/doc/use-doc.d.ts +9 -1
  106. package/dist/lib/components/ui/layout/editor-layout/editor-layout.d.ts +14 -0
  107. package/dist/lib/components/ui/layout/editor-layout/editor-layout.types.d.ts +31 -0
  108. package/dist/lib/components/ui/layout/editor-layout/index.d.ts +4 -0
  109. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-body.d.ts +11 -0
  110. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-canvas.d.ts +8 -0
  111. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-context.d.ts +12 -0
  112. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-start.d.ts +8 -0
  113. package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-triggers.d.ts +10 -0
  114. package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-names.d.ts +8 -0
  115. package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-state.d.ts +21 -0
  116. package/dist/lib/components/ui/layout/index.d.ts +9 -0
  117. package/dist/lib/components/ui/layout/landing/index.d.ts +6 -0
  118. package/dist/lib/components/ui/layout/landing/landing-layout.d.ts +15 -0
  119. package/dist/lib/components/ui/layout/landing/landing-layout.types.d.ts +27 -0
  120. package/dist/lib/components/ui/layout/landing/landing-section.d.ts +12 -0
  121. package/dist/lib/components/ui/layout/landing/landing-section.types.d.ts +32 -0
  122. package/dist/lib/components/ui/layout/landing/landing.classes.d.ts +20 -0
  123. package/dist/lib/components/ui/layout/landing/partials/landing-header.d.ts +11 -0
  124. package/dist/lib/components/ui/layout/landing/partials/landing-section-intro.d.ts +13 -0
  125. package/dist/lib/components/ui/layout/landing/partials/site-footer-group.d.ts +8 -0
  126. package/dist/lib/components/ui/layout/landing/site-footer.d.ts +13 -0
  127. package/dist/lib/components/ui/layout/landing/site-footer.types.d.ts +29 -0
  128. package/dist/lib/components/ui/layout/list-details-layout/internal.d.ts +2 -0
  129. package/dist/lib/components/ui/layout/list-details-layout/list-details-layout.d.ts +9 -17
  130. package/dist/lib/components/ui/layout/list-details-layout/partials/history-mark.d.ts +2 -0
  131. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-context.d.ts +17 -1
  132. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-history.d.ts +8 -0
  133. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-inspector.d.ts +21 -0
  134. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-layout.types.d.ts +47 -0
  135. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-resizer.d.ts +9 -0
  136. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-root.d.ts +3 -0
  137. package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-trigger.d.ts +13 -4
  138. package/dist/lib/components/ui/layout/list-details-layout/partials/use-inspector-focus.d.ts +8 -0
  139. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-param.d.ts +26 -0
  140. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-state.d.ts +15 -0
  141. package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-width.d.ts +16 -0
  142. package/dist/lib/components/ui/layout/list-details-layout/partials/use-pane-focus.d.ts +6 -4
  143. package/dist/lib/components/ui/layout/navigation-bar/index.d.ts +3 -0
  144. package/dist/lib/components/ui/layout/navigation-bar/internal.d.ts +4 -0
  145. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.classes.d.ts +14 -0
  146. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.d.ts +35 -0
  147. package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.utils.d.ts +19 -0
  148. package/dist/lib/components/ui/layout/navigation-bar/partials/bar-badge.d.ts +5 -0
  149. package/dist/lib/components/ui/layout/navigation-bar/partials/bar-entry.d.ts +12 -0
  150. package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-item.d.ts +22 -0
  151. package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-more.d.ts +24 -0
  152. package/dist/lib/components/ui/layout/navigation-bar/use-nav-bar-inset.d.ts +12 -0
  153. package/dist/lib/components/ui/layout/navigation-drawer/index.d.ts +5 -0
  154. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.classes.d.ts +9 -0
  155. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.d.ts +45 -0
  156. package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.utils.d.ts +14 -0
  157. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-body.d.ts +3 -0
  158. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-item.d.ts +20 -0
  159. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-modal.d.ts +17 -0
  160. package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-section.d.ts +15 -0
  161. package/dist/lib/components/ui/layout/navigation-rail/index.d.ts +3 -0
  162. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail-panel.d.ts +26 -0
  163. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.classes.d.ts +23 -0
  164. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.d.ts +42 -1
  165. package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.utils.d.ts +4 -0
  166. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-body.d.ts +3 -0
  167. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-item.d.ts +20 -0
  168. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-panel-item.d.ts +7 -0
  169. package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-toggle.d.ts +7 -0
  170. package/dist/lib/components/ui/layout/navigation-rail/use-rail-expanded.d.ts +13 -0
  171. package/dist/lib/components/ui/layout/navigation-toolbar/index.d.ts +2 -0
  172. package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.classes.d.ts +20 -0
  173. package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.d.ts +51 -0
  174. package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-item.d.ts +25 -0
  175. package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-more.d.ts +3 -0
  176. package/dist/lib/components/ui/layout/pane-layout/internal.d.ts +3 -0
  177. package/dist/lib/components/ui/layout/pane-layout/pane-layout.d.ts +16 -2
  178. package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-classes.d.ts +7 -0
  179. package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-context.d.ts +13 -0
  180. package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-layout-state.d.ts +16 -0
  181. package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-narrow.d.ts +6 -0
  182. package/dist/lib/components/ui/layout/responsive-grid/index.d.ts +4 -1
  183. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-item.d.ts +19 -0
  184. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-spans.d.ts +19 -0
  185. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.d.ts +24 -2
  186. package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.utils.d.ts +12 -0
  187. package/dist/lib/components/ui/layout/settings-layout/index.d.ts +2 -0
  188. package/dist/lib/components/ui/layout/settings-layout/partials/settings-link.d.ts +7 -0
  189. package/dist/lib/components/ui/layout/settings-layout/partials/settings-list.d.ts +11 -0
  190. package/dist/lib/components/ui/layout/settings-layout/partials/settings-page.d.ts +5 -0
  191. package/dist/lib/components/ui/layout/settings-layout/settings-layout.d.ts +10 -0
  192. package/dist/lib/components/ui/layout/settings-layout/settings-layout.types.d.ts +33 -0
  193. package/dist/lib/components/ui/layout/settings-layout/settings-layout.utils.d.ts +13 -0
  194. package/dist/lib/components/ui/layout/thread-layout/thread-layout-classes.d.ts +17 -0
  195. package/dist/lib/components/ui/layout/thread-layout/thread-layout-parts.d.ts +14 -0
  196. package/dist/lib/components/ui/layout/thread-layout/thread-layout-stepper.d.ts +11 -0
  197. package/dist/lib/components/ui/layout/thread-layout/thread-layout.d.ts +30 -3
  198. package/dist/lib/components/ui/layout/top-nav/index.d.ts +5 -0
  199. package/dist/lib/components/ui/layout/top-nav/partials/top-nav-item.d.ts +23 -0
  200. package/dist/lib/components/ui/layout/top-nav/partials/top-nav-menu.d.ts +22 -0
  201. package/dist/lib/components/ui/layout/top-nav/top-nav.classes.d.ts +10 -0
  202. package/dist/lib/components/ui/layout/top-nav/top-nav.d.ts +34 -0
  203. package/dist/lib/components/ui/layout/top-nav/top-nav.utils.d.ts +10 -0
  204. package/dist/lib/components/ui/widgets/kanban/index.d.ts +1 -1
  205. package/dist/lib/components/ui/widgets/kanban/kanban-context.d.ts +5 -2
  206. package/dist/lib/components/ui/widgets/kanban/kanban.d.ts +11 -2
  207. package/dist/lib/components/ui/widgets/kanban/kanban.slice.d.ts +32 -0
  208. package/dist/lib/components/ui/widgets/kanban/kanban.utils.d.ts +9 -0
  209. package/dist/lib/components/ui/widgets/kanban/partials/kanban-card-preview.d.ts +3 -1
  210. package/dist/lib/components/ui/widgets/kanban/partials/kanban-column.d.ts +6 -0
  211. package/dist/lib/components/ui/widgets/kanban/partials/kanban-move-to.d.ts +13 -0
  212. package/dist/lib/components/ui/widgets/kanban/partials/kanban-phone-tabs.d.ts +10 -0
  213. package/dist/lib/components/ui/widgets/kanban/types.d.ts +7 -0
  214. package/dist/lib/components/ui/widgets/kanban/use-kanban-board-keys.d.ts +7 -0
  215. package/dist/lib/components/ui/widgets/kanban/use-kanban-item-actions.d.ts +5 -0
  216. package/dist/lib/components/ui/widgets/kanban/use-kanban-phone-column.d.ts +18 -0
  217. package/dist/lib/components/ui/widgets/kanban/use-kanban.d.ts +6 -1
  218. package/dist/lib/i18n/resources/en/en.d.ts +50 -0
  219. package/dist/lib/i18n/resources/en/material.json.d.ts +52 -2
  220. package/dist/lib/i18n/resources/fr/fr.d.ts +50 -0
  221. package/dist/lib/i18n/resources/fr/material.json.d.ts +52 -2
  222. package/dist/lib/i18n/resources/resources.d.ts +100 -0
  223. package/dist/lib/i18n/translator.d.ts +1 -1
  224. package/dist/lib.js +1 -1
  225. package/dist/main.js +52 -52
  226. package/dist/map.js +7 -7
  227. package/dist/material.css +1 -1
  228. package/dist/pdf-reader.js +1 -1
  229. package/dist/{percent-field--WIXV5dX.js → percent-field-C2LNr8NA.js} +1 -1
  230. package/dist/{picker-surface-CV09H7Nb.js → picker-surface-BUCFMoAZ.js} +4 -4
  231. package/dist/{popover-Cd7DkND4.js → popover-DFRwQF12.js} +1 -1
  232. package/dist/{pos-types-DKCkOTYy.js → pos-types-CXnEdjdy.js} +1 -1
  233. package/dist/{pos-variant-GrUfbTTP.js → pos-variant-DMwn_7is.js} +4 -4
  234. package/dist/print.js +1 -1
  235. package/dist/{programmer-variant-eKJNKENL.js → programmer-variant-Bo4eiDFi.js} +2 -2
  236. package/dist/{public-y6g4ddxd.js → public-CyQPkkSR.js} +9 -9
  237. package/dist/{rich-code-block-CRQ0iyLb.js → rich-code-block-iK7UcZdc.js} +5 -5
  238. package/dist/{scientific-variant-2y3UxAAU.js → scientific-variant-B9ScTgfx.js} +2 -2
  239. package/dist/{sortable-provider-DdiI3Fwk.js → sortable-provider-BZwVjSVU.js} +3 -3
  240. package/dist/{spinner-C1QIewWv.js → spinner-RITOxvpH.js} +2 -2
  241. package/dist/{tabs-KGKvve3y.js → tabs-DSo4eCUn.js} +1 -1
  242. package/dist/theme-picker.js +2 -2
  243. package/dist/{theme-toggle-C_VeiiCm.js → theme-toggle-3gbzQX0x.js} +1 -1
  244. package/dist/{toolbar-items-D310xDuM.js → toolbar-items-Bt5RK-Nx.js} +4 -4
  245. package/dist/{translate-material-BypJJ1l5.js → translate-material-CZTGqgen.js} +1 -1
  246. package/dist/{translator-DJkf4J7t.js → translator-DTlOlIoq.js} +108 -4
  247. package/dist/{use-chat-composer-BFhRMHcX.js → use-chat-composer-DBY01IpX.js} +16 -16
  248. package/dist/{use-heading-spy-DJR8YYm6.js → use-heading-spy-Dt48bBts.js} +4 -4
  249. package/dist/{use-material-translation-CD6QoVal.js → use-material-translation-BJucC_xe.js} +1 -1
  250. package/dist/{use-return-focus-Cevw_6yq.js → use-return-focus-BS1JLcnq.js} +1 -1
  251. package/docs/README.md +1 -0
  252. package/docs/components/data-display.md +4 -0
  253. package/docs/components/navigation-and-layout.md +944 -27
  254. package/docs/components/rich-widgets.md +26 -0
  255. package/docs/guides/app-shell.md +641 -2
  256. package/docs/guides/i18n.md +13 -1
  257. package/docs/guides/layouts.md +215 -0
  258. package/docs/guides/ssr.md +1 -1
  259. package/docs/previews/navigation-layout-appshell-page-ground.webp +0 -0
  260. package/docs/previews/navigation-layout-appshell.webp +0 -0
  261. package/docs/previews/navigation-layout-authcard-split.webp +0 -0
  262. package/docs/previews/navigation-layout-authcard.webp +0 -0
  263. package/docs/previews/navigation-layout-dashboardgrid.webp +0 -0
  264. package/docs/previews/navigation-layout-editorlayout.webp +0 -0
  265. package/docs/previews/navigation-layout-landinglayout.webp +0 -0
  266. package/docs/previews/navigation-layout-panelayout.webp +0 -0
  267. package/docs/previews/navigation-layout-settingslayout.webp +0 -0
  268. package/docs/previews/navigation-layout-threadlayout-pages.webp +0 -0
  269. package/docs/previews/navigation-layout-threadlayout.webp +0 -0
  270. package/docs/roadmap.md +10 -2
  271. package/lib/components/components.css +3 -0
  272. package/lib/components/ui/actions/fab/fab-dock.css +19 -6
  273. package/lib/components/ui/layout/app-search/app-search.css +62 -0
  274. package/lib/components/ui/layout/app-shell/activity-backdrop.css +10 -2
  275. package/lib/components/ui/layout/app-shell/app-header.css +108 -0
  276. package/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
  277. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { ThreadLayoutStepperPlacement, ThreadLayoutWidth } from './thread-layout-classes.js';
3
+ /** The centred column: the stepper (named when placed) above or beside the content. */
4
+ export declare function ThreadLayoutColumn({ width, stepper, stepperPlacement, children, }: {
5
+ width?: ThreadLayoutWidth;
6
+ stepper?: ReactNode | ((placement: ThreadLayoutStepperPlacement) => ReactNode);
7
+ stepperPlacement?: ThreadLayoutStepperPlacement;
8
+ children: ReactNode;
9
+ }): import("react").JSX.Element;
10
+ /** The sticky action bar in the grid's last row (`below`: its row, 2 or 3). */
11
+ export declare function ThreadLayoutFooter({ below, children, }: {
12
+ below: 2 | 3;
13
+ children: ReactNode;
14
+ }): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { ThreadLayoutStepperPlacement } from './thread-layout-classes.js';
3
+ /**
4
+ * The named landmark around a `ThreadLayout`'s stepper: above the column, or a
5
+ * sticky rail beside it from `xl`. One element, placed by CSS only, so the
6
+ * server and the client render the same markup.
7
+ */
8
+ export declare function ThreadLayoutStepper({ placement, children, }: {
9
+ placement: ThreadLayoutStepperPlacement;
10
+ children: ReactNode;
11
+ }): import("react").JSX.Element;
@@ -1,9 +1,36 @@
1
1
  import { ComponentProps, ReactNode } from 'react';
2
+ import { ThreadLayoutStepperPlacement, ThreadLayoutWidth } from './thread-layout-classes.js';
3
+ export type { ThreadLayoutStepperPlacement, ThreadLayoutWidth, } from './thread-layout-classes.js';
2
4
  export type ThreadLayoutProps = {
3
5
  /** Rendered above the content, full width. Typically a back button or title. */
4
6
  header?: ReactNode;
5
- /** Rendered directly above the content, inside the centered column. */
6
- stepper?: ReactNode;
7
+ /**
8
+ * The wizard's steps. With `stepperPlacement` unset: rendered directly
9
+ * above the content, inside the centered column, as given. With a placement
10
+ * it sits in a `nav` named "Progress" (above the column, or a rail beside
11
+ * it), and may be a function, called once with the placement, so the
12
+ * caller picks the `Stepper`'s orientation.
13
+ */
14
+ stepper?: ReactNode | ((placement: ThreadLayoutStepperPlacement) => ReactNode);
15
+ /**
16
+ * The column's width: `'form'` (32rem), `'reading'` (48rem) or `'wide'`
17
+ * (72rem), centred, and its content stretched to fill it. Unset keeps the
18
+ * 14-of-16-column track and children centred at their own width.
19
+ */
20
+ width?: ThreadLayoutWidth;
21
+ /**
22
+ * A sticky action bar under the column (Back / Next, Save): it stays in
23
+ * view while the content scrolls and keeps clear of a bottom navigation
24
+ * bar (`--nxgt-bottom-chrome`) and the phone's home bar.
25
+ */
26
+ footer?: ReactNode;
27
+ /**
28
+ * With a `stepper`: `'top'` keeps it above the column; `'side'` puts it in
29
+ * a rail beside the column from 1280px and above it below (one element
30
+ * placed by CSS, so the function gets `'side'` in both ranges: pass a
31
+ * vertical `Stepper`). Unset leaves the stepper as it was.
32
+ */
33
+ stepperPlacement?: ThreadLayoutStepperPlacement;
7
34
  } & ComponentProps<'div'>;
8
35
  /**
9
36
  * A single centered column over the app background, for focused flows a user
@@ -15,4 +42,4 @@ export type ThreadLayoutProps = {
15
42
  * app-local; a flow like this one wants the chrome out of the way anyway, so
16
43
  * the `header` slot takes whatever the caller wants there instead.
17
44
  */
18
- export declare function ThreadLayout({ children, header, stepper, className, ...props }: ThreadLayoutProps): import("react").JSX.Element;
45
+ export declare function ThreadLayout({ children, header, stepper, width, footer, stepperPlacement, className, ...props }: ThreadLayoutProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export type { TopNavItemProps } from './partials/top-nav-item.js';
2
+ export { TopNavItem } from './partials/top-nav-item.js';
3
+ export type { TopNavMenuProps } from './partials/top-nav-menu.js';
4
+ export { TopNavMenu } from './partials/top-nav-menu.js';
5
+ export * from './top-nav.js';
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ import { IconProps } from '../../../primitives/icon/icon.js';
3
+ import { AppShellLinkComponent } from '../../app-shell/types.js';
4
+ export type TopNavItemProps = {
5
+ /** Where the destination goes. */
6
+ href: string;
7
+ /** An icon before the label. Optional: the bar reads fine with labels alone. */
8
+ icon?: IconProps['name'];
9
+ /** The visible label, already translated. */
10
+ children: ReactNode;
11
+ /** Whether this is the current destination: `aria-current="page"` and a tint. */
12
+ active?: boolean;
13
+ /** `true` a dot, a number a count ("99+" past 99), a node as it is; ends the pill and is read in the link's name. */
14
+ badge?: number | boolean | ReactNode;
15
+ /** Replaces the badge's text in the link's name, already translated. */
16
+ badgeLabel?: string;
17
+ linkComponent?: AppShellLinkComponent;
18
+ className?: string;
19
+ };
20
+ /** The icon, label and badge a pill shows; shared by a link and a trigger. */
21
+ export declare function TopNavEntryContent({ icon, children, badge, badgeLabel, }: Pick<TopNavItemProps, 'icon' | 'children' | 'badge' | 'badgeLabel'>): import("react").JSX.Element;
22
+ /** One destination of the top bar: a pill, `aria-current="page"` when active. */
23
+ export declare function TopNavItem({ href, icon, children, active, badge, badgeLabel, linkComponent, className, }: TopNavItemProps): import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { ReactNode } from 'react';
2
+ import { IconProps } from '../../../primitives/icon/icon.js';
3
+ import { AppShellLinkComponent, MenuItem } from '../../app-shell/types.js';
4
+ export type TopNavMenuProps = {
5
+ /** The trigger's visible label, already translated. */
6
+ label: ReactNode;
7
+ icon?: IconProps['name'];
8
+ /** The links of the dropdown. */
9
+ items: MenuItem[];
10
+ /** The `url` of the current link, if it is one of `items`: it gets `aria-current="page"` and its trigger reads as active. */
11
+ current?: string;
12
+ badge?: number | boolean | ReactNode;
13
+ badgeLabel?: string;
14
+ linkComponent?: AppShellLinkComponent;
15
+ className?: string;
16
+ };
17
+ /**
18
+ * An entry that opens a dropdown of links: a trigger (a button, with
19
+ * `aria-expanded`) and a card under it. Arrow keys, Escape and focus return
20
+ * follow Radix's navigation menu.
21
+ */
22
+ export declare function TopNavMenu({ label, icon, items, current, badge, badgeLabel, linkComponent, className, }: TopNavMenuProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ /** The list of destinations: a row of pills, never wider than its place. */
2
+ export declare const TOP_NAV_LIST = "flex min-w-0 items-center gap-1";
3
+ /** One destination or trigger: a 48px pill, the whole pill tinted when current (Expressive). */
4
+ export declare const TOP_NAV_ENTRY = "nxgt-plain-link group relative flex h-12 shrink-0 items-center gap-2 rounded-full px-4 font-medium text-muted-foreground text-sm outline-none transition-colors hover:bg-accent/60 data-active:font-semibold data-active:text-foreground data-[state=open]:bg-accent/60 focus-visible:outline-2 focus-visible:outline-ring forced-colors:focus-visible:outline-[Highlight]";
5
+ /** The tint behind the pill: the bar's indicator, which grows from the middle. */
6
+ export declare const TOP_NAV_ROW = "absolute inset-0 scale-x-50 rounded-full bg-sidebar-active opacity-0 transition-[opacity,transform] duration-(--nxgt-motion-effects-default-duration) ease-(--nxgt-motion-effects-default) group-data-active:scale-x-100 group-data-active:opacity-100 group-active:scale-x-110 motion-reduce:transition-none forced-colors:border forced-colors:border-[Highlight]";
7
+ /** The dropdown: a rounded card under its trigger, fading and sliding in unless motion is reduced. */
8
+ export declare const TOP_NAV_MENU = "absolute start-0 top-full z-50 mt-2 flex w-64 flex-col gap-1 rounded-[28px] bg-card p-2 text-card-foreground shadow-xl ring-1 ring-border/60 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-top-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 motion-reduce:animate-none";
9
+ /** One link of a dropdown: a 48px row, rounder than the pills' corner radius of the card. */
10
+ export declare const TOP_NAV_MENU_LINK = "nxgt-plain-link group relative flex h-12 shrink-0 items-center gap-2 rounded-full px-4 font-medium text-muted-foreground text-sm outline-none transition-colors hover:bg-accent/60 data-active:font-semibold data-active:text-foreground data-[state=open]:bg-accent/60 focus-visible:outline-2 focus-visible:outline-ring forced-colors:focus-visible:outline-[Highlight] w-full rounded-2xl";
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ import { AppShellLinkComponent, MenuItem } from '../app-shell/types.js';
3
+ import { TopNavItem } from './partials/top-nav-item.js';
4
+ import { TopNavMenu } from './partials/top-nav-menu.js';
5
+ export type TopNavProps = {
6
+ /**
7
+ * The destinations, in order. An entry with `children` opens a dropdown of
8
+ * its child links; the others are links. `footer`, `group` and `display`
9
+ * are not used.
10
+ */
11
+ items?: MenuItem[];
12
+ linkComponent?: AppShellLinkComponent;
13
+ /** The landmark's accessible name, already translated. @default "Navigation" */
14
+ label?: string;
15
+ /** Hand-made entries (`TopNav.Item`, `TopNav.Menu`), after those of `items`. */
16
+ children?: ReactNode;
17
+ className?: string;
18
+ };
19
+ /**
20
+ * The top navigation (Material 3 Expressive): a `nav` of destinations as 48px
21
+ * pills in a row, the current one tinted with `aria-current="page"`. An entry
22
+ * with `children` is a trigger that opens a dropdown of its child links; when
23
+ * the current page is one of them, the trigger reads as active. Badges are
24
+ * read in the link's name. Built on Radix's navigation menu: arrow keys move
25
+ * along the bar, Escape closes a dropdown and returns focus to its trigger.
26
+ *
27
+ * Needs a React Router context to read the location. `ActivityLayout`'s
28
+ * `navigation="top"` draws it in the app header from 768px.
29
+ */
30
+ export declare function TopNav({ items, linkComponent, label, children, className, }: TopNavProps): import("react").JSX.Element;
31
+ export declare namespace TopNav {
32
+ var Item: typeof TopNavItem;
33
+ var Menu: typeof TopNavMenu;
34
+ }
@@ -0,0 +1,10 @@
1
+ import { MenuItem } from '../app-shell/types.js';
2
+ /**
3
+ * The `url` of the most specific entry (a child counts) covering `pathname`,
4
+ * and the `url` of the top-level entry that holds it: that entry's trigger
5
+ * reads as active while the child carries `aria-current`.
6
+ */
7
+ export declare function findTopNavActive(pathname: string, items: MenuItem[]): {
8
+ current?: string;
9
+ parent?: string;
10
+ };
@@ -1,5 +1,5 @@
1
1
  export type { KanbanProps } from './kanban.js';
2
2
  export { Kanban } from './kanban.js';
3
3
  export { KanbanProvider, useKanbanContext } from './kanban-context.js';
4
- export type { KanbanAddDraft, KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanRenderCard, } from './types.js';
4
+ export type { KanbanAddDraft, KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanPhoneLayout, KanbanRenderCard, } from './types.js';
5
5
  export { useKanban } from './use-kanban.js';
@@ -1,8 +1,11 @@
1
- import { ReactNode } from 'react';
2
- import { KanbanAddHandler, KanbanCardHandler, KanbanRenderCard } from './types.js';
1
+ import { ReactNode, RefObject } from 'react';
2
+ import { KanbanAddHandler, KanbanCardHandler, KanbanPhoneLayout, KanbanRenderCard } from './types.js';
3
3
  import { KanbanModel } from './use-kanban.js';
4
4
  export type KanbanContextValue = KanbanModel & {
5
5
  reorderableColumns: boolean;
6
+ /** The board's root: its own width decides the phone layout (below 768px). */
7
+ boardRef?: RefObject<HTMLElement | null>;
8
+ phoneLayout?: KanbanPhoneLayout;
6
9
  onCardClick?: KanbanCardHandler;
7
10
  onAddCard?: KanbanAddHandler;
8
11
  renderCard?: KanbanRenderCard;
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanRenderCard } from './types.js';
2
+ import { KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanPhoneLayout, KanbanRenderCard } from './types.js';
3
3
  export type KanbanProps = {
4
4
  columns?: KanbanColumn[];
5
5
  defaultColumns?: KanbanColumn[];
@@ -16,5 +16,14 @@ export type KanbanProps = {
16
16
  label?: ReactNode;
17
17
  className?: string;
18
18
  renderCard?: KanbanRenderCard;
19
+ /**
20
+ * Below 768px (the board's own width): `tabs` shows one column at a time
21
+ * under a tab list, `swipe` snaps full-width columns sideways. Unset or
22
+ * `columns` keeps today's peeking columns.
23
+ */
24
+ phoneLayout?: KanbanPhoneLayout;
25
+ /** The column `tabs` shows (controlled); the first one when unset. */
26
+ phoneColumn?: string;
27
+ onPhoneColumnChange?: (columnId: string) => void;
19
28
  };
20
- export declare function Kanban({ columns, defaultColumns, items, groups, onColumnsChange, onItemsChange, onChange, onCardClick, onAddCard, searchable, reorderableColumns, disabled, label, className, renderCard, }: KanbanProps): import("react").JSX.Element;
29
+ export declare function Kanban({ columns, defaultColumns, items, groups, onColumnsChange, onItemsChange, onChange, onCardClick, onAddCard, searchable, reorderableColumns, disabled, label, className, renderCard, phoneLayout, phoneColumn, onPhoneColumnChange, }: KanbanProps): import("react").JSX.Element;
@@ -10,6 +10,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
10
10
  columnId: string;
11
11
  groupId: string | null;
12
12
  } | null;
13
+ phoneColumnId: string | null;
13
14
  }, action: PayloadAction<string>) => void;
14
15
  setFocusedId: (state: {
15
16
  query: string;
@@ -20,6 +21,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
20
21
  columnId: string;
21
22
  groupId: string | null;
22
23
  } | null;
24
+ phoneColumnId: string | null;
23
25
  }, action: PayloadAction<string | null>) => void;
24
26
  toggleGroupCollapsed: (state: {
25
27
  query: string;
@@ -30,6 +32,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
30
32
  columnId: string;
31
33
  groupId: string | null;
32
34
  } | null;
35
+ phoneColumnId: string | null;
33
36
  }, action: PayloadAction<string>) => void;
34
37
  toggleColumnCollapsed: (state: {
35
38
  query: string;
@@ -40,7 +43,19 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
40
43
  columnId: string;
41
44
  groupId: string | null;
42
45
  } | null;
46
+ phoneColumnId: string | null;
43
47
  }, action: PayloadAction<string>) => void;
48
+ setPhoneColumnId: (state: {
49
+ query: string;
50
+ focusedId: string | null;
51
+ collapsedGroupIds: string[];
52
+ collapsedColumnIds: string[];
53
+ composing: {
54
+ columnId: string;
55
+ groupId: string | null;
56
+ } | null;
57
+ phoneColumnId: string | null;
58
+ }, action: PayloadAction<string | null>) => void;
44
59
  setComposing: (state: {
45
60
  query: string;
46
61
  focusedId: string | null;
@@ -50,6 +65,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
50
65
  columnId: string;
51
66
  groupId: string | null;
52
67
  } | null;
68
+ phoneColumnId: string | null;
53
69
  }, action: PayloadAction<KanbanChromeState["composing"]>) => void;
54
70
  }, "kanban", "kanban", import('@reduxjs/toolkit').SliceSelectors<KanbanChromeState>>;
55
71
  export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerActions<{
@@ -62,6 +78,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
62
78
  columnId: string;
63
79
  groupId: string | null;
64
80
  } | null;
81
+ phoneColumnId: string | null;
65
82
  }, action: PayloadAction<string>) => void;
66
83
  setFocusedId: (state: {
67
84
  query: string;
@@ -72,6 +89,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
72
89
  columnId: string;
73
90
  groupId: string | null;
74
91
  } | null;
92
+ phoneColumnId: string | null;
75
93
  }, action: PayloadAction<string | null>) => void;
76
94
  toggleGroupCollapsed: (state: {
77
95
  query: string;
@@ -82,6 +100,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
82
100
  columnId: string;
83
101
  groupId: string | null;
84
102
  } | null;
103
+ phoneColumnId: string | null;
85
104
  }, action: PayloadAction<string>) => void;
86
105
  toggleColumnCollapsed: (state: {
87
106
  query: string;
@@ -92,7 +111,19 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
92
111
  columnId: string;
93
112
  groupId: string | null;
94
113
  } | null;
114
+ phoneColumnId: string | null;
95
115
  }, action: PayloadAction<string>) => void;
116
+ setPhoneColumnId: (state: {
117
+ query: string;
118
+ focusedId: string | null;
119
+ collapsedGroupIds: string[];
120
+ collapsedColumnIds: string[];
121
+ composing: {
122
+ columnId: string;
123
+ groupId: string | null;
124
+ } | null;
125
+ phoneColumnId: string | null;
126
+ }, action: PayloadAction<string | null>) => void;
96
127
  setComposing: (state: {
97
128
  query: string;
98
129
  focusedId: string | null;
@@ -102,5 +133,6 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
102
133
  columnId: string;
103
134
  groupId: string | null;
104
135
  } | null;
136
+ phoneColumnId: string | null;
105
137
  }, action: PayloadAction<KanbanChromeState["composing"]>) => void;
106
138
  }, "kanban">;
@@ -22,3 +22,12 @@ export declare function groupSections(column: KanbanColumn, items: Map<string, K
22
22
  export declare function visibleItemIds(column: KanbanColumn, items: Map<string, KanbanItem>, query: string): string[];
23
23
  export declare function wouldExceedWip(column: KanbanColumn, itemId: string): boolean;
24
24
  export declare function moveKanbanItem(columns: KanbanColumn[], itemId: string, toColumnId: string, beforeId?: string): KanbanColumn[];
25
+ /** The column a phone shows: the asked one when it exists, else the first. */
26
+ export declare function resolvePhoneColumn(columns: {
27
+ id: string;
28
+ }[], asked: string | null | undefined): string | null;
29
+ /** The column that holds a card, so a phone can follow a card the keyboard moved. */
30
+ export declare function columnOfItem(columns: {
31
+ id: string;
32
+ itemIds: string[];
33
+ }[], itemId: string): string | undefined;
@@ -1,4 +1,6 @@
1
1
  import { KanbanItem } from '../types.js';
2
- export declare function KanbanCardPreview({ item }: {
2
+ export declare function KanbanCardPreview({ item, columnId, onMoved, }: {
3
3
  item: KanbanItem;
4
+ columnId: string;
5
+ onMoved: () => void;
4
6
  }): import("react").JSX.Element;
@@ -1,4 +1,10 @@
1
1
  import { KanbanColumn as KanbanColumnType } from '../types.js';
2
+ /**
3
+ * One column. With phone tabs it is also the panel of its tab: every column
4
+ * stays mounted (the server and the client render the same markup), the
5
+ * panels of the other tabs are hidden below 768px by their `data-state`, and
6
+ * from 768px the panel wrapper disappears (`contents`) so the board is today's row of columns.
7
+ */
2
8
  export declare function KanbanColumn({ column }: {
3
9
  column: KanbanColumnType;
4
10
  }): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { KanbanItem } from '../types.js';
2
+ /**
3
+ * The phone way to move a card: one button per other column, in the card's
4
+ * popover. Shown when the board itself is narrower than 768px (the width its
5
+ * one-column layout switches on, read from the board: the popover is portalled
6
+ * out of it, so a container query would not reach it) and has a phone layout;
7
+ * the arrow keys and drag keep working everywhere.
8
+ */
9
+ export declare function KanbanMoveTo({ item, columnId, onMoved, }: {
10
+ item: KanbanItem;
11
+ columnId: string;
12
+ onMoved: () => void;
13
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * With `phoneLayout="tabs"`, the board's tab list (name and count of each
4
+ * column) and the tabs root its columns are panels of. The list is hidden
5
+ * from 768px up by a container query, so the server and the client render
6
+ * the same markup at every width. Any other layout renders `children` alone.
7
+ */
8
+ export declare function KanbanPhoneTabs({ children }: {
9
+ children: ReactNode;
10
+ }): import("react").JSX.Element;
@@ -1,4 +1,10 @@
1
1
  import { ReactNode } from 'react';
2
+ /**
3
+ * How a board reads below 768px (its own width): `tabs` shows one column at
4
+ * a time under a tab list, `swipe` snaps full-width columns sideways, and
5
+ * `columns` (or unset) keeps the peeking columns.
6
+ */
7
+ export type KanbanPhoneLayout = 'tabs' | 'swipe' | 'columns';
2
8
  export type KanbanColumn = {
3
9
  id: string;
4
10
  title: string;
@@ -38,6 +44,7 @@ export type KanbanChromeState = {
38
44
  columnId: string;
39
45
  groupId: string | null;
40
46
  } | null;
47
+ phoneColumnId: string | null;
41
48
  };
42
49
  export type KanbanAddDraft = {
43
50
  title: string;
@@ -0,0 +1,7 @@
1
+ import { KeyboardEvent } from 'react';
2
+ /**
3
+ * The board's arrow-key handler. With phone tabs, a focus or a move that
4
+ * lands in another column brings that column's tab forward, so the card the
5
+ * keys act on is always the one on screen.
6
+ */
7
+ export declare function useKanbanBoardKeys(): (event: KeyboardEvent<HTMLDivElement>) => void;
@@ -18,3 +18,8 @@ export declare function useKanbanUpdateItem({ disabled, items, itemsById, onItem
18
18
  itemsById: Map<string, KanbanItem>;
19
19
  onItemsChange?: (items: KanbanItem[]) => void;
20
20
  }): (itemId: string, patch: Partial<KanbanItem>) => void;
21
+ export declare function useKanbanReorderColumns({ board, commit, disabled, }: {
22
+ board: KanbanColumn[];
23
+ commit: (next: KanbanColumn[]) => void;
24
+ disabled: boolean;
25
+ }): (activeId: string, overId: string) => void;
@@ -0,0 +1,18 @@
1
+ import { KanbanChromeState, KanbanColumn } from './types.js';
2
+ /**
3
+ * The column a phone shows with `phoneLayout="tabs"`: controlled by
4
+ * `phoneColumn`, else kept in the chrome slice; the first column when the
5
+ * asked one does not exist.
6
+ */
7
+ export declare function useKanbanPhoneColumn({ board, chrome, chromeActions, phoneColumn, onPhoneColumnChange, }: {
8
+ board: KanbanColumn[];
9
+ chrome: KanbanChromeState;
10
+ chromeActions: {
11
+ setPhoneColumnId: (columnId: string | null) => void;
12
+ };
13
+ phoneColumn?: string;
14
+ onPhoneColumnChange?: (columnId: string) => void;
15
+ }): {
16
+ phoneColumnId: string | null;
17
+ setPhoneColumn: (columnId: string) => void;
18
+ };
@@ -1,5 +1,5 @@
1
1
  import { KanbanChange, KanbanColumn, KanbanGroup, KanbanItem } from './types.js';
2
- export declare function useKanban({ columns, defaultColumns, items, onColumnsChange, onItemsChange, onChange, groups, disabled, }: {
2
+ export declare function useKanban({ columns, defaultColumns, items, onColumnsChange, onItemsChange, onChange, groups, disabled, phoneColumn, onPhoneColumnChange, }: {
3
3
  columns?: KanbanColumn[];
4
4
  defaultColumns?: KanbanColumn[];
5
5
  items: KanbanItem[];
@@ -8,6 +8,8 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
8
8
  onChange?: (change: KanbanChange) => void;
9
9
  groups?: KanbanGroup[];
10
10
  disabled?: boolean;
11
+ phoneColumn?: string;
12
+ onPhoneColumnChange?: (columnId: string) => void;
11
13
  }): {
12
14
  columns: KanbanColumn[];
13
15
  itemsById: Map<string, KanbanItem>;
@@ -18,6 +20,7 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
18
20
  setFocusedId: (payload: string | null) => void;
19
21
  toggleGroupCollapsed: (payload: string) => void;
20
22
  toggleColumnCollapsed: (payload: string) => void;
23
+ setPhoneColumnId: (payload: string | null) => void;
21
24
  setComposing: (payload: {
22
25
  columnId: string;
23
26
  groupId: string | null;
@@ -27,5 +30,7 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
27
30
  moveItem: (itemId: string, toColumnId: string, beforeId?: string, toGroupId?: string | null) => void;
28
31
  updateItem: (itemId: string, patch: Partial<KanbanItem>) => void;
29
32
  reorderColumns: (activeId: string, overId: string) => void;
33
+ phoneColumnId: string | null;
34
+ setPhoneColumn: (columnId: string) => void;
30
35
  };
31
36
  export type KanbanModel = ReturnType<typeof useKanban>;
@@ -1537,6 +1537,14 @@ export declare const en: {
1537
1537
  badge: string;
1538
1538
  "badge-dot": string;
1539
1539
  };
1540
+ "app-header": {
1541
+ back: string;
1542
+ "back-to": string;
1543
+ search: string;
1544
+ "search-close": string;
1545
+ "search-results": string;
1546
+ "result-count": string;
1547
+ };
1540
1548
  "account-menu": {
1541
1549
  trigger: string;
1542
1550
  "sign-out": string;
@@ -2037,6 +2045,8 @@ export declare const en: {
2037
2045
  "card-title": string;
2038
2046
  subtitle: string;
2039
2047
  "wip-full": string;
2048
+ "phone-tabs": string;
2049
+ "move-to": string;
2040
2050
  };
2041
2051
  doc: {
2042
2052
  search: string;
@@ -2052,6 +2062,7 @@ export declare const en: {
2052
2062
  "on-this-page": string;
2053
2063
  menu: string;
2054
2064
  "menu-description": string;
2065
+ browse: string;
2055
2066
  previous: string;
2056
2067
  next: string;
2057
2068
  "see-also": string;
@@ -3027,6 +3038,9 @@ export declare const en: {
3027
3038
  };
3028
3039
  "list-details": {
3029
3040
  back: string;
3041
+ "inspector-back": string;
3042
+ "inspector-close": string;
3043
+ resize: string;
3030
3044
  };
3031
3045
  switcher: {
3032
3046
  search: string;
@@ -3469,5 +3483,41 @@ export declare const en: {
3469
3483
  "delete-description": string;
3470
3484
  "delete-confirm": string;
3471
3485
  };
3486
+ navigation: {
3487
+ more: string;
3488
+ close: string;
3489
+ steps: string;
3490
+ "rail-toggle": string;
3491
+ "panel-collapse": string;
3492
+ "panel-expand": string;
3493
+ };
3494
+ dashboard: {
3495
+ edit: string;
3496
+ done: string;
3497
+ hint: string;
3498
+ move: string;
3499
+ "move-up": string;
3500
+ "move-down": string;
3501
+ grabbed: string;
3502
+ moved: string;
3503
+ dropped: string;
3504
+ cancelled: string;
3505
+ };
3506
+ "editor-layout": {
3507
+ toolbar: string;
3508
+ canvas: string;
3509
+ start: string;
3510
+ properties: string;
3511
+ };
3512
+ "settings-layout": {
3513
+ title: string;
3514
+ search: string;
3515
+ empty: string;
3516
+ };
3517
+ landing: {
3518
+ menu: string;
3519
+ footer: string;
3520
+ "new-tab": string;
3521
+ };
3472
3522
  };
3473
3523
  };