prime-ui-kit 0.13.1 → 0.15.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 (609) hide show
  1. package/README.md +20 -20
  2. package/dist/chunks/{chunk-XNOJEX55.js → chunk-2IKH55MI.js} +1 -1
  3. package/dist/chunks/{chunk-JV2KB5JZ.js → chunk-THFZIHKU.js} +3761 -3041
  4. package/dist/chunks/{chunk-PK2GC77E.js → chunk-XJAVS6FH.js} +213 -188
  5. package/dist/color-picker.js +2 -2
  6. package/dist/components/banner/Banner.d.ts +5 -2
  7. package/dist/components/chart-frame/ChartFrame.d.ts +19 -6
  8. package/dist/components/chat/Chat.d.ts +2 -2
  9. package/dist/components/chat/ChatPinned.d.ts +2 -2
  10. package/dist/components/chat/MessageList.d.ts +1 -1
  11. package/dist/components/chat/chatContext.d.ts +1 -1
  12. package/dist/components/dnd/Dnd.d.ts +1 -1
  13. package/dist/components/field-list/FieldList.d.ts +90 -0
  14. package/dist/components/index.d.ts +3 -1
  15. package/dist/components/input/Input.d.ts +2 -2
  16. package/dist/components/kanban/Kanban.d.ts +6 -3
  17. package/dist/components/login-form/LoginForm.d.ts +5 -1
  18. package/dist/components/page-content/PageContent.d.ts +55 -4
  19. package/dist/components/sparkline/Sparkline.d.ts +64 -15
  20. package/dist/components/sparkline/geometry.d.ts +26 -0
  21. package/dist/components/tooltip/Tooltip.d.ts +5 -2
  22. package/dist/hooks/usePosition.d.ts +15 -4
  23. package/dist/index.css +1 -1
  24. package/dist/index.js +4 -2
  25. package/dist/internal/ChartTooltip.d.ts +26 -0
  26. package/dist/internal/FieldAction.d.ts +6 -7
  27. package/dist/internal/fieldCell.d.ts +21 -0
  28. package/dist/internal/messageList.d.ts +2 -2
  29. package/dist/internal/palette.d.ts +7 -0
  30. package/dist/internal/swatch.d.ts +6 -2
  31. package/dist/layout/app-header/AppHeader.d.ts +9 -28
  32. package/dist/layout/index.d.ts +1 -1
  33. package/dist/skill/SKILL.md +32 -20
  34. package/dist/skill/anti-slop.md +77 -4
  35. package/dist/skill/api-contract.md +2 -2
  36. package/dist/skill/cheatsheet.md +33 -7
  37. package/dist/skill/checklist.md +28 -6
  38. package/dist/skill/choosing.md +17 -14
  39. package/dist/skill/components.md +9 -15
  40. package/dist/skill/composition.md +301 -61
  41. package/dist/skill/foundations.md +9 -7
  42. package/dist/skill/layouts.md +70 -37
  43. package/dist/skill/reference/components/avatar/COMPONENT.md +4 -4
  44. package/dist/skill/reference/components/avatar/examples/presence.tsx +1 -1
  45. package/dist/skill/reference/components/avatar/examples/states.tsx +5 -5
  46. package/dist/skill/reference/components/badge/examples/applied-filters.tsx +13 -19
  47. package/dist/skill/reference/components/badge/examples/examples.module.css +1 -8
  48. package/dist/skill/reference/components/badge/examples/server-tags.tsx +2 -6
  49. package/dist/skill/reference/components/banner/COMPONENT.md +6 -6
  50. package/dist/skill/reference/components/banner/examples/dismissible.tsx +22 -11
  51. package/dist/skill/reference/components/banner/examples/examples.module.css +4 -8
  52. package/dist/skill/reference/components/banner/examples/narrow.tsx +1 -1
  53. package/dist/skill/reference/components/banner/examples/page-strip.tsx +16 -22
  54. package/dist/skill/reference/components/breadcrumb/COMPONENT.md +5 -4
  55. package/dist/skill/reference/components/breadcrumb/examples/ellipsis.tsx +2 -2
  56. package/dist/skill/reference/components/breadcrumb/examples/overflow.tsx +1 -1
  57. package/dist/skill/reference/components/button-group/COMPONENT.md +2 -2
  58. package/dist/skill/reference/components/button-group/examples/in-form.tsx +22 -2
  59. package/dist/skill/reference/components/button-group/examples/states.tsx +10 -1
  60. package/dist/skill/reference/components/card/COMPONENT.md +7 -5
  61. package/dist/skill/reference/components/card/examples/examples.module.css +0 -28
  62. package/dist/skill/reference/components/card/examples/kpi-media.tsx +13 -11
  63. package/dist/skill/reference/components/card/examples/narrow.tsx +1 -1
  64. package/dist/skill/reference/components/card/examples/panel-chart.tsx +45 -22
  65. package/dist/skill/reference/components/card/examples/screen.module.css +14 -0
  66. package/dist/skill/reference/components/card/examples/screen.tsx +362 -0
  67. package/dist/skill/reference/components/card/examples/variants.tsx +15 -1
  68. package/dist/skill/reference/components/chart-frame/COMPONENT.md +12 -8
  69. package/dist/skill/reference/components/chart-frame/examples/fill-height.tsx +119 -0
  70. package/dist/skill/reference/components/chart-frame/examples/states.tsx +3 -1
  71. package/dist/skill/reference/components/chart-frame/examples/tooltip.tsx +20 -24
  72. package/dist/skill/reference/components/chat/COMPONENT.md +6 -4
  73. package/dist/skill/reference/components/chat/examples/group-chat.tsx +15 -2
  74. package/dist/skill/reference/components/chat/examples/reactions.tsx +121 -0
  75. package/dist/skill/reference/components/chat/examples/screen.module.css +9 -0
  76. package/dist/skill/{patterns/chat.tsx → reference/components/chat/examples/screen.tsx} +187 -350
  77. package/dist/skill/reference/components/chat/examples/search.tsx +1 -1
  78. package/dist/skill/reference/components/chat-list/COMPONENT.md +2 -1
  79. package/dist/skill/reference/components/chat-list/examples/links.tsx +72 -0
  80. package/dist/skill/reference/components/checkbox/COMPONENT.md +1 -1
  81. package/dist/skill/reference/components/checkbox/examples/examples.module.css +5 -1
  82. package/dist/skill/reference/components/checkbox/examples/indicator.tsx +37 -9
  83. package/dist/skill/reference/components/checkbox/examples/states.tsx +6 -1
  84. package/dist/skill/reference/components/color-field/COMPONENT.md +1 -1
  85. package/dist/skill/reference/components/color-picker/COMPONENT.md +6 -5
  86. package/dist/skill/reference/components/color-picker/examples/controlled-open.tsx +37 -0
  87. package/dist/skill/reference/components/color-picker/examples/presets.tsx +2 -2
  88. package/dist/skill/reference/components/color-picker/examples/states.tsx +23 -14
  89. package/dist/skill/reference/components/color-swatches/COMPONENT.md +1 -0
  90. package/dist/skill/reference/components/composer/COMPONENT.md +2 -1
  91. package/dist/skill/reference/components/composer/examples/attach-menu.tsx +78 -0
  92. package/dist/skill/reference/components/composer/examples/attachments.tsx +2 -2
  93. package/dist/skill/reference/components/crossfade/COMPONENT.md +1 -0
  94. package/dist/skill/{patterns/screen-states.module.css → reference/components/crossfade/examples/screen.module.css} +3 -17
  95. package/dist/skill/reference/components/crossfade/examples/screen.tsx +197 -0
  96. package/dist/skill/reference/components/data-table/COMPONENT.md +3 -2
  97. package/dist/skill/reference/components/data-table/examples/detail-panel.tsx +36 -37
  98. package/dist/skill/reference/components/data-table/examples/examples.module.css +0 -12
  99. package/dist/skill/reference/components/data-table/examples/numeric.tsx +36 -4
  100. package/dist/skill/reference/components/data-table/examples/overview.tsx +1 -0
  101. package/dist/skill/reference/components/data-table/examples/row-open.tsx +7 -36
  102. package/dist/skill/{patterns/list-page.module.css → reference/components/data-table/examples/screen.module.css} +1 -7
  103. package/dist/skill/{patterns/list-page.tsx → reference/components/data-table/examples/screen.tsx} +84 -64
  104. package/dist/skill/reference/components/datepicker/COMPONENT.md +6 -4
  105. package/dist/skill/reference/components/datepicker/examples/examples.module.css +2 -6
  106. package/dist/skill/reference/components/datepicker/examples/in-form.tsx +47 -55
  107. package/dist/skill/reference/components/datepicker/examples/locale.tsx +35 -0
  108. package/dist/skill/reference/components/datepicker/examples/range-presets.tsx +11 -2
  109. package/dist/skill/reference/components/datepicker/examples/states.tsx +9 -1
  110. package/dist/skill/reference/components/description-list/COMPONENT.md +1 -0
  111. package/dist/skill/{patterns/detail-page.module.css → reference/components/description-list/examples/screen.module.css} +2 -12
  112. package/dist/skill/reference/components/description-list/examples/screen.tsx +214 -0
  113. package/dist/skill/reference/components/description-list/examples/structure.tsx +1 -1
  114. package/dist/skill/reference/components/digit-input/COMPONENT.md +3 -1
  115. package/dist/skill/reference/components/digit-input/examples/states.tsx +3 -1
  116. package/dist/skill/reference/components/digit-input/examples/without-focus-ring.tsx +13 -0
  117. package/dist/skill/reference/components/divider/examples/with-icon.tsx +2 -2
  118. package/dist/skill/reference/components/dnd/COMPONENT.md +7 -5
  119. package/dist/skill/reference/components/dnd/examples/drop-zones.tsx +82 -49
  120. package/dist/skill/reference/components/dnd/examples/examples.module.css +50 -0
  121. package/dist/skill/reference/components/dnd/examples/states.tsx +54 -0
  122. package/dist/skill/reference/components/dnd/examples/table.tsx +113 -0
  123. package/dist/skill/reference/components/drawer/COMPONENT.md +1 -0
  124. package/dist/skill/reference/components/drawer/examples/dismiss.tsx +5 -3
  125. package/dist/skill/reference/components/drawer/examples/examples.module.css +0 -13
  126. package/dist/skill/reference/components/drawer/examples/header-actions.tsx +5 -9
  127. package/dist/skill/reference/components/drawer/examples/overview.tsx +6 -18
  128. package/dist/skill/reference/components/drawer/examples/screen.tsx +298 -0
  129. package/dist/skill/reference/components/dropdown/examples/examples.module.css +1 -5
  130. package/dist/skill/reference/components/empty-page/COMPONENT.md +1 -1
  131. package/dist/skill/reference/components/empty-page/examples/region-error.tsx +8 -2
  132. package/dist/skill/reference/components/example-frame/COMPONENT.md +3 -2
  133. package/dist/skill/reference/components/example-frame/examples/initial-view.tsx +44 -0
  134. package/dist/skill/reference/components/field-list/COMPONENT.md +165 -0
  135. package/dist/skill/reference/components/field-list/examples/base-row.tsx +76 -0
  136. package/dist/skill/reference/components/field-list/examples/controlled.tsx +72 -0
  137. package/dist/skill/reference/components/field-list/examples/errors.tsx +88 -0
  138. package/dist/skill/reference/components/field-list/examples/examples.module.css +34 -0
  139. package/dist/skill/reference/components/field-list/examples/limits.tsx +55 -0
  140. package/dist/skill/reference/components/field-list/examples/locked.tsx +139 -0
  141. package/dist/skill/reference/components/field-list/examples/narrow.tsx +68 -0
  142. package/dist/skill/reference/components/field-list/examples/overview.tsx +66 -0
  143. package/dist/skill/reference/components/field-list/examples/reorder.tsx +42 -0
  144. package/dist/skill/reference/components/field-list/examples/screen.module.css +18 -0
  145. package/dist/skill/reference/components/field-list/examples/screen.tsx +316 -0
  146. package/dist/skill/reference/components/field-list/examples/sizes.tsx +42 -0
  147. package/dist/skill/reference/components/field-list/examples/states.tsx +51 -0
  148. package/dist/skill/reference/components/file-upload/COMPONENT.md +7 -6
  149. package/dist/skill/reference/components/file-upload/examples/custom-body.tsx +2 -1
  150. package/dist/skill/reference/components/file-upload/examples/examples.module.css +1 -7
  151. package/dist/skill/reference/components/file-upload/examples/file-cards.tsx +10 -1
  152. package/dist/skill/reference/components/file-upload/examples/gallery.tsx +2 -2
  153. package/dist/skill/reference/components/file-upload/examples/in-form.tsx +4 -9
  154. package/dist/skill/reference/components/file-upload/examples/overview.tsx +5 -1
  155. package/dist/skill/reference/components/file-upload/examples/row-parts.tsx +24 -1
  156. package/dist/skill/{patterns/media-library.module.css → reference/components/file-upload/examples/screen.module.css} +2 -23
  157. package/dist/skill/reference/components/file-upload/examples/screen.tsx +646 -0
  158. package/dist/skill/reference/components/file-upload/examples/states.tsx +6 -2
  159. package/dist/skill/reference/components/file-upload/examples/validation.tsx +11 -2
  160. package/dist/skill/reference/components/file-upload/examples/variants.tsx +3 -20
  161. package/dist/skill/reference/components/gantt/COMPONENT.md +2 -1
  162. package/dist/skill/reference/components/gantt/examples/screen.module.css +14 -0
  163. package/dist/skill/{patterns/schedule.tsx → reference/components/gantt/examples/screen.tsx} +174 -170
  164. package/dist/skill/reference/components/gantt/examples/states.tsx +6 -2
  165. package/dist/skill/reference/components/input/COMPONENT.md +2 -2
  166. package/dist/skill/reference/components/input/examples/examples.module.css +2 -13
  167. package/dist/skill/reference/components/input/examples/in-form.tsx +1 -9
  168. package/dist/skill/reference/components/input/examples/password-strength.tsx +34 -8
  169. package/dist/skill/reference/components/input/examples/states.tsx +6 -1
  170. package/dist/skill/reference/components/kanban/COMPONENT.md +16 -11
  171. package/dist/skill/reference/components/kanban/examples/columns.tsx +8 -5
  172. package/dist/skill/reference/components/kanban/examples/limits.tsx +2 -1
  173. package/dist/skill/reference/components/kanban/examples/screen.module.css +17 -0
  174. package/dist/skill/{patterns/kanban-board.tsx → reference/components/kanban/examples/screen.tsx} +132 -172
  175. package/dist/skill/reference/components/kanban/examples/states.tsx +17 -6
  176. package/dist/skill/reference/components/kanban/examples/variants.tsx +16 -8
  177. package/dist/skill/reference/components/list/COMPONENT.md +1 -1
  178. package/dist/skill/reference/components/login-form/COMPONENT.md +6 -5
  179. package/dist/skill/reference/components/login-form/examples/examples.module.css +2 -21
  180. package/dist/skill/reference/components/login-form/examples/forgot-password.tsx +28 -32
  181. package/dist/skill/reference/components/login-form/examples/narrow.tsx +1 -1
  182. package/dist/skill/reference/components/login-form/examples/overview.tsx +45 -47
  183. package/dist/skill/reference/components/login-form/examples/register.tsx +64 -68
  184. package/dist/skill/reference/components/login-form/examples/reset-password.tsx +50 -47
  185. package/dist/skill/reference/components/login-form/examples/sizes.tsx +4 -6
  186. package/dist/skill/reference/components/login-form/examples/states.tsx +53 -57
  187. package/dist/skill/reference/components/login-form/examples/structure.tsx +18 -22
  188. package/dist/skill/reference/components/login-form/examples/verification-code.tsx +41 -45
  189. package/dist/skill/reference/components/media-viewer/COMPONENT.md +3 -3
  190. package/dist/skill/reference/components/media-viewer/examples/dismiss.tsx +5 -1
  191. package/dist/skill/reference/components/message/COMPONENT.md +6 -5
  192. package/dist/skill/reference/components/message/examples/file.tsx +5 -1
  193. package/dist/skill/reference/components/message/examples/media-open.tsx +48 -0
  194. package/dist/skill/reference/components/message/examples/status.tsx +21 -3
  195. package/dist/skill/reference/components/message/examples/text-formatting.tsx +7 -1
  196. package/dist/skill/reference/components/modal/COMPONENT.md +2 -1
  197. package/dist/skill/reference/components/modal/examples/custom-container.tsx +20 -20
  198. package/dist/skill/reference/components/modal/examples/dismiss.tsx +5 -3
  199. package/dist/skill/reference/components/modal/examples/enter-key.tsx +116 -0
  200. package/dist/skill/reference/components/modal/examples/examples.module.css +7 -13
  201. package/dist/skill/reference/components/modal/examples/structure.tsx +5 -2
  202. package/dist/skill/reference/components/native-select/COMPONENT.md +1 -1
  203. package/dist/skill/reference/components/native-select/examples/states.tsx +5 -1
  204. package/dist/skill/reference/components/notification/COMPONENT.md +2 -1
  205. package/dist/skill/reference/components/notification/examples/dismiss.tsx +2 -2
  206. package/dist/skill/reference/components/page-content/COMPONENT.md +71 -14
  207. package/dist/skill/reference/components/page-content/examples/grid.tsx +107 -0
  208. package/dist/skill/reference/components/page-content/examples/list-detail.tsx +0 -3
  209. package/dist/skill/reference/components/page-content/examples/overview.tsx +2 -2
  210. package/dist/skill/{patterns/settings-page.module.css → reference/components/page-content/examples/screen.module.css} +1 -21
  211. package/dist/skill/{patterns/settings-page.tsx → reference/components/page-content/examples/screen.tsx} +61 -82
  212. package/dist/skill/reference/components/page-content/examples/sections.tsx +81 -0
  213. package/dist/skill/reference/components/page-content/examples/variants.tsx +4 -11
  214. package/dist/skill/reference/components/page-toolbar/COMPONENT.md +18 -16
  215. package/dist/skill/reference/components/page-toolbar/examples/narrow.tsx +6 -3
  216. package/dist/skill/reference/components/pagination/examples/controlled.tsx +29 -29
  217. package/dist/skill/reference/components/pagination/examples/examples.module.css +0 -2
  218. package/dist/skill/reference/components/progress-bar/COMPONENT.md +1 -1
  219. package/dist/skill/reference/components/progress-bar/examples/segments.tsx +2 -2
  220. package/dist/skill/reference/components/progress-circle/COMPONENT.md +1 -1
  221. package/dist/skill/reference/components/progress-circle/examples/segments.tsx +8 -3
  222. package/dist/skill/reference/components/radio/COMPONENT.md +1 -0
  223. package/dist/skill/reference/components/radio/examples/examples.module.css +14 -0
  224. package/dist/skill/reference/components/radio/examples/in-form.tsx +45 -0
  225. package/dist/skill/reference/components/scroll-container/COMPONENT.md +1 -0
  226. package/dist/skill/reference/components/scroll-container/examples/auto-scroll.tsx +3 -3
  227. package/dist/skill/reference/components/scroll-container/examples/chat.tsx +3 -3
  228. package/dist/skill/reference/components/scroll-container/examples/edges.tsx +6 -3
  229. package/dist/skill/reference/components/scroll-container/examples/examples.module.css +4 -17
  230. package/dist/skill/reference/components/scroll-container/examples/load-more.tsx +51 -0
  231. package/dist/skill/reference/components/scroll-container/examples/lock.tsx +3 -5
  232. package/dist/skill/reference/components/scroll-container/examples/overscroll.tsx +3 -3
  233. package/dist/skill/reference/components/scroll-container/examples/overview.tsx +3 -3
  234. package/dist/skill/reference/components/scroll-container/examples/scrollbar.tsx +13 -7
  235. package/dist/skill/reference/components/scroll-container/examples/variants.tsx +13 -7
  236. package/dist/skill/reference/components/segmented-control/COMPONENT.md +3 -2
  237. package/dist/skill/reference/components/segmented-control/examples/in-form.tsx +5 -1
  238. package/dist/skill/reference/components/segmented-control/examples/states.tsx +10 -1
  239. package/dist/skill/reference/components/select/COMPONENT.md +5 -3
  240. package/dist/skill/reference/components/select/examples/examples.module.css +2 -7
  241. package/dist/skill/reference/components/select/examples/icon-only.tsx +38 -0
  242. package/dist/skill/reference/components/select/examples/states.tsx +13 -1
  243. package/dist/skill/reference/components/sheet/COMPONENT.md +2 -0
  244. package/dist/skill/reference/components/sheet/examples/guard.tsx +72 -0
  245. package/dist/skill/reference/components/sheet/examples/header-actions.tsx +56 -0
  246. package/dist/skill/reference/components/slider/COMPONENT.md +2 -1
  247. package/dist/skill/reference/components/slider/examples/examples.module.css +8 -0
  248. package/dist/skill/reference/components/slider/examples/in-form.tsx +47 -0
  249. package/dist/skill/reference/components/slider/examples/states.tsx +4 -1
  250. package/dist/skill/reference/components/smart-filter/COMPONENT.md +1 -1
  251. package/dist/skill/reference/components/smart-filter/examples/controlled.tsx +3 -3
  252. package/dist/skill/reference/components/smart-filter/examples/ranges.tsx +44 -10
  253. package/dist/skill/reference/components/sparkline/COMPONENT.md +83 -30
  254. package/dist/skill/reference/components/sparkline/examples/compact.tsx +1 -1
  255. package/dist/skill/reference/components/sparkline/examples/curve.tsx +28 -0
  256. package/dist/skill/reference/components/sparkline/examples/gaps.tsx +33 -0
  257. package/dist/skill/reference/components/sparkline/examples/overview.tsx +11 -2
  258. package/dist/skill/reference/components/sparkline/examples/period.tsx +7 -2
  259. package/dist/skill/reference/components/sparkline/examples/reference.tsx +38 -0
  260. package/dist/skill/reference/components/sparkline/examples/variants.tsx +2 -2
  261. package/dist/skill/reference/components/tabs/COMPONENT.md +1 -1
  262. package/dist/skill/reference/components/tabs/examples/examples.module.css +0 -6
  263. package/dist/skill/reference/components/tabs/examples/in-drawer.tsx +11 -13
  264. package/dist/skill/reference/components/tabs/examples/sizes.tsx +1 -1
  265. package/dist/skill/reference/components/tag-select/COMPONENT.md +1 -1
  266. package/dist/skill/reference/components/tag-select/examples/states.tsx +8 -1
  267. package/dist/skill/reference/components/textarea/COMPONENT.md +1 -1
  268. package/dist/skill/reference/components/textarea/examples/examples.module.css +0 -6
  269. package/dist/skill/reference/components/textarea/examples/in-form.tsx +1 -9
  270. package/dist/skill/reference/components/textarea/examples/states.tsx +2 -1
  271. package/dist/skill/reference/components/thumbnail/COMPONENT.md +2 -1
  272. package/dist/skill/reference/components/thumbnail/examples/examples.module.css +1 -1
  273. package/dist/skill/reference/components/thumbnail/examples/fit.tsx +24 -0
  274. package/dist/skill/reference/components/thumbnail/examples/video.tsx +20 -1
  275. package/dist/skill/reference/components/timeline/COMPONENT.md +1 -1
  276. package/dist/skill/reference/components/timeline/examples/examples.module.css +0 -8
  277. package/dist/skill/reference/components/timeline/examples/links.tsx +55 -14
  278. package/dist/skill/reference/components/timeline/examples/narrow.tsx +2 -2
  279. package/dist/skill/reference/components/timeline/examples/sizes.tsx +3 -3
  280. package/dist/skill/reference/components/timeline/examples/variants.tsx +4 -4
  281. package/dist/skill/reference/components/tooltip/COMPONENT.md +7 -5
  282. package/dist/skill/reference/components/tooltip/examples/placement.tsx +2 -1
  283. package/dist/skill/reference/components/tooltip/examples/toolbar.tsx +2 -2
  284. package/dist/skill/reference/components/typography/examples/weights.tsx +3 -0
  285. package/dist/skill/reference/components/video-note/COMPONENT.md +3 -3
  286. package/dist/skill/reference/components/video-note/examples/controlled.tsx +19 -2
  287. package/dist/skill/reference/components/video-note/examples/in-message.tsx +5 -2
  288. package/dist/skill/reference/components/visually-hidden/COMPONENT.md +2 -1
  289. package/dist/skill/reference/components/visually-hidden/examples/assertive.tsx +39 -0
  290. package/dist/skill/reference/components/voice-player/COMPONENT.md +3 -3
  291. package/dist/skill/reference/components/voice-player/examples/call-recording.tsx +19 -9
  292. package/dist/skill/reference/components/voice-player/examples/controlled.tsx +20 -3
  293. package/dist/skill/reference/layout/app-header/COMPONENT.md +46 -63
  294. package/dist/skill/reference/layout/app-header/examples/breadcrumbs.tsx +10 -9
  295. package/dist/skill/reference/layout/app-header/examples/examples.module.css +1 -1
  296. package/dist/skill/reference/layout/app-header/examples/in-app-shell.tsx +2 -3
  297. package/dist/skill/reference/layout/app-header/examples/narrow.tsx +4 -5
  298. package/dist/skill/reference/layout/app-header/examples/overview.tsx +8 -10
  299. package/dist/skill/reference/layout/app-header/examples/page-title.tsx +3 -10
  300. package/dist/skill/reference/layout/app-shell/COMPONENT.md +5 -4
  301. package/dist/skill/reference/layout/app-shell/examples/footer.tsx +2 -2
  302. package/dist/skill/reference/layout/app-shell/examples/overview.tsx +17 -32
  303. package/dist/skill/{patterns/app-shell.module.css → reference/layout/app-shell/examples/screen.module.css} +1 -8
  304. package/dist/skill/reference/layout/app-shell/examples/screen.tsx +262 -0
  305. package/dist/skill/reference/layout/app-shell/examples/template.tsx +31 -11
  306. package/dist/skill/reference/layout/bottom-nav/examples/floating-action.tsx +2 -2
  307. package/dist/skill/reference/layout/bottom-nav/examples/floating.tsx +2 -2
  308. package/dist/skill/reference/layout/bottom-nav/examples/in-app-shell.tsx +2 -2
  309. package/dist/skill/reference/layout/sidebar/COMPONENT.md +7 -4
  310. package/dist/skill/reference/layout/sidebar/examples/account.tsx +2 -2
  311. package/dist/skill/reference/layout/sidebar/examples/collapsible-groups.tsx +12 -4
  312. package/dist/skill/reference/layout/sidebar/examples/custom-part.tsx +53 -0
  313. package/dist/skill/reference/layout/sidebar/examples/examples.module.css +5 -0
  314. package/dist/skill/reference/layout/sidebar/examples/narrow.tsx +53 -0
  315. package/dist/skill/reference/layout/sidebar/examples/persist.tsx +57 -0
  316. package/dist/skill/reference/layout/sidebar/examples/router.tsx +14 -2
  317. package/dist/skill/reference/layout/sidebar/examples/structure.tsx +7 -2
  318. package/dist/skill/responsive.md +7 -5
  319. package/dist/skill/ux.md +145 -0
  320. package/dist/tokens/semantic.d.ts +2 -0
  321. package/package.json +1 -1
  322. package/src/components/avatar/COMPONENT.md +4 -4
  323. package/src/components/avatar/examples/presence.tsx +1 -1
  324. package/src/components/avatar/examples/states.tsx +5 -5
  325. package/src/components/badge/examples/applied-filters.tsx +13 -19
  326. package/src/components/badge/examples/examples.module.css +1 -8
  327. package/src/components/badge/examples/server-tags.tsx +2 -6
  328. package/src/components/banner/COMPONENT.md +6 -6
  329. package/src/components/banner/examples/dismissible.tsx +22 -11
  330. package/src/components/banner/examples/examples.module.css +4 -8
  331. package/src/components/banner/examples/narrow.tsx +1 -1
  332. package/src/components/banner/examples/page-strip.tsx +16 -22
  333. package/src/components/breadcrumb/COMPONENT.md +5 -4
  334. package/src/components/breadcrumb/examples/ellipsis.tsx +2 -2
  335. package/src/components/breadcrumb/examples/overflow.tsx +1 -1
  336. package/src/components/button-group/COMPONENT.md +2 -2
  337. package/src/components/button-group/examples/in-form.tsx +22 -2
  338. package/src/components/button-group/examples/states.tsx +10 -1
  339. package/src/components/card/COMPONENT.md +7 -5
  340. package/src/components/card/examples/examples.module.css +0 -28
  341. package/src/components/card/examples/kpi-media.tsx +13 -11
  342. package/src/components/card/examples/narrow.tsx +1 -1
  343. package/src/components/card/examples/panel-chart.tsx +45 -22
  344. package/src/components/card/examples/screen.module.css +14 -0
  345. package/src/components/card/examples/screen.tsx +362 -0
  346. package/src/components/card/examples/variants.tsx +15 -1
  347. package/src/components/chart-frame/COMPONENT.md +12 -8
  348. package/src/components/chart-frame/examples/fill-height.tsx +119 -0
  349. package/src/components/chart-frame/examples/states.tsx +3 -1
  350. package/src/components/chart-frame/examples/tooltip.tsx +20 -24
  351. package/src/components/chat/COMPONENT.md +6 -4
  352. package/src/components/chat/examples/group-chat.tsx +15 -2
  353. package/src/components/chat/examples/reactions.tsx +121 -0
  354. package/src/components/chat/examples/screen.module.css +9 -0
  355. package/src/components/chat/examples/screen.tsx +718 -0
  356. package/src/components/chat/examples/search.tsx +1 -1
  357. package/src/components/chat-list/COMPONENT.md +2 -1
  358. package/src/components/chat-list/examples/links.tsx +72 -0
  359. package/src/components/checkbox/COMPONENT.md +1 -1
  360. package/src/components/checkbox/examples/examples.module.css +5 -1
  361. package/src/components/checkbox/examples/indicator.tsx +37 -9
  362. package/src/components/checkbox/examples/states.tsx +6 -1
  363. package/src/components/color-field/COMPONENT.md +1 -1
  364. package/src/components/color-picker/COMPONENT.md +6 -5
  365. package/src/components/color-picker/examples/controlled-open.tsx +37 -0
  366. package/src/components/color-picker/examples/presets.tsx +2 -2
  367. package/src/components/color-picker/examples/states.tsx +23 -14
  368. package/src/components/color-swatches/COMPONENT.md +1 -0
  369. package/src/components/composer/COMPONENT.md +2 -1
  370. package/src/components/composer/examples/attach-menu.tsx +78 -0
  371. package/src/components/composer/examples/attachments.tsx +2 -2
  372. package/src/components/crossfade/COMPONENT.md +1 -0
  373. package/src/components/crossfade/examples/screen.module.css +40 -0
  374. package/src/components/crossfade/examples/screen.tsx +197 -0
  375. package/src/components/data-table/COMPONENT.md +3 -2
  376. package/src/components/data-table/examples/detail-panel.tsx +36 -37
  377. package/src/components/data-table/examples/examples.module.css +0 -12
  378. package/src/components/data-table/examples/numeric.tsx +36 -4
  379. package/src/components/data-table/examples/overview.tsx +1 -0
  380. package/src/components/data-table/examples/row-open.tsx +7 -36
  381. package/src/components/data-table/examples/screen.module.css +13 -0
  382. package/src/components/data-table/examples/screen.tsx +354 -0
  383. package/src/components/datepicker/COMPONENT.md +6 -4
  384. package/src/components/datepicker/examples/examples.module.css +2 -6
  385. package/src/components/datepicker/examples/in-form.tsx +47 -55
  386. package/src/components/datepicker/examples/locale.tsx +35 -0
  387. package/src/components/datepicker/examples/range-presets.tsx +11 -2
  388. package/src/components/datepicker/examples/states.tsx +9 -1
  389. package/src/components/description-list/COMPONENT.md +1 -0
  390. package/src/components/description-list/examples/screen.module.css +64 -0
  391. package/src/components/description-list/examples/screen.tsx +214 -0
  392. package/src/components/description-list/examples/structure.tsx +1 -1
  393. package/src/components/digit-input/COMPONENT.md +3 -1
  394. package/src/components/digit-input/examples/states.tsx +3 -1
  395. package/src/components/digit-input/examples/without-focus-ring.tsx +13 -0
  396. package/src/components/divider/examples/with-icon.tsx +2 -2
  397. package/src/components/dnd/COMPONENT.md +7 -5
  398. package/src/components/dnd/examples/drop-zones.tsx +82 -49
  399. package/src/components/dnd/examples/examples.module.css +50 -0
  400. package/src/components/dnd/examples/states.tsx +54 -0
  401. package/src/components/dnd/examples/table.tsx +113 -0
  402. package/src/components/drawer/COMPONENT.md +1 -0
  403. package/src/components/drawer/examples/dismiss.tsx +5 -3
  404. package/src/components/drawer/examples/examples.module.css +0 -13
  405. package/src/components/drawer/examples/header-actions.tsx +5 -9
  406. package/src/components/drawer/examples/overview.tsx +6 -18
  407. package/src/components/drawer/examples/screen.module.css +14 -0
  408. package/src/components/drawer/examples/screen.tsx +298 -0
  409. package/src/components/dropdown/examples/examples.module.css +1 -5
  410. package/src/components/empty-page/COMPONENT.md +1 -1
  411. package/src/components/empty-page/examples/region-error.tsx +8 -2
  412. package/src/components/example-frame/COMPONENT.md +3 -2
  413. package/src/components/example-frame/examples/initial-view.tsx +44 -0
  414. package/src/components/field-list/COMPONENT.md +165 -0
  415. package/src/components/field-list/examples/base-row.tsx +76 -0
  416. package/src/components/field-list/examples/controlled.tsx +72 -0
  417. package/src/components/field-list/examples/errors.tsx +88 -0
  418. package/src/components/field-list/examples/examples.module.css +34 -0
  419. package/src/components/field-list/examples/limits.tsx +55 -0
  420. package/src/components/field-list/examples/locked.tsx +139 -0
  421. package/src/components/field-list/examples/narrow.tsx +68 -0
  422. package/src/components/field-list/examples/overview.tsx +66 -0
  423. package/src/components/field-list/examples/reorder.tsx +42 -0
  424. package/src/components/field-list/examples/screen.module.css +18 -0
  425. package/src/components/field-list/examples/screen.tsx +316 -0
  426. package/src/components/field-list/examples/sizes.tsx +42 -0
  427. package/src/components/field-list/examples/states.tsx +51 -0
  428. package/src/components/file-upload/COMPONENT.md +7 -6
  429. package/src/components/file-upload/examples/custom-body.tsx +2 -1
  430. package/src/components/file-upload/examples/examples.module.css +1 -7
  431. package/src/components/file-upload/examples/file-cards.tsx +10 -1
  432. package/src/components/file-upload/examples/gallery.tsx +2 -2
  433. package/src/components/file-upload/examples/in-form.tsx +4 -9
  434. package/src/components/file-upload/examples/overview.tsx +5 -1
  435. package/src/components/file-upload/examples/row-parts.tsx +24 -1
  436. package/src/components/file-upload/examples/screen.module.css +45 -0
  437. package/src/components/file-upload/examples/screen.tsx +646 -0
  438. package/src/components/file-upload/examples/states.tsx +6 -2
  439. package/src/components/file-upload/examples/validation.tsx +11 -2
  440. package/src/components/file-upload/examples/variants.tsx +3 -20
  441. package/src/components/gantt/COMPONENT.md +2 -1
  442. package/src/components/gantt/examples/screen.module.css +14 -0
  443. package/src/components/gantt/examples/screen.tsx +726 -0
  444. package/src/components/gantt/examples/states.tsx +6 -2
  445. package/src/components/input/COMPONENT.md +2 -2
  446. package/src/components/input/examples/examples.module.css +2 -13
  447. package/src/components/input/examples/in-form.tsx +1 -9
  448. package/src/components/input/examples/password-strength.tsx +34 -8
  449. package/src/components/input/examples/states.tsx +6 -1
  450. package/src/components/kanban/COMPONENT.md +16 -11
  451. package/src/components/kanban/examples/columns.tsx +8 -5
  452. package/src/components/kanban/examples/limits.tsx +2 -1
  453. package/src/components/kanban/examples/screen.module.css +17 -0
  454. package/src/components/kanban/examples/screen.tsx +572 -0
  455. package/src/components/kanban/examples/states.tsx +17 -6
  456. package/src/components/kanban/examples/variants.tsx +16 -8
  457. package/src/components/list/COMPONENT.md +1 -1
  458. package/src/components/login-form/COMPONENT.md +6 -5
  459. package/src/components/login-form/examples/examples.module.css +2 -21
  460. package/src/components/login-form/examples/forgot-password.tsx +28 -32
  461. package/src/components/login-form/examples/narrow.tsx +1 -1
  462. package/src/components/login-form/examples/overview.tsx +45 -47
  463. package/src/components/login-form/examples/register.tsx +64 -68
  464. package/src/components/login-form/examples/reset-password.tsx +50 -47
  465. package/src/components/login-form/examples/sizes.tsx +4 -6
  466. package/src/components/login-form/examples/states.tsx +53 -57
  467. package/src/components/login-form/examples/structure.tsx +18 -22
  468. package/src/components/login-form/examples/verification-code.tsx +41 -45
  469. package/src/components/media-viewer/COMPONENT.md +3 -3
  470. package/src/components/media-viewer/examples/dismiss.tsx +5 -1
  471. package/src/components/message/COMPONENT.md +6 -5
  472. package/src/components/message/examples/file.tsx +5 -1
  473. package/src/components/message/examples/media-open.tsx +48 -0
  474. package/src/components/message/examples/status.tsx +21 -3
  475. package/src/components/message/examples/text-formatting.tsx +7 -1
  476. package/src/components/modal/COMPONENT.md +2 -1
  477. package/src/components/modal/examples/custom-container.tsx +20 -20
  478. package/src/components/modal/examples/dismiss.tsx +5 -3
  479. package/src/components/modal/examples/enter-key.tsx +116 -0
  480. package/src/components/modal/examples/examples.module.css +7 -13
  481. package/src/components/modal/examples/structure.tsx +5 -2
  482. package/src/components/native-select/COMPONENT.md +1 -1
  483. package/src/components/native-select/examples/states.tsx +5 -1
  484. package/src/components/notification/COMPONENT.md +2 -1
  485. package/src/components/notification/examples/dismiss.tsx +2 -2
  486. package/src/components/page-content/COMPONENT.md +71 -14
  487. package/src/components/page-content/examples/grid.tsx +107 -0
  488. package/src/components/page-content/examples/list-detail.tsx +0 -3
  489. package/src/components/page-content/examples/overview.tsx +2 -2
  490. package/src/components/page-content/examples/screen.module.css +27 -0
  491. package/src/components/page-content/examples/screen.tsx +196 -0
  492. package/src/components/page-content/examples/sections.tsx +81 -0
  493. package/src/components/page-content/examples/variants.tsx +4 -11
  494. package/src/components/page-toolbar/COMPONENT.md +18 -16
  495. package/src/components/page-toolbar/examples/narrow.tsx +6 -3
  496. package/src/components/pagination/examples/controlled.tsx +29 -29
  497. package/src/components/pagination/examples/examples.module.css +0 -2
  498. package/src/components/progress-bar/COMPONENT.md +1 -1
  499. package/src/components/progress-bar/examples/segments.tsx +2 -2
  500. package/src/components/progress-circle/COMPONENT.md +1 -1
  501. package/src/components/progress-circle/examples/segments.tsx +8 -3
  502. package/src/components/radio/COMPONENT.md +1 -0
  503. package/src/components/radio/examples/examples.module.css +14 -0
  504. package/src/components/radio/examples/in-form.tsx +45 -0
  505. package/src/components/scroll-container/COMPONENT.md +1 -0
  506. package/src/components/scroll-container/examples/auto-scroll.tsx +3 -3
  507. package/src/components/scroll-container/examples/chat.tsx +3 -3
  508. package/src/components/scroll-container/examples/edges.tsx +6 -3
  509. package/src/components/scroll-container/examples/examples.module.css +4 -17
  510. package/src/components/scroll-container/examples/load-more.tsx +51 -0
  511. package/src/components/scroll-container/examples/lock.tsx +3 -5
  512. package/src/components/scroll-container/examples/overscroll.tsx +3 -3
  513. package/src/components/scroll-container/examples/overview.tsx +3 -3
  514. package/src/components/scroll-container/examples/scrollbar.tsx +13 -7
  515. package/src/components/scroll-container/examples/variants.tsx +13 -7
  516. package/src/components/segmented-control/COMPONENT.md +3 -2
  517. package/src/components/segmented-control/examples/in-form.tsx +5 -1
  518. package/src/components/segmented-control/examples/states.tsx +10 -1
  519. package/src/components/select/COMPONENT.md +5 -3
  520. package/src/components/select/examples/examples.module.css +2 -7
  521. package/src/components/select/examples/icon-only.tsx +38 -0
  522. package/src/components/select/examples/states.tsx +13 -1
  523. package/src/components/sheet/COMPONENT.md +2 -0
  524. package/src/components/sheet/examples/guard.tsx +72 -0
  525. package/src/components/sheet/examples/header-actions.tsx +56 -0
  526. package/src/components/slider/COMPONENT.md +2 -1
  527. package/src/components/slider/examples/examples.module.css +8 -0
  528. package/src/components/slider/examples/in-form.tsx +47 -0
  529. package/src/components/slider/examples/states.tsx +4 -1
  530. package/src/components/smart-filter/COMPONENT.md +1 -1
  531. package/src/components/smart-filter/examples/controlled.tsx +3 -3
  532. package/src/components/smart-filter/examples/ranges.tsx +44 -10
  533. package/src/components/sparkline/COMPONENT.md +83 -30
  534. package/src/components/sparkline/examples/compact.tsx +1 -1
  535. package/src/components/sparkline/examples/curve.tsx +28 -0
  536. package/src/components/sparkline/examples/gaps.tsx +33 -0
  537. package/src/components/sparkline/examples/overview.tsx +11 -2
  538. package/src/components/sparkline/examples/period.tsx +7 -2
  539. package/src/components/sparkline/examples/reference.tsx +38 -0
  540. package/src/components/sparkline/examples/variants.tsx +2 -2
  541. package/src/components/tabs/COMPONENT.md +1 -1
  542. package/src/components/tabs/examples/examples.module.css +0 -6
  543. package/src/components/tabs/examples/in-drawer.tsx +11 -13
  544. package/src/components/tabs/examples/sizes.tsx +1 -1
  545. package/src/components/tag-select/COMPONENT.md +1 -1
  546. package/src/components/tag-select/examples/states.tsx +8 -1
  547. package/src/components/textarea/COMPONENT.md +1 -1
  548. package/src/components/textarea/examples/examples.module.css +0 -6
  549. package/src/components/textarea/examples/in-form.tsx +1 -9
  550. package/src/components/textarea/examples/states.tsx +2 -1
  551. package/src/components/thumbnail/COMPONENT.md +2 -1
  552. package/src/components/thumbnail/examples/examples.module.css +1 -1
  553. package/src/components/thumbnail/examples/fit.tsx +24 -0
  554. package/src/components/thumbnail/examples/video.tsx +20 -1
  555. package/src/components/timeline/COMPONENT.md +1 -1
  556. package/src/components/timeline/examples/examples.module.css +0 -8
  557. package/src/components/timeline/examples/links.tsx +55 -14
  558. package/src/components/timeline/examples/narrow.tsx +2 -2
  559. package/src/components/timeline/examples/sizes.tsx +3 -3
  560. package/src/components/timeline/examples/variants.tsx +4 -4
  561. package/src/components/tooltip/COMPONENT.md +7 -5
  562. package/src/components/tooltip/examples/placement.tsx +2 -1
  563. package/src/components/tooltip/examples/toolbar.tsx +2 -2
  564. package/src/components/typography/examples/weights.tsx +3 -0
  565. package/src/components/video-note/COMPONENT.md +3 -3
  566. package/src/components/video-note/examples/controlled.tsx +19 -2
  567. package/src/components/video-note/examples/in-message.tsx +5 -2
  568. package/src/components/visually-hidden/COMPONENT.md +2 -1
  569. package/src/components/visually-hidden/examples/assertive.tsx +39 -0
  570. package/src/components/voice-player/COMPONENT.md +3 -3
  571. package/src/components/voice-player/examples/call-recording.tsx +19 -9
  572. package/src/components/voice-player/examples/controlled.tsx +20 -3
  573. package/src/layout/app-header/COMPONENT.md +46 -63
  574. package/src/layout/app-header/examples/breadcrumbs.tsx +10 -9
  575. package/src/layout/app-header/examples/examples.module.css +1 -1
  576. package/src/layout/app-header/examples/in-app-shell.tsx +2 -3
  577. package/src/layout/app-header/examples/narrow.tsx +4 -5
  578. package/src/layout/app-header/examples/overview.tsx +8 -10
  579. package/src/layout/app-header/examples/page-title.tsx +3 -10
  580. package/src/layout/app-shell/COMPONENT.md +5 -4
  581. package/src/layout/app-shell/examples/footer.tsx +2 -2
  582. package/src/layout/app-shell/examples/overview.tsx +17 -32
  583. package/src/layout/app-shell/examples/screen.module.css +11 -0
  584. package/src/layout/app-shell/examples/screen.tsx +262 -0
  585. package/src/layout/app-shell/examples/template.tsx +31 -11
  586. package/src/layout/bottom-nav/examples/floating-action.tsx +2 -2
  587. package/src/layout/bottom-nav/examples/floating.tsx +2 -2
  588. package/src/layout/bottom-nav/examples/in-app-shell.tsx +2 -2
  589. package/src/layout/sidebar/COMPONENT.md +7 -4
  590. package/src/layout/sidebar/examples/account.tsx +2 -2
  591. package/src/layout/sidebar/examples/collapsible-groups.tsx +12 -4
  592. package/src/layout/sidebar/examples/custom-part.tsx +53 -0
  593. package/src/layout/sidebar/examples/examples.module.css +5 -0
  594. package/src/layout/sidebar/examples/narrow.tsx +53 -0
  595. package/src/layout/sidebar/examples/persist.tsx +57 -0
  596. package/src/layout/sidebar/examples/router.tsx +14 -2
  597. package/src/layout/sidebar/examples/structure.tsx +7 -2
  598. package/src/styles/theme-light.css +1 -0
  599. package/dist/skill/patterns/app-shell.tsx +0 -301
  600. package/dist/skill/patterns/chat.module.css +0 -8
  601. package/dist/skill/patterns/dashboard.module.css +0 -44
  602. package/dist/skill/patterns/dashboard.tsx +0 -326
  603. package/dist/skill/patterns/detail-page.tsx +0 -209
  604. package/dist/skill/patterns/form-drawer.tsx +0 -240
  605. package/dist/skill/patterns/kanban-board.module.css +0 -28
  606. package/dist/skill/patterns/media-library.tsx +0 -638
  607. package/dist/skill/patterns/schedule.module.css +0 -22
  608. package/dist/skill/patterns/screen-states.tsx +0 -186
  609. /package/dist/skill/{patterns/form-drawer.module.css → reference/components/drawer/examples/screen.module.css} +0 -0
