prime-ui-kit 0.16.0 → 0.17.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 (315) hide show
  1. package/README.md +14 -18
  2. package/dist/chunks/{chunk-4PSQ64S4.js → chunk-7WWZYGRC.js} +3697 -3738
  3. package/dist/chunks/{chunk-6TPHKCUJ.js → chunk-A4WE3UNC.js} +27340 -26893
  4. package/dist/chunks/{chunk-A7OQWH6R.js → chunk-PRP4B6OG.js} +1 -1
  5. package/dist/chunks/{chunk-HDBQICPW.js → chunk-SVFWPLNW.js} +49 -20
  6. package/dist/color-picker.d.ts +1 -1
  7. package/dist/color-picker.js +3 -3
  8. package/dist/components/breadcrumb/Breadcrumb.d.ts +1 -1
  9. package/dist/components/chart-frame/ChartFrame.d.ts +1 -1
  10. package/dist/components/chat/ChatRows.d.ts +5 -1
  11. package/dist/components/color-picker/ColorPicker.d.ts +18 -1
  12. package/dist/components/data-table/DataTable.d.ts +1 -1
  13. package/dist/components/index.d.ts +0 -4
  14. package/dist/components/pagination/Pagination.d.ts +5 -1
  15. package/dist/components/popover/Popover.d.ts +1 -1
  16. package/dist/components/slider/Slider.d.ts +1 -1
  17. package/dist/components/smart-filter/SmartFilter.d.ts +4 -5
  18. package/dist/icon-set.js +2 -2
  19. package/dist/index.css +1 -1
  20. package/dist/index.js +5 -9
  21. package/dist/internal/barPlan.d.ts +44 -0
  22. package/dist/internal/overlay/FloatingPanel.d.ts +1 -1
  23. package/dist/internal/overlay/focus.d.ts +3 -2
  24. package/dist/internal/parts.d.ts +1 -1
  25. package/dist/internal/slot.d.ts +0 -30
  26. package/dist/layout/app-shell/AppShell.d.ts +19 -38
  27. package/dist/layout/index.d.ts +3 -3
  28. package/dist/layout/page/Page.d.ts +263 -0
  29. package/dist/layout/sidebar/Sidebar.d.ts +1 -1
  30. package/dist/skill/SKILL.md +10 -10
  31. package/dist/skill/anti-slop.md +101 -5
  32. package/dist/skill/api-contract.md +1 -1
  33. package/dist/skill/cheatsheet.md +27 -22
  34. package/dist/skill/checklist.md +7 -3
  35. package/dist/skill/choosing.md +9 -8
  36. package/dist/skill/components.md +3 -5
  37. package/dist/skill/composition.md +177 -152
  38. package/dist/skill/foundations.md +9 -9
  39. package/dist/skill/layouts.md +39 -98
  40. package/dist/skill/reference/components/avatar/COMPONENT.md +2 -2
  41. package/dist/skill/reference/components/avatar/examples/team-group.tsx +1 -1
  42. package/dist/skill/reference/components/banner/COMPONENT.md +4 -4
  43. package/dist/skill/reference/components/banner/examples/examples.module.css +6 -1
  44. package/dist/skill/reference/components/banner/examples/page-strip.tsx +24 -22
  45. package/dist/skill/reference/components/breadcrumb/COMPONENT.md +9 -8
  46. package/dist/skill/reference/components/button/COMPONENT.md +1 -0
  47. package/dist/skill/reference/components/button/examples/hold-to-confirm.tsx +1 -1
  48. package/dist/skill/reference/components/button/examples/on-colored-host.tsx +8 -8
  49. package/dist/skill/reference/components/card/COMPONENT.md +7 -7
  50. package/dist/skill/reference/components/card/examples/screen.module.css +1 -1
  51. package/dist/skill/reference/components/card/examples/screen.tsx +184 -198
  52. package/dist/skill/reference/components/chart-frame/COMPONENT.md +1 -1
  53. package/dist/skill/reference/components/chart-frame/examples/fill-height.tsx +9 -9
  54. package/dist/skill/reference/components/chat/COMPONENT.md +4 -4
  55. package/dist/skill/reference/components/chat/examples/screen.module.css +1 -1
  56. package/dist/skill/reference/components/chat/examples/screen.tsx +110 -117
  57. package/dist/skill/reference/components/chat-list/COMPONENT.md +2 -2
  58. package/dist/skill/reference/components/chat-list/examples/controlled.tsx +2 -2
  59. package/dist/skill/reference/components/chat-list/examples/examples.module.css +8 -0
  60. package/dist/skill/reference/components/checkbox/examples/examples.module.css +3 -2
  61. package/dist/skill/reference/components/code-block/COMPONENT.md +1 -1
  62. package/dist/skill/reference/components/code-block/examples/color-scheme.tsx +2 -4
  63. package/dist/skill/reference/components/code-block/examples/examples.module.css +0 -11
  64. package/dist/skill/reference/components/color-picker/COMPONENT.md +18 -7
  65. package/dist/skill/reference/components/color-picker/examples/examples.module.css +2 -5
  66. package/dist/skill/reference/components/color-picker/examples/overview.tsx +5 -10
  67. package/dist/skill/reference/components/color-picker/examples/sizes.tsx +4 -8
  68. package/dist/skill/reference/components/crossfade/COMPONENT.md +2 -2
  69. package/dist/skill/reference/components/crossfade/examples/screen.tsx +107 -112
  70. package/dist/skill/reference/components/data-table/COMPONENT.md +5 -5
  71. package/dist/skill/reference/components/data-table/examples/examples.module.css +9 -0
  72. package/dist/skill/reference/components/data-table/examples/screen.tsx +42 -52
  73. package/dist/skill/reference/components/data-table/examples/server.tsx +6 -2
  74. package/dist/skill/reference/components/datepicker/examples/examples.module.css +6 -0
  75. package/dist/skill/reference/components/datepicker/examples/inline-panel.tsx +3 -1
  76. package/dist/skill/reference/components/description-list/COMPONENT.md +1 -1
  77. package/dist/skill/reference/components/description-list/examples/screen.tsx +120 -127
  78. package/dist/skill/reference/components/digit-input/examples/grouped.tsx +4 -4
  79. package/dist/skill/reference/components/digit-input/examples/validation.tsx +1 -1
  80. package/dist/skill/reference/components/divider/COMPONENT.md +2 -2
  81. package/dist/skill/reference/components/divider/examples/examples.module.css +4 -1
  82. package/dist/skill/reference/components/divider/examples/vertical.tsx +22 -9
  83. package/dist/skill/reference/components/dnd/examples/examples.module.css +3 -1
  84. package/dist/skill/reference/components/drawer/COMPONENT.md +1 -1
  85. package/dist/skill/reference/components/drawer/examples/placement.tsx +26 -31
  86. package/dist/skill/reference/components/drawer/examples/screen.tsx +137 -160
  87. package/dist/skill/reference/components/dropdown/COMPONENT.md +1 -1
  88. package/dist/skill/reference/components/example-frame/COMPONENT.md +3 -3
  89. package/dist/skill/reference/components/field-list/examples/screen.module.css +1 -1
  90. package/dist/skill/reference/components/field-list/examples/screen.tsx +19 -19
  91. package/dist/skill/reference/components/fieldset/COMPONENT.md +1 -1
  92. package/dist/skill/reference/components/fieldset/examples/states.tsx +1 -1
  93. package/dist/skill/reference/components/file-upload/COMPONENT.md +1 -1
  94. package/dist/skill/reference/components/file-upload/examples/screen.module.css +2 -2
  95. package/dist/skill/reference/components/file-upload/examples/screen.tsx +65 -81
  96. package/dist/skill/reference/components/gallery/COMPONENT.md +1 -0
  97. package/dist/skill/reference/components/gantt/COMPONENT.md +1 -1
  98. package/dist/skill/reference/components/gantt/examples/screen.module.css +1 -1
  99. package/dist/skill/reference/components/gantt/examples/screen.tsx +55 -73
  100. package/dist/skill/reference/components/hint/examples/examples.module.css +10 -1
  101. package/dist/skill/reference/components/hint/examples/overview.tsx +1 -1
  102. package/dist/skill/reference/components/kanban/COMPONENT.md +1 -1
  103. package/dist/skill/reference/components/kanban/examples/screen.module.css +1 -1
  104. package/dist/skill/reference/components/kanban/examples/screen.tsx +50 -65
  105. package/dist/skill/reference/components/kbd/COMPONENT.md +1 -1
  106. package/dist/skill/reference/components/label/examples/examples.module.css +12 -1
  107. package/dist/skill/reference/components/label/examples/overview.tsx +1 -1
  108. package/dist/skill/reference/components/list/COMPONENT.md +3 -3
  109. package/dist/skill/reference/components/media-viewer/examples/controlled.tsx +16 -16
  110. package/dist/skill/reference/components/media-viewer/examples/examples.module.css +1 -3
  111. package/dist/skill/reference/components/pagination/COMPONENT.md +11 -3
  112. package/dist/skill/reference/components/pagination/examples/controlled.tsx +2 -1
  113. package/dist/skill/reference/components/popover/COMPONENT.md +3 -2
  114. package/dist/skill/reference/components/popover/examples/width.tsx +13 -1
  115. package/dist/skill/reference/components/slider/COMPONENT.md +3 -3
  116. package/dist/skill/reference/components/slider/examples/states.tsx +14 -10
  117. package/dist/skill/reference/components/smart-filter/COMPONENT.md +13 -13
  118. package/dist/skill/reference/components/smart-filter/examples/examples.module.css +3 -0
  119. package/dist/skill/reference/components/smart-filter/examples/many-values.tsx +12 -8
  120. package/dist/skill/reference/components/smart-filter/examples/sizes.tsx +7 -3
  121. package/dist/skill/reference/components/sparkline/COMPONENT.md +1 -0
  122. package/dist/skill/reference/components/sparkline/examples/curve.tsx +16 -11
  123. package/dist/skill/reference/components/sparkline/examples/states.tsx +14 -10
  124. package/dist/skill/reference/components/switch/COMPONENT.md +1 -1
  125. package/dist/skill/reference/components/tabs/COMPONENT.md +1 -1
  126. package/dist/skill/reference/components/typography/COMPONENT.md +2 -2
  127. package/dist/skill/reference/foundation.md +15 -11
  128. package/dist/skill/reference/layout/app-shell/COMPONENT.md +25 -38
  129. package/dist/skill/reference/layout/app-shell/examples/footer.tsx +10 -10
  130. package/dist/skill/reference/layout/app-shell/examples/overview.tsx +20 -22
  131. package/dist/skill/reference/layout/app-shell/examples/screen.module.css +2 -2
  132. package/dist/skill/reference/layout/app-shell/examples/screen.tsx +25 -30
  133. package/dist/skill/reference/layout/app-shell/examples/template.tsx +13 -17
  134. package/dist/skill/reference/layout/bottom-nav/COMPONENT.md +3 -3
  135. package/dist/skill/reference/layout/bottom-nav/examples/floating-action.tsx +10 -19
  136. package/dist/skill/reference/layout/bottom-nav/examples/floating.tsx +10 -19
  137. package/dist/skill/reference/layout/bottom-nav/examples/in-app-shell.tsx +11 -19
  138. package/dist/skill/reference/layout/page/COMPONENT.md +353 -0
  139. package/dist/skill/reference/layout/page/examples/actions-collapse.tsx +45 -0
  140. package/dist/skill/reference/layout/page/examples/collapse.tsx +68 -0
  141. package/dist/skill/reference/{components/page-content → layout/page}/examples/examples.module.css +33 -4
  142. package/{src/components/page-content → dist/skill/reference/layout/page}/examples/grid.tsx +15 -15
  143. package/dist/skill/reference/{components/page-content → layout/page}/examples/list-detail.tsx +14 -14
  144. package/dist/skill/reference/layout/page/examples/narrow.tsx +75 -0
  145. package/dist/skill/reference/layout/page/examples/overview.tsx +57 -0
  146. package/dist/skill/reference/{components/page-content → layout/page}/examples/screen.module.css +1 -1
  147. package/{src/components/page-content → dist/skill/reference/layout/page}/examples/screen.tsx +29 -19
  148. package/dist/skill/reference/{components/page-content → layout/page}/examples/sections.tsx +17 -24
  149. package/dist/skill/reference/layout/page/examples/structure.tsx +41 -0
  150. package/dist/skill/reference/{components/page-toolbar/examples/narrow.tsx → layout/page/examples/tools.tsx} +38 -35
  151. package/dist/skill/reference/layout/page/examples/top-bar.tsx +85 -0
  152. package/dist/skill/reference/{components/page-content → layout/page}/examples/variants.tsx +7 -7
  153. package/dist/skill/reference/layout/sidebar/COMPONENT.md +5 -4
  154. package/dist/skill/reference/layout/sidebar/examples/dismiss.tsx +10 -7
  155. package/dist/skill/reference/layout/sidebar/examples/narrow.tsx +11 -8
  156. package/dist/skill/responsive.md +88 -74
  157. package/dist/tokens/layers.d.ts +2 -0
  158. package/dist/tokens/primitives.d.ts +12 -2
  159. package/dist/tokens/semantic.d.ts +7 -0
  160. package/dist/tokens/themes/dark.d.ts +7 -2
  161. package/package.json +2 -2
  162. package/src/components/avatar/COMPONENT.md +2 -2
  163. package/src/components/avatar/examples/team-group.tsx +1 -1
  164. package/src/components/banner/COMPONENT.md +4 -4
  165. package/src/components/banner/examples/examples.module.css +6 -1
  166. package/src/components/banner/examples/page-strip.tsx +24 -22
  167. package/src/components/breadcrumb/COMPONENT.md +9 -8
  168. package/src/components/button/COMPONENT.md +1 -0
  169. package/src/components/button/examples/hold-to-confirm.tsx +1 -1
  170. package/src/components/button/examples/on-colored-host.tsx +8 -8
  171. package/src/components/card/COMPONENT.md +7 -7
  172. package/src/components/card/examples/screen.module.css +1 -1
  173. package/src/components/card/examples/screen.tsx +184 -198
  174. package/src/components/chart-frame/COMPONENT.md +1 -1
  175. package/src/components/chart-frame/examples/fill-height.tsx +9 -9
  176. package/src/components/chat/COMPONENT.md +4 -4
  177. package/src/components/chat/examples/screen.module.css +1 -1
  178. package/src/components/chat/examples/screen.tsx +110 -117
  179. package/src/components/chat-list/COMPONENT.md +2 -2
  180. package/src/components/chat-list/examples/controlled.tsx +2 -2
  181. package/src/components/chat-list/examples/examples.module.css +8 -0
  182. package/src/components/checkbox/examples/examples.module.css +3 -2
  183. package/src/components/code-block/COMPONENT.md +1 -1
  184. package/src/components/code-block/examples/color-scheme.tsx +2 -4
  185. package/src/components/code-block/examples/examples.module.css +0 -11
  186. package/src/components/color-picker/COMPONENT.md +18 -7
  187. package/src/components/color-picker/examples/examples.module.css +2 -5
  188. package/src/components/color-picker/examples/overview.tsx +5 -10
  189. package/src/components/color-picker/examples/sizes.tsx +4 -8
  190. package/src/components/crossfade/COMPONENT.md +2 -2
  191. package/src/components/crossfade/examples/screen.tsx +107 -112
  192. package/src/components/data-table/COMPONENT.md +5 -5
  193. package/src/components/data-table/examples/examples.module.css +9 -0
  194. package/src/components/data-table/examples/screen.tsx +42 -52
  195. package/src/components/data-table/examples/server.tsx +6 -2
  196. package/src/components/datepicker/examples/examples.module.css +6 -0
  197. package/src/components/datepicker/examples/inline-panel.tsx +3 -1
  198. package/src/components/description-list/COMPONENT.md +1 -1
  199. package/src/components/description-list/examples/screen.tsx +120 -127
  200. package/src/components/digit-input/examples/grouped.tsx +4 -4
  201. package/src/components/digit-input/examples/validation.tsx +1 -1
  202. package/src/components/divider/COMPONENT.md +2 -2
  203. package/src/components/divider/examples/examples.module.css +4 -1
  204. package/src/components/divider/examples/vertical.tsx +22 -9
  205. package/src/components/dnd/examples/examples.module.css +3 -1
  206. package/src/components/drawer/COMPONENT.md +1 -1
  207. package/src/components/drawer/examples/placement.tsx +26 -31
  208. package/src/components/drawer/examples/screen.tsx +137 -160
  209. package/src/components/dropdown/COMPONENT.md +1 -1
  210. package/src/components/example-frame/COMPONENT.md +3 -3
  211. package/src/components/field-list/examples/screen.module.css +1 -1
  212. package/src/components/field-list/examples/screen.tsx +19 -19
  213. package/src/components/fieldset/COMPONENT.md +1 -1
  214. package/src/components/fieldset/examples/states.tsx +1 -1
  215. package/src/components/file-upload/COMPONENT.md +1 -1
  216. package/src/components/file-upload/examples/screen.module.css +2 -2
  217. package/src/components/file-upload/examples/screen.tsx +65 -81
  218. package/src/components/gallery/COMPONENT.md +1 -0
  219. package/src/components/gantt/COMPONENT.md +1 -1
  220. package/src/components/gantt/examples/screen.module.css +1 -1
  221. package/src/components/gantt/examples/screen.tsx +55 -73
  222. package/src/components/hint/examples/examples.module.css +10 -1
  223. package/src/components/hint/examples/overview.tsx +1 -1
  224. package/src/components/kanban/COMPONENT.md +1 -1
  225. package/src/components/kanban/examples/screen.module.css +1 -1
  226. package/src/components/kanban/examples/screen.tsx +50 -65
  227. package/src/components/kbd/COMPONENT.md +1 -1
  228. package/src/components/label/examples/examples.module.css +12 -1
  229. package/src/components/label/examples/overview.tsx +1 -1
  230. package/src/components/list/COMPONENT.md +3 -3
  231. package/src/components/media-viewer/examples/controlled.tsx +16 -16
  232. package/src/components/media-viewer/examples/examples.module.css +1 -3
  233. package/src/components/pagination/COMPONENT.md +11 -3
  234. package/src/components/pagination/examples/controlled.tsx +2 -1
  235. package/src/components/popover/COMPONENT.md +3 -2
  236. package/src/components/popover/examples/width.tsx +13 -1
  237. package/src/components/slider/COMPONENT.md +3 -3
  238. package/src/components/slider/examples/states.tsx +14 -10
  239. package/src/components/smart-filter/COMPONENT.md +13 -13
  240. package/src/components/smart-filter/examples/examples.module.css +3 -0
  241. package/src/components/smart-filter/examples/many-values.tsx +12 -8
  242. package/src/components/smart-filter/examples/sizes.tsx +7 -3
  243. package/src/components/sparkline/COMPONENT.md +1 -0
  244. package/src/components/sparkline/examples/curve.tsx +16 -11
  245. package/src/components/sparkline/examples/states.tsx +14 -10
  246. package/src/components/switch/COMPONENT.md +1 -1
  247. package/src/components/tabs/COMPONENT.md +1 -1
  248. package/src/components/typography/COMPONENT.md +2 -2
  249. package/src/layout/app-shell/COMPONENT.md +25 -38
  250. package/src/layout/app-shell/examples/footer.tsx +10 -10
  251. package/src/layout/app-shell/examples/overview.tsx +20 -22
  252. package/src/layout/app-shell/examples/screen.module.css +2 -2
  253. package/src/layout/app-shell/examples/screen.tsx +25 -30
  254. package/src/layout/app-shell/examples/template.tsx +13 -17
  255. package/src/layout/bottom-nav/COMPONENT.md +3 -3
  256. package/src/layout/bottom-nav/examples/floating-action.tsx +10 -19
  257. package/src/layout/bottom-nav/examples/floating.tsx +10 -19
  258. package/src/layout/bottom-nav/examples/in-app-shell.tsx +11 -19
  259. package/src/layout/page/COMPONENT.md +353 -0
  260. package/src/layout/page/examples/actions-collapse.tsx +45 -0
  261. package/src/layout/page/examples/collapse.tsx +68 -0
  262. package/src/{components/page-content → layout/page}/examples/examples.module.css +33 -4
  263. package/{dist/skill/reference/components/page-content → src/layout/page}/examples/grid.tsx +15 -15
  264. package/src/{components/page-content → layout/page}/examples/list-detail.tsx +14 -14
  265. package/src/layout/page/examples/narrow.tsx +75 -0
  266. package/src/layout/page/examples/overview.tsx +57 -0
  267. package/src/{components/page-content → layout/page}/examples/screen.module.css +1 -1
  268. package/{dist/skill/reference/components/page-content → src/layout/page}/examples/screen.tsx +29 -19
  269. package/src/{components/page-content → layout/page}/examples/sections.tsx +17 -24
  270. package/src/layout/page/examples/structure.tsx +41 -0
  271. package/src/{components/page-toolbar/examples/narrow.tsx → layout/page/examples/tools.tsx} +38 -35
  272. package/src/layout/page/examples/top-bar.tsx +85 -0
  273. package/src/{components/page-content → layout/page}/examples/variants.tsx +7 -7
  274. package/src/layout/sidebar/COMPONENT.md +5 -4
  275. package/src/layout/sidebar/examples/dismiss.tsx +10 -7
  276. package/src/layout/sidebar/examples/narrow.tsx +11 -8
  277. package/src/styles/theme-dark.css +12 -10
  278. package/src/styles/theme-light.css +3 -0
  279. package/src/styles/tokens.css +3 -1
  280. package/dist/components/page-content/PageContent.d.ts +0 -192
  281. package/dist/components/page-toolbar/PageToolbar.d.ts +0 -55
  282. package/dist/layout/app-header/AppHeader.d.ts +0 -118
  283. package/dist/skill/reference/components/page-content/COMPONENT.md +0 -264
  284. package/dist/skill/reference/components/page-content/examples/narrow.tsx +0 -25
  285. package/dist/skill/reference/components/page-content/examples/overview.tsx +0 -41
  286. package/dist/skill/reference/components/page-toolbar/COMPONENT.md +0 -147
  287. package/dist/skill/reference/components/page-toolbar/examples/examples.module.css +0 -16
  288. package/dist/skill/reference/components/page-toolbar/examples/overview.tsx +0 -113
  289. package/dist/skill/reference/components/page-toolbar/examples/save-changes.tsx +0 -43
  290. package/dist/skill/reference/components/page-toolbar/examples/without-search.tsx +0 -60
  291. package/dist/skill/reference/layout/app-header/COMPONENT.md +0 -187
  292. package/dist/skill/reference/layout/app-header/examples/breadcrumbs.tsx +0 -37
  293. package/dist/skill/reference/layout/app-header/examples/examples.module.css +0 -28
  294. package/dist/skill/reference/layout/app-header/examples/in-app-shell.tsx +0 -67
  295. package/dist/skill/reference/layout/app-header/examples/narrow.tsx +0 -66
  296. package/dist/skill/reference/layout/app-header/examples/overview.tsx +0 -34
  297. package/dist/skill/reference/layout/app-header/examples/page-title.tsx +0 -78
  298. package/dist/skill/reference/layout/app-shell/examples/contained.tsx +0 -30
  299. package/src/components/page-content/COMPONENT.md +0 -264
  300. package/src/components/page-content/examples/narrow.tsx +0 -25
  301. package/src/components/page-content/examples/overview.tsx +0 -41
  302. package/src/components/page-toolbar/COMPONENT.md +0 -147
  303. package/src/components/page-toolbar/examples/examples.module.css +0 -16
  304. package/src/components/page-toolbar/examples/overview.tsx +0 -113
  305. package/src/components/page-toolbar/examples/save-changes.tsx +0 -43
  306. package/src/components/page-toolbar/examples/without-search.tsx +0 -60
  307. package/src/layout/app-header/COMPONENT.md +0 -187
  308. package/src/layout/app-header/examples/breadcrumbs.tsx +0 -37
  309. package/src/layout/app-header/examples/examples.module.css +0 -28
  310. package/src/layout/app-header/examples/in-app-shell.tsx +0 -67
  311. package/src/layout/app-header/examples/narrow.tsx +0 -66
  312. package/src/layout/app-header/examples/overview.tsx +0 -34
  313. package/src/layout/app-header/examples/page-title.tsx +0 -78
  314. package/src/layout/app-shell/examples/contained.tsx +0 -30
  315. package/dist/chunks/{chunk-U3Q2I3MY.js → chunk-2ODXLPW3.js} +2 -2
