prime-ui-kit 0.2.5 → 0.3.2

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 (870) hide show
  1. package/README.md +165 -35
  2. package/dist/components/accordion/Accordion.d.ts +70 -0
  3. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  4. package/dist/components/accordion/examples/01-faq-marketing.d.ts +5 -0
  5. package/dist/components/accordion/examples/01-faq-marketing.d.ts.map +1 -0
  6. package/dist/components/accordion/examples/02-settings-panels.d.ts +6 -0
  7. package/dist/components/accordion/examples/02-settings-panels.d.ts.map +1 -0
  8. package/dist/components/accordion/examples/03-checkout-order-summary.d.ts +5 -0
  9. package/dist/components/accordion/examples/03-checkout-order-summary.d.ts.map +1 -0
  10. package/dist/components/accordion/examples/04-api-docs-sections.d.ts +6 -0
  11. package/dist/components/accordion/examples/04-api-docs-sections.d.ts.map +1 -0
  12. package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts +6 -0
  13. package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts.map +1 -0
  14. package/dist/components/avatar/Avatar.d.ts +58 -0
  15. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  16. package/dist/components/avatar/examples/app-header-nav.d.ts +5 -0
  17. package/dist/components/avatar/examples/app-header-nav.d.ts.map +1 -0
  18. package/dist/components/avatar/examples/comment-thread.d.ts +5 -0
  19. package/dist/components/avatar/examples/comment-thread.d.ts.map +1 -0
  20. package/dist/components/avatar/examples/fallback-variants.d.ts +5 -0
  21. package/dist/components/avatar/examples/fallback-variants.d.ts.map +1 -0
  22. package/dist/components/avatar/examples/group-overflow.d.ts +5 -0
  23. package/dist/components/avatar/examples/group-overflow.d.ts.map +1 -0
  24. package/dist/components/avatar/examples/team-list.d.ts +5 -0
  25. package/dist/components/avatar/examples/team-list.d.ts.map +1 -0
  26. package/dist/components/badge/Badge.d.ts +51 -0
  27. package/dist/components/badge/Badge.d.ts.map +1 -0
  28. package/dist/components/badge/examples/admin-tags.d.ts +3 -0
  29. package/dist/components/badge/examples/admin-tags.d.ts.map +1 -0
  30. package/dist/components/badge/examples/canonical.d.ts +3 -0
  31. package/dist/components/badge/examples/canonical.d.ts.map +1 -0
  32. package/dist/components/badge/examples/ecommerce-inventory.d.ts +3 -0
  33. package/dist/components/badge/examples/ecommerce-inventory.d.ts.map +1 -0
  34. package/dist/components/badge/examples/inbox-labels.d.ts +3 -0
  35. package/dist/components/badge/examples/inbox-labels.d.ts.map +1 -0
  36. package/dist/components/badge/examples/status-presence.d.ts +6 -0
  37. package/dist/components/badge/examples/status-presence.d.ts.map +1 -0
  38. package/dist/components/banner/Banner.d.ts +78 -0
  39. package/dist/components/banner/Banner.d.ts.map +1 -0
  40. package/dist/components/banner/examples/billing-alert.d.ts +3 -0
  41. package/dist/components/banner/examples/billing-alert.d.ts.map +1 -0
  42. package/dist/components/banner/examples/cookie-consent-row.d.ts +3 -0
  43. package/dist/components/banner/examples/cookie-consent-row.d.ts.map +1 -0
  44. package/dist/components/banner/examples/feature-promo.d.ts +3 -0
  45. package/dist/components/banner/examples/feature-promo.d.ts.map +1 -0
  46. package/dist/components/banner/examples/maintenance.d.ts +3 -0
  47. package/dist/components/banner/examples/maintenance.d.ts.map +1 -0
  48. package/dist/components/breadcrumb/Breadcrumb.d.ts +47 -0
  49. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -0
  50. package/dist/components/breadcrumb/examples/canonical.d.ts +3 -0
  51. package/dist/components/breadcrumb/examples/canonical.d.ts.map +1 -0
  52. package/dist/components/breadcrumb/examples/deep-documentation.d.ts +3 -0
  53. package/dist/components/breadcrumb/examples/deep-documentation.d.ts.map +1 -0
  54. package/dist/components/breadcrumb/examples/ecommerce-product.d.ts +3 -0
  55. package/dist/components/breadcrumb/examples/ecommerce-product.d.ts.map +1 -0
  56. package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts +6 -0
  57. package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts.map +1 -0
  58. package/dist/components/breadcrumb/examples/saas-settings.d.ts +3 -0
  59. package/dist/components/breadcrumb/examples/saas-settings.d.ts.map +1 -0
  60. package/dist/components/button/Button.d.ts +57 -0
  61. package/dist/components/button/Button.d.ts.map +1 -0
  62. package/dist/components/button/examples/canonical-composition.d.ts +5 -0
  63. package/dist/components/button/examples/canonical-composition.d.ts.map +1 -0
  64. package/dist/components/button/examples/destructive-confirm.d.ts +5 -0
  65. package/dist/components/button/examples/destructive-confirm.d.ts.map +1 -0
  66. package/dist/components/button/examples/form-submit-row.d.ts +5 -0
  67. package/dist/components/button/examples/form-submit-row.d.ts.map +1 -0
  68. package/dist/components/button/examples/marketing-cta.d.ts +5 -0
  69. package/dist/components/button/examples/marketing-cta.d.ts.map +1 -0
  70. package/dist/components/button/examples/toolbar.d.ts +5 -0
  71. package/dist/components/button/examples/toolbar.d.ts.map +1 -0
  72. package/dist/components/button-group/ButtonGroup.d.ts +34 -0
  73. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  74. package/dist/components/button-group/examples/editor-toolbar.d.ts +6 -0
  75. package/dist/components/button-group/examples/editor-toolbar.d.ts.map +1 -0
  76. package/dist/components/button-group/examples/form-footer.d.ts +5 -0
  77. package/dist/components/button-group/examples/form-footer.d.ts.map +1 -0
  78. package/dist/components/button-group/examples/view-switcher.d.ts +5 -0
  79. package/dist/components/button-group/examples/view-switcher.d.ts.map +1 -0
  80. package/dist/components/button-group/examples/wizard-actions.d.ts +5 -0
  81. package/dist/components/button-group/examples/wizard-actions.d.ts.map +1 -0
  82. package/dist/components/card/Card.d.ts +234 -0
  83. package/dist/components/card/Card.d.ts.map +1 -0
  84. package/dist/components/card/examples/cta-cover.d.ts +5 -0
  85. package/dist/components/card/examples/cta-cover.d.ts.map +1 -0
  86. package/dist/components/card/examples/list-card.d.ts +3 -0
  87. package/dist/components/card/examples/list-card.d.ts.map +1 -0
  88. package/dist/components/card/examples/media-mini.d.ts +3 -0
  89. package/dist/components/card/examples/media-mini.d.ts.map +1 -0
  90. package/dist/components/card/examples/metric-dashboard.d.ts +3 -0
  91. package/dist/components/card/examples/metric-dashboard.d.ts.map +1 -0
  92. package/dist/components/card/examples/split-layout.d.ts +3 -0
  93. package/dist/components/card/examples/split-layout.d.ts.map +1 -0
  94. package/dist/components/checkbox/Checkbox.d.ts +42 -0
  95. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  96. package/dist/components/checkbox/examples/bulk-select-rows.d.ts +5 -0
  97. package/dist/components/checkbox/examples/bulk-select-rows.d.ts.map +1 -0
  98. package/dist/components/checkbox/examples/feature-flags-list.d.ts +5 -0
  99. package/dist/components/checkbox/examples/feature-flags-list.d.ts.map +1 -0
  100. package/dist/components/checkbox/examples/settings-panel.d.ts +5 -0
  101. package/dist/components/checkbox/examples/settings-panel.d.ts.map +1 -0
  102. package/dist/components/checkbox/examples/terms-acceptance.d.ts +5 -0
  103. package/dist/components/checkbox/examples/terms-acceptance.d.ts.map +1 -0
  104. package/dist/components/code-block/CodeBlock.d.ts +17 -0
  105. package/dist/components/code-block/CodeBlock.d.ts.map +1 -0
  106. package/dist/components/code-block/examples/api-response-preview.d.ts +3 -0
  107. package/dist/components/code-block/examples/api-response-preview.d.ts.map +1 -0
  108. package/dist/components/code-block/examples/config-snippet.d.ts +3 -0
  109. package/dist/components/code-block/examples/config-snippet.d.ts.map +1 -0
  110. package/dist/components/code-block/examples/error-stack.d.ts +3 -0
  111. package/dist/components/code-block/examples/error-stack.d.ts.map +1 -0
  112. package/dist/components/code-block/examples/minimal.d.ts +3 -0
  113. package/dist/components/code-block/examples/minimal.d.ts.map +1 -0
  114. package/dist/components/code-block/examples/tutorial-step.d.ts +3 -0
  115. package/dist/components/code-block/examples/tutorial-step.d.ts.map +1 -0
  116. package/dist/components/color-picker/ColorPicker.d.ts +76 -0
  117. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -0
  118. package/dist/components/color-picker/ColorPickerRac.d.ts +76 -0
  119. package/dist/components/color-picker/ColorPickerRac.d.ts.map +1 -0
  120. package/dist/components/color-picker/examples/brand-kit.d.ts +3 -0
  121. package/dist/components/color-picker/examples/brand-kit.d.ts.map +1 -0
  122. package/dist/components/color-picker/examples/controlled-form-field.d.ts +3 -0
  123. package/dist/components/color-picker/examples/controlled-form-field.d.ts.map +1 -0
  124. package/dist/components/color-picker/examples/minimal-popover.d.ts +3 -0
  125. package/dist/components/color-picker/examples/minimal-popover.d.ts.map +1 -0
  126. package/dist/components/color-picker/examples/product-variant-swatch.d.ts +3 -0
  127. package/dist/components/color-picker/examples/product-variant-swatch.d.ts.map +1 -0
  128. package/dist/components/color-picker/examples/theme-accent.d.ts +3 -0
  129. package/dist/components/color-picker/examples/theme-accent.d.ts.map +1 -0
  130. package/dist/components/command-menu/CommandMenu.d.ts +74 -0
  131. package/dist/components/command-menu/CommandMenu.d.ts.map +1 -0
  132. package/dist/components/command-menu/examples/app-palette.d.ts +5 -0
  133. package/dist/components/command-menu/examples/app-palette.d.ts.map +1 -0
  134. package/dist/components/command-menu/examples/disabled-items.d.ts +6 -0
  135. package/dist/components/command-menu/examples/disabled-items.d.ts.map +1 -0
  136. package/dist/components/command-menu/examples/file-search.d.ts +5 -0
  137. package/dist/components/command-menu/examples/file-search.d.ts.map +1 -0
  138. package/dist/components/command-menu/examples/quick-actions.d.ts +5 -0
  139. package/dist/components/command-menu/examples/quick-actions.d.ts.map +1 -0
  140. package/dist/components/data-table/DataTable.d.ts +78 -0
  141. package/dist/components/data-table/DataTable.d.ts.map +1 -0
  142. package/dist/components/data-table/examples/canonical-orders.d.ts +6 -0
  143. package/dist/components/data-table/examples/canonical-orders.d.ts.map +1 -0
  144. package/dist/components/data-table/examples/controlled-sort-and-page.d.ts +5 -0
  145. package/dist/components/data-table/examples/controlled-sort-and-page.d.ts.map +1 -0
  146. package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts +6 -0
  147. package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts.map +1 -0
  148. package/dist/components/data-table/examples/row-selection.d.ts +6 -0
  149. package/dist/components/data-table/examples/row-selection.d.ts.map +1 -0
  150. package/dist/components/data-table/examples/sticky-header-first-column.d.ts +6 -0
  151. package/dist/components/data-table/examples/sticky-header-first-column.d.ts.map +1 -0
  152. package/dist/components/datepicker/Datepicker.d.ts +104 -0
  153. package/dist/components/datepicker/Datepicker.d.ts.map +1 -0
  154. package/dist/components/datepicker/examples/birthdate.d.ts +5 -0
  155. package/dist/components/datepicker/examples/birthdate.d.ts.map +1 -0
  156. package/dist/components/datepicker/examples/booking.d.ts +5 -0
  157. package/dist/components/datepicker/examples/booking.d.ts.map +1 -0
  158. package/dist/components/datepicker/examples/full-width-form.d.ts +5 -0
  159. package/dist/components/datepicker/examples/full-width-form.d.ts.map +1 -0
  160. package/dist/components/datepicker/examples/range-report.d.ts +5 -0
  161. package/dist/components/datepicker/examples/range-report.d.ts.map +1 -0
  162. package/dist/components/digit-input/DigitInput.d.ts +21 -0
  163. package/dist/components/digit-input/DigitInput.d.ts.map +1 -0
  164. package/dist/components/digit-input/examples/error-state.d.ts +3 -0
  165. package/dist/components/digit-input/examples/error-state.d.ts.map +1 -0
  166. package/dist/components/digit-input/examples/otp-login.d.ts +3 -0
  167. package/dist/components/digit-input/examples/otp-login.d.ts.map +1 -0
  168. package/dist/components/digit-input/examples/pin.d.ts +3 -0
  169. package/dist/components/digit-input/examples/pin.d.ts.map +1 -0
  170. package/dist/components/digit-input/examples/resend-and-clear.d.ts +3 -0
  171. package/dist/components/digit-input/examples/resend-and-clear.d.ts.map +1 -0
  172. package/dist/components/digit-input/examples/verification-step.d.ts +3 -0
  173. package/dist/components/digit-input/examples/verification-step.d.ts.map +1 -0
  174. package/dist/components/divider/Divider.d.ts +26 -0
  175. package/dist/components/divider/Divider.d.ts.map +1 -0
  176. package/dist/components/divider/examples/card-splits.d.ts +3 -0
  177. package/dist/components/divider/examples/card-splits.d.ts.map +1 -0
  178. package/dist/components/divider/examples/inset-stack.d.ts +6 -0
  179. package/dist/components/divider/examples/inset-stack.d.ts.map +1 -0
  180. package/dist/components/divider/examples/line-spacing-column.d.ts +6 -0
  181. package/dist/components/divider/examples/line-spacing-column.d.ts.map +1 -0
  182. package/dist/components/divider/examples/list-separators.d.ts +3 -0
  183. package/dist/components/divider/examples/list-separators.d.ts.map +1 -0
  184. package/dist/components/divider/examples/section-breaks.d.ts +3 -0
  185. package/dist/components/divider/examples/section-breaks.d.ts.map +1 -0
  186. package/dist/components/drawer/Drawer.d.ts +71 -0
  187. package/dist/components/drawer/Drawer.d.ts.map +1 -0
  188. package/dist/components/drawer/examples/cart-preview.d.ts +5 -0
  189. package/dist/components/drawer/examples/cart-preview.d.ts.map +1 -0
  190. package/dist/components/drawer/examples/explicit-panel.d.ts +5 -0
  191. package/dist/components/drawer/examples/explicit-panel.d.ts.map +1 -0
  192. package/dist/components/drawer/examples/filters-panel.d.ts +5 -0
  193. package/dist/components/drawer/examples/filters-panel.d.ts.map +1 -0
  194. package/dist/components/drawer/examples/mobile-nav-sheet.d.ts +5 -0
  195. package/dist/components/drawer/examples/mobile-nav-sheet.d.ts.map +1 -0
  196. package/dist/components/drawer/examples/settings-side.d.ts +5 -0
  197. package/dist/components/drawer/examples/settings-side.d.ts.map +1 -0
  198. package/dist/components/dropdown/Dropdown.d.ts +147 -0
  199. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  200. package/dist/components/dropdown/dropdownGeometry.d.ts +10 -0
  201. package/dist/components/dropdown/dropdownGeometry.d.ts.map +1 -0
  202. package/dist/components/dropdown/examples/account-menu.d.ts +3 -0
  203. package/dist/components/dropdown/examples/account-menu.d.ts.map +1 -0
  204. package/dist/components/dropdown/examples/actions-menu.d.ts +3 -0
  205. package/dist/components/dropdown/examples/actions-menu.d.ts.map +1 -0
  206. package/dist/components/dropdown/examples/placement-demo.d.ts +3 -0
  207. package/dist/components/dropdown/examples/placement-demo.d.ts.map +1 -0
  208. package/dist/components/dropdown/examples/select-like-list.d.ts +7 -0
  209. package/dist/components/dropdown/examples/select-like-list.d.ts.map +1 -0
  210. package/dist/components/dropdown/menuKeyboard.d.ts +4 -0
  211. package/dist/components/dropdown/menuKeyboard.d.ts.map +1 -0
  212. package/dist/components/dropdown/useDropdownPosition.d.ts +18 -0
  213. package/dist/components/dropdown/useDropdownPosition.d.ts.map +1 -0
  214. package/dist/components/example-frame/ExampleFrame.d.ts +53 -0
  215. package/dist/components/example-frame/ExampleFrame.d.ts.map +1 -0
  216. package/dist/components/file-upload/FileUpload.d.ts +176 -0
  217. package/dist/components/file-upload/FileUpload.d.ts.map +1 -0
  218. package/dist/components/file-upload/examples/avatar-upload.d.ts +6 -0
  219. package/dist/components/file-upload/examples/avatar-upload.d.ts.map +1 -0
  220. package/dist/components/file-upload/examples/controlled-list.d.ts +5 -0
  221. package/dist/components/file-upload/examples/controlled-list.d.ts.map +1 -0
  222. package/dist/components/file-upload/examples/document-attach.d.ts +5 -0
  223. package/dist/components/file-upload/examples/document-attach.d.ts.map +1 -0
  224. package/dist/components/file-upload/examples/drag-area.d.ts +5 -0
  225. package/dist/components/file-upload/examples/drag-area.d.ts.map +1 -0
  226. package/dist/components/hint/Hint.d.ts +27 -0
  227. package/dist/components/hint/Hint.d.ts.map +1 -0
  228. package/dist/components/hint/examples/error-hint.d.ts +3 -0
  229. package/dist/components/hint/examples/error-hint.d.ts.map +1 -0
  230. package/dist/components/hint/examples/field-help.d.ts +3 -0
  231. package/dist/components/hint/examples/field-help.d.ts.map +1 -0
  232. package/dist/components/hint/examples/inline-tip-form.d.ts +3 -0
  233. package/dist/components/hint/examples/inline-tip-form.d.ts.map +1 -0
  234. package/dist/components/hint/examples/success-confirmation.d.ts +6 -0
  235. package/dist/components/hint/examples/success-confirmation.d.ts.map +1 -0
  236. package/dist/components/hint/examples/with-icon.d.ts +3 -0
  237. package/dist/components/hint/examples/with-icon.d.ts.map +1 -0
  238. package/dist/components/index.css +6101 -5759
  239. package/dist/components/index.css.map +4 -4
  240. package/dist/components/index.d.ts +95 -2679
  241. package/dist/components/index.d.ts.map +1 -0
  242. package/dist/components/index.js +8510 -7659
  243. package/dist/components/index.js.map +4 -4
  244. package/dist/components/input/Input.d.ts +73 -0
  245. package/dist/components/input/Input.d.ts.map +1 -0
  246. package/dist/components/input/examples/checkout-full-width.d.ts +5 -0
  247. package/dist/components/input/examples/checkout-full-width.d.ts.map +1 -0
  248. package/dist/components/input/examples/login-email.d.ts +5 -0
  249. package/dist/components/input/examples/login-email.d.ts.map +1 -0
  250. package/dist/components/input/examples/password-with-hint.d.ts +5 -0
  251. package/dist/components/input/examples/password-with-hint.d.ts.map +1 -0
  252. package/dist/components/input/examples/search.d.ts +5 -0
  253. package/dist/components/input/examples/search.d.ts.map +1 -0
  254. package/dist/components/kbd/Kbd.d.ts +15 -0
  255. package/dist/components/kbd/Kbd.d.ts.map +1 -0
  256. package/dist/components/kbd/examples/combination-keys.d.ts +3 -0
  257. package/dist/components/kbd/examples/combination-keys.d.ts.map +1 -0
  258. package/dist/components/kbd/examples/docs-legend.d.ts +3 -0
  259. package/dist/components/kbd/examples/docs-legend.d.ts.map +1 -0
  260. package/dist/components/kbd/examples/inline-doc-hint.d.ts +3 -0
  261. package/dist/components/kbd/examples/inline-doc-hint.d.ts.map +1 -0
  262. package/dist/components/kbd/examples/shortcut-row.d.ts +3 -0
  263. package/dist/components/kbd/examples/shortcut-row.d.ts.map +1 -0
  264. package/dist/components/kbd/examples/toolbar-hints.d.ts +3 -0
  265. package/dist/components/kbd/examples/toolbar-hints.d.ts.map +1 -0
  266. package/dist/components/label/Label.d.ts +29 -0
  267. package/dist/components/label/Label.d.ts.map +1 -0
  268. package/dist/components/label/examples/accessibility-pattern.d.ts +6 -0
  269. package/dist/components/label/examples/accessibility-pattern.d.ts.map +1 -0
  270. package/dist/components/label/examples/grouped-labels.d.ts +6 -0
  271. package/dist/components/label/examples/grouped-labels.d.ts.map +1 -0
  272. package/dist/components/label/examples/optional-field.d.ts +3 -0
  273. package/dist/components/label/examples/optional-field.d.ts.map +1 -0
  274. package/dist/components/label/examples/required-field.d.ts +3 -0
  275. package/dist/components/label/examples/required-field.d.ts.map +1 -0
  276. package/dist/components/label/examples/with-icon.d.ts +3 -0
  277. package/dist/components/label/examples/with-icon.d.ts.map +1 -0
  278. package/dist/components/link-button/LinkButton.d.ts +18 -0
  279. package/dist/components/link-button/LinkButton.d.ts.map +1 -0
  280. package/dist/components/link-button/examples/disabled.d.ts +6 -0
  281. package/dist/components/link-button/examples/disabled.d.ts.map +1 -0
  282. package/dist/components/link-button/examples/external.d.ts +3 -0
  283. package/dist/components/link-button/examples/external.d.ts.map +1 -0
  284. package/dist/components/link-button/examples/footer-legal.d.ts +3 -0
  285. package/dist/components/link-button/examples/footer-legal.d.ts.map +1 -0
  286. package/dist/components/link-button/examples/inline-text-link.d.ts +3 -0
  287. package/dist/components/link-button/examples/inline-text-link.d.ts.map +1 -0
  288. package/dist/components/link-button/examples/navigation-cluster.d.ts +3 -0
  289. package/dist/components/link-button/examples/navigation-cluster.d.ts.map +1 -0
  290. package/dist/components/modal/Modal.d.ts +58 -0
  291. package/dist/components/modal/Modal.d.ts.map +1 -0
  292. package/dist/components/modal/examples/canonical-maximal.d.ts +6 -0
  293. package/dist/components/modal/examples/canonical-maximal.d.ts.map +1 -0
  294. package/dist/components/modal/examples/scenario-confirm-delete.d.ts +3 -0
  295. package/dist/components/modal/examples/scenario-confirm-delete.d.ts.map +1 -0
  296. package/dist/components/modal/examples/scenario-edit-entity.d.ts +3 -0
  297. package/dist/components/modal/examples/scenario-edit-entity.d.ts.map +1 -0
  298. package/dist/components/modal/examples/scenario-legal-consent.d.ts +3 -0
  299. package/dist/components/modal/examples/scenario-legal-consent.d.ts.map +1 -0
  300. package/dist/components/modal/examples/scenario-multi-field-form.d.ts +3 -0
  301. package/dist/components/modal/examples/scenario-multi-field-form.d.ts.map +1 -0
  302. package/dist/components/notification/Notification.d.ts +42 -0
  303. package/dist/components/notification/Notification.d.ts.map +1 -0
  304. package/dist/components/notification/NotificationStore.d.ts +18 -0
  305. package/dist/components/notification/NotificationStore.d.ts.map +1 -0
  306. package/dist/components/notification/examples/action-toast.d.ts +2 -0
  307. package/dist/components/notification/examples/action-toast.d.ts.map +1 -0
  308. package/dist/components/notification/examples/error-success.d.ts +2 -0
  309. package/dist/components/notification/examples/error-success.d.ts.map +1 -0
  310. package/dist/components/notification/examples/notification-store.d.ts +2 -0
  311. package/dist/components/notification/examples/notification-store.d.ts.map +1 -0
  312. package/dist/components/notification/examples/positions.d.ts +2 -0
  313. package/dist/components/notification/examples/positions.d.ts.map +1 -0
  314. package/dist/components/notification/examples/toast-queue.d.ts +2 -0
  315. package/dist/components/notification/examples/toast-queue.d.ts.map +1 -0
  316. package/dist/components/page-content/PageContent.d.ts +51 -0
  317. package/dist/components/page-content/PageContent.d.ts.map +1 -0
  318. package/dist/components/pagination/Pagination.d.ts +19 -0
  319. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  320. package/dist/components/pagination/examples/canonical-composition.d.ts +5 -0
  321. package/dist/components/pagination/examples/canonical-composition.d.ts.map +1 -0
  322. package/dist/components/pagination/examples/compact.d.ts +3 -0
  323. package/dist/components/pagination/examples/compact.d.ts.map +1 -0
  324. package/dist/components/pagination/examples/controlled-page.d.ts +3 -0
  325. package/dist/components/pagination/examples/controlled-page.d.ts.map +1 -0
  326. package/dist/components/pagination/examples/full-width-list.d.ts +3 -0
  327. package/dist/components/pagination/examples/full-width-list.d.ts.map +1 -0
  328. package/dist/components/pagination/examples/table-footer.d.ts +3 -0
  329. package/dist/components/pagination/examples/table-footer.d.ts.map +1 -0
  330. package/dist/components/popover/Popover.d.ts +48 -0
  331. package/dist/components/popover/Popover.d.ts.map +1 -0
  332. package/dist/components/popover/examples/canonical-panel.d.ts +5 -0
  333. package/dist/components/popover/examples/canonical-panel.d.ts.map +1 -0
  334. package/dist/components/popover/examples/date-trigger.d.ts +5 -0
  335. package/dist/components/popover/examples/date-trigger.d.ts.map +1 -0
  336. package/dist/components/popover/examples/form-in-popover.d.ts +5 -0
  337. package/dist/components/popover/examples/form-in-popover.d.ts.map +1 -0
  338. package/dist/components/popover/examples/placement.d.ts +5 -0
  339. package/dist/components/popover/examples/placement.d.ts.map +1 -0
  340. package/dist/components/popover/examples/rich-content.d.ts +5 -0
  341. package/dist/components/popover/examples/rich-content.d.ts.map +1 -0
  342. package/dist/components/popover/popoverGeometry.d.ts +6 -0
  343. package/dist/components/popover/popoverGeometry.d.ts.map +1 -0
  344. package/dist/components/popover/usePopoverPosition.d.ts +18 -0
  345. package/dist/components/popover/usePopoverPosition.d.ts.map +1 -0
  346. package/dist/components/progress-bar/ProgressBar.d.ts +14 -0
  347. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -0
  348. package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts +6 -0
  349. package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts.map +1 -0
  350. package/dist/components/progress-bar/examples/labeled.d.ts +3 -0
  351. package/dist/components/progress-bar/examples/labeled.d.ts.map +1 -0
  352. package/dist/components/progress-bar/examples/step-progress.d.ts +3 -0
  353. package/dist/components/progress-bar/examples/step-progress.d.ts.map +1 -0
  354. package/dist/components/progress-bar/examples/upload-progress.d.ts +3 -0
  355. package/dist/components/progress-bar/examples/upload-progress.d.ts.map +1 -0
  356. package/dist/components/progress-bar/examples/wizard-composition.d.ts +3 -0
  357. package/dist/components/progress-bar/examples/wizard-composition.d.ts.map +1 -0
  358. package/dist/components/progress-circle/ProgressCircle.d.ts +33 -0
  359. package/dist/components/progress-circle/ProgressCircle.d.ts.map +1 -0
  360. package/dist/components/progress-circle/examples/a11y-label.d.ts +6 -0
  361. package/dist/components/progress-circle/examples/a11y-label.d.ts.map +1 -0
  362. package/dist/components/progress-circle/examples/composition.d.ts +3 -0
  363. package/dist/components/progress-circle/examples/composition.d.ts.map +1 -0
  364. package/dist/components/progress-circle/examples/controlled.d.ts +3 -0
  365. package/dist/components/progress-circle/examples/controlled.d.ts.map +1 -0
  366. package/dist/components/progress-circle/examples/dashboard-ring.d.ts +3 -0
  367. package/dist/components/progress-circle/examples/dashboard-ring.d.ts.map +1 -0
  368. package/dist/components/progress-circle/examples/max-scale.d.ts +3 -0
  369. package/dist/components/progress-circle/examples/max-scale.d.ts.map +1 -0
  370. package/dist/components/radio/Radio.d.ts +40 -0
  371. package/dist/components/radio/Radio.d.ts.map +1 -0
  372. package/dist/components/radio/examples/notification-channel.d.ts +3 -0
  373. package/dist/components/radio/examples/notification-channel.d.ts.map +1 -0
  374. package/dist/components/radio/examples/plan-picker.d.ts +3 -0
  375. package/dist/components/radio/examples/plan-picker.d.ts.map +1 -0
  376. package/dist/components/radio/examples/settings-group.d.ts +3 -0
  377. package/dist/components/radio/examples/settings-group.d.ts.map +1 -0
  378. package/dist/components/radio/examples/shipping-method.d.ts +3 -0
  379. package/dist/components/radio/examples/shipping-method.d.ts.map +1 -0
  380. package/dist/components/scroll-container/ScrollContainer.d.ts +42 -0
  381. package/dist/components/scroll-container/ScrollContainer.d.ts.map +1 -0
  382. package/dist/components/segmented-control/SegmentedControl.d.ts +40 -0
  383. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
  384. package/dist/components/segmented-control/examples/canonical-composition.d.ts +5 -0
  385. package/dist/components/segmented-control/examples/canonical-composition.d.ts.map +1 -0
  386. package/dist/components/segmented-control/examples/catalog-filters.d.ts +5 -0
  387. package/dist/components/segmented-control/examples/catalog-filters.d.ts.map +1 -0
  388. package/dist/components/segmented-control/examples/pricing-toggle.d.ts +5 -0
  389. package/dist/components/segmented-control/examples/pricing-toggle.d.ts.map +1 -0
  390. package/dist/components/segmented-control/examples/view-mode.d.ts +5 -0
  391. package/dist/components/segmented-control/examples/view-mode.d.ts.map +1 -0
  392. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +22 -0
  393. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts.map +1 -0
  394. package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts +3 -0
  395. package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts.map +1 -0
  396. package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts +3 -0
  397. package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts.map +1 -0
  398. package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts +3 -0
  399. package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts.map +1 -0
  400. package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts +3 -0
  401. package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts.map +1 -0
  402. package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts +3 -0
  403. package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts.map +1 -0
  404. package/dist/components/select/Select.d.ts +84 -0
  405. package/dist/components/select/Select.d.ts.map +1 -0
  406. package/dist/components/select/examples/01-country.d.ts +6 -0
  407. package/dist/components/select/examples/01-country.d.ts.map +1 -0
  408. package/dist/components/select/examples/02-controlled.d.ts +5 -0
  409. package/dist/components/select/examples/02-controlled.d.ts.map +1 -0
  410. package/dist/components/select/examples/03-groups.d.ts +5 -0
  411. package/dist/components/select/examples/03-groups.d.ts.map +1 -0
  412. package/dist/components/select/examples/04-full-width-form.d.ts +6 -0
  413. package/dist/components/select/examples/04-full-width-form.d.ts.map +1 -0
  414. package/dist/components/select/selectListbox.d.ts +13 -0
  415. package/dist/components/select/selectListbox.d.ts.map +1 -0
  416. package/dist/components/slider/Slider.d.ts +23 -0
  417. package/dist/components/slider/Slider.d.ts.map +1 -0
  418. package/dist/components/slider/examples/01-volume.d.ts +5 -0
  419. package/dist/components/slider/examples/01-volume.d.ts.map +1 -0
  420. package/dist/components/slider/examples/02-price-range.d.ts +5 -0
  421. package/dist/components/slider/examples/02-price-range.d.ts.map +1 -0
  422. package/dist/components/slider/examples/03-controlled.d.ts +5 -0
  423. package/dist/components/slider/examples/03-controlled.d.ts.map +1 -0
  424. package/dist/components/slider/examples/04-disabled.d.ts +5 -0
  425. package/dist/components/slider/examples/04-disabled.d.ts.map +1 -0
  426. package/dist/components/stepper/HorizontalStepper.d.ts +41 -0
  427. package/dist/components/stepper/HorizontalStepper.d.ts.map +1 -0
  428. package/dist/components/stepper/Stepper.d.ts +77 -0
  429. package/dist/components/stepper/Stepper.d.ts.map +1 -0
  430. package/dist/components/stepper/VerticalStepper.d.ts +41 -0
  431. package/dist/components/stepper/VerticalStepper.d.ts.map +1 -0
  432. package/dist/components/stepper/examples/01-checkout-horizontal.d.ts +5 -0
  433. package/dist/components/stepper/examples/01-checkout-horizontal.d.ts.map +1 -0
  434. package/dist/components/stepper/examples/02-onboarding-vertical.d.ts +5 -0
  435. package/dist/components/stepper/examples/02-onboarding-vertical.d.ts.map +1 -0
  436. package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts +5 -0
  437. package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts.map +1 -0
  438. package/dist/components/stepper/examples/04-checkout-step-error.d.ts +6 -0
  439. package/dist/components/stepper/examples/04-checkout-step-error.d.ts.map +1 -0
  440. package/dist/components/stepper/examples/05-horizontal-primitive.d.ts +5 -0
  441. package/dist/components/stepper/examples/05-horizontal-primitive.d.ts.map +1 -0
  442. package/dist/components/stepper/stepperAlignContext.d.ts +11 -0
  443. package/dist/components/stepper/stepperAlignContext.d.ts.map +1 -0
  444. package/dist/components/switch/Switch.d.ts +48 -0
  445. package/dist/components/switch/Switch.d.ts.map +1 -0
  446. package/dist/components/switch/examples/canonical-maximal.d.ts +5 -0
  447. package/dist/components/switch/examples/canonical-maximal.d.ts.map +1 -0
  448. package/dist/components/switch/examples/scenario-billing-annual.d.ts +5 -0
  449. package/dist/components/switch/examples/scenario-billing-annual.d.ts.map +1 -0
  450. package/dist/components/switch/examples/scenario-feature-flag.d.ts +5 -0
  451. package/dist/components/switch/examples/scenario-feature-flag.d.ts.map +1 -0
  452. package/dist/components/switch/examples/scenario-form-consent.d.ts +5 -0
  453. package/dist/components/switch/examples/scenario-form-consent.d.ts.map +1 -0
  454. package/dist/components/switch/examples/scenario-settings-toggle.d.ts +5 -0
  455. package/dist/components/switch/examples/scenario-settings-toggle.d.ts.map +1 -0
  456. package/dist/components/tabs/Tabs.d.ts +69 -0
  457. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  458. package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts +6 -0
  459. package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts.map +1 -0
  460. package/dist/components/tabs/examples/02-dashboard-subviews.d.ts +6 -0
  461. package/dist/components/tabs/examples/02-dashboard-subviews.d.ts.map +1 -0
  462. package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts +6 -0
  463. package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts.map +1 -0
  464. package/dist/components/tabs/examples/04-long-labels-narrow.d.ts +6 -0
  465. package/dist/components/tabs/examples/04-long-labels-narrow.d.ts.map +1 -0
  466. package/dist/components/tabs/examples/05-controlled-active-tab.d.ts +6 -0
  467. package/dist/components/tabs/examples/05-controlled-active-tab.d.ts.map +1 -0
  468. package/dist/components/tag/Tag.d.ts +29 -0
  469. package/dist/components/tag/Tag.d.ts.map +1 -0
  470. package/dist/components/tag/examples/01-filter-chips.d.ts +5 -0
  471. package/dist/components/tag/examples/01-filter-chips.d.ts.map +1 -0
  472. package/dist/components/tag/examples/02-removable-selected-values.d.ts +6 -0
  473. package/dist/components/tag/examples/02-removable-selected-values.d.ts.map +1 -0
  474. package/dist/components/tag/examples/03-status-metadata.d.ts +5 -0
  475. package/dist/components/tag/examples/03-status-metadata.d.ts.map +1 -0
  476. package/dist/components/tag/examples/04-tag-sizes.d.ts +3 -0
  477. package/dist/components/tag/examples/04-tag-sizes.d.ts.map +1 -0
  478. package/dist/components/textarea/Textarea.d.ts +43 -0
  479. package/dist/components/textarea/Textarea.d.ts.map +1 -0
  480. package/dist/components/textarea/examples/01-support-ticket.d.ts +5 -0
  481. package/dist/components/textarea/examples/01-support-ticket.d.ts.map +1 -0
  482. package/dist/components/textarea/examples/02-comment.d.ts +5 -0
  483. package/dist/components/textarea/examples/02-comment.d.ts.map +1 -0
  484. package/dist/components/textarea/examples/03-controlled.d.ts +5 -0
  485. package/dist/components/textarea/examples/03-controlled.d.ts.map +1 -0
  486. package/dist/components/textarea/examples/04-full-width.d.ts +5 -0
  487. package/dist/components/textarea/examples/04-full-width.d.ts.map +1 -0
  488. package/dist/components/tooltip/Tooltip.d.ts +47 -0
  489. package/dist/components/tooltip/Tooltip.d.ts.map +1 -0
  490. package/dist/components/tooltip/examples/canonical-icon-hint.d.ts +5 -0
  491. package/dist/components/tooltip/examples/canonical-icon-hint.d.ts.map +1 -0
  492. package/dist/components/tooltip/examples/scenario-controlled-programmatic.d.ts +5 -0
  493. package/dist/components/tooltip/examples/scenario-controlled-programmatic.d.ts.map +1 -0
  494. package/dist/components/tooltip/examples/scenario-delay-provider.d.ts +5 -0
  495. package/dist/components/tooltip/examples/scenario-delay-provider.d.ts.map +1 -0
  496. package/dist/components/tooltip/examples/scenario-long-content.d.ts +5 -0
  497. package/dist/components/tooltip/examples/scenario-long-content.d.ts.map +1 -0
  498. package/dist/components/tooltip/examples/scenario-side-bottom.d.ts +5 -0
  499. package/dist/components/tooltip/examples/scenario-side-bottom.d.ts.map +1 -0
  500. package/dist/components/typography/Typography.d.ts +30 -0
  501. package/dist/components/typography/Typography.d.ts.map +1 -0
  502. package/dist/components/typography/examples/01-article.d.ts +5 -0
  503. package/dist/components/typography/examples/01-article.d.ts.map +1 -0
  504. package/dist/components/typography/examples/02-form-labels-contrast.d.ts +6 -0
  505. package/dist/components/typography/examples/02-form-labels-contrast.d.ts.map +1 -0
  506. package/dist/components/typography/examples/03-marketing-hero.d.ts +3 -0
  507. package/dist/components/typography/examples/03-marketing-hero.d.ts.map +1 -0
  508. package/dist/components/typography/examples/04-reading-scale.d.ts +3 -0
  509. package/dist/components/typography/examples/04-reading-scale.d.ts.map +1 -0
  510. package/dist/components/typography/examples/05-inline-emphasis.d.ts +3 -0
  511. package/dist/components/typography/examples/05-inline-emphasis.d.ts.map +1 -0
  512. package/dist/hooks/useControllableState.d.ts +8 -0
  513. package/dist/hooks/useControllableState.d.ts.map +1 -0
  514. package/dist/hooks/useEscapeKey.d.ts +7 -0
  515. package/dist/hooks/useEscapeKey.d.ts.map +1 -0
  516. package/dist/hooks/useFieldIds.d.ts +17 -0
  517. package/dist/hooks/useFieldIds.d.ts.map +1 -0
  518. package/dist/hooks/useFocusTrap.d.ts +16 -0
  519. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  520. package/dist/hooks/useMergedRefs.d.ts +3 -0
  521. package/dist/hooks/useMergedRefs.d.ts.map +1 -0
  522. package/dist/hooks/useOutsideClick.d.ts +16 -0
  523. package/dist/hooks/useOutsideClick.d.ts.map +1 -0
  524. package/dist/hooks/useOverlayModal.d.ts +7 -0
  525. package/dist/hooks/useOverlayModal.d.ts.map +1 -0
  526. package/dist/hooks/usePosition.d.ts +41 -0
  527. package/dist/hooks/usePosition.d.ts.map +1 -0
  528. package/dist/hooks/useResponsiveMonths.d.ts +18 -0
  529. package/dist/hooks/useResponsiveMonths.d.ts.map +1 -0
  530. package/dist/hooks/useScrollLock.d.ts +8 -0
  531. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  532. package/dist/icons/Icon.d.ts +13 -0
  533. package/dist/icons/Icon.d.ts.map +1 -0
  534. package/dist/icons/index.d.ts +40 -0
  535. package/dist/icons/index.d.ts.map +1 -0
  536. package/dist/index.css +6101 -5759
  537. package/dist/index.css.map +4 -4
  538. package/dist/index.d.ts +4 -8
  539. package/dist/index.d.ts.map +1 -0
  540. package/dist/index.js +8509 -7660
  541. package/dist/index.js.map +4 -4
  542. package/dist/internal/ControlSizeContext.d.ts +17 -0
  543. package/dist/internal/ControlSizeContext.d.ts.map +1 -0
  544. package/dist/internal/DividerContentContext.d.ts +4 -0
  545. package/dist/internal/DividerContentContext.d.ts.map +1 -0
  546. package/dist/internal/OverlayPortalLayerContext.d.ts +13 -0
  547. package/dist/internal/OverlayPortalLayerContext.d.ts.map +1 -0
  548. package/dist/internal/Portal.d.ts +8 -0
  549. package/dist/internal/Portal.d.ts.map +1 -0
  550. package/dist/internal/context.d.ts +11 -0
  551. package/dist/internal/context.d.ts.map +1 -0
  552. package/dist/internal/cx.d.ts +2 -0
  553. package/dist/internal/cx.d.ts.map +1 -0
  554. package/dist/internal/data-attributes.d.ts +6 -0
  555. package/dist/internal/data-attributes.d.ts.map +1 -0
  556. package/dist/internal/highlightTsxHtml.d.ts +3 -0
  557. package/dist/internal/highlightTsxHtml.d.ts.map +1 -0
  558. package/dist/internal/layoutPxFromPrimitives.d.ts +13 -0
  559. package/dist/internal/layoutPxFromPrimitives.d.ts.map +1 -0
  560. package/dist/internal/mergeRefs.d.ts +4 -0
  561. package/dist/internal/mergeRefs.d.ts.map +1 -0
  562. package/dist/internal/runtimeUnits.d.ts +3 -0
  563. package/dist/internal/runtimeUnits.d.ts.map +1 -0
  564. package/dist/internal/scrollAncestors.d.ts +3 -0
  565. package/dist/internal/scrollAncestors.d.ts.map +1 -0
  566. package/dist/internal/slot.d.ts +19 -0
  567. package/dist/internal/slot.d.ts.map +1 -0
  568. package/dist/internal/states.d.ts +87 -0
  569. package/dist/internal/states.d.ts.map +1 -0
  570. package/dist/layout/app-shell/AppShell.d.ts +54 -0
  571. package/dist/layout/app-shell/AppShell.d.ts.map +1 -0
  572. package/dist/layout/index.d.ts +7 -0
  573. package/dist/layout/index.d.ts.map +1 -0
  574. package/dist/layout/sidebar/Sidebar.d.ts +241 -0
  575. package/dist/layout/sidebar/Sidebar.d.ts.map +1 -0
  576. package/dist/layout/sidebar/SidebarRoot.d.ts +51 -0
  577. package/dist/layout/sidebar/SidebarRoot.d.ts.map +1 -0
  578. package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts +5 -0
  579. package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts.map +1 -0
  580. package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts +6 -0
  581. package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts.map +1 -0
  582. package/dist/layout/sidebar/examples/03-controlled-state.d.ts +5 -0
  583. package/dist/layout/sidebar/examples/03-controlled-state.d.ts.map +1 -0
  584. package/dist/layout/sidebar/examples/04-router-navigation.d.ts +6 -0
  585. package/dist/layout/sidebar/examples/04-router-navigation.d.ts.map +1 -0
  586. package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts +7 -0
  587. package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts.map +1 -0
  588. package/dist/layout/sidebar/sidebar-context.d.ts +19 -0
  589. package/dist/layout/sidebar/sidebar-context.d.ts.map +1 -0
  590. package/dist/layout/sidebar/sidebarLayout.d.ts +12 -0
  591. package/dist/layout/sidebar/sidebarLayout.d.ts.map +1 -0
  592. package/dist/tokens/primitives.d.ts +390 -0
  593. package/dist/tokens/primitives.d.ts.map +1 -0
  594. package/dist/tokens/semantic.d.ts +732 -0
  595. package/dist/tokens/semantic.d.ts.map +1 -0
  596. package/dist/tokens/themes/dark.d.ts +143 -0
  597. package/dist/tokens/themes/dark.d.ts.map +1 -0
  598. package/dist/tokens/themes/light.d.ts +16 -0
  599. package/dist/tokens/themes/light.d.ts.map +1 -0
  600. package/package.json +12 -4
  601. package/src/components/accordion/COMPONENT.md +190 -0
  602. package/src/components/accordion/examples/01-faq-marketing.tsx +62 -0
  603. package/src/components/accordion/examples/02-settings-panels.tsx +67 -0
  604. package/src/components/accordion/examples/03-checkout-order-summary.tsx +87 -0
  605. package/src/components/accordion/examples/04-api-docs-sections.tsx +86 -0
  606. package/src/components/accordion/examples/05-knowledge-base-categories.tsx +65 -0
  607. package/src/components/accordion/examples/examples.module.css +30 -0
  608. package/src/components/avatar/COMPONENT.md +152 -0
  609. package/src/components/avatar/examples/app-header-nav.tsx +41 -0
  610. package/src/components/avatar/examples/comment-thread.tsx +57 -0
  611. package/src/components/avatar/examples/examples.module.css +72 -0
  612. package/src/components/avatar/examples/fallback-variants.tsx +33 -0
  613. package/src/components/avatar/examples/group-overflow.tsx +32 -0
  614. package/src/components/avatar/examples/team-list.tsx +45 -0
  615. package/src/components/badge/COMPONENT.md +101 -0
  616. package/src/components/badge/examples/admin-tags.tsx +35 -0
  617. package/src/components/badge/examples/canonical.tsx +6 -0
  618. package/src/components/badge/examples/ecommerce-inventory.tsx +35 -0
  619. package/src/components/badge/examples/inbox-labels.tsx +36 -0
  620. package/src/components/badge/examples/status-presence.tsx +32 -0
  621. package/src/components/banner/COMPONENT.md +145 -0
  622. package/src/components/banner/examples/billing-alert.tsx +35 -0
  623. package/src/components/banner/examples/cookie-consent-row.tsx +36 -0
  624. package/src/components/banner/examples/feature-promo.tsx +36 -0
  625. package/src/components/banner/examples/maintenance.tsx +23 -0
  626. package/src/components/breadcrumb/COMPONENT.md +127 -0
  627. package/src/components/breadcrumb/examples/canonical.tsx +12 -0
  628. package/src/components/breadcrumb/examples/deep-documentation.tsx +16 -0
  629. package/src/components/breadcrumb/examples/ecommerce-product.tsx +18 -0
  630. package/src/components/breadcrumb/examples/long-path-ellipsis.tsx +21 -0
  631. package/src/components/breadcrumb/examples/saas-settings.tsx +16 -0
  632. package/src/components/button/COMPONENT.md +101 -0
  633. package/src/components/button/examples/canonical-composition.tsx +46 -0
  634. package/src/components/button/examples/destructive-confirm.tsx +36 -0
  635. package/src/components/button/examples/form-submit-row.tsx +33 -0
  636. package/src/components/button/examples/marketing-cta.tsx +26 -0
  637. package/src/components/button/examples/toolbar.tsx +38 -0
  638. package/src/components/button-group/COMPONENT.md +131 -0
  639. package/src/components/button-group/examples/editor-toolbar.tsx +46 -0
  640. package/src/components/button-group/examples/form-footer.tsx +19 -0
  641. package/src/components/button-group/examples/view-switcher.tsx +25 -0
  642. package/src/components/button-group/examples/wizard-actions.tsx +30 -0
  643. package/src/components/card/COMPONENT.md +307 -0
  644. package/src/components/card/examples/cover-banner.module.css +8 -0
  645. package/src/components/card/examples/cta-cover.tsx +44 -0
  646. package/src/components/card/examples/layout.module.css +7 -0
  647. package/src/components/card/examples/list-card.tsx +20 -0
  648. package/src/components/card/examples/media-mini.tsx +55 -0
  649. package/src/components/card/examples/metric-dashboard.tsx +60 -0
  650. package/src/components/card/examples/sparkline.module.css +10 -0
  651. package/src/components/card/examples/split-layout.tsx +29 -0
  652. package/src/components/checkbox/COMPONENT.md +129 -0
  653. package/src/components/checkbox/examples/bulk-select-rows.tsx +54 -0
  654. package/src/components/checkbox/examples/feature-flags-list.tsx +43 -0
  655. package/src/components/checkbox/examples/settings-panel.tsx +50 -0
  656. package/src/components/checkbox/examples/terms-acceptance.tsx +42 -0
  657. package/src/components/code-block/COMPONENT.md +88 -0
  658. package/src/components/code-block/examples/api-response-preview.tsx +21 -0
  659. package/src/components/code-block/examples/config-snippet.tsx +17 -0
  660. package/src/components/code-block/examples/error-stack.tsx +19 -0
  661. package/src/components/code-block/examples/minimal.tsx +6 -0
  662. package/src/components/code-block/examples/tutorial-step.tsx +28 -0
  663. package/src/components/color-picker/COMPONENT.md +171 -0
  664. package/src/components/color-picker/examples/brand-kit.tsx +48 -0
  665. package/src/components/color-picker/examples/controlled-form-field.tsx +40 -0
  666. package/src/components/color-picker/examples/minimal-popover.tsx +26 -0
  667. package/src/components/color-picker/examples/product-variant-swatch.tsx +42 -0
  668. package/src/components/color-picker/examples/theme-accent.tsx +46 -0
  669. package/src/components/command-menu/COMPONENT.md +195 -0
  670. package/src/components/command-menu/examples/app-palette.tsx +129 -0
  671. package/src/components/command-menu/examples/disabled-items.tsx +73 -0
  672. package/src/components/command-menu/examples/file-search.tsx +98 -0
  673. package/src/components/command-menu/examples/quick-actions.tsx +74 -0
  674. package/src/components/data-table/COMPONENT.md +114 -0
  675. package/src/components/data-table/examples/canonical-orders.tsx +107 -0
  676. package/src/components/data-table/examples/controlled-sort-and-page.tsx +66 -0
  677. package/src/components/data-table/examples/infinite-scroll-load-more.tsx +63 -0
  678. package/src/components/data-table/examples/row-selection.tsx +90 -0
  679. package/src/components/data-table/examples/sticky-header-first-column.tsx +55 -0
  680. package/src/components/datepicker/COMPONENT.md +169 -0
  681. package/src/components/datepicker/examples/birthdate.tsx +43 -0
  682. package/src/components/datepicker/examples/booking.tsx +71 -0
  683. package/src/components/datepicker/examples/full-width-form.tsx +59 -0
  684. package/src/components/datepicker/examples/range-report.tsx +54 -0
  685. package/src/components/digit-input/COMPONENT.md +100 -0
  686. package/src/components/digit-input/examples/error-state.tsx +14 -0
  687. package/src/components/digit-input/examples/otp-login.tsx +17 -0
  688. package/src/components/digit-input/examples/pin.tsx +11 -0
  689. package/src/components/digit-input/examples/resend-and-clear.tsx +23 -0
  690. package/src/components/digit-input/examples/verification-step.tsx +21 -0
  691. package/src/components/divider/COMPONENT.md +98 -0
  692. package/src/components/divider/examples/card-splits.tsx +27 -0
  693. package/src/components/divider/examples/divider-examples.module.css +137 -0
  694. package/src/components/divider/examples/inset-stack.tsx +33 -0
  695. package/src/components/divider/examples/line-spacing-column.tsx +27 -0
  696. package/src/components/divider/examples/list-separators.tsx +20 -0
  697. package/src/components/divider/examples/section-breaks.tsx +27 -0
  698. package/src/components/drawer/COMPONENT.md +149 -0
  699. package/src/components/drawer/examples/cart-preview.tsx +55 -0
  700. package/src/components/drawer/examples/examples-scenarios.module.css +79 -0
  701. package/src/components/drawer/examples/explicit-panel.tsx +40 -0
  702. package/src/components/drawer/examples/filters-panel.tsx +53 -0
  703. package/src/components/drawer/examples/mobile-nav-sheet.tsx +43 -0
  704. package/src/components/drawer/examples/settings-side.tsx +54 -0
  705. package/src/components/dropdown/COMPONENT.md +231 -0
  706. package/src/components/dropdown/examples/account-menu.tsx +52 -0
  707. package/src/components/dropdown/examples/actions-menu.tsx +37 -0
  708. package/src/components/dropdown/examples/placement-demo.tsx +59 -0
  709. package/src/components/dropdown/examples/select-like-list.tsx +31 -0
  710. package/src/components/file-upload/COMPONENT.md +229 -0
  711. package/src/components/file-upload/examples/avatar-upload.tsx +54 -0
  712. package/src/components/file-upload/examples/controlled-list.tsx +103 -0
  713. package/src/components/file-upload/examples/document-attach.tsx +70 -0
  714. package/src/components/file-upload/examples/drag-area.tsx +49 -0
  715. package/src/components/hint/COMPONENT.md +99 -0
  716. package/src/components/hint/examples/error-hint.tsx +22 -0
  717. package/src/components/hint/examples/field-help.tsx +27 -0
  718. package/src/components/hint/examples/inline-tip-form.tsx +44 -0
  719. package/src/components/hint/examples/success-confirmation.tsx +30 -0
  720. package/src/components/hint/examples/with-icon.tsx +13 -0
  721. package/src/components/input/COMPONENT.md +139 -0
  722. package/src/components/input/examples/checkout-full-width.module.css +8 -0
  723. package/src/components/input/examples/checkout-full-width.tsx +39 -0
  724. package/src/components/input/examples/login-email.tsx +33 -0
  725. package/src/components/input/examples/password-with-hint.tsx +28 -0
  726. package/src/components/input/examples/search.tsx +30 -0
  727. package/src/components/kbd/COMPONENT.md +87 -0
  728. package/src/components/kbd/examples/combination-keys.tsx +22 -0
  729. package/src/components/kbd/examples/docs-legend.tsx +44 -0
  730. package/src/components/kbd/examples/inline-doc-hint.tsx +18 -0
  731. package/src/components/kbd/examples/shortcut-row.tsx +21 -0
  732. package/src/components/kbd/examples/toolbar-hints.tsx +31 -0
  733. package/src/components/label/COMPONENT.md +125 -0
  734. package/src/components/label/examples/accessibility-pattern.tsx +28 -0
  735. package/src/components/label/examples/grouped-labels.tsx +30 -0
  736. package/src/components/label/examples/optional-field.tsx +14 -0
  737. package/src/components/label/examples/required-field.tsx +20 -0
  738. package/src/components/label/examples/with-icon.tsx +16 -0
  739. package/src/components/link-button/COMPONENT.md +79 -0
  740. package/src/components/link-button/examples/disabled.tsx +18 -0
  741. package/src/components/link-button/examples/external.tsx +18 -0
  742. package/src/components/link-button/examples/footer-legal.tsx +22 -0
  743. package/src/components/link-button/examples/inline-text-link.tsx +14 -0
  744. package/src/components/link-button/examples/navigation-cluster.tsx +24 -0
  745. package/src/components/modal/COMPONENT.md +176 -0
  746. package/src/components/modal/examples/canonical-maximal.tsx +43 -0
  747. package/src/components/modal/examples/examples.module.css +13 -0
  748. package/src/components/modal/examples/scenario-confirm-delete.tsx +38 -0
  749. package/src/components/modal/examples/scenario-edit-entity.tsx +50 -0
  750. package/src/components/modal/examples/scenario-legal-consent.tsx +36 -0
  751. package/src/components/modal/examples/scenario-multi-field-form.tsx +75 -0
  752. package/src/components/notification/COMPONENT.md +150 -0
  753. package/src/components/notification/examples/action-toast.tsx +84 -0
  754. package/src/components/notification/examples/error-success.tsx +70 -0
  755. package/src/components/notification/examples/notification-store.tsx +58 -0
  756. package/src/components/notification/examples/positions.tsx +73 -0
  757. package/src/components/notification/examples/toast-queue.tsx +63 -0
  758. package/src/components/pagination/COMPONENT.md +101 -0
  759. package/src/components/pagination/examples/canonical-composition.tsx +20 -0
  760. package/src/components/pagination/examples/compact.tsx +32 -0
  761. package/src/components/pagination/examples/controlled-page.tsx +57 -0
  762. package/src/components/pagination/examples/full-width-list.tsx +37 -0
  763. package/src/components/pagination/examples/table-footer.tsx +74 -0
  764. package/src/components/popover/COMPONENT.md +157 -0
  765. package/src/components/popover/examples/canonical-panel.tsx +24 -0
  766. package/src/components/popover/examples/date-trigger.tsx +33 -0
  767. package/src/components/popover/examples/form-in-popover.tsx +79 -0
  768. package/src/components/popover/examples/placement.tsx +42 -0
  769. package/src/components/popover/examples/rich-content.tsx +39 -0
  770. package/src/components/progress-bar/COMPONENT.md +84 -0
  771. package/src/components/progress-bar/examples/indeterminate-busy-state.tsx +21 -0
  772. package/src/components/progress-bar/examples/labeled.tsx +6 -0
  773. package/src/components/progress-bar/examples/progress-bar-examples.module.css +22 -0
  774. package/src/components/progress-bar/examples/step-progress.tsx +23 -0
  775. package/src/components/progress-bar/examples/upload-progress.tsx +27 -0
  776. package/src/components/progress-bar/examples/wizard-composition.tsx +18 -0
  777. package/src/components/progress-circle/COMPONENT.md +93 -0
  778. package/src/components/progress-circle/examples/a11y-label.tsx +32 -0
  779. package/src/components/progress-circle/examples/composition.tsx +66 -0
  780. package/src/components/progress-circle/examples/controlled.tsx +58 -0
  781. package/src/components/progress-circle/examples/dashboard-ring.tsx +36 -0
  782. package/src/components/progress-circle/examples/max-scale.tsx +61 -0
  783. package/src/components/radio/COMPONENT.md +123 -0
  784. package/src/components/radio/examples/notification-channel.tsx +29 -0
  785. package/src/components/radio/examples/plan-picker.tsx +53 -0
  786. package/src/components/radio/examples/radio-examples.module.css +31 -0
  787. package/src/components/radio/examples/settings-group.tsx +30 -0
  788. package/src/components/radio/examples/shipping-method.tsx +26 -0
  789. package/src/components/segmented-control/COMPONENT.md +108 -0
  790. package/src/components/segmented-control/examples/canonical-composition.tsx +70 -0
  791. package/src/components/segmented-control/examples/catalog-filters.tsx +41 -0
  792. package/src/components/segmented-control/examples/pricing-toggle.tsx +40 -0
  793. package/src/components/segmented-control/examples/segmented-examples.module.css +12 -0
  794. package/src/components/segmented-control/examples/view-mode.tsx +53 -0
  795. package/src/components/segmented-progress-bar/COMPONENT.md +104 -0
  796. package/src/components/segmented-progress-bar/examples/distribution-breakdown.tsx +16 -0
  797. package/src/components/segmented-progress-bar/examples/multi-phase-rollout.tsx +15 -0
  798. package/src/components/segmented-progress-bar/examples/segment-gaps.tsx +23 -0
  799. package/src/components/segmented-progress-bar/examples/size-ladder.tsx +19 -0
  800. package/src/components/segmented-progress-bar/examples/storage-mix.tsx +16 -0
  801. package/src/components/select/COMPONENT.md +202 -0
  802. package/src/components/select/examples/01-country.tsx +37 -0
  803. package/src/components/select/examples/02-controlled.tsx +35 -0
  804. package/src/components/select/examples/03-groups.tsx +45 -0
  805. package/src/components/select/examples/04-full-width-form.tsx +51 -0
  806. package/src/components/select/examples/examples.module.css +37 -0
  807. package/src/components/slider/COMPONENT.md +78 -0
  808. package/src/components/slider/examples/01-volume.tsx +17 -0
  809. package/src/components/slider/examples/02-price-range.tsx +18 -0
  810. package/src/components/slider/examples/03-controlled.tsx +30 -0
  811. package/src/components/slider/examples/04-disabled.tsx +25 -0
  812. package/src/components/slider/examples/examples.module.css +17 -0
  813. package/src/components/stepper/COMPONENT.md +211 -0
  814. package/src/components/stepper/examples/01-checkout-horizontal.tsx +32 -0
  815. package/src/components/stepper/examples/02-onboarding-vertical.tsx +51 -0
  816. package/src/components/stepper/examples/03-vertical-primitive-rail.tsx +36 -0
  817. package/src/components/stepper/examples/04-checkout-step-error.tsx +30 -0
  818. package/src/components/stepper/examples/05-horizontal-primitive.tsx +37 -0
  819. package/src/components/stepper/examples/examples.module.css +16 -0
  820. package/src/components/switch/COMPONENT.md +144 -0
  821. package/src/components/switch/examples/canonical-maximal.tsx +19 -0
  822. package/src/components/switch/examples/examples.module.css +56 -0
  823. package/src/components/switch/examples/scenario-billing-annual.tsx +27 -0
  824. package/src/components/switch/examples/scenario-feature-flag.tsx +30 -0
  825. package/src/components/switch/examples/scenario-form-consent.tsx +34 -0
  826. package/src/components/switch/examples/scenario-settings-toggle.tsx +26 -0
  827. package/src/components/tabs/COMPONENT.md +141 -0
  828. package/src/components/tabs/examples/01-settings-vertical-rail.tsx +49 -0
  829. package/src/components/tabs/examples/02-dashboard-subviews.tsx +42 -0
  830. package/src/components/tabs/examples/03-tab-triggers-with-icons.tsx +49 -0
  831. package/src/components/tabs/examples/04-long-labels-narrow.tsx +35 -0
  832. package/src/components/tabs/examples/05-controlled-active-tab.tsx +48 -0
  833. package/src/components/tabs/examples/examples.module.css +58 -0
  834. package/src/components/tag/COMPONENT.md +82 -0
  835. package/src/components/tag/examples/01-filter-chips.tsx +36 -0
  836. package/src/components/tag/examples/02-removable-selected-values.tsx +33 -0
  837. package/src/components/tag/examples/03-status-metadata.tsx +24 -0
  838. package/src/components/tag/examples/04-tag-sizes.tsx +18 -0
  839. package/src/components/tag/examples/examples.module.css +20 -0
  840. package/src/components/textarea/COMPONENT.md +120 -0
  841. package/src/components/textarea/examples/01-support-ticket.tsx +35 -0
  842. package/src/components/textarea/examples/02-comment.tsx +35 -0
  843. package/src/components/textarea/examples/03-controlled.tsx +27 -0
  844. package/src/components/textarea/examples/04-full-width.tsx +23 -0
  845. package/src/components/textarea/examples/examples.module.css +21 -0
  846. package/src/components/tooltip/COMPONENT.md +144 -0
  847. package/src/components/tooltip/examples/canonical-icon-hint.tsx +19 -0
  848. package/src/components/tooltip/examples/examples.module.css +6 -0
  849. package/src/components/tooltip/examples/scenario-controlled-programmatic.tsx +32 -0
  850. package/src/components/tooltip/examples/scenario-delay-provider.tsx +19 -0
  851. package/src/components/tooltip/examples/scenario-long-content.tsx +22 -0
  852. package/src/components/tooltip/examples/scenario-side-bottom.tsx +21 -0
  853. package/src/components/typography/COMPONENT.md +113 -0
  854. package/src/components/typography/examples/01-article.tsx +45 -0
  855. package/src/components/typography/examples/02-form-labels-contrast.tsx +61 -0
  856. package/src/components/typography/examples/03-marketing-hero.tsx +25 -0
  857. package/src/components/typography/examples/04-reading-scale.tsx +47 -0
  858. package/src/components/typography/examples/05-inline-emphasis.tsx +30 -0
  859. package/src/components/typography/examples/examples.module.css +30 -0
  860. package/src/layout/sidebar/COMPONENT.md +138 -0
  861. package/src/layout/sidebar/examples/01-app-shell-nav.tsx +79 -0
  862. package/src/layout/sidebar/examples/02-collapsible-desktop.tsx +64 -0
  863. package/src/layout/sidebar/examples/03-controlled-state.tsx +72 -0
  864. package/src/layout/sidebar/examples/04-router-navigation.tsx +70 -0
  865. package/src/layout/sidebar/examples/05-responsive-behavior.tsx +46 -0
  866. package/src/layout/sidebar/examples/examples.module.css +67 -0
  867. package/src/styles/theme-dark.css +43 -0
  868. package/src/styles/theme-light.css +43 -0
  869. package/src/styles/tokens.css +23 -4
  870. package/src/styles/tokens.test.ts +0 -27