@@ -0,0 +1,53 @@
1
+ /** A part of your own in the footer reads the rail state: the storage meter shows on the full rail and in the off-canvas panel and steps aside on the icon rail — `useSidebar`. */
2
+ import { Icon, ProgressBar, Sidebar, useSidebar } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ /** Calls `useSidebar`, so it must render inside `Sidebar.Root`. */
7
+ function StorageUsage() {
8
+ const { mode, offCanvas } = useSidebar();
9
+ if (mode === "compact" && !offCanvas) return null;
10
+ return (
11
+ <div className={styles.footerBlock}>
12
+ <ProgressBar value={72} label="Хранилище · 7,2 из 10 ГБ" />
13
+ </div>
14
+ );
15
+ }
16
+
17
+ export default function SidebarCustomPartExample() {
18
+ return (
19
+ <div className={styles.stage}>
20
+ <Sidebar.Root offCanvas="never">
21
+ <Sidebar.Header>
22
+ <Sidebar.Brand href="#home" description="Отдел продаж">
23
+ <Sidebar.BrandLogo>
24
+ <span className={styles.logo}>
25
+ <Icon name="nav.layoutGrid" />
26
+ </span>
27
+ </Sidebar.BrandLogo>
28
+ Прайм CRM
29
+ </Sidebar.Brand>
30
+ <Sidebar.Toggle variant="header" />
31
+ </Sidebar.Header>
32
+ <Sidebar.Content>
33
+ <Sidebar.Item current>
34
+ <Sidebar.ItemIcon>
35
+ <Icon name="object.file" />
36
+ </Sidebar.ItemIcon>
37
+ Документы
38
+ </Sidebar.Item>
39
+ <Sidebar.Item>
40
+ <Sidebar.ItemIcon>
41
+ <Icon name="object.image" />
42
+ </Sidebar.ItemIcon>
43
+ Медиатека
44
+ </Sidebar.Item>
45
+ </Sidebar.Content>
46
+ <Sidebar.Footer>
47
+ <StorageUsage />
48
+ </Sidebar.Footer>
49
+ </Sidebar.Root>
50
+ <div className={styles.content} />
51
+ </div>
52
+ );
53
+ }
@@ -42,6 +42,11 @@
42
42
  color: var(--prime-color-accent-fg);