package/dist/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  import {
4
4
  Accordion,
5
- AppHeader,
6
5
  AppShell,
7
6
  Banner,
8
7
  BottomNav,
@@ -43,8 +42,7 @@ import {
43
42
  NativeSelect,
44
43
  NotificationCard,
45
44
  NotificationProvider,
46
- PageContent,
47
- PageToolbar,
45
+ Page,
48
46
  Pagination,
49
47
  ProgressCircle,
50
48
  Radio,
@@ -88,7 +86,7 @@ import {
88
86
  useSidebar,
89
87
  useTokenValue,
90
88
  useUploadQueue
91
- } from "./chunks/chunk-6TPHKCUJ.js";
89
+ } from "./chunks/chunk-A4WE3UNC.js";
92
90
  import {
93
91
  Avatar,
94
92
  Badge,
@@ -123,14 +121,13 @@ import {
123
121
  tierMappings,
124
122
  tones,
125
123
  variants
126
- } from "./chunks/chunk-4PSQ64S4.js";
124
+ } from "./chunks/chunk-7WWZYGRC.js";
127
125
  import {
128
126
  ControlSizeProvider,
129
127
  useOptionalControlSize
130
- } from "./chunks/chunk-U3Q2I3MY.js";
128
+ } from "./chunks/chunk-2ODXLPW3.js";
131
129
  export {
132
130
  Accordion,
133
- AppHeader,
134
131
  AppShell,
135
132
  Avatar,
136
133
  Badge,
@@ -185,8 +182,7 @@ export {
185
182
  NotificationCard,
186
183
  NotificationProvider,
187
184
  OVERLAY_CONTENT_SIZE,
188
- PageContent,
189
- PageToolbar,
185
+ Page,
190
186
  Pagination,
191
187
  Popover,
192
188
  ProgressBar,
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The layout plan of a page's top bar: which of its steps the row takes at a given width. One
3
+ * pure function of widths measured at their natural size, so a plan never feeds back into the
4
+ * widths it was chosen from (no re-measure loop).
5
+ *
6
+ * The steps, in the order the row gives way:
7
+ * - `one` — heading · tools · actions on one line;
8
+ * - `below` — the tools move to a line of their own under the heading and the actions;
9
+ * - `icons-secondary` — the secondary buttons show only their icons;
10
+ * - `icons` — the primary button too;
11
+ * - `fold` — the secondary buttons fold into «⋯» (only when that is narrower than their icons).
12
+ *
13
+ * Past the last step a heading with a path stacks (`stackHeading`): the path over the title, the
14
+ * title and the description wrapping, so no line of it is cut to a fragment. Without a path the
15
+ * heading truncates.
16
+ */
17
+ export type BarPlan = "one" | "below" | "icons-secondary" | "icons" | "fold";
18
+ /** One item of the actions: a primary or secondary Button, or anything else (never folds). */
19
+ export type BarAction = {
20
+ role: "primary" | "secondary" | "other";
21
+ /** Natural width with its label. */
22
+ full: number;
23
+ /** Width as its icon alone; `null` — it has no icon and keeps its label. */
24
+ icon: number | null;
25
+ };
26
+ export type BarWidths = {
27
+ /** Natural width of the heading (its widest line); 0 — none. */
28
+ heading: number;
29
+ /** Whether the heading starts with a path (a Breadcrumb before the title): it can stack. */
30
+ path: boolean;
31
+ /** Natural width of the tools on one line; 0 — none. */
32
+ tools: number;
33
+ actions: BarAction[];
34
+ /** Width of the «⋯» button. */
35
+ more: number;
36
+ /** Gap between the heading, the tools and the actions. */
37
+ gap: number;
38
+ /** Gap between two actions. */
39
+ actionGap: number;
40
+ };
41
+ /** The first plan whose first line fits `available`; the narrowest of `icons` and `fold` when none does. */
42
+ export declare function planBar(widths: BarWidths, available: number): BarPlan;
43
+ /** Whether the heading stacks at `plan`: it has a path and its one line still does not fit. */
44
+ export declare function stackHeading(widths: BarWidths, available: number, plan: BarPlan): boolean;
@@ -11,7 +11,7 @@ export declare function SheetHandle({ swipe }: {
11
11
  swipe: Pick<SwipeDismiss, "enabled">;
12
12
  }): import("react/jsx-runtime").JSX.Element | null;
13
13
  /** How wide an anchored panel is (`data-width` on the floating surface). */
14
- export type FloatingWidth = "auto" | "trigger" | "content";
14
+ export type FloatingWidth = "auto" | "trigger" | "min-trigger" | "content";
15
15
  /**
16
16
  * The panel is a `<div>`; `E` is the element type its consumer holds it as (a menu, a listbox:
17
17
  * `HTMLElement`), so the consumer ref needs no cast.
@@ -8,9 +8,10 @@ export declare function hasNativeTabStop(el: HTMLElement): boolean;
8
8
  /**
9
9
  * Moves focus into a layer that just opened, unless focus is already inside (a child `autoFocus`):
10
10
  * the first match of `first` (a menu's first enabled item, which is no tab stop of its own), else
11
- * `[data-autofocus]`, else the first tab stop, else the container itself.
11
+ * `[data-autofocus]`, else the first tab stop, else the container itself. `quiet` — a pointer
12
+ * opened the layer: focus lands without the focus ring until the person turns to the keyboard.
12
13
  */
13
- export declare function focusInto(container: HTMLElement, first?: string): void;
14
+ export declare function focusInto(container: HTMLElement, first?: string, quiet?: boolean): void;
14
15
  /**
15
16
  * Focuses `el` when it is still in the document. `quiet` — the layer was opened with a pointer:
16
17
  * focus returns without the focus ring, also when a key (Escape) closed the layer; the next key
@@ -11,7 +11,7 @@ export declare function isPart<P = unknown>(node: React.ReactNode, type: React.E
11
11
  export declare function flattenChildren(nodes: React.ReactNode, prefix?: string): React.ReactNode[];
12
12
  /**
13
13
  * Splits the direct children into the elements of the given part types and the rest, each in the
14
- * written order (`PageToolbar.Chips` under the bar, `Badge.Action` at the end of the badge).
14
+ * written order (`Page.Actions` at the end of a `Page.Header`, `Badge.Action` at the end of the badge).
15
15
  */
16
16
  export declare function splitParts<P = unknown>(children: React.ReactNode, ...types: React.ElementType[]): {
17
17
  parts: React.ReactElement<P>[];
@@ -33,36 +33,6 @@ export declare function Slot<E extends HTMLElement = HTMLElement>({ children, re
33
33
  export declare namespace Slot {
34
34
  var displayName: string;
35
35
  }
36
- /** One part moved into an outlet: its id (a key for the outlet) and what it renders. */
37
- type OutletEntry = {
38
- id: string;
39
- node: React.ReactNode;
40
- };
41
- /**
42
- * The place in a host that renders parts written elsewhere in its subtree: a page's own
43
- * `AppHeader.Root` in the app shell's header row, page tools wrapped in a page component in the
44
- * header's second row. The host owns one store (`useOutletStore`) and renders its entries
45
- * (`useOutletEntries`); a part moves in with `useMovedToOutlet`. The store is external to React
46
- * state, so a part that updates re-renders the outlet only — never the host, never the part's own
47
- * tree.
48
- */
49
- export type OutletStore = {
50
- /** Adds or replaces the part `id` (it keeps the place it first took); `null` takes it out. */
51
- set: (id: string, node: React.ReactNode | null) => void;
52
- subscribe: (listener: () => void) => () => void;
53
- entries: () => readonly OutletEntry[];
54
- };
55
- /** The outlet store of a host, created once. */
56
- export declare function useOutletStore(): OutletStore;
57
- /** The parts moved into `store`, in the order they first arrived (none on the server). */
58
- export declare function useOutletEntries(store: OutletStore): readonly OutletEntry[];
59
- /**
60
- * Moves `node` into the outlet `store` (`null` — no outlet: the part stays where it is written).
61
- * Returns `true` once the part has moved: render nothing then. Until then — on the server and in
62
- * the first client render — the part renders in place, so the server HTML has it; the move happens
63
- * before the browser paints. The part leaves the outlet when it unmounts.
64
- */
65
- export declare function useMovedToOutlet(store: OutletStore | null, node: React.ReactNode): boolean;
66
36
  /**
67
37
  * The one element child of an `asChild` part, whose own children the part wraps
68
38
  * (`React.cloneElement(child, undefined, …child.props.children)`). Throws a named error otherwise.
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
- import { type OutletStore } from "../../internal/slot";
3
2
  /**
4
3
  * The navigation of the shell, as its Sidebar publishes it: what a menu button anywhere in the
5
- * shell needs (`AppHeader.MenuButton`, `Sidebar.Toggle` outside the rail, a BottomNav «Ещё»).
4
+ * shell needs (the menu button of `Page.TopBar`, `Sidebar.Toggle` outside the rail, a BottomNav
5
+ * «Ещё»).
6
6
  */
7
7
  export type AppShellNavState = {
8
8
  /** `id` of the navigation landmark, for `aria-controls`. */
@@ -17,27 +17,18 @@ export type AppShellNavState = {
17
17
  /** Opens or closes the off-canvas panel; on screen, expands or folds the rail. */
18
18
  toggle: () => void;
19
19
  };
20
- type ShellRegistry = {
21
- /** The Sidebar publishes its navigation (`null` when it leaves). */
22
- publishNav: (nav: AppShellNavState | null) => void;
23
- /** The header outlet: a page's own `AppHeader.Root` moves here. */
24
- headers: OutletStore;
25
- };
20
+ type PublishNav = (nav: AppShellNavState | null) => void;
26
21
  /**
27
22
  * The navigation of the nearest `AppShell.Root`, as its Sidebar publishes it; `null` outside a
28
23
  * shell or before a Sidebar is in it. For a trigger of the navigation outside the rail.
29
24
  */
30
25
  export declare function useAppShellNav(): AppShellNavState | null;
31
26
  /** How the Sidebar publishes its navigation into the shell (`null` outside a shell). */
32
- export declare function useAppShellNavPublisher(): ShellRegistry["publishNav"] | null;
33
- /**
34
- * The outlet a page's `AppHeader.Root` moves into: the shell's header row. `null` outside a
35
- * shell, and in the outlet itself (the header there is in place).
36
- */
37
- export declare function useAppShellHeaderOutlet(): OutletStore | null;
27
+ export declare function useAppShellNavPublisher(): PublishNav | null;
38
28
  /**
39
29
  * Starts a frame of its own inside a shell: a preview of a screen (`ExampleFrame`) is not the
40
- * page, so a header or a Sidebar in it stays in the preview instead of joining the shell around it.
30
+ * page, so a Sidebar in it and the menu button of its top bar stay in the preview instead of
31
+ * joining the shell around it.
41
32
  */
42
33
  export declare function AppShellBoundary({ children }: {
43
34
  children?: React.ReactNode;
@@ -59,9 +50,9 @@ declare namespace AppShellNav {
59
50
  }
60
51
  /**
61
52
  * Grid: navigation column | content panel. Everything that is not `AppShell.Nav` goes into the
62
- * content panel, which is the page itself (the layer around the shell): cards on it are the next
63
- * layer. The root owns the navigation state the Sidebar publishes and the header row the page's
64
- * `AppHeader.Root` moves into.
53
+ * content panel — `AppShell.Main` with the page, and the phone footer — which is the page itself
54
+ * (the layer around the shell): cards on it are the next layer. The root owns the navigation
55
+ * state the Sidebar publishes.
65
56
  */
66
57
  declare function AppShellRoot({ fillViewport, className, children, ...rest }: AppShellRootProps): import("react/jsx-runtime").JSX.Element;
67
58
  declare namespace AppShellRoot {
@@ -75,17 +66,15 @@ declare function AppShellFooter({ className, ...rest }: AppShellFooterProps): im
75
66
  declare namespace AppShellFooter {
76
67
  var displayName: string;
77
68
  }
78
- /** `full` (default): the whole panel with responsive gutters; `contained`: centered, up to `--prime-layout-content-max-width` (long-read pages). */
79
- export type AppShellContentWidth = "contained" | "full";
80
69
  export type AppShellMainProps = React.HTMLAttributes<HTMLElement> & {
81
70
  ref?: React.Ref<HTMLElement>;
82
- /**
83
- * `full` — the whole panel with gutters; `contained` — a centred column up to `--prime-layout-content-max-width`.
84
- */
85
- contentWidth?: AppShellContentWidth;
86
71
  };
87
- /** `<main>` with the canonical gutters; scrolls inside the panel when `fillViewport` is set. */
88
- declare function AppShellMain({ contentWidth, className, children, ...rest }: AppShellMainProps): import("react/jsx-runtime").JSX.Element;
72
+ /**
73
+ * `<main>`, where the page renders: it hands the page the shell's gutters and top air
74
+ * (`Page.Root` takes them) and keeps the bottom air; scrolls inside the panel when `fillViewport`
75
+ * is set, so a sticky `Page.TopBar` sticks to its top.
76
+ */
77
+ declare function AppShellMain({ className, children, ...rest }: AppShellMainProps): import("react/jsx-runtime").JSX.Element;
89
78
  declare namespace AppShellMain {
90
79
  var displayName: string;
91
80
  }
@@ -95,20 +84,16 @@ export type AppShellTemplateProps = Omit<AppShellRootProps, "children" | "ref">
95
84
  * Navigation column content; without it the panel takes the full width.
96
85
  */
97
86
  nav?: React.ReactNode;
98
- /**
99
- * The default header row, an `AppHeader.Root`: a page that renders its own header replaces it while that page is on screen.
100
- */
101
- header?: React.ReactNode;
102
87
  /**
103
88
  * Footer content (`BottomNav`); no footer when omitted.
104
89
  */
105
90
  footer?: React.ReactNode;
106
91
  /**
107
- * Page content inside Main.
92
+ * The page inside Main (`Page.Root`).
108
93
  */
109
94
  children?: React.ReactNode;
110
95
  /**
111
- * Props for Main (e.g. `contentWidth`).
96
+ * Props for Main (`id`, `tabIndex` for a skip link).
112
97
  */
113
98
  mainProps?: Omit<AppShellMainProps, "children" | "ref">;
114
99
  /**
@@ -116,12 +101,8 @@ export type AppShellTemplateProps = Omit<AppShellRootProps, "children" | "ref">
116
101
  */
117
102
  scrollResetKey?: unknown;
118
103
  };
119
- /**
120
- * Root + Nav + the header + Main + Footer in one; main scrolls to the top when `scrollResetKey`
121
- * changes. `header` is the default header row: a page that renders its own `AppHeader.Root`
122
- * replaces it while it is on screen.
123
- */
124
- declare function AppShellTemplate({ ref, nav, header, footer, children, mainProps, scrollResetKey, ...rootProps }: AppShellTemplateProps): import("react/jsx-runtime").JSX.Element;
104
+ /** Root + Nav + Main + Footer in one; main scrolls to the top when `scrollResetKey` changes. */
105
+ declare function AppShellTemplate({ ref, nav, footer, children, mainProps, scrollResetKey, ...rootProps }: AppShellTemplateProps): import("react/jsx-runtime").JSX.Element;
125
106
  declare namespace AppShellTemplate {
126
107
  var displayName: string;
127
108
  }
@@ -1,8 +1,8 @@
1
- export type { AppHeaderActionsProps, AppHeaderDescriptionProps, AppHeaderIconProps, AppHeaderLabels, AppHeaderMenuButtonProps, AppHeaderRootProps, AppHeaderSeparatorProps, AppHeaderStartProps, AppHeaderTitleProps, AppHeaderToolsProps, } from "./app-header/AppHeader";
2
- export { AppHeader } from "./app-header/AppHeader";
3
- export type { AppShellContentWidth, AppShellFooterProps, AppShellMainProps, AppShellNavProps, AppShellNavState, AppShellRootProps, AppShellTemplateProps, } from "./app-shell/AppShell";
1
+ export type { AppShellFooterProps, AppShellMainProps, AppShellNavProps, AppShellNavState, AppShellRootProps, AppShellTemplateProps, } from "./app-shell/AppShell";
4
2
  export { AppShell, useAppShellNav } from "./app-shell/AppShell";
5
3
  export type { BottomNavActionProps, BottomNavItemCountProps, BottomNavItemIconProps, BottomNavItemProps, BottomNavLabels, BottomNavRootProps, } from "./bottom-nav/BottomNav";
6
4
  export { BottomNav } from "./bottom-nav/BottomNav";
5
+ export type { PageActionsProps, PageBackButtonProps, PageBodyProps, PageCellProps, PageCellRows, PageCellSpan, PageChipsProps, PageDescriptionProps, PageDetailProps, PageGridProps, PageHeaderProps, PageHeadingProps, PageLabels, PageListProps, PageMaxWidth, PageRootProps, PageSectionLayout, PageSectionProps, PageSplitProps, PageTitleProps, PageToolsProps, PageTopBarProps, } from "./page/Page";
6
+ export { Page } from "./page/Page";
7
7
  export type { SidebarAccountProps, SidebarBrandLogoProps, SidebarBrandProps, SidebarContentProps, SidebarFooterProps, SidebarGroupProps, SidebarHeaderProps, SidebarItemActionProps, SidebarItemCountProps, SidebarItemIconProps, SidebarItemProps, SidebarItemShortcutProps, SidebarLabels, SidebarMode, SidebarRootProps, SidebarSubContentProps, SidebarSubProps, SidebarSubTriggerProps, SidebarToggleProps, } from "./sidebar/Sidebar";
8
8
  export { Sidebar, useSidebar } from "./sidebar/Sidebar";
@@ -0,0 +1,263 @@
1
+ import * as React from "react";
2
+ export type PageLabels = {
3
+ /** Name of the menu button the top bar draws while the shell's Sidebar is off-canvas. */
4
+ menu: string;
5
+ /** Name of the «⋯» button the top bar's actions fold into when the row runs out of width. */
6
+ more: string;
7
+ /** Name of `Page.BackButton` (back from the detail to the list on a narrow split). */
8
+ back: string;
9
+ };
10
+ export declare const PAGE_LABELS: PageLabels;
11
+ type DivProps = React.HTMLAttributes<HTMLDivElement> & {
12
+ ref?: React.Ref<HTMLDivElement>;
13
+ };
14
+ /** Cap of the page column. */
15
+ export type PageMaxWidth = "full" | "readable" | "wide";
16
+ export type PageRootProps = DivProps & {
17
+ /**
18
+ * Cap of everything but the top bar, centred: `full` — the whole main; `readable` — 42rem (`--prime-layout-reading-max-width`); `wide` — 75rem (`--prime-layout-content-max-width`).
19
+ */
20
+ maxWidth?: PageMaxWidth;
21
+ /**
22
+ * The page takes the height of main (`AppShell.Root fillViewport`) and the body takes what the bar and the header leave: for a full-height table, board, chat or `Page.Split`.
23
+ */
24
+ fill?: boolean;
25
+ /**
26
+ * Built-in strings of every part, see Labels.
27
+ */
28
+ labels?: Partial<PageLabels>;
29
+ };
30
+ /**
31
+ * The page: the column inside `AppShell.Main` that holds the top bar, the header and the body. In
32
+ * the shell it takes the shell's gutters and top air (`--page-gutter`, `--page-top` from main);
33
+ * outside it brings none. `maxWidth` caps and centres everything but the top bar, which runs the
34
+ * width of the panel.
35
+ */
36
+ declare function PageRoot({ maxWidth, fill, labels: labelsProp, className, ...rest }: PageRootProps): import("react/jsx-runtime").JSX.Element;
37
+ declare namespace PageRoot {
38
+ var displayName: string;
39
+ }
40
+ export type PageTopBarProps = React.HTMLAttributes<HTMLElement> & {
41
+ /**
42
+ * Sticks to the top of the page's scroller (`AppShell.Main`); `false` — scrolls away with the page. On a screen lower than 480px it scrolls anyway.
43
+ */
44
+ sticky?: boolean;
45
+ /**
46
+ * Once the flow `Page.Title` scrolls out under the bar, the bar repeats it as the last level of its heading (of its `Breadcrumb` path, which folds for it), unless the path ends at it; it leaves when the title returns.
47
+ */
48
+ collapse?: boolean;
49
+ ref?: React.Ref<HTMLElement>;
50
+ };
51
+ /**
52
+ * The page's strip at its top edge, across the panel. Up to four groups in one grid —
53
+ * `Page.Heading`, `Page.Tools`, `Page.Actions` on the first line, `Page.Chips` under them — laid
54
+ * out by one plan chosen from their natural widths (`planBar`): one line while everything fits;
55
+ * then the tools take a line of their own; then the buttons give way to their icons, secondary
56
+ * first, and fold into «⋯»; only then does a heading with a path stack (path over title), and a
57
+ * heading without one truncate. Sticky inside the scroller of
58
+ * the page; while the shell's Sidebar is off-canvas it starts with the menu button. With
59
+ * `collapse` it repeats the flow `Page.Title` once that title scrolls out under the bar.
60
+ */
61
+ declare function PageTopBar({ sticky, collapse, className, children, ref, ...rest }: PageTopBarProps): import("react/jsx-runtime").JSX.Element;
62
+ declare namespace PageTopBar {
63
+ var displayName: string;
64
+ }
65
+ export type PageHeaderProps = DivProps;
66
+ /**
67
+ * The document header in the page flow (settings, long forms, overviews): a `Page.Heading` and
68
+ * its `Page.Actions` in one row; the actions wrap under the heading on a narrow column. In a
69
+ * `Page.TopBar` the same parts stand directly in the bar.
70
+ */
71
+ declare function PageHeader({ className, children, ...rest }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
72
+ declare namespace PageHeader {
73
+ var displayName: string;
74
+ }
75
+ export type PageHeadingProps = DivProps;
76
+ /**
77
+ * The title group: an optional `Breadcrumb` path, `Page.Title`, `Page.Description`. In the bar
78
+ * the title is the path's last level — the path, a chevron and the title on one line, the
79
+ * description under the whole line, both truncating; in the flow the path stands over a large
80
+ * title and the description wraps.
81
+ */
82
+ declare function PageHeading({ className, children, ...rest }: PageHeadingProps): import("react/jsx-runtime").JSX.Element;
83
+ declare namespace PageHeading {
84
+ var displayName: string;
85
+ }
86
+ export type PageTitleProps = React.HTMLAttributes<HTMLHeadingElement> & {
87
+ ref?: React.Ref<HTMLHeadingElement>;
88
+ };
89
+ /**
90
+ * The page's `<h1>`: the last level of the path in the top bar (it truncates), a large title in
91
+ * the flow. A flow title is what a `collapse` top bar repeats once it scrolls away.
92
+ */
93
+ declare function PageTitle({ className, children, ref, ...rest }: PageTitleProps): import("react/jsx-runtime").JSX.Element;
94
+ declare namespace PageTitle {
95
+ var displayName: string;
96
+ }
97
+ export type PageDescriptionProps = React.HTMLAttributes<HTMLParagraphElement> & {
98
+ ref?: React.Ref<HTMLParagraphElement>;
99
+ };
100
+ /** One line of context that carries data (a period, a count): truncates in the bar, wraps in the flow. */
101
+ declare function PageDescription({ className, children, ...rest }: PageDescriptionProps): import("react/jsx-runtime").JSX.Element;
102
+ declare namespace PageDescription {
103
+ var displayName: string;
104
+ }
105
+ export type PageActionsProps = DivProps;
106
+ /**
107
+ * The page's buttons: at the end of a `Page.Header` or a `Page.Section` heading in the flow (they
108
+ * wrap under it on a narrow column), on the first line of a `Page.TopBar` at every width. In the
109
+ * bar, when the line runs short, Buttons with an icon show only it — the secondary ones first,
110
+ * then the primary (the first solid Button) — with their label as name and tooltip; then the
111
+ * secondary Buttons fold into a «⋯» menu. Anything that is not a `Button.Root` stays as it is.
112
+ */
113
+ declare function PageActions(props: PageActionsProps): import("react/jsx-runtime").JSX.Element;
114
+ declare namespace PageActions {
115
+ var displayName: string;
116
+ }
117
+ export type PageToolsProps = DivProps;
118
+ /**
119
+ * The page's tools — sections, search and filter, view — as kit controls in the order written.
120
+ * On the bar's first line each keeps its natural width; on a line of their own they fill it:
121
+ * a search (`SmartFilter.Toolbar`, `Input.Root`) takes the room first, switchers share the rest
122
+ * (a `SegmentedControl.Root` is `fullWidth` unless set), and they wrap when one line is not
123
+ * enough. Named (`aria-label`), it is a `group`.
124
+ */
125
+ declare function PageTools({ className, children, ref, ...rest }: PageToolsProps): import("react/jsx-runtime").JSX.Element;
126
+ declare namespace PageTools {
127
+ var displayName: string;
128
+ }
129
+ export type PageChipsProps = DivProps;
130
+ /** Active filters (`SmartFilter.Chips`) on a line of their own under the bar; gone while empty. */
131
+ declare function PageChips({ className, ...rest }: PageChipsProps): import("react/jsx-runtime").JSX.Element;
132
+ declare namespace PageChips {
133
+ var displayName: string;
134
+ }
135
+ export type PageBodyProps = DivProps;
136
+ /** The page content: blocks of one screen 24 apart, a `Page.Section` 40 from its neighbours. */
137
+ declare function PageBody({ className, ...rest }: PageBodyProps): import("react/jsx-runtime").JSX.Element;
138
+ declare namespace PageBody {
139
+ var displayName: string;
140
+ }
141
+ /** Where the heading of a section stands: over its content or in a column beside it. */
142
+ export type PageSectionLayout = "stack" | "aside";
143
+ export type PageSectionProps = Omit<React.HTMLAttributes<HTMLElement>, "title"> & {
144
+ /**
145
+ * The visible heading (`h2`); it also names the section.
146
+ */
147
+ label: React.ReactNode;
148
+ /**
149
+ * One line of context under the heading, in secondary body-s.
150
+ */
151
+ description?: React.ReactNode;
152
+ /**
153
+ * `stack` — the heading over the content; `aside` — a ~16rem heading column beside it (a settings page), above it once the content would get narrower than 30rem.
154
+ */
155
+ layout?: PageSectionLayout;
156
+ ref?: React.Ref<HTMLElement>;
157
+ };
158
+ /**
159
+ * A titled section of the page: an `h2` heading (with an optional description and `Page.Actions`
160
+ * at its end) over its content. Sections stand further apart than the plain blocks of the body,
161
+ * so the air shows where a new topic starts.
162
+ */
163
+ declare function PageSection({ label, description, layout, className, children, ...rest }: PageSectionProps): import("react/jsx-runtime").JSX.Element;
164
+ declare namespace PageSection {
165
+ var displayName: string;
166
+ }
167
+ export type PageGridProps = DivProps;
168
+ /**
169
+ * The grid of the page's tiles (KPI cards, charts, panels): 12 columns, one gap on both axes.
170
+ * Columns follow the grid's own width, so tiles fold on a narrow panel by themselves.
171
+ */
172
+ declare function PageGrid({ className, ...rest }: PageGridProps): import("react/jsx-runtime").JSX.Element;
173
+ declare namespace PageGrid {
174
+ var displayName: string;
175
+ }
176
+ /** Columns of 12 a cell spans on a wide grid. */
177
+ export type PageCellSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
178
+ /** Rows a cell spans. */
179
+ export type PageCellRows = 1 | 2 | 3 | 4;
180
+ export type PageCellProps = DivProps & {
181
+ /**
182
+ * Columns of 12 on a wide grid (64rem+). Narrower grids round it: see Grid columns in COMPONENT.md.
183
+ */
184
+ span?: PageCellSpan;
185
+ /**
186
+ * Rows the cell spans from 40rem: a chart beside two stacked tiles (`ChartFrame.Plot height="fill"` fills the height).
187
+ */
188
+ rows?: PageCellRows;
189
+ };
190
+ /** One tile place in `Page.Grid`; its child (a Card, a ChartFrame) fills it. */
191
+ declare function PageCell({ span, rows, className, ...rest }: PageCellProps): import("react/jsx-runtime").JSX.Element;
192
+ declare namespace PageCell {
193
+ var displayName: string;
194
+ }
195
+ export type PageSplitProps = DivProps & {
196
+ /**
197
+ * The detail is open (a record is chosen), controlled. On a narrow split it takes the place of the list; on a wide one both panes stay.
198
+ */
199
+ open?: boolean;
200
+ /**
201
+ * Initial open state, uncontrolled.
202
+ */
203
+ defaultOpen?: boolean;
204
+ /**
205
+ * `Page.BackButton` closes the detail (`false`); clear the chosen record there.
206
+ */
207
+ onOpenChange?: (open: boolean) => void;
208
+ };
209
+ /**
210
+ * List + detail (mail, a messenger, a ticket queue): two panes side by side from 48rem of its own
211
+ * width, one at a time below it — the list, or the open detail with a back button. Takes the free
212
+ * height of a filling page; each pane gives its last child the free height.
213
+ */
214
+ declare function PageSplit({ open: openProp, defaultOpen, onOpenChange, className, children, ...rest }: PageSplitProps): import("react/jsx-runtime").JSX.Element;
215
+ declare namespace PageSplit {
216
+ var displayName: string;
217
+ }
218
+ export type PageListProps = DivProps;
219
+ /**
220
+ * The list pane of the split: a fixed column on a wide split, the whole split while the detail is
221
+ * closed. It remembers the control that had focus, so going back returns there.
222
+ */
223
+ declare function PageList(props: PageListProps): import("react/jsx-runtime").JSX.Element;
224
+ declare namespace PageList {
225
+ var displayName: string;
226
+ }
227
+ export type PageDetailProps = DivProps;
228
+ /** The detail pane of the split: the rest of a wide split; on a narrow one it replaces the list while open. */
229
+ declare function PageDetail(props: PageDetailProps): import("react/jsx-runtime").JSX.Element;
230
+ declare namespace PageDetail {
231
+ var displayName: string;
232
+ }
233
+ export type PageBackButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type" | "children"> & {
234
+ ref?: React.Ref<HTMLButtonElement>;
235
+ };
236
+ /**
237
+ * Back from the detail to the list: a soft neutral icon Button named by `labels.back`, shown only
238
+ * while the split shows one pane. Put it at the start of the detail's header.
239
+ */
240
+ declare function PageBackButton({ className, onClick, ...rest }: PageBackButtonProps): import("react/jsx-runtime").JSX.Element;
241
+ declare namespace PageBackButton {
242
+ var displayName: string;
243
+ }
244
+ export declare const Page: {
245
+ Root: typeof PageRoot;
246
+ TopBar: typeof PageTopBar;
247
+ Header: typeof PageHeader;
248
+ Heading: typeof PageHeading;
249
+ Title: typeof PageTitle;
250
+ Description: typeof PageDescription;
251
+ Actions: typeof PageActions;
252
+ Tools: typeof PageTools;
253
+ Chips: typeof PageChips;
254
+ Body: typeof PageBody;
255
+ Section: typeof PageSection;
256
+ Grid: typeof PageGrid;
257
+ Cell: typeof PageCell;
258
+ Split: typeof PageSplit;
259
+ List: typeof PageList;
260
+ Detail: typeof PageDetail;
261
+ BackButton: typeof PageBackButton;
262
+ };
263
+ export {};
@@ -61,7 +61,7 @@ export type SidebarRootProps = React.ComponentPropsWithoutRef<"div"> & {
61
61
  */
62
62
  defaultOpen?: boolean;
63
63
  /**
64
- * Off-canvas open / close: Toggle, the AppHeader menu button, scrim, Escape, an activated item, leaving the narrow viewport.
64
+ * Off-canvas open / close: Toggle, the menu button of `Page.TopBar`, scrim, Escape, an activated item, leaving the narrow viewport.
65
65
  */
66
66
  onOpenChange?: (open: boolean) => void;
67
67
  /**
@@ -32,8 +32,8 @@ region, `Skeleton` while it loads).
32
32
  the main action, the states, the narrow screen); the shape of the data decides the layout, every
33
33
  label must carry something new, friction matches the cost of a mistake.
34
34
  2. **The app frame, once per app** — [layouts.md](layouts.md): styles, theme, providers, `AppShell`
35
- with the `Sidebar`, page wrappers, auth screens. A screen you deliver renders its page: its
36
- `AppHeader.Root` (title, a line of data, its tools) and its body.
35
+ with the `Sidebar`, page wrappers, auth screens. A screen you deliver renders its page: one
36
+ `Page.Root` with its top bar (title, a line of data, its tools) and its body.
37
37
  3. **Choose** — [choosing.md](choosing.md): the category by task, then the component, then the pairs
38
38
  that are easy to confuse.
39
39
  4. **Read the component** — [components.md](components.md) links each `COMPONENT.md` (API, variants,
@@ -48,8 +48,8 @@ region, `Skeleton` while it loads).
48
48
  icon names.
49
49
  7. **States and motion** — [motion.md](motion.md): every region loads, empties and fails without
50
50
  flipping; what the kit animates by itself and when to move your own elements.
51
- 8. **Narrow screens** — [responsive.md](responsive.md): every screen works from 320px, the page panel is
52
- `PageToolbar`, nothing is hidden on phones, touch follows `(hover)` / `(pointer)`.
51
+ 8. **Narrow screens** — [responsive.md](responsive.md): every screen works from 320px, the page's top bar
52
+ gives way by width itself, nothing is hidden on phones, touch follows `(hover)` / `(pointer)`.
53
53
  9. **Check** — [checklist.md](checklist.md) and [anti-slop.md](anti-slop.md), then look at the screen
54
54
  in a browser ([ux.md](ux.md#9-look-at-it-before-handing-it-over)). Fix every «no», then hand
55
55
  over.
@@ -65,7 +65,7 @@ project under `node_modules/prime-ui-kit/src/`.
65
65
  |---|---|---|
66
66
  | Component reference | `reference/components/<dir>/COMPONENT.md` | `node_modules/prime-ui-kit/src/components/<dir>/COMPONENT.md` |
67
67
  | Copyable scenarios | `reference/components/<dir>/examples/*.tsx` | `node_modules/prime-ui-kit/src/components/<dir>/examples/*.tsx` |
68
- | AppShell, Sidebar, AppHeader, BottomNav | `reference/layout/<dir>/…` | `node_modules/prime-ui-kit/src/layout/<dir>/…` |
68
+ | AppShell, Sidebar, BottomNav, Page | `reference/layout/<dir>/…` | `node_modules/prime-ui-kit/src/layout/<dir>/…` |
69
69
  | Whole screens | `reference/<base>/<dir>/examples/screen.tsx` | `node_modules/prime-ui-kit/src/<base>/<dir>/examples/screen.tsx` |
70
70
 
71
71
  ## Files of this skill
@@ -81,7 +81,7 @@ project under `node_modules/prime-ui-kit/src/`.
81
81
  | [foundations.md](foundations.md) | grid, proximity scale, sizes, surfaces, type, tone and color |
82
82
  | [api-contract.md](api-contract.md) | writing JSX — prop names, sizes and host tiers, controlled state, forms, helpers, icons |
83
83
  | [motion.md](motion.md) | every screen — loading / empty / error that flow, what the kit animates, when to move, recipes |
84
- | [responsive.md](responsive.md) | every screen — 320px and up, the page panel (`PageToolbar`), touch |
84
+ | [responsive.md](responsive.md) | every screen — 320px and up, the page's top bar (`Page.TopBar`), touch |
85
85
  | [anti-slop.md](anti-slop.md) | before and after writing — what makes a screen look generated |
86
86
  | [checklist.md](checklist.md) | before handing the screen over |
87
87
 
@@ -97,8 +97,8 @@ applyTheme("light"); // sets data-theme on <html>; "dark" for the dark theme
97
97
  ```
98
98
 
99
99
  Wrap the app in `NotificationProvider` if it shows toasts. Styles, `applyTheme`, `NotificationProvider`
100
- and `AppShell` belong to the app root, once. A screen component you deliver renders its page — its
101
- `AppHeader.Root` and its `PageContent` body — and assumes the root exists. If the project has no app
100
+ and `AppShell` belong to the app root, once. A screen component you deliver renders its page — one
101
+ `Page.Root` with its `Page.TopBar` and its `Page.Body` — and assumes the root exists. If the project has no app
102
102
  frame yet, also deliver it as a separate root layout from
103
103
  [layouts.md](layouts.md#app-frame-once-per-app) — never inline the frame into a page.
104
104
 
@@ -123,8 +123,8 @@ Take a semantic `<Icon name="…" />` first, else a glyph from the full animated
123
123
  7. Labels above fields, always — once per column for records in rows (`FieldList`), never numbered
124
124
  («Пункт 1»), never repeating their heading. Placeholder is an example value, never the label.
125
125
  8. Text through `Typography` roles (`title-m` section, `title-s` group, `body-m` text, `caption` meta;
126
- the page title is `AppHeader.Title` in the page's header, `PageContent.Title` only on a
127
- document page). No custom font sizes.
126
+ the page title is `Page.Title`, one per page: in the `Page.Heading` of `Page.TopBar` on a work screen, in the flow
127
+ on a document page or an overview). No custom font sizes.
128
128
  9. Overlays (Modal, ConfirmDialog, Drawer, Sheet, Popover, Dropdown, Tooltip, CommandMenu, Select,
129
129
  MediaViewer) come from the kit — never hand-made — and stay mounted: drive them with `open`,
130
130
  never `{open && …}`.