@@ -0,0 +1,79 @@
1
+ # LinkButton
2
+
3
+ **Проектирование по умолчанию:** при проектировании экранов и примеров изначально выбирай **`m`** для `size` (где есть ось размера), если явно не оговорено иное.
4
+
5
+ ## Canonical
6
+
7
+ Text-style **navigation** control: **`LinkButton.Root`** only — control typography, inline-flex, underline on hover / `:focus-visible`, sizes **`s`–`xl`**. Import **`LinkButton`** from **`prime-ui-kit`**.
8
+
9
+ ```tsx
10
+ import { LinkButton } from "prime-ui-kit";
11
+
12
+ <LinkButton.Root href="/settings" size="m">
13
+ Settings
14
+ </LinkButton.Root>
15
+ ```
16
+
17
+ | Piece | Role |
18
+ |--------|------|
19
+ | `LinkButton.Root` | `<a>` with anchor props, or `<span role="link">` when `disabled` |
20
+
21
+ **Runnable scenarios** (source copies under `examples/`): [inline text in a paragraph](examples/inline-text-link.tsx), [external tab](examples/external.tsx), [footer legal row](examples/footer-legal.tsx), [nav cluster](examples/navigation-cluster.tsx), [disabled](examples/disabled.tsx).
22
+
23
+ ## Extended
24
+
25
+ ### About
26
+
27
+ - **Use** for in-app routes and sections when the UI should read as a **link**, not a filled button.
28
+ - **Use** inline in copy (help, legal, helper text) where a compact or scaled text link fits the layout; smaller tiers often use **`size="s"`** in footers and dense chrome.
29
+ - **Use** when nested icons should follow **control** size tokens — **`size`** sets **`ControlSizeProvider`** for children.
30
+ - **Do not use** for actions that do not navigate (submit, toggle, open dialogs); use **Button** or another control.
31
+ - **Do not use** expecting **`asChild`** or polymorphic roots; you cannot attach these styles to a child router **`Link`** via one prop.
32
+ - **Do not use** **`disabled`** to mean “still in tab order with full link semantics”; disabled mode removes focus and drops anchor attributes (see Rules).
33
+
34
+ ### Composition
35
+
36
+ - **`LinkButton`** — namespace object with **`LinkButton.Root`** only.
37
+ - **`LinkButton.Root`** — when **`disabled`** is false (default), renders **`<a>`** with anchor attributes from props and wraps **`children`** in **`ControlSizeProvider`** for **`size`**.
38
+ - When **`disabled`** is true, renders **`<span role="link">`** with **`aria-disabled="true"`**, **`tabIndex={-1}`**, and the same size context — no **`href`** or other spread anchor props on the DOM node.
39
+
40
+ ### Rules
41
+
42
+ - **`size`** defaults to **`m`**; valid values are **`"s"`**, **`"m"`**, **`"l"`**, **`"xl"`** (control token tier).
43
+ - With **`disabled={true}`**, **`...rest`** from **`React.AnchorHTMLAttributes`** is **not** applied — the root is a **`span`**, so **`href`**, **`target`**, **`onClick`**, and similar props have **no effect** on the output; do not rely on them for accessibility or behavior in that mode.
44
+ - Active link: native **`<a>`** with your **`href`**; keyboard **Enter** activates like a normal link.
45
+ - Disabled presentation: **`role="link"`**, **`aria-disabled="true"`**, **`tabIndex={-1}`** — not in tab order by default; avoid if the item should remain focusable as a link.
46
+ - For **icon-only** links, provide a name (**`aria-label`** or visible text).
47
+ - For **`target="_blank"`**, set **`rel="noopener noreferrer"`** (and warn in UI if policy requires it).
48
+ - There is no loading or error variant; for async work without navigation, prefer **Button** (or another pattern).
49
+ - One visual style only (no **`variant`**); hierarchy comes from **`size`** and surrounding layout. No built-in **`fullWidth`** — use layout or **`className`** on the root if you need block-level stretch.
50
+ - **`ref`** is forwarded to the DOM root (**`<a>`** or the disabled **`<span>`**); the public ref type is **`HTMLAnchorElement`** even though the disabled node is a **`span`**.
51
+
52
+ ### API
53
+
54
+ #### LinkButton.Root
55
+
56
+ | Prop | Type | Default | Required | Description |
57
+ |------|------|---------|----------|-------------|
58
+ | size | `"s" \| "m" \| "l" \| "xl"` | `"m"` | No | Control height / type scale; size context for nested icons via `ControlSizeProvider`. |
59
+ | disabled | `boolean` | `false` | No | Renders `span` with `role="link"` instead of `a`; no navigation. |
60
+ | children | `React.ReactNode` | — | No | Link content (text, icons, etc.). |
61
+ | className | `string` | — | No | Additional class on the root element. |
62
+ | …rest | `React.AnchorHTMLAttributes<HTMLAnchorElement>` | — | No | Forwarded to `<a>` only when `disabled` is false (e.g. `href`, `target`, `rel`, `download`, `onClick`, `aria-*`, `tabIndex`). |
63
+
64
+ ### Related
65
+
66
+ - [Button](../button/COMPONENT.md) — actions, forms, loading/disabled without link semantics.
67
+ - [Breadcrumb](../breadcrumb/COMPONENT.md) — trail navigation; items may use `LinkButton` internally.
68
+ - [Typography](../typography/COMPONENT.md) — body text and inline links without control padding; `LinkButton` matches control alignment and scale.
69
+
70
+ ## LLM note
71
+
72
+ - **Import:** `import { LinkButton } from "prime-ui-kit"` — render **`LinkButton.Root`**; there is no flat **`LinkButton`** element export.
73
+ - **Semantics:** Prefer **`LinkButton`** over **`Button`** when the primary affordance is **navigation** (URL change), not a command.
74
+ - **`disabled`:** Forces **`span`** + **`aria-disabled`**; **`href` / `onClick` / `target`** from props are **ignored** — do not pass them expecting behavior.
75
+ - **External / new tab:** Always pair **`target="_blank"`** with **`rel="noopener noreferrer"`**.
76
+ - **Router:** No **`asChild`** — wrap router **`Link`** by styling it separately or use plain **`<a href>`** from the kit; do not invent a polymorphic API.
77
+ - **Density:** Footer and legal rows → often **`size="s"`**; primary in-sentence link in body copy → usually **`m`** unless the surrounding control tier dictates otherwise.
78
+ - **Icons:** Children can include **`Icon`**; size context flows from **`LinkButton.Root`** — keep icon tier consistent with **`size`** on the root.
79
+ - **Verification:** Cross-check behavior with `examples/*.tsx` and playground `playground/snippets/link-button/`.
@@ -0,0 +1,18 @@
1
+ import { LinkButton } from "prime-ui-kit";
2
+
3
+ /**
4
+ * Disabled link is a <code>span</code> with <code>role="link"</code> — no <code>href</code>, anchor props are not applied.
5
+ * Do not use for “still focusable”; use <code>aria-disabled</code> on a real control pattern if that is required.
6
+ */
7
+ export default function LinkButtonDisabledExample() {
8
+ return (
9
+ <div>
10
+ <LinkButton.Root href="/available" size="m">
11
+ Available route
12
+ </LinkButton.Root>
13
+ <LinkButton.Root href="/ignored-when-disabled" size="m" disabled>
14
+ Coming soon
15
+ </LinkButton.Root>
16
+ </div>
17
+ );
18
+ }
@@ -0,0 +1,18 @@
1
+ import { LinkButton } from "prime-ui-kit";
2
+
3
+ /** External URL opened in a new tab: always set <code>rel="noopener noreferrer"</code> with <code>target="_blank"</code>. */
4
+ export default function LinkButtonExternalExample() {
5
+ return (
6
+ <p>
7
+ Documentation in a separate tab:{" "}
8
+ <LinkButton.Root
9
+ href="https://example.com/docs"
10
+ target="_blank"
11
+ rel="noopener noreferrer"
12
+ size="m"
13
+ >
14
+ Open help
15
+ </LinkButton.Root>
16
+ </p>
17
+ );
18
+ }
@@ -0,0 +1,22 @@
1
+ import { LinkButton } from "prime-ui-kit";
2
+
3
+ /** Dense footer legal row: smaller control tier keeps the strip compact. */
4
+ export default function LinkButtonFooterLegalExample() {
5
+ return (
6
+ <footer>
7
+ <nav aria-label="Legal">
8
+ <LinkButton.Root href="/privacy" size="s">
9
+ Privacy
10
+ </LinkButton.Root>
11
+ <span aria-hidden> · </span>
12
+ <LinkButton.Root href="/terms" size="s">
13
+ Terms
14
+ </LinkButton.Root>
15
+ <span aria-hidden> · </span>
16
+ <LinkButton.Root href="/cookies" size="s">
17
+ Cookie policy
18
+ </LinkButton.Root>
19
+ </nav>
20
+ </footer>
21
+ );
22
+ }
@@ -0,0 +1,14 @@
1
+ import { LinkButton } from "prime-ui-kit";
2
+
3
+ /** Inline link inside body copy: same line as surrounding text, default control tier. */
4
+ export default function LinkButtonInlineTextLinkExample() {
5
+ return (
6
+ <p>
7
+ Need more detail? See{" "}
8
+ <LinkButton.Root href="/docs/billing" size="m">
9
+ billing documentation
10
+ </LinkButton.Root>{" "}
11
+ for proration rules.
12
+ </p>
13
+ );
14
+ }
@@ -0,0 +1,24 @@
1
+ import { LinkButton } from "prime-ui-kit";
2
+
3
+ /** Horizontal cluster of primary nav targets; named <code>nav</code> + text separators (layout can move to page grid/flex). */
4
+ export default function LinkButtonNavigationClusterExample() {
5
+ return (
6
+ <nav aria-label="Product sections">
7
+ <LinkButton.Root href="/product/overview" size="m">
8
+ Overview
9
+ </LinkButton.Root>
10
+ <span aria-hidden> · </span>
11
+ <LinkButton.Root href="/product/pricing" size="m">
12
+ Pricing
13
+ </LinkButton.Root>
14
+ <span aria-hidden> · </span>
15
+ <LinkButton.Root href="/product/security" size="m">
16
+ Security
17
+ </LinkButton.Root>
18
+ <span aria-hidden> · </span>
19
+ <LinkButton.Root href="/product/changelog" size="m">
20
+ Changelog
21
+ </LinkButton.Root>
22
+ </nav>
23
+ );
24
+ }
@@ -0,0 +1,176 @@
1
+ # Modal
2
+
3
+ ## About
4
+
5
+ Centered overlay dialog with a portal, backdrop, focus trap, scroll lock, and optional built-in header, body, and footer. `Modal.Panel` composes these pieces so consumers rarely touch internal layers.
6
+
7
+ - **Use** for blocking confirmation, forms, or disclosures that need full attention and clear dismiss semantics.
8
+ - **Use** when Escape, overlay click, and an explicit close control should all be able to dismiss the dialog (configurable on `Modal.Root`).
9
+ - **Do not use** for non-blocking hints or menus; prefer lighter overlays (for example [Popover](../popover/COMPONENT.md)).
10
+ - **Do not use** for edge-docked sheets; prefer [Drawer](../drawer/COMPONENT.md) when the pattern is a side panel.
11
+ - **Do not use** nested modal stacks without extra focus and stacking discipline; the kit does not add a second modal layer API.
12
+
13
+ ## Composition
14
+
15
+ - **`Modal.Root`** — holds open state (controlled via **`open`** / **`onOpenChange`** or uncontrolled via **`defaultOpen`**), and options **`closeOnEscape`** / **`closeOnOverlayClick`**. Renders **`children`** only (no DOM wrapper).
16
+ - **`Modal.Trigger`** — optional; **`React.Children.only`**: pass **exactly one** React element; its **`onClick`** is merged to call **`onOpen`** when the event is not **`defaultPrevented`**.
17
+ - **`Modal.Panel`** — when open: **`createPortal`** (default container `document.body`), fullscreen **`role="presentation"`** overlay, then **`role="dialog"`** with **`aria-modal="true"`**. If **`title`** is set, renders an internal header (**`h2`**, optional description, optional built-in close icon button), wraps **`children`** in an internal body, and optional **`footer`**. Without **`title`**, **`children`** render directly inside the dialog surface—supply **`aria-label`** or **`aria-labelledby`** (and **`aria-describedby`** when needed).
18
+ - **`Modal.Close`** — same single-child contract as **`Trigger`**; merges **`onClick`** to **`onClose`** when not **`defaultPrevented`**. Typical placement: a control inside **`footer`** (for example **Cancel** or **Save** when saving should dismiss the dialog).
19
+ - **Order:** **`Modal.Root`** → **`Modal.Trigger`** (if any) and **`Modal.Panel`** as siblings (or only **`Modal.Panel`** in controlled flows).
20
+
21
+ ### Minimal example
22
+
23
+ ```tsx
24
+ import { Button, Modal } from "prime-ui-kit";
25
+
26
+ export function Example() {
27
+ return (
28
+ <Modal.Root>
29
+ <Modal.Trigger>
30
+ <Button.Root>Open</Button.Root>
31
+ </Modal.Trigger>
32
+ <Modal.Panel title="Title">
33
+ <p>Content</p>
34
+ </Modal.Panel>
35
+ </Modal.Root>
36
+ );
37
+ }
38
+ ```
39
+
40
+ ### Canonical example (full shell)
41
+
42
+ Use this when you want the complete header row (**`title`**, **`description`**, **`icon`**), a form field in the body, and a **`footer`** where at least one control is wrapped in **`Modal.Close`** (here: **Cancel**). The header still shows the built-in icon close button by default (`showClose`).
43
+
44
+ ```tsx
45
+ import { Button, Icon, Input, Modal } from "prime-ui-kit";
46
+
47
+ export function InviteTeammateModal() {
48
+ return (
49
+ <Modal.Root>
50
+ <Modal.Trigger>
51
+ <Button.Root size="m" variant="neutral" mode="stroke">
52
+ Open workspace invite
53
+ </Button.Root>
54
+ </Modal.Trigger>
55
+ <Modal.Panel
56
+ title="Invite teammate"
57
+ description="We will send one invitation email. The recipient can accept or decline."
58
+ icon={<Icon name="field.email" tone="subtle" />}
59
+ footer={
60
+ <>
61
+ <Modal.Close>
62
+ <Button.Root size="m" variant="neutral" mode="stroke">
63
+ Cancel
64
+ </Button.Root>
65
+ </Modal.Close>
66
+ <Button.Root size="m" variant="primary" type="button">
67
+ Send invite
68
+ </Button.Root>
69
+ </>
70
+ }
71
+ >
72
+ <Input.Root label="Email address" size="m" hint="Work email preferred">
73
+ <Input.Wrapper>
74
+ <Input.Field autoComplete="email" placeholder="name@company.com" type="email" />
75
+ </Input.Wrapper>
76
+ </Input.Root>
77
+ </Modal.Panel>
78
+ </Modal.Root>
79
+ );
80
+ }
81
+ ```
82
+
83
+ Source of truth (stays in sync with the snippet above): `examples/canonical-maximal.tsx`.
84
+
85
+ ### Examples (source)
86
+
87
+ Runnable demos live next to this file (workspace imports use `@/`; published consumers use `prime-ui-kit`):
88
+
89
+ | File | Intent |
90
+ |------|--------|
91
+ | `examples/canonical-maximal.tsx` | Full shell: title, description, icon, one field, footer with **`Modal.Close`** + primary |
92
+ | `examples/scenario-confirm-delete.tsx` | Destructive confirmation; **`variant="error"`** on primary action |
93
+ | `examples/scenario-edit-entity.tsx` | Rename / edit field; **Save** wrapped in **`Modal.Close`** to dismiss after save |
94
+ | `examples/scenario-legal-consent.tsx` | Terms-style copy; **`closeOnOverlayClick={false}`**; single **I agree** closes via **`Modal.Close`** |
95
+ | `examples/scenario-multi-field-form.tsx` | **`Input`**, **`Select`**, **`Textarea`** in the body; submit button uses **`form`** |
96
+
97
+ Playground composition demos (Russian copy, broader variants): `playground/snippets/modal/composition.tsx`.
98
+
99
+ ### Extended usage
100
+
101
+ - **Controlled dialogs:** omit **`Modal.Trigger`**; pass **`open`** and **`onOpenChange`** to **`Modal.Root`**. Keep **`Modal.Panel`** as a sibling; it portals only when **`open`** is true.
102
+ - **Dismiss on primary action:** wrap the confirming button in **`Modal.Close`** when the action should close the dialog immediately (see **edit entity** example). If you must await an API call, keep the dialog open until success, then call **`onOpenChange(false)`** from the parent.
103
+ - **Consent / wizard steps:** set **`closeOnOverlayClick={false}`** (and optionally **`closeOnEscape={false}`**) when accidental dismiss would lose legal or multi-step state; still provide an explicit **`Modal.Close`** (or header close) path where appropriate.
104
+ - **Long body content:** constrain scroll to the body via **`bodyStyle`** / **`bodyClassName`** (see `playground/snippets/modal/features.tsx`); overlay scroll lock remains active.
105
+ - **Headless dialog surface:** omit **`title`** on **`Modal.Panel`** and supply **`aria-label`** or **`aria-labelledby`** / **`aria-describedby`** yourself; inner body wrapper is not used, so **`bodyClassName`** / **`bodyStyle`** do not apply.
106
+
107
+ ### Note for LLMs
108
+
109
+ When generating **Modal** markup for this library: (1) **`Modal.Trigger`** and **`Modal.Close`** each require **exactly one** child element—no fragments or multiple nodes. (2) Prefer **`Modal.Panel`** with **`title`** (and usually **`description`**) so **`aria-labelledby`** / **`aria-describedby`** are wired automatically. (3) Put **Cancel** / **Dismiss** in **`footer`** inside **`Modal.Close`** unless the design relies only on the header icon. (4) Do not wrap kit components to restyle them; use **`size`**, **`variant`**, **`mode`**, and documented props only. (5) For copy-paste starting points, mirror **`examples/canonical-maximal.tsx`** first, then adapt from the scenario files.
110
+
111
+ ## Rules
112
+
113
+ - **Shell tokens:** overlay padding, panel padding, gaps between header/body/footer, and max width use **`--prime-sys-size-modal-*`** (semantic `size.modal` in `tokens/semantic.ts`). Title/description text tiers may still follow control typography tokens where the chrome matches **`size`** `m`.
114
+ - **Controlled:** omit **`Modal.Trigger`** and drive **`open`** / **`onOpenChange`** on **`Modal.Root`**; **`Modal.Panel`** still portals when **`open`** is true.
115
+ - **Uncontrolled:** use **`defaultOpen`** or rely on **`Modal.Trigger`**; **`onOpenChange`** fires for any transition.
116
+ - **`Modal.Trigger`** and **`Modal.Close`** require **exactly one** child element (**`cloneElement`**); fragments or multiple nodes are invalid.
117
+ - **Accessibility:** with **`title`** / **`description`**, **`aria-labelledby`** / **`aria-describedby`** on the dialog are wired from the internal header. Without a visible title, set **`aria-label`** on **`Modal.Panel`** or valid **`aria-labelledby`** / **`aria-describedby`** yourself.
118
+ - While open, siblings of the portal subtree on **`document.body`** get **`inert`** and **`aria-hidden="true"`** to hide background from assistive tech; restore runs on close.
119
+ - **Focus:** focus is trapped inside the dialog while open; initial focus follows browser / trap behavior—ensure a focusable control or manage focus if the first paint is static text only.
120
+ - **`showClose`** (default **`true`** when a header is shown) controls the header icon button; **`closeAriaLabel`** defaults to **`"Close"`**.
121
+ - **`container`** on **`Modal.Panel`** overrides the portal target (for tests or custom stacking); default is **`document.body`**.
122
+ - **`overlayClassName`**, **`footerClassName`**, **`bodyClassName`**, and **`bodyStyle`** target the overlay, **`<footer>`**, and body wrapper respectively; without **`title`**, **`bodyClassName`** / **`bodyStyle`** do not apply (no inner body wrapper).
123
+
124
+ ## API
125
+
126
+ ### Modal.Root
127
+
128
+ | Prop | Type | Default | Required | Description |
129
+ |------|------|---------|----------|-------------|
130
+ | open | `boolean` | — | No | Controlled open state |
131
+ | defaultOpen | `boolean` | `false` | No | Initial open when uncontrolled |
132
+ | onOpenChange | `(open: boolean) => void` | — | No | Fires when open state changes |
133
+ | closeOnEscape | `boolean` | `true` | No | Whether Escape closes the dialog |
134
+ | closeOnOverlayClick | `boolean` | `true` | No | Whether a direct backdrop click closes |
135
+ | children | `React.ReactNode` | — | No | e.g. `Modal.Trigger` and `Modal.Panel` |
136
+
137
+ ### Modal.Trigger
138
+
139
+ | Prop | Type | Default | Required | Description |
140
+ |------|------|---------|----------|-------------|
141
+ | children | `React.ReactElement<{ onClick?: React.MouseEventHandler }>` | — | Yes | Single element whose `onClick` is composed with open |
142
+
143
+ ### Modal.Close
144
+
145
+ | Prop | Type | Default | Required | Description |
146
+ |------|------|---------|----------|-------------|
147
+ | children | `React.ReactElement<{ onClick?: React.MouseEventHandler; className?: string; size?: "s" \| "m" \| "l" \| "xl" }>` | — | Yes | Single element whose `onClick` is composed with close |
148
+
149
+ ### Modal.Panel
150
+
151
+ | Prop | Type | Default | Required | Description |
152
+ |------|------|---------|----------|-------------|
153
+ | title | `React.ReactNode` | — | No | If set, builds header with `h2` and optional description |
154
+ | description | `React.ReactNode` | — | No | Shown under the title when `title` is set |
155
+ | icon | `React.ReactNode` | — | No | Icon slot in the header row |
156
+ | showClose | `boolean` | `true` | No | Header close icon button when `title` is set |
157
+ | closeAriaLabel | `string` | `"Close"` | No | `aria-label` for the header close control |
158
+ | children | `React.ReactNode` | — | No | Main content; wrapped in internal body when `title` is set |
159
+ | footer | `React.ReactNode` | — | No | Rendered in an internal `footer` |
160
+ | container | `HTMLElement \| null` | — | No | Portal container; default `document.body` |
161
+ | overlayClassName | `string` | — | No | Class on the fullscreen backdrop |
162
+ | footerClassName | `string` | — | No | Class on the `footer` element |
163
+ | bodyClassName | `string` | — | No | Class on the internal body when `title` is set |
164
+ | bodyStyle | `React.CSSProperties` | — | No | Inline style on the internal body when `title` is set |
165
+ | aria-label | `string` | — | No | Dialog name when there is no `title`-driven label |
166
+ | aria-labelledby | `string` | — | No | Overrides auto wiring from the built-in header |
167
+ | aria-describedby | `string` | — | No | Overrides auto wiring from the built-in description |
168
+ | className | `string` | — | No | Class on the `role="dialog"` root |
169
+ | style | `React.CSSProperties` | — | No | Style on the `role="dialog"` root |
170
+ | …rest | `Omit<React.HTMLAttributes<HTMLDivElement>, "title">` | — | No | Other attributes forwarded to the dialog root |
171
+
172
+ ## Related
173
+
174
+ - [Button](../button/COMPONENT.md)
175
+ - [Drawer](../drawer/COMPONENT.md)
176
+ - [Popover](../popover/COMPONENT.md)
@@ -0,0 +1,43 @@
1
+ import { Button } from "@/components/button/Button";
2
+ import { Input } from "@/components/input/Input";
3
+ import { Modal } from "@/components/modal/Modal";
4
+ import { Icon } from "@/icons";
5
+
6
+ /**
7
+ * Maximal shell: `title`, `description`, `icon`, body field, `footer` with `Modal.Close` plus primary action.
8
+ * Copy this structure when you need the full header/body/footer pattern.
9
+ */
10
+ export default function ModalCanonicalMaximalExample() {
11
+ return (
12
+ <Modal.Root>
13
+ <Modal.Trigger>
14
+ <Button.Root size="m" variant="neutral" mode="stroke">
15
+ Open workspace invite
16
+ </Button.Root>
17
+ </Modal.Trigger>
18
+ <Modal.Panel
19
+ description="We will send one invitation email. The recipient can accept or decline."
20
+ footer={
21
+ <>
22
+ <Modal.Close>
23
+ <Button.Root size="m" variant="neutral" mode="stroke">
24
+ Cancel
25
+ </Button.Root>
26
+ </Modal.Close>
27
+ <Button.Root size="m" variant="primary" type="button">
28
+ Send invite
29
+ </Button.Root>
30
+ </>
31
+ }
32
+ icon={<Icon name="field.email" tone="subtle" />}
33
+ title="Invite teammate"
34
+ >
35
+ <Input.Root label="Email address" size="m" hint="Work email preferred">
36
+ <Input.Wrapper>
37
+ <Input.Field autoComplete="email" placeholder="name@company.com" type="email" />
38
+ </Input.Wrapper>
39
+ </Input.Root>
40
+ </Modal.Panel>
41
+ </Modal.Root>
42
+ );
43
+ }
@@ -0,0 +1,13 @@
1
+ .fieldStack {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--prime-sys-spacing-m);
5
+ width: 100%;
6
+ }
7
+
8
+ .labeledControl {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--prime-sys-spacing-s);
12
+ width: 100%;
13
+ }
@@ -0,0 +1,38 @@
1
+ import { Button } from "@/components/button/Button";
2
+ import { Modal } from "@/components/modal/Modal";
3
+ import { Typography } from "@/components/typography/Typography";
4
+ import { Icon } from "@/icons";
5
+
6
+ /** Blocking confirmation before destructive action; dismiss via header, overlay, Escape, or Cancel. */
7
+ export default function ModalConfirmDeleteExample() {
8
+ return (
9
+ <Modal.Root>
10
+ <Modal.Trigger>
11
+ <Button.Root size="m" variant="error" mode="stroke">
12
+ Delete project
13
+ </Button.Root>
14
+ </Modal.Trigger>
15
+ <Modal.Panel
16
+ description="This removes the project, its boards, and history. Connected integrations will stop receiving events."
17
+ footer={
18
+ <>
19
+ <Modal.Close>
20
+ <Button.Root size="m" variant="neutral" mode="stroke">
21
+ Cancel
22
+ </Button.Root>
23
+ </Modal.Close>
24
+ <Button.Root size="m" variant="error" type="button">
25
+ Delete permanently
26
+ </Button.Root>
27
+ </>
28
+ }
29
+ icon={<Icon name="action.close" tone="subtle" />}
30
+ title="Delete “Northwind rollout”?"
31
+ >
32
+ <Typography.Root as="p" variant="body-default">
33
+ You can export an archive first from Project settings. This action cannot be undone.
34
+ </Typography.Root>
35
+ </Modal.Panel>
36
+ </Modal.Root>
37
+ );
38
+ }
@@ -0,0 +1,50 @@
1
+ import * as React from "react";
2
+
3
+ import { Button } from "@/components/button/Button";
4
+ import { Input } from "@/components/input/Input";
5
+ import { Modal } from "@/components/modal/Modal";
6
+ import { Icon } from "@/icons";
7
+
8
+ /** Short edit flow: pre-filled field, save keeps the dialog open only if you handle state (here: close on save click). */
9
+ export default function ModalEditEntityExample() {
10
+ const [name, setName] = React.useState("Acme Corp");
11
+
12
+ return (
13
+ <Modal.Root>
14
+ <Modal.Trigger>
15
+ <Button.Root size="m" variant="neutral" mode="stroke">
16
+ Rename account
17
+ </Button.Root>
18
+ </Modal.Trigger>
19
+ <Modal.Panel
20
+ description="The new name appears on invoices and in the member directory."
21
+ footer={
22
+ <>
23
+ <Modal.Close>
24
+ <Button.Root size="m" variant="neutral" mode="stroke">
25
+ Cancel
26
+ </Button.Root>
27
+ </Modal.Close>
28
+ <Modal.Close>
29
+ <Button.Root size="m" variant="primary" type="button">
30
+ Save changes
31
+ </Button.Root>
32
+ </Modal.Close>
33
+ </>
34
+ }
35
+ icon={<Icon name="nav.layoutGrid" tone="subtle" />}
36
+ title="Edit account name"
37
+ >
38
+ <Input.Root label="Account name" size="m">
39
+ <Input.Wrapper>
40
+ <Input.Field
41
+ onChange={(e) => setName(e.target.value)}
42
+ value={name}
43
+ autoComplete="organization"
44
+ />
45
+ </Input.Wrapper>
46
+ </Input.Root>
47
+ </Modal.Panel>
48
+ </Modal.Root>
49
+ );
50
+ }
@@ -0,0 +1,36 @@
1
+ import { Button } from "@/components/button/Button";
2
+ import { Modal } from "@/components/modal/Modal";
3
+ import { Typography } from "@/components/typography/Typography";
4
+ import { Icon } from "@/icons";
5
+
6
+ /** Disclosure + explicit accept; primary action is wrapped in `Modal.Close` so accepting dismisses the dialog. */
7
+ export default function ModalLegalConsentExample() {
8
+ return (
9
+ <Modal.Root closeOnOverlayClick={false}>
10
+ <Modal.Trigger>
11
+ <Button.Root size="m" variant="neutral" mode="stroke">
12
+ Review terms
13
+ </Button.Root>
14
+ </Modal.Trigger>
15
+ <Modal.Panel
16
+ description="Please read the following before continuing to use the service."
17
+ footer={
18
+ <Modal.Close>
19
+ <Button.Root size="m" variant="primary" type="button">
20
+ I agree
21
+ </Button.Root>
22
+ </Modal.Close>
23
+ }
24
+ icon={<Icon name="status.locked" tone="subtle" />}
25
+ title="Terms and data processing"
26
+ >
27
+ <Typography.Root as="p" variant="body-default">
28
+ By continuing, you agree to our Terms of Service and acknowledge our Privacy Policy. We
29
+ process account data to provide the product, send essential notices, and improve
30
+ reliability. You may withdraw consent where applicable by contacting support or adjusting
31
+ settings.
32
+ </Typography.Root>
33
+ </Modal.Panel>
34
+ </Modal.Root>
35
+ );
36
+ }
@@ -0,0 +1,75 @@
1
+ import * as React from "react";
2
+
3
+ import { Button } from "@/components/button/Button";
4
+ import { Input } from "@/components/input/Input";
5
+ import { Label } from "@/components/label/Label";
6
+ import { Modal } from "@/components/modal/Modal";
7
+ import { Select } from "@/components/select/Select";
8
+ import { Textarea } from "@/components/textarea/Textarea";
9
+ import { Icon } from "@/icons";
10
+
11
+ import styles from "./examples.module.css";
12
+
13
+ /** Several fields in the modal body; footer mirrors the canonical pattern (cancel + submit). */
14
+ export default function ModalMultiFieldFormExample() {
15
+ const messageId = React.useId();
16
+
17
+ return (
18
+ <Modal.Root>
19
+ <Modal.Trigger>
20
+ <Button.Root size="m" variant="neutral" mode="stroke">
21
+ New support ticket
22
+ </Button.Root>
23
+ </Modal.Trigger>
24
+ <Modal.Panel
25
+ description="Include enough detail for our team to reproduce or route the issue."
26
+ footer={
27
+ <>
28
+ <Modal.Close>
29
+ <Button.Root size="m" variant="neutral" mode="stroke">
30
+ Cancel
31
+ </Button.Root>
32
+ </Modal.Close>
33
+ <Button.Root size="m" variant="primary" type="submit" form="modal-ticket-form">
34
+ Submit ticket
35
+ </Button.Root>
36
+ </>
37
+ }
38
+ icon={<Icon name="nav.itemDot" tone="subtle" />}
39
+ title="Contact support"
40
+ >
41
+ <form
42
+ className={styles.fieldStack}
43
+ id="modal-ticket-form"
44
+ onSubmit={(e) => e.preventDefault()}
45
+ >
46
+ <Input.Root label="Subject" size="m">
47
+ <Input.Wrapper>
48
+ <Input.Field name="subject" placeholder="Short summary" />
49
+ </Input.Wrapper>
50
+ </Input.Root>
51
+ <Select.Root placeholder="Area" size="m">
52
+ <Select.Trigger>
53
+ <Select.Value />
54
+ </Select.Trigger>
55
+ <Select.Content>
56
+ <Select.Item value="billing">Billing</Select.Item>
57
+ <Select.Item value="product">Product bug</Select.Item>
58
+ <Select.Item value="account">Account access</Select.Item>
59
+ </Select.Content>
60
+ </Select.Root>
61
+ <div className={styles.labeledControl}>
62
+ <Label.Root htmlFor={messageId} size="m">
63
+ Message
64
+ </Label.Root>
65
+ <Textarea.Root
66
+ id={messageId}
67
+ placeholder="Steps, expected result, actual result"
68
+ size="m"
69
+ />
70
+ </div>
71
+ </form>
72
+ </Modal.Panel>
73
+ </Modal.Root>
74
+ );
75
+ }