43
43
  }
44
44
 
45
+ /* custom-part.tsx: an own block in the footer, inset like the item labels. */
46
+ .footerBlock {
47
+ padding: var(--prime-space-2);
48
+ }
49
+
45
50
  .sizes {
46
51
  display: grid;
47
52
  grid-template-columns: repeat(auto-fit, minmax(calc(var(--prime-space-24) * 2.5), 1fr));
@@ -0,0 +1,53 @@
1
+ /** Below 768px the rail leaves the layout and slides in over the page from the menu button; from 768px it is the rail again, and the button leaves — `offCanvas`, `labels`. */
2
+ import { AppHeader, Icon, Sidebar } from "prime-ui-kit";
3
+ import * as React from "react";
4
+
5
+ import styles from "./examples.module.css";
6
+
7
+ const LABELS = { close: "Закрыть меню" };
8
+
9
+ export default function SidebarNarrowExample() {
10
+ const [open, setOpen] = React.useState(false);
11
+
12
+ return (
13
+ <div className={styles.stage}>
14
+ <Sidebar.Root open={open} onOpenChange={setOpen} labels={LABELS}>
15
+ <Sidebar.Header>
16
+ <Sidebar.Brand href="#home" description="Отдел продаж">
17
+ <Sidebar.BrandLogo>
18
+ <span className={styles.logo}>
19
+ <Icon name="nav.layoutGrid" />
20
+ </span>
21
+ </Sidebar.BrandLogo>
22
+ Прайм CRM
23
+ </Sidebar.Brand>
24
+ <Sidebar.Toggle variant="header" />
25
+ </Sidebar.Header>
26
+ <Sidebar.Content>
27
+ <Sidebar.Item href="#deals" current>
28
+ <Sidebar.ItemIcon>
29
+ <Icon name="object.document" />
30
+ </Sidebar.ItemIcon>
31
+ Сделки
32
+ </Sidebar.Item>
33
+ <Sidebar.Item href="#clients">
34
+ <Sidebar.ItemIcon>
35
+ <Icon name="object.users" />
36
+ </Sidebar.ItemIcon>
37
+ Клиенты
38
+ </Sidebar.Item>
39
+ <Sidebar.Item href="#tasks">
40
+ <Sidebar.ItemIcon>
41
+ <Icon name="object.tasks" />
42
+ </Sidebar.ItemIcon>
43
+ Задачи
44
+ <Sidebar.ItemCount>5</Sidebar.ItemCount>
45
+ </Sidebar.Item>
46
+ </Sidebar.Content>
47
+ </Sidebar.Root>
48
+ <div className={styles.content}>
49
+ <AppHeader.MenuButton aria-expanded={open} onClick={() => setOpen(true)} />
50
+ </div>
51
+ </div>
52
+ );
53
+ }
@@ -0,0 +1,57 @@
1
+ /** The first visit opens on the icon rail; the mode and the folded groups are remembered and come back after a reload — `persistKey`, `defaultMode`. */
2
+ import { Icon, Sidebar } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ export default function SidebarPersistExample() {
7
+ return (
8
+ <div className={`${styles.stage} ${styles.stageTall}`}>
9
+ <Sidebar.Root offCanvas="never" defaultMode="compact" persistKey="crm-navigation">
10
+ <Sidebar.Header>
11
+ <Sidebar.Brand href="#home" description="Отдел продаж">
12
+ <Sidebar.BrandLogo>
13
+ <span className={styles.logo}>
14
+ <Icon name="nav.layoutGrid" />
15
+ </span>
16
+ </Sidebar.BrandLogo>
17
+ Прайм CRM
18
+ </Sidebar.Brand>
19
+ <Sidebar.Toggle variant="header" />
20
+ </Sidebar.Header>
21
+ <Sidebar.Content>
22
+ <Sidebar.Group label="Продажи" collapsible>
23
+ <Sidebar.Item current>
24
+ <Sidebar.ItemIcon>
25
+ <Icon name="object.document" />
26
+ </Sidebar.ItemIcon>
27
+ Сделки
28
+ <Sidebar.ItemCount>24</Sidebar.ItemCount>
29
+ </Sidebar.Item>
30
+ <Sidebar.Item>
31
+ <Sidebar.ItemIcon>
32
+ <Icon name="object.users" />
33
+ </Sidebar.ItemIcon>
34
+ Клиенты
35
+ </Sidebar.Item>
36
+ </Sidebar.Group>
37
+ <Sidebar.Group label="Финансы" collapsible defaultOpen={false}>
38
+ <Sidebar.Item>
39
+ <Sidebar.ItemIcon>
40
+ <Icon name="object.receipt" />
41
+ </Sidebar.ItemIcon>
42
+ Счета
43
+ <Sidebar.ItemCount color="orange">2</Sidebar.ItemCount>
44
+ </Sidebar.Item>
45
+ <Sidebar.Item>
46
+ <Sidebar.ItemIcon>
47
+ <Icon name="object.wallet" />
48
+ </Sidebar.ItemIcon>
49
+ Платежи
50
+ </Sidebar.Item>
51
+ </Sidebar.Group>
52
+ </Sidebar.Content>
53
+ </Sidebar.Root>
54
+ <div className={styles.content} />
55
+ </div>
56
+ );
57
+ }
@@ -1,6 +1,6 @@
1
- /** A router link as the item: the router sets `aria-current` and the item shows as current; render it inside a router — `asChild`. */
1
+ /** Router links as the brand and the items: the router sets `aria-current` and the item shows as current; render it inside a router — `asChild`. */
2
2
  import { Icon, Sidebar } from "prime-ui-kit";
3
- import { NavLink } from "react-router-dom";
3
+ import { Link, NavLink } from "react-router-dom";
4
4
 
5
5
  import styles from "./examples.module.css";
6
6
 
@@ -14,6 +14,18 @@ export default function SidebarRouterExample() {
14
14
  return (
15
15
  <div className={styles.stage}>
16
16
  <Sidebar.Root offCanvas="never">
17
+ <Sidebar.Header>
18
+ <Sidebar.Brand asChild description="Документация">
19
+ <Link to="/">
20
+ <Sidebar.BrandLogo>
21
+ <span className={styles.logo}>
22
+ <Icon name="object.book" />
23
+ </span>
24
+ </Sidebar.BrandLogo>
25
+ Prime UI
26
+ </Link>
27
+ </Sidebar.Brand>
28
+ </Sidebar.Header>
17
29
  <Sidebar.Content>
18
30
  {LINKS.map((link) => (
19
31
  <Sidebar.Item key={link.to} asChild>
@@ -1,4 +1,4 @@
1
- /** Labelled groups and the optional item parts: a plain count, a coloured badge, a key hint, a trailing icon, a row action and a disabled section — `Sidebar.Group`, `Sidebar.ItemCount`, `color`, `Sidebar.ItemShortcut`, `Sidebar.ItemAction`, `disabled`. */
1
+ /** Labelled groups and the optional item parts: a plain count, coloured and solid badges, a key hint, a trailing icon, row actions with the default and an own glyph and a disabled section — `Sidebar.Group`, `Sidebar.ItemCount`, `color`, `variant`, `Sidebar.ItemShortcut`, `Sidebar.ItemAction`, `disabled`. */
2
2
  import { Icon, Kbd, Sidebar } from "prime-ui-kit";
3
3
 
4
4
  import styles from "./examples.module.css";
@@ -29,7 +29,9 @@ export default function SidebarStructureExample() {
29
29
  <Icon name="object.bell" />
30
30
  </Sidebar.ItemIcon>
31
31
  Уведомления
32
- <Sidebar.ItemCount color="red">7</Sidebar.ItemCount>
32
+ <Sidebar.ItemCount color="red" variant="solid">
33
+ 7
34
+ </Sidebar.ItemCount>
33
35
  </Sidebar.Item>
34
36
  </Sidebar.Group>
35
37
  <Sidebar.Group label="Работа">
@@ -54,6 +56,9 @@ export default function SidebarStructureExample() {
54
56
  </Sidebar.ItemIcon>
55
57
  Интеграции
56
58
  <Sidebar.ItemCount color="orange">!</Sidebar.ItemCount>
59
+ <Sidebar.ItemAction label="Синхронизировать интеграции" onClick={() => {}}>
60
+ <Icon name="action.refresh" />
61
+ </Sidebar.ItemAction>
57
62
  </Sidebar.Item>
58
63
  </Sidebar.Group>
59
64
  <Sidebar.Group label="Администрирование">
@@ -342,6 +342,7 @@
342
342
  --prime-layout-sidebar-collapsed-width: var(--prime-ref-space-14);
343
343
  --prime-layout-sidebar-width: 15.5rem;
344
344
  --prime-media-disk-blur: var(--prime-ref-space-1);
345
+ --prime-media-viewer-bar-width: 40rem;
345
346
  --prime-media-viewer-inset: var(--prime-ref-space-4);
346
347
  --prime-media-viewer-page-gap: var(--prime-ref-space-6);
347
348
  --prime-message-card-width: 16rem;
@@ -1,301 +0,0 @@
1
- /** The app frame for desktop and phone: the Sidebar rail on a wide screen, the floating BottomNav in the footer on a phone, the AppHeader with the menu button, the title and search that opens the CommandMenu, and a simple home page that swaps with the current section. */
2
- import {
3
- AppHeader,
4
- AppShell,
5
- BottomNav,
6
- Card,
7
- Checkbox,
8
- CommandMenu,
9
- Crossfade,
10
- Icon,
11
- type IconName,
12
- PageContent,
13
- Sidebar,
14
- Typography,
15
- } from "prime-ui-kit";
16
- import * as React from "react";
17
-
18
- import styles from "./app-shell.module.css";
19
-
20
- type SectionId = "today" | "deals" | "clients" | "tasks" | "reports" | "settings";
21
- type Section = { id: SectionId; label: string; icon: IconName };
22
- type Row = { id: string; title: string; meta: string };
23
-
24
- /** The main sections: the Sidebar's first group on a wide screen, the bar on a phone. */
25
- const MAIN: Section[] = [
26
- { id: "today", label: "Сегодня", icon: "nav.home" },
27
- { id: "deals", label: "Сделки", icon: "object.funnel" },
28
- { id: "clients", label: "Клиенты", icon: "object.users" },
29
- { id: "tasks", label: "Задачи", icon: "object.tasks" },
30
- ];
31
-
32
- /** The rest of the map: in the Sidebar footer; on a phone «Ещё» opens the Sidebar panel. */
33
- const MORE: Section[] = [
34
- { id: "reports", label: "Отчёты", icon: "object.chart" },
35
- { id: "settings", label: "Настройки", icon: "action.settings" },
36
- ];
37
-
38
- const SECTIONS = [...MAIN, ...MORE];
39
-
40
- /** Open deals: an informational count, plain in the Sidebar. */
41
- const OPEN_DEALS = 12;
42
-
43
- const KPIS = [
44
- { label: "Сделки в работе", value: "37", delta: "+4 за неделю", tone: "success" },
45
- { label: "Выручка за октябрь", value: "4,8 млн ₽", delta: "+12% к сентябрю", tone: "success" },
46
- { label: "Ждут ответа", value: "5 клиентов", delta: "2 дольше суток", tone: "danger" },
47
- ] as const;
48
-
49
- const TASKS: Row[] = [
50
- { id: "t1", title: "Позвонить в ООО «Север» по договору поставки", meta: "10:30" },
51
- { id: "t2", title: "Отправить КП для АО «Меридиан»", meta: "12:00" },
52
- { id: "t3", title: "Согласовать скидку для ИП Котова", meta: "15:00" },
53
- { id: "t4", title: "Подготовить отчёт по воронке за неделю", meta: "17:30" },
54
- ];
55
-
56
- /** What every section other than «Сегодня» lists. */
57
- const PAGES: Record<Exclude<SectionId, "today">, { description: string; rows: Row[] }> = {
58
- deals: {
59
- description: "12 сделок в работе на 9,6 млн ₽.",
60
- rows: [
61
- { id: "d1", title: "ООО «Север» · поставка оборудования", meta: "2 400 000 ₽" },
62
- { id: "d2", title: "АО «Меридиан» · годовой сервис", meta: "1 180 000 ₽" },
63
- { id: "d3", title: "ООО «Вектор» · внедрение CRM", meta: "860 000 ₽" },
64
- ],
65
- },
66
- clients: {
67
- description: "248 клиентов, 5 ждут ответа.",
68
- rows: [
69
- { id: "c1", title: "ООО «Север»", meta: "4 сделки" },
70
- { id: "c2", title: "АО «Меридиан»", meta: "2 сделки" },
71
- { id: "c3", title: "ИП Котов", meta: "1 сделка" },
72
- ],
73
- },
74
- tasks: {
75
- description: "Все задачи команды по срокам.",
76
- rows: TASKS.map((task) => ({ ...task, meta: `сегодня, ${task.meta}` })),
77
- },
78
- reports: {
79
- description: "Сводки по продажам и работе менеджеров.",
80
- rows: [
81
- { id: "r1", title: "Воронка продаж", meta: "обновлён сегодня" },
82
- { id: "r2", title: "План и факт по менеджерам", meta: "октябрь" },
83
- ],
84
- },
85
- settings: {
86
- description: "Компания, команда и интеграции.",
87
- rows: [
88
- { id: "s1", title: "Команда и роли", meta: "8 человек" },
89
- { id: "s2", title: "Почта и телефония", meta: "подключены" },
90
- ],
91
- },
92
- };
93
-
94
- const isMore = (id: SectionId) => MORE.some((section) => section.id === id);
95
-
96
- export default function AppShellPattern() {
97
- const [current, setCurrent] = React.useState<SectionId>("today");
98
- const [menuOpen, setMenuOpen] = React.useState(false);
99
- const [searchOpen, setSearchOpen] = React.useState(false);
100
- const [done, setDone] = React.useState<ReadonlySet<string>>(() => new Set(["t1"]));
101
-
102
- const openTasks = TASKS.length - done.size;
103
- const section = SECTIONS.find((item) => item.id === current) ?? SECTIONS[0];
104
-
105
- // One handler for every way into a section: the Sidebar, the bar and the search.
106
- const go = (id: SectionId) => {
107
- setCurrent(id);
108
- setMenuOpen(false);
109
- setSearchOpen(false);
110
- };
111
-
112
- const toggleTask = (id: string, checked: boolean) =>
113
- setDone((prev) => {
114
- const next = new Set(prev);
115
- if (checked) next.add(id);
116
- else next.delete(id);
117
- return next;
118
- });
119
-
120
- // ⌘K opens the same search as the header field.
121
- React.useEffect(() => {
122
- const onKey = (event: KeyboardEvent) => {
123
- if (event.key === "k" && (event.metaKey || event.ctrlKey)) {
124
- event.preventDefault();
125
- setSearchOpen((open) => !open);
126
- }
127
- };
128
- document.addEventListener("keydown", onKey);
129
- return () => document.removeEventListener("keydown", onKey);
130
- }, []);
131
-
132
- const countOf = (id: SectionId) => {
133
- if (id === "deals") return <Sidebar.ItemCount>{OPEN_DEALS}</Sidebar.ItemCount>;
134
- if (id === "tasks" && openTasks > 0) {
135
- return <Sidebar.ItemCount color="red">{openTasks}</Sidebar.ItemCount>;
136
- }
137
- return null;
138
- };
139
-
140
- const sidebarItem = (item: Section) => (
141
- <Sidebar.Item key={item.id} current={item.id === current} onClick={() => go(item.id)}>
142
- <Sidebar.ItemIcon>
143
- <Icon name={item.icon} />
144
- </Sidebar.ItemIcon>
145
- {item.label}
146
- {countOf(item.id)}
147
- </Sidebar.Item>
148
- );
149
-
150
- return (
151
- <>
152
- <AppShell.Template
153
- fillViewport
154
- scrollResetKey={current}
155
- nav={
156
- <Sidebar.Root open={menuOpen} onOpenChange={setMenuOpen}>
157
- <Sidebar.Header>
158
- <Sidebar.Brand description="Отдел продаж">
159
- <Sidebar.BrandLogo>
160
- <Icon name="object.funnel" />
161
- </Sidebar.BrandLogo>
162
- Acme CRM
163
- </Sidebar.Brand>
164
- <Sidebar.Toggle variant="header" />
165
- </Sidebar.Header>
166
- <Sidebar.Content>
167
- <Sidebar.Group>{MAIN.map(sidebarItem)}</Sidebar.Group>
168
- </Sidebar.Content>
169
- <Sidebar.Footer>{MORE.map(sidebarItem)}</Sidebar.Footer>
170
- </Sidebar.Root>
171
- }
172
- header={
173
- <AppHeader.Root>
174
- <AppHeader.Start>
175
- <AppHeader.MenuButton aria-expanded={menuOpen} onClick={() => setMenuOpen(true)} />
176
- <AppHeader.Title>{section.label}</AppHeader.Title>
177
- </AppHeader.Start>
178
- <AppHeader.Search onClick={() => setSearchOpen(true)}>
179
- Поиск сделок и клиентов
180
- </AppHeader.Search>
181
- </AppHeader.Root>
182
- }
183
- footer={
184
- <BottomNav.Root floating>
185
- {MAIN.map((item) => (
186
- <BottomNav.Item
187
- key={item.id}
188
- current={item.id === current}
189
- onClick={() => go(item.id)}
190
- >
191
- <BottomNav.ItemIcon>
192
- <Icon name={item.icon} />
193
- </BottomNav.ItemIcon>
194
- {item.id === "tasks" && openTasks > 0 ? (
195
- <BottomNav.ItemCount>{openTasks}</BottomNav.ItemCount>
196
- ) : null}
197
- {item.label}
198
- </BottomNav.Item>
199
- ))}
200
- {/* The rest of the map lives in the Sidebar: «Ещё» opens it as a panel. */}
201
- <BottomNav.Item
202
- current={isMore(current)}
203
- aria-expanded={menuOpen}
204
- onClick={() => setMenuOpen(true)}
205
- >
206
- <BottomNav.ItemIcon>
207
- <Icon name="action.more" />
208
- </BottomNav.ItemIcon>
209
- Ещё
210
- </BottomNav.Item>
211
- </BottomNav.Root>
212
- }
213
- >
214
- {/* Another section is another page: it cross-fades instead of flipping. */}
215
- <Crossfade state={current}>
216
- <PageContent.Section aria-labelledby="page-title">
217
- <PageContent.Header>
218
- <PageContent.Title id="page-title">{section.label}</PageContent.Title>
219
- <PageContent.Description>
220
- {current === "today"
221
- ? `Среда, 14 октября · открытых задач: ${openTasks}`
222
- : PAGES[current].description}
223
- </PageContent.Description>
224
- </PageContent.Header>
225
- <PageContent.Body>
226
- {current === "today" ? (
227
- <>
228
- <div className={styles.kpis}>
229
- {KPIS.map((kpi) => (
230
- <Card.Root key={kpi.label} variant="stat-trend">
231
- <Card.Label>{kpi.label}</Card.Label>
232
- <Card.Value>{kpi.value}</Card.Value>
233
- <Card.Delta tone={kpi.tone}>{kpi.delta}</Card.Delta>
234
- </Card.Root>
235
- ))}
236
- </div>
237
- <Card.Root variant="list">
238
- <Card.Header>
239
- <Card.Title as="h2">Задачи на сегодня</Card.Title>
240
- </Card.Header>
241
- <Card.List>
242
- {TASKS.map((task) => (
243
- <Card.ListItem key={task.id}>
244
- <span className={styles.row}>
245
- <Checkbox.Root
246
- checked={done.has(task.id)}
247
- onCheckedChange={(checked) => toggleTask(task.id, checked)}
248
- >
249
- <Checkbox.Label>{task.title}</Checkbox.Label>
250
- </Checkbox.Root>
251
- <Typography as="span" variant="caption" tone="muted">
252
- {task.meta}
253
- </Typography>
254
- </span>
255
- </Card.ListItem>
256
- ))}
257
- </Card.List>
258
- </Card.Root>
259
- </>
260
- ) : (
261
- <Card.Root variant="list">
262
- <Card.List>
263
- {PAGES[current].rows.map((row) => (
264
- <Card.ListItem key={row.id}>
265
- <span className={styles.row}>
266
- <Typography as="span" variant="body-m" truncate>
267
- {row.title}
268
- </Typography>
269
- <Typography as="span" variant="caption" tone="muted">
270
- {row.meta}
271
- </Typography>
272
- </span>
273
- </Card.ListItem>
274
- ))}
275
- </Card.List>
276
- </Card.Root>
277
- )}
278
- </PageContent.Body>
279
- </PageContent.Section>
280
- </Crossfade>
281
- </AppShell.Template>
282
-
283
- <CommandMenu.Root open={searchOpen} onOpenChange={setSearchOpen} aria-label="Поиск">
284
- <CommandMenu.Input placeholder="Раздел, сделка или клиент" />
285
- <CommandMenu.List>
286
- <CommandMenu.Empty />
287
- <CommandMenu.Group label="Разделы">
288
- {SECTIONS.map((item) => (
289
- <CommandMenu.Item key={item.id} value={item.label} onSelect={() => go(item.id)}>
290
- <CommandMenu.ItemIcon>
291
- <Icon name={item.icon} />
292
- </CommandMenu.ItemIcon>
293
- {item.label}
294
- </CommandMenu.Item>
295
- ))}
296
- </CommandMenu.Group>
297
- </CommandMenu.List>
298
- </CommandMenu.Root>
299
- </>
300
- );
301
- }
@@ -1,8 +0,0 @@
1
- /* Chat: the page fills the app panel (`AppShell.Root fillViewport` + `PageContent.Root fill`); each
2
- pane is a card with a scrolling region. */
3
-
4
- .paneCard {
5
- display: flex;
6
- flex-direction: column;
7
- min-height: 0;
8
- }
@@ -1,44 +0,0 @@
1
- /* Dashboard: blocks 40 apart come from PageContent.Body; tiles inside a block 16 apart. */
2
-
3
- /* KPI row: as many ~14rem tiles as fit, one column on a phone. */
4
- .kpis {
5
- display: grid;
6
- grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(var(--prime-space-14) * 4)), 1fr));
7
- gap: var(--prime-space-4);
8
- }
9
-
10
- /* Panels: two columns from ~40rem of width; neighbours share one height. */
11
- .panels {
12
- display: grid;
13
- grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(var(--prime-space-20) * 4)), 1fr));
14
- align-items: stretch;
15
- gap: var(--prime-space-4);
16
- }
17
-
18
- /* Bars inside a panel: 20 apart, like fields. */
19
- .bars {
20
- display: grid;
21
- gap: var(--prime-space-5);
22
- }
23
-
24
- /* A section without a card: heading row 16 above the table. */
25
- .recent {
26
- display: grid;
27
- gap: var(--prime-space-4);
28
- min-width: 0;
29
- }
30
-
31
- .recentHeader {
32
- display: flex;
33
- flex-wrap: wrap;
34
- align-items: baseline;
35
- justify-content: space-between;
36
- gap: var(--prime-space-2) var(--prime-space-4);
37
- }
38
-
39
- .client {
40
- display: inline-flex;
41
- flex-wrap: wrap;
42
- align-items: center;
43
- gap: var(--prime-space-2);
44
- }