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
@@ -1,6 +1,5 @@
1
- /** A create form in a Drawer opened from the primary action in the app header: grouped fields, errors on submit with focus on the first invalid field, a loading submit, a toast and the new row in the list — `Drawer.Trigger`, `Drawer.Guard`. */
1
+ /** A create form in a Drawer opened from the primary action in its top bar: grouped fields, errors on submit with focus on the first invalid field, a loading submit, a toast and the new row in the list — `Drawer.Trigger`, `Drawer.Guard`. */
2
2
  import {
3
- AppHeader,
4
3
  Badge,
5
4
  Button,
6
5
  Checkbox,
@@ -10,8 +9,7 @@ import {
10
9
  Fieldset,
11
10
  Icon,
12
11
  Input,
13
- PageContent,
14
- PageToolbar,
12
+ Page,
15
13
  Radio,
16
14
  Select,
17
15
  SmartFilter,
@@ -128,162 +126,141 @@ export default function DrawerScreenExample() {
128
126
  const people = clients.filter((client) => client.kind === "person").length;
129
127
 
130
128
  return (
131
- <>
132
- {/* The page lives in the app header: the only h1, the counts under it, search and the one
133
- primary action — the Drawer trigger — in the tools row; main has no PageContent.Header. */}
134
- <AppHeader.Root>
135
- <AppHeader.Start>
136
- <AppHeader.Title>
137
- Клиенты
138
- <AppHeader.Description>
129
+ <SmartFilter.Root fields={[]} search={search} onSearchChange={setSearch}>
130
+ <Page.Root>
131
+ {/* A work screen titles itself in its top bar: the only h1, the counts under it, the search
132
+ and the one primary action — the Drawer trigger. */}
133
+ <Page.TopBar>
134
+ <Page.Heading>
135
+ <Page.Title>Клиенты</Page.Title>
136
+ <Page.Description>
139
137
  {plural(clients.length, CLIENT_WORDS)} ·{" "}
140
138
  {plural(clients.length - people, COMPANY_WORDS)} и {people} ИП
141
- </AppHeader.Description>
142
- </AppHeader.Title>
143
- </AppHeader.Start>
144
- <AppHeader.Tools>
145
- <SmartFilter.Root fields={[]} search={search} onSearchChange={setSearch}>
146
- <PageToolbar.Root aria-label="Клиенты">
147
- <PageToolbar.Tools>
148
- <SmartFilter.Toolbar />
149
- </PageToolbar.Tools>
150
- <PageToolbar.Actions>
151
- <Drawer.Root open={open} onOpenChange={changeOpen}>
152
- <Drawer.Trigger>
153
- <Button.Root>
154
- <Button.Icon>
155
- <Icon name="action.add" />
156
- </Button.Icon>
157
- Новый клиент
158
- </Button.Root>
159
- </Drawer.Trigger>
160
- <Drawer.Content>
161
- <Drawer.Header>
162
- <Drawer.Title>Новый клиент</Drawer.Title>
163
- <Drawer.Description>
164
- Появится в списке и в выборе клиента при выставлении счёта.
165
- </Drawer.Description>
166
- </Drawer.Header>
167
- <Drawer.Body>
168
- <Drawer.Guard busy={saving} dirty={dirty} />
169
- <form
170
- id={formId}
171
- className={styles.form}
172
- noValidate
173
- onSubmit={submit}
174
- onChange={() => setDirty(true)}
139
+ </Page.Description>
140
+ </Page.Heading>
141
+ <Page.Tools aria-label="Клиенты">
142
+ <SmartFilter.Toolbar />
143
+ </Page.Tools>
144
+ <Page.Actions>
145
+ <Drawer.Root open={open} onOpenChange={changeOpen}>
146
+ <Drawer.Trigger>
147
+ <Button.Root>
148
+ <Button.Icon>
149
+ <Icon name="action.add" />
150
+ </Button.Icon>
151
+ Новый клиент
152
+ </Button.Root>
153
+ </Drawer.Trigger>
154
+ <Drawer.Content>
155
+ <Drawer.Header>
156
+ <Drawer.Title>Новый клиент</Drawer.Title>
157
+ <Drawer.Description>
158
+ Появится в списке и в выборе клиента при выставлении счёта.
159
+ </Drawer.Description>
160
+ </Drawer.Header>
161
+ <Drawer.Body>
162
+ <Drawer.Guard busy={saving} dirty={dirty} />
163
+ <form
164
+ id={formId}
165
+ className={styles.form}
166
+ noValidate
167
+ onSubmit={submit}
168
+ onChange={() => setDirty(true)}
169
+ >
170
+ <Fieldset label="Реквизиты" disabled={saving}>
171
+ <Radio.Group
172
+ name="kind"
173
+ label="Тип клиента"
174
+ defaultValue="company"
175
+ orientation="horizontal"
175
176
  >
176
- <Fieldset label="Реквизиты" disabled={saving}>
177
- <Radio.Group
178
- name="kind"
179
- label="Тип клиента"
180
- defaultValue="company"
181
- orientation="horizontal"
182
- >
183
- <Radio.Root value="company">
184
- <Radio.Label>Компания</Radio.Label>
185
- </Radio.Root>
186
- <Radio.Root value="person">
187
- <Radio.Label>ИП</Radio.Label>
188
- </Radio.Root>
189
- </Radio.Group>
190
- <Input.Root label="Название" error={errors.name}>
191
- <Input.Wrapper>
192
- <Input.Field
193
- name="name"
194
- placeholder="ООО «Ромашка»"
195
- autoComplete="organization"
196
- />
197
- </Input.Wrapper>
198
- </Input.Root>
199
- <div className={styles.pair}>
200
- <Input.Root label="ИНН" error={errors.inn} reserveSupportRow>
201
- <Input.Wrapper>
202
- <Input.Field
203
- name="inn"
204
- inputMode="numeric"
205
- placeholder="7704512908"
206
- />
207
- </Input.Wrapper>
208
- </Input.Root>
209
- <Input.Root label="КПП" optional reserveSupportRow>
210
- <Input.Wrapper>
211
- <Input.Field
212
- name="kpp"
213
- inputMode="numeric"
214
- placeholder="770401001"
215
- />
216
- </Input.Wrapper>
217
- </Input.Root>
218
- </div>
219
- </Fieldset>
220
- <Fieldset label="Контакты" disabled={saving}>
221
- <Input.Root
222
- label="Почта для счетов"
223
- error={errors.email}
224
- hint="На неё уйдут счета и акты"
225
- >
226
- <Input.Wrapper>
227
- <Input.Icon side="start">
228
- <Icon name="field.email" />
229
- </Input.Icon>
230
- <Input.Field
231
- name="email"
232
- type="email"
233
- placeholder="billing@company.ru"
234
- />
235
- </Input.Wrapper>
236
- </Input.Root>
237
- <Select.Root
238
- label="Менеджер"
239
- value={manager}
240
- onValueChange={(next) => {
241
- setManager(next);
242
- setDirty(true);
243
- }}
244
- >
245
- <Select.Trigger>
246
- <Select.Value />
247
- </Select.Trigger>
248
- <Select.Content>
249
- {MANAGERS.map((name) => (
250
- <Select.Item key={name} value={name}>
251
- {name}
252
- </Select.Item>
253
- ))}
254
- </Select.Content>
255
- </Select.Root>
256
- <Textarea.Root name="note" label="Комментарий" optional rows={2} />
257
- <Checkbox.Root
258
- name="invite"
259
- defaultChecked
260
- hint="Клиент увидит свои счета и акты онлайн"
261
- >
262
- <Checkbox.Label>Пригласить в личный кабинет</Checkbox.Label>
263
- </Checkbox.Root>
264
- </Fieldset>
265
- </form>
266
- </Drawer.Body>
267
- <Drawer.Footer>
268
- <Drawer.Close>
269
- <Button.Root variant="outline" tone="neutral">
270
- Отмена
271
- </Button.Root>
272
- </Drawer.Close>
273
- <Button.Root type="submit" form={formId} loading={saving}>
274
- Добавить клиента
275
- </Button.Root>
276
- </Drawer.Footer>
277
- </Drawer.Content>
278
- </Drawer.Root>
279
- </PageToolbar.Actions>
280
- </PageToolbar.Root>
281
- </SmartFilter.Root>
282
- </AppHeader.Tools>
283
- </AppHeader.Root>
284
-
285
- <PageContent.Root>
286
- <PageContent.Body>
177
+ <Radio.Root value="company">
178
+ <Radio.Label>Компания</Radio.Label>
179
+ </Radio.Root>
180
+ <Radio.Root value="person">
181
+ <Radio.Label>ИП</Radio.Label>
182
+ </Radio.Root>
183
+ </Radio.Group>
184
+ <Input.Root label="Название" error={errors.name}>
185
+ <Input.Wrapper>
186
+ <Input.Field
187
+ name="name"
188
+ placeholder="ООО «Ромашка»"
189
+ autoComplete="organization"
190
+ />
191
+ </Input.Wrapper>
192
+ </Input.Root>
193
+ <div className={styles.pair}>
194
+ <Input.Root label="ИНН" error={errors.inn} reserveSupportRow>
195
+ <Input.Wrapper>
196
+ <Input.Field name="inn" inputMode="numeric" placeholder="7704512908" />
197
+ </Input.Wrapper>
198
+ </Input.Root>
199
+ <Input.Root label="КПП" optional reserveSupportRow>
200
+ <Input.Wrapper>
201
+ <Input.Field name="kpp" inputMode="numeric" placeholder="770401001" />
202
+ </Input.Wrapper>
203
+ </Input.Root>
204
+ </div>
205
+ </Fieldset>
206
+ <Fieldset label="Контакты" disabled={saving}>
207
+ <Input.Root
208
+ label="Почта для счетов"
209
+ error={errors.email}
210
+ hint="На неё уйдут счета и акты"
211
+ >
212
+ <Input.Wrapper>
213
+ <Input.Icon side="start">
214
+ <Icon name="field.email" />
215
+ </Input.Icon>
216
+ <Input.Field name="email" type="email" placeholder="billing@company.ru" />
217
+ </Input.Wrapper>
218
+ </Input.Root>
219
+ <Select.Root
220
+ label="Менеджер"
221
+ value={manager}
222
+ onValueChange={(next) => {
223
+ setManager(next);
224
+ setDirty(true);
225
+ }}
226
+ >
227
+ <Select.Trigger>
228
+ <Select.Value />
229
+ </Select.Trigger>
230
+ <Select.Content>
231
+ {MANAGERS.map((name) => (
232
+ <Select.Item key={name} value={name}>
233
+ {name}
234
+ </Select.Item>
235
+ ))}
236
+ </Select.Content>
237
+ </Select.Root>
238
+ <Textarea.Root name="note" label="Комментарий" optional rows={2} />
239
+ <Checkbox.Root
240
+ name="invite"
241
+ defaultChecked
242
+ hint="Клиент увидит свои счета и акты онлайн"
243
+ >
244
+ <Checkbox.Label>Пригласить в личный кабинет</Checkbox.Label>
245
+ </Checkbox.Root>
246
+ </Fieldset>
247
+ </form>
248
+ </Drawer.Body>
249
+ <Drawer.Footer>
250
+ <Drawer.Close>
251
+ <Button.Root variant="outline" tone="neutral">
252
+ Отмена
253
+ </Button.Root>
254
+ </Drawer.Close>
255
+ <Button.Root type="submit" form={formId} loading={saving}>
256
+ Добавить клиента
257
+ </Button.Root>
258
+ </Drawer.Footer>
259
+ </Drawer.Content>
260
+ </Drawer.Root>
261
+ </Page.Actions>
262
+ </Page.TopBar>
263
+ <Page.Body>
287
264
  <DataTable
288
265
  columns={COLUMNS}
289
266
  rows={shown}
@@ -291,8 +268,8 @@ export default function DrawerScreenExample() {
291
268
  paging="none"
292
269
  empty="Клиентов не найдено"
293
270
  />
294
- </PageContent.Body>
295
- </PageContent.Root>
296
- </>
271
+ </Page.Body>
272
+ </Page.Root>
273
+ </SmartFilter.Root>
297
274
  );
298
275
  }
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## When to use
9
9
  - Secondary actions of a card, row or document behind a «⋯» or labelled button.
10
- - An account / user menu in the app header.
10
+ - An account / user menu behind the Sidebar account row (`Sidebar.Account`).
11
11
  - A short list of commands (export formats, move to project) where picking one runs an action.
12
12
 
13
13
  ## When not to use
@@ -57,11 +57,11 @@ ExampleFrame frame: toolbar + the pane (a region swap between prev
57
57
  | Value | Looks like | Use when | Default |
58
58
  |---|---|---|---|
59
59
  | `default` | single block centered in the stage | one component | yes |
60
- | `stack` | centered column, gap 16, children capped at the stack measure (`10 × --prime-space-16`) so `width: 100%` blocks stay centered; a child with `fullWidth` or a table stretches | several blocks one under another | |
61
- | `stack-narrow` | column, children capped at `7 × --prime-space-16` and centered | forms and narrow columns | |
60
+ | `stack` | centered column, gap 16, children capped at the stack measure (`10 × --prime-space-16`) so `width: 100%` blocks stay centered; a child with `fullWidth` or a table stretches, never past the stage, and a horizontal separator beside it stretches with it | several blocks one under another | |
61
+ | `stack-narrow` | column, children capped at `7 × --prime-space-16` and centered, full width unless a child sets its own (a cascade-layer default, so a fit-content SegmentedControl keeps hugging its segments); a child with a table may take the stage | forms and narrow columns | |
62
62
  | `full` | column, gap 16, every child takes the whole stage width | page structure: app shells, page regions | |
63
63
  | `row` | centered wrapping row, gap 12, extra vertical padding | a few buttons or controls side by side | |
64
- | `matrix` | centered grid of labelled cells: each direct child is a row, its children are cells (specimen above its caption); columns (up to 12) line up across rows, are never narrower than their content and grow to 320 / 160 / 128px for 1 / 2 / 3+ columns, so width-less specimens (Slider, `width: 100%` blocks) get a real cell; centered vertically too; when the grid is wider than the stage (a phone frame) each row wraps its cells, centered (`data-matrix-wrap` on the stage) | variant, size and state matrices | |
64
+ | `matrix` | centered grid of labelled cells: each direct child is a row, its children are cells (specimen above its caption); columns (up to 12) line up across rows, are never narrower than their content and grow to 320 / 160 / 128px for 1 / 2 / 3+ columns, so width-less specimens (Slider, `width: 100%` blocks) get a real cell; centered vertically too; when the grid is wider than the stage (a phone frame) each row wraps its cells, centered (`data-matrix-wrap` on the stage), and a one-column matrix keeps its cells at the one-column measure (or the stage, when narrower) | variant, size and state matrices | |
65
65
  | `matrix-wide` | the same rows of labelled cells, one cell under another, each as wide as the stage up to the stack measure (`10 × --prime-space-16`), the caption under the specimen | matrices of specimens as wide as their container: tabs, toolbars, tables | |
66
66
 
67
67
  ### viewport
@@ -1,4 +1,4 @@
1
- /* Record editor: the sections are PageContent.Section layout="aside"; here only the panels' insides. */
1
+ /* Record editor: the sections are Page.Section layout="aside"; here only the panels' insides. */
2
2
 
3
3
  /* Two groups in one panel, a group apart. */
4
4
  .groups {
@@ -9,7 +9,7 @@ import {
9
9
  Icon,
10
10
  type IconName,
11
11
  Input,
12
- PageContent,
12
+ Page,
13
13
  Select,
14
14
  Textarea,
15
15
  } from "prime-ui-kit";
@@ -121,20 +121,20 @@ export default function FieldListScreenExample() {
121
121
  };
122
122
 
123
123
  return (
124
- <PageContent.Root maxWidth="wide" aria-labelledby="plan-title">
125
- <PageContent.Header>
126
- <PageContent.Title id="plan-title">Тариф «Команда»</PageContent.Title>
127
- <PageContent.Description>
128
- Так тариф выглядит на странице цен и в счетах.
129
- </PageContent.Description>
130
- <PageContent.Actions>
124
+ <Page.Root maxWidth="wide" aria-labelledby="plan-title">
125
+ <Page.Header>
126
+ <Page.Heading>
127
+ <Page.Title id="plan-title">Тариф «Команда»</Page.Title>
128
+ <Page.Description>Так тариф выглядит на странице цен и в счетах.</Page.Description>
129
+ </Page.Heading>
130
+ <Page.Actions>
131
131
  <Button.Root type="submit" form={formId} loading={saving}>
132
132
  {saved ? "Сохранено" : "Сохранить тариф"}
133
133
  </Button.Root>
134
- </PageContent.Actions>
135
- </PageContent.Header>
136
- <PageContent.Body>
137
- <PageContent.Section layout="aside" label="Основное">
134
+ </Page.Actions>
135
+ </Page.Header>
136
+ <Page.Body>
137
+ <Page.Section layout="aside" label="Основное">
138
138
  <form id={formId} noValidate onSubmit={save}>
139
139
  <Card.Root variant="panel">
140
140
  <Card.Body>
@@ -155,9 +155,9 @@ export default function FieldListScreenExample() {
155
155
  </Card.Body>
156
156
  </Card.Root>
157
157
  </form>
158
- </PageContent.Section>
158
+ </Page.Section>
159
159
 
160
- <PageContent.Section layout="aside" label="Характеристики">
160
+ <Page.Section layout="aside" label="Характеристики">
161
161
  <Card.Root variant="panel">
162
162
  <Card.Body>
163
163
  <FieldList
@@ -230,9 +230,9 @@ export default function FieldListScreenExample() {
230
230
  />
231
231
  </Card.Body>
232
232
  </Card.Root>
233
- </PageContent.Section>
233
+ </Page.Section>
234
234
 
235
- <PageContent.Section layout="aside" label="Стоимость">
235
+ <Page.Section layout="aside" label="Стоимость">
236
236
  <Card.Root variant="panel">
237
237
  <Card.Body className={styles.groups}>
238
238
  <Fieldset label="За месяц" disabled={saving}>
@@ -309,8 +309,8 @@ export default function FieldListScreenExample() {
309
309
  </Fieldset>
310
310
  </Card.Body>
311
311
  </Card.Root>
312
- </PageContent.Section>
313
- </PageContent.Body>
314
- </PageContent.Root>
312
+ </Page.Section>
313
+ </Page.Body>
314
+ </Page.Root>
315
315
  );
316
316
  }
@@ -14,7 +14,7 @@
14
14
  ## When not to use
15
15
  - One choice among options with a heading → [Radio](../radio/COMPONENT.md) `Radio.Group label`, a [SegmentedControl](../segmented-control/COMPONENT.md) or [ButtonGroup](../button-group/COMPONENT.md) `label`.
16
16
  - A bounded block with a surface (a settings panel) → [Card](../card/COMPONENT.md) `Card.Root`; a Fieldset inside it groups the fields.
17
- - A page section with a title and actions → [PageContent](../page-content/COMPONENT.md) sections.
17
+ - A page section with a title and actions → [Page](../../layout/page/COMPONENT.md) sections (`Page.Section`).
18
18
  - A group of settings with a title and a trailing control (a «Сбросить» button, a master switch) → `Card.Root variant="panel"` with `Card.Header` (`Card.Title` + the control) and the Fieldset in `Card.Body`, named by the title (`aria-labelledby`).
19
19
  - A single field's label → the field's own `label`.
20
20
 
@@ -14,7 +14,7 @@ export default function FieldsetStatesExample() {
14
14
  <Fieldset label="Сделка" disabled={state.disabled}>
15
15
  <Input.Root label="Название">
16
16
  <Input.Wrapper>
17
- <Input.Field defaultValue="Годовая лицензия, 40 мест" />
17
+ <Input.Field defaultValue="Лицензия, 40 мест" />
18
18
  </Input.Wrapper>
19
19
  </Input.Root>
20
20
  <SegmentedControl.Root label="Тип" defaultValue="new">
@@ -424,7 +424,7 @@ Also `data-size`, `data-variant` on the zone, `data-size` on Item, `data-status`
424
424
  | [controlled.tsx](examples/controlled.tsx) | Documents of a deal in one list: the files already on the server and new uploads after them, saved on every change, and a button brings back the saved set — `value`, `onValueChange`, `queue`. |
425
425
  | [in-form.tsx](examples/in-form.tsx) | A contract upload form: submit checks the required scan, its error shakes in and leaves once a file is picked or removed — `required`, `error`, `name`, `value`. |
426
426
  | [narrow.tsx](examples/narrow.tsx) | In a phone-width column the zone text wraps, a long file name truncates, and a gallery goes three across and then two, the cover keeping two columns and the remove buttons shown without hover — `layout`, `cover`. |
427
- | [screen.tsx](examples/screen.tsx) | A media library of a catalog object as a work screen: the title, the object and a PageToolbar with sections, search, order and upload in the app header; uploads in FileUpload tiles through a queue; a grid of Thumbnails that open MediaViewer out of the tile or are picked for bulk download and delete; a Skeleton first load and a filtered empty state in a Crossfade — `trigger`, `layout`. |
427
+ | [screen.tsx](examples/screen.tsx) | A media library of a catalog object as a work screen: the title, the object and a toolbar with sections, search, order and upload in its top bar; uploads in FileUpload tiles through a queue; a grid of Thumbnails that open MediaViewer out of the tile or are picked for bulk download and delete; a Skeleton first load and a filtered empty state in a Crossfade — `trigger`, `layout`. |
428
428
 
429
429
  ## Mistakes
430
430
  - A `Label` and a `Hint` placed around the zone by hand → pass `label`, `hint`, `error`.
@@ -1,5 +1,5 @@
1
- /* Media library: a work screen — the app header carries the title and the tools; this module lays
2
- out the library block only, the page rhythm comes from PageContent. */
1
+ /* Media library: a work screen — the page top bar carries the title and the tools; this module lays
2
+ out the library block only, the page rhythm comes from Page. */
3
3
 
4
4
  .bar {
5
5
  display: flex;