prime-ui-kit 0.0.1

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 (1343) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +270 -0
  3. package/dist/components/accordion/Accordion.d.ts +70 -0
  4. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  5. package/dist/components/accordion/examples/01-faq-marketing.d.ts +5 -0
  6. package/dist/components/accordion/examples/01-faq-marketing.d.ts.map +1 -0
  7. package/dist/components/accordion/examples/02-settings-panels.d.ts +6 -0
  8. package/dist/components/accordion/examples/02-settings-panels.d.ts.map +1 -0
  9. package/dist/components/accordion/examples/03-checkout-order-summary.d.ts +5 -0
  10. package/dist/components/accordion/examples/03-checkout-order-summary.d.ts.map +1 -0
  11. package/dist/components/accordion/examples/04-api-docs-sections.d.ts +6 -0
  12. package/dist/components/accordion/examples/04-api-docs-sections.d.ts.map +1 -0
  13. package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts +6 -0
  14. package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts.map +1 -0
  15. package/dist/components/avatar/Avatar.d.ts +58 -0
  16. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  17. package/dist/components/avatar/examples/app-header-nav.d.ts +5 -0
  18. package/dist/components/avatar/examples/app-header-nav.d.ts.map +1 -0
  19. package/dist/components/avatar/examples/comment-thread.d.ts +5 -0
  20. package/dist/components/avatar/examples/comment-thread.d.ts.map +1 -0
  21. package/dist/components/avatar/examples/fallback-variants.d.ts +5 -0
  22. package/dist/components/avatar/examples/fallback-variants.d.ts.map +1 -0
  23. package/dist/components/avatar/examples/group-overflow.d.ts +5 -0
  24. package/dist/components/avatar/examples/group-overflow.d.ts.map +1 -0
  25. package/dist/components/avatar/examples/group-three.d.ts +5 -0
  26. package/dist/components/avatar/examples/group-three.d.ts.map +1 -0
  27. package/dist/components/avatar/examples/sizes.d.ts +5 -0
  28. package/dist/components/avatar/examples/sizes.d.ts.map +1 -0
  29. package/dist/components/avatar/examples/src-from-state.d.ts +5 -0
  30. package/dist/components/avatar/examples/src-from-state.d.ts.map +1 -0
  31. package/dist/components/avatar/examples/states.d.ts +5 -0
  32. package/dist/components/avatar/examples/states.d.ts.map +1 -0
  33. package/dist/components/avatar/examples/team-list.d.ts +5 -0
  34. package/dist/components/avatar/examples/team-list.d.ts.map +1 -0
  35. package/dist/components/badge/Badge.d.ts +51 -0
  36. package/dist/components/badge/Badge.d.ts.map +1 -0
  37. package/dist/components/badge/examples/admin-tags.d.ts +3 -0
  38. package/dist/components/badge/examples/admin-tags.d.ts.map +1 -0
  39. package/dist/components/badge/examples/canonical.d.ts +3 -0
  40. package/dist/components/badge/examples/canonical.d.ts.map +1 -0
  41. package/dist/components/badge/examples/ecommerce-inventory.d.ts +3 -0
  42. package/dist/components/badge/examples/ecommerce-inventory.d.ts.map +1 -0
  43. package/dist/components/badge/examples/inbox-labels.d.ts +3 -0
  44. package/dist/components/badge/examples/inbox-labels.d.ts.map +1 -0
  45. package/dist/components/badge/examples/status-presence.d.ts +6 -0
  46. package/dist/components/badge/examples/status-presence.d.ts.map +1 -0
  47. package/dist/components/banner/Banner.d.ts +78 -0
  48. package/dist/components/banner/Banner.d.ts.map +1 -0
  49. package/dist/components/banner/examples/billing-alert.d.ts +3 -0
  50. package/dist/components/banner/examples/billing-alert.d.ts.map +1 -0
  51. package/dist/components/banner/examples/controlled-visibility.d.ts +3 -0
  52. package/dist/components/banner/examples/controlled-visibility.d.ts.map +1 -0
  53. package/dist/components/banner/examples/cookie-consent-row.d.ts +3 -0
  54. package/dist/components/banner/examples/cookie-consent-row.d.ts.map +1 -0
  55. package/dist/components/banner/examples/dismiss-close-button.d.ts +6 -0
  56. package/dist/components/banner/examples/dismiss-close-button.d.ts.map +1 -0
  57. package/dist/components/banner/examples/feature-promo.d.ts +3 -0
  58. package/dist/components/banner/examples/feature-promo.d.ts.map +1 -0
  59. package/dist/components/banner/examples/maintenance.d.ts +3 -0
  60. package/dist/components/banner/examples/maintenance.d.ts.map +1 -0
  61. package/dist/components/breadcrumb/Breadcrumb.d.ts +47 -0
  62. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -0
  63. package/dist/components/breadcrumb/examples/canonical.d.ts +3 -0
  64. package/dist/components/breadcrumb/examples/canonical.d.ts.map +1 -0
  65. package/dist/components/breadcrumb/examples/composition.d.ts +3 -0
  66. package/dist/components/breadcrumb/examples/composition.d.ts.map +1 -0
  67. package/dist/components/breadcrumb/examples/deep-documentation.d.ts +3 -0
  68. package/dist/components/breadcrumb/examples/deep-documentation.d.ts.map +1 -0
  69. package/dist/components/breadcrumb/examples/ecommerce-product.d.ts +3 -0
  70. package/dist/components/breadcrumb/examples/ecommerce-product.d.ts.map +1 -0
  71. package/dist/components/breadcrumb/examples/full-width.d.ts +5 -0
  72. package/dist/components/breadcrumb/examples/full-width.d.ts.map +1 -0
  73. package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts +6 -0
  74. package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts.map +1 -0
  75. package/dist/components/breadcrumb/examples/saas-settings.d.ts +3 -0
  76. package/dist/components/breadcrumb/examples/saas-settings.d.ts.map +1 -0
  77. package/dist/components/breadcrumb/examples/sizes.d.ts +3 -0
  78. package/dist/components/breadcrumb/examples/sizes.d.ts.map +1 -0
  79. package/dist/components/breadcrumb/examples/states.d.ts +6 -0
  80. package/dist/components/breadcrumb/examples/states.d.ts.map +1 -0
  81. package/dist/components/button/Button.d.ts +57 -0
  82. package/dist/components/button/Button.d.ts.map +1 -0
  83. package/dist/components/button/examples/canonical-composition.d.ts +5 -0
  84. package/dist/components/button/examples/canonical-composition.d.ts.map +1 -0
  85. package/dist/components/button/examples/destructive-confirm.d.ts +5 -0
  86. package/dist/components/button/examples/destructive-confirm.d.ts.map +1 -0
  87. package/dist/components/button/examples/form-submit-row.d.ts +5 -0
  88. package/dist/components/button/examples/form-submit-row.d.ts.map +1 -0
  89. package/dist/components/button/examples/full-width-stack.d.ts +5 -0
  90. package/dist/components/button/examples/full-width-stack.d.ts.map +1 -0
  91. package/dist/components/button/examples/icon-composition.d.ts +6 -0
  92. package/dist/components/button/examples/icon-composition.d.ts.map +1 -0
  93. package/dist/components/button/examples/marketing-cta.d.ts +5 -0
  94. package/dist/components/button/examples/marketing-cta.d.ts.map +1 -0
  95. package/dist/components/button/examples/sizes-ladder.d.ts +5 -0
  96. package/dist/components/button/examples/sizes-ladder.d.ts.map +1 -0
  97. package/dist/components/button/examples/toolbar.d.ts +5 -0
  98. package/dist/components/button/examples/toolbar.d.ts.map +1 -0
  99. package/dist/components/button-group/ButtonGroup.d.ts +34 -0
  100. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  101. package/dist/components/button-group/examples/editor-toolbar.d.ts +6 -0
  102. package/dist/components/button-group/examples/editor-toolbar.d.ts.map +1 -0
  103. package/dist/components/button-group/examples/form-footer.d.ts +5 -0
  104. package/dist/components/button-group/examples/form-footer.d.ts.map +1 -0
  105. package/dist/components/button-group/examples/full-width.d.ts +5 -0
  106. package/dist/components/button-group/examples/full-width.d.ts.map +1 -0
  107. package/dist/components/button-group/examples/view-switcher.d.ts +5 -0
  108. package/dist/components/button-group/examples/view-switcher.d.ts.map +1 -0
  109. package/dist/components/button-group/examples/wizard-actions.d.ts +5 -0
  110. package/dist/components/button-group/examples/wizard-actions.d.ts.map +1 -0
  111. package/dist/components/card/Card.d.ts +234 -0
  112. package/dist/components/card/Card.d.ts.map +1 -0
  113. package/dist/components/card/examples/cta-cover.d.ts +5 -0
  114. package/dist/components/card/examples/cta-cover.d.ts.map +1 -0
  115. package/dist/components/card/examples/list-card.d.ts +3 -0
  116. package/dist/components/card/examples/list-card.d.ts.map +1 -0
  117. package/dist/components/card/examples/media-mini.d.ts +3 -0
  118. package/dist/components/card/examples/media-mini.d.ts.map +1 -0
  119. package/dist/components/card/examples/metric-dashboard.d.ts +3 -0
  120. package/dist/components/card/examples/metric-dashboard.d.ts.map +1 -0
  121. package/dist/components/card/examples/mini-kpi.d.ts +3 -0
  122. package/dist/components/card/examples/mini-kpi.d.ts.map +1 -0
  123. package/dist/components/card/examples/split-layout.d.ts +3 -0
  124. package/dist/components/card/examples/split-layout.d.ts.map +1 -0
  125. package/dist/components/checkbox/Checkbox.d.ts +42 -0
  126. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  127. package/dist/components/checkbox/examples/bulk-select-rows.d.ts +5 -0
  128. package/dist/components/checkbox/examples/bulk-select-rows.d.ts.map +1 -0
  129. package/dist/components/checkbox/examples/empty-label-form.d.ts +6 -0
  130. package/dist/components/checkbox/examples/empty-label-form.d.ts.map +1 -0
  131. package/dist/components/checkbox/examples/feature-flags-list.d.ts +5 -0
  132. package/dist/components/checkbox/examples/feature-flags-list.d.ts.map +1 -0
  133. package/dist/components/checkbox/examples/settings-panel.d.ts +5 -0
  134. package/dist/components/checkbox/examples/settings-panel.d.ts.map +1 -0
  135. package/dist/components/checkbox/examples/terms-acceptance.d.ts +5 -0
  136. package/dist/components/checkbox/examples/terms-acceptance.d.ts.map +1 -0
  137. package/dist/components/code-block/CodeBlock.d.ts +17 -0
  138. package/dist/components/code-block/CodeBlock.d.ts.map +1 -0
  139. package/dist/components/code-block/examples/api-response-preview.d.ts +3 -0
  140. package/dist/components/code-block/examples/api-response-preview.d.ts.map +1 -0
  141. package/dist/components/code-block/examples/config-snippet.d.ts +3 -0
  142. package/dist/components/code-block/examples/config-snippet.d.ts.map +1 -0
  143. package/dist/components/code-block/examples/controlled.d.ts +3 -0
  144. package/dist/components/code-block/examples/controlled.d.ts.map +1 -0
  145. package/dist/components/code-block/examples/error-stack.d.ts +3 -0
  146. package/dist/components/code-block/examples/error-stack.d.ts.map +1 -0
  147. package/dist/components/code-block/examples/minimal.d.ts +3 -0
  148. package/dist/components/code-block/examples/minimal.d.ts.map +1 -0
  149. package/dist/components/code-block/examples/tutorial-step.d.ts +3 -0
  150. package/dist/components/code-block/examples/tutorial-step.d.ts.map +1 -0
  151. package/dist/components/color-picker/ColorPicker.d.ts +76 -0
  152. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -0
  153. package/dist/components/color-picker/ColorPickerRac.d.ts +76 -0
  154. package/dist/components/color-picker/ColorPickerRac.d.ts.map +1 -0
  155. package/dist/components/color-picker/examples/brand-kit.d.ts +3 -0
  156. package/dist/components/color-picker/examples/brand-kit.d.ts.map +1 -0
  157. package/dist/components/color-picker/examples/controlled-form-field.d.ts +3 -0
  158. package/dist/components/color-picker/examples/controlled-form-field.d.ts.map +1 -0
  159. package/dist/components/color-picker/examples/field-eyedropper.d.ts +3 -0
  160. package/dist/components/color-picker/examples/field-eyedropper.d.ts.map +1 -0
  161. package/dist/components/color-picker/examples/format-variants.d.ts +3 -0
  162. package/dist/components/color-picker/examples/format-variants.d.ts.map +1 -0
  163. package/dist/components/color-picker/examples/full-width.d.ts +3 -0
  164. package/dist/components/color-picker/examples/full-width.d.ts.map +1 -0
  165. package/dist/components/color-picker/examples/hex-input-sizes.d.ts +3 -0
  166. package/dist/components/color-picker/examples/hex-input-sizes.d.ts.map +1 -0
  167. package/dist/components/color-picker/examples/minimal-popover.d.ts +3 -0
  168. package/dist/components/color-picker/examples/minimal-popover.d.ts.map +1 -0
  169. package/dist/components/color-picker/examples/panel-placement.d.ts +3 -0
  170. package/dist/components/color-picker/examples/panel-placement.d.ts.map +1 -0
  171. package/dist/components/color-picker/examples/product-variant-swatch.d.ts +3 -0
  172. package/dist/components/color-picker/examples/product-variant-swatch.d.ts.map +1 -0
  173. package/dist/components/color-picker/examples/readout-trigger.d.ts +6 -0
  174. package/dist/components/color-picker/examples/readout-trigger.d.ts.map +1 -0
  175. package/dist/components/color-picker/examples/states.d.ts +3 -0
  176. package/dist/components/color-picker/examples/states.d.ts.map +1 -0
  177. package/dist/components/color-picker/examples/theme-accent.d.ts +3 -0
  178. package/dist/components/color-picker/examples/theme-accent.d.ts.map +1 -0
  179. package/dist/components/command-menu/CommandMenu.d.ts +74 -0
  180. package/dist/components/command-menu/CommandMenu.d.ts.map +1 -0
  181. package/dist/components/command-menu/examples/app-palette.d.ts +5 -0
  182. package/dist/components/command-menu/examples/app-palette.d.ts.map +1 -0
  183. package/dist/components/command-menu/examples/composition-tags-footer.d.ts +5 -0
  184. package/dist/components/command-menu/examples/composition-tags-footer.d.ts.map +1 -0
  185. package/dist/components/command-menu/examples/controlled-open-search.d.ts +5 -0
  186. package/dist/components/command-menu/examples/controlled-open-search.d.ts.map +1 -0
  187. package/dist/components/command-menu/examples/disabled-items.d.ts +6 -0
  188. package/dist/components/command-menu/examples/disabled-items.d.ts.map +1 -0
  189. package/dist/components/command-menu/examples/file-search.d.ts +5 -0
  190. package/dist/components/command-menu/examples/file-search.d.ts.map +1 -0
  191. package/dist/components/command-menu/examples/full-width-panel.d.ts +6 -0
  192. package/dist/components/command-menu/examples/full-width-panel.d.ts.map +1 -0
  193. package/dist/components/command-menu/examples/item-icon-as.d.ts +5 -0
  194. package/dist/components/command-menu/examples/item-icon-as.d.ts.map +1 -0
  195. package/dist/components/command-menu/examples/quick-actions.d.ts +5 -0
  196. package/dist/components/command-menu/examples/quick-actions.d.ts.map +1 -0
  197. package/dist/components/command-menu/examples/variants-density-items.d.ts +5 -0
  198. package/dist/components/command-menu/examples/variants-density-items.d.ts.map +1 -0
  199. package/dist/components/data-table/DataTable.d.ts +78 -0
  200. package/dist/components/data-table/DataTable.d.ts.map +1 -0
  201. package/dist/components/data-table/examples/canonical-orders.d.ts +6 -0
  202. package/dist/components/data-table/examples/canonical-orders.d.ts.map +1 -0
  203. package/dist/components/data-table/examples/composition.d.ts +3 -0
  204. package/dist/components/data-table/examples/composition.d.ts.map +1 -0
  205. package/dist/components/data-table/examples/controlled-sort-and-page.d.ts +5 -0
  206. package/dist/components/data-table/examples/controlled-sort-and-page.d.ts.map +1 -0
  207. package/dist/components/data-table/examples/divider-styles.d.ts +3 -0
  208. package/dist/components/data-table/examples/divider-styles.d.ts.map +1 -0
  209. package/dist/components/data-table/examples/full-width.d.ts +3 -0
  210. package/dist/components/data-table/examples/full-width.d.ts.map +1 -0
  211. package/dist/components/data-table/examples/highlight-and-striped.d.ts +3 -0
  212. package/dist/components/data-table/examples/highlight-and-striped.d.ts.map +1 -0
  213. package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts +6 -0
  214. package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts.map +1 -0
  215. package/dist/components/data-table/examples/row-selection.d.ts +6 -0
  216. package/dist/components/data-table/examples/row-selection.d.ts.map +1 -0
  217. package/dist/components/data-table/examples/sizes.d.ts +3 -0
  218. package/dist/components/data-table/examples/sizes.d.ts.map +1 -0
  219. package/dist/components/data-table/examples/sorting-pagination.d.ts +3 -0
  220. package/dist/components/data-table/examples/sorting-pagination.d.ts.map +1 -0
  221. package/dist/components/data-table/examples/states.d.ts +3 -0
  222. package/dist/components/data-table/examples/states.d.ts.map +1 -0
  223. package/dist/components/data-table/examples/sticky-and-headers.d.ts +3 -0
  224. package/dist/components/data-table/examples/sticky-and-headers.d.ts.map +1 -0
  225. package/dist/components/data-table/examples/sticky-header-first-column.d.ts +6 -0
  226. package/dist/components/data-table/examples/sticky-header-first-column.d.ts.map +1 -0
  227. package/dist/components/datepicker/Datepicker.d.ts +104 -0
  228. package/dist/components/datepicker/Datepicker.d.ts.map +1 -0
  229. package/dist/components/datepicker/examples/birthdate.d.ts +5 -0
  230. package/dist/components/datepicker/examples/birthdate.d.ts.map +1 -0
  231. package/dist/components/datepicker/examples/booking.d.ts +5 -0
  232. package/dist/components/datepicker/examples/booking.d.ts.map +1 -0
  233. package/dist/components/datepicker/examples/full-width-form.d.ts +5 -0
  234. package/dist/components/datepicker/examples/full-width-form.d.ts.map +1 -0
  235. package/dist/components/datepicker/examples/range-report.d.ts +5 -0
  236. package/dist/components/datepicker/examples/range-report.d.ts.map +1 -0
  237. package/dist/components/digit-input/DigitInput.d.ts +21 -0
  238. package/dist/components/digit-input/DigitInput.d.ts.map +1 -0
  239. package/dist/components/digit-input/examples/composition.d.ts +6 -0
  240. package/dist/components/digit-input/examples/composition.d.ts.map +1 -0
  241. package/dist/components/digit-input/examples/controlled.d.ts +6 -0
  242. package/dist/components/digit-input/examples/controlled.d.ts.map +1 -0
  243. package/dist/components/digit-input/examples/error-state.d.ts +3 -0
  244. package/dist/components/digit-input/examples/error-state.d.ts.map +1 -0
  245. package/dist/components/digit-input/examples/features.d.ts +6 -0
  246. package/dist/components/digit-input/examples/features.d.ts.map +1 -0
  247. package/dist/components/digit-input/examples/otp-login.d.ts +3 -0
  248. package/dist/components/digit-input/examples/otp-login.d.ts.map +1 -0
  249. package/dist/components/digit-input/examples/pin.d.ts +3 -0
  250. package/dist/components/digit-input/examples/pin.d.ts.map +1 -0
  251. package/dist/components/digit-input/examples/resend-and-clear.d.ts +3 -0
  252. package/dist/components/digit-input/examples/resend-and-clear.d.ts.map +1 -0
  253. package/dist/components/digit-input/examples/sizes.d.ts +6 -0
  254. package/dist/components/digit-input/examples/sizes.d.ts.map +1 -0
  255. package/dist/components/digit-input/examples/states.d.ts +6 -0
  256. package/dist/components/digit-input/examples/states.d.ts.map +1 -0
  257. package/dist/components/digit-input/examples/verification-step.d.ts +3 -0
  258. package/dist/components/digit-input/examples/verification-step.d.ts.map +1 -0
  259. package/dist/components/divider/Divider.d.ts +26 -0
  260. package/dist/components/divider/Divider.d.ts.map +1 -0
  261. package/dist/components/divider/examples/card-splits.d.ts +3 -0
  262. package/dist/components/divider/examples/card-splits.d.ts.map +1 -0
  263. package/dist/components/divider/examples/inset-stack.d.ts +6 -0
  264. package/dist/components/divider/examples/inset-stack.d.ts.map +1 -0
  265. package/dist/components/divider/examples/line-spacing-column.d.ts +6 -0
  266. package/dist/components/divider/examples/line-spacing-column.d.ts.map +1 -0
  267. package/dist/components/divider/examples/list-separators.d.ts +3 -0
  268. package/dist/components/divider/examples/list-separators.d.ts.map +1 -0
  269. package/dist/components/divider/examples/section-breaks.d.ts +3 -0
  270. package/dist/components/divider/examples/section-breaks.d.ts.map +1 -0
  271. package/dist/components/drawer/Drawer.d.ts +16 -0
  272. package/dist/components/drawer/Drawer.d.ts.map +1 -0
  273. package/dist/components/drawer/examples/cart-preview.d.ts +5 -0
  274. package/dist/components/drawer/examples/cart-preview.d.ts.map +1 -0
  275. package/dist/components/drawer/examples/explicit-panel.d.ts +5 -0
  276. package/dist/components/drawer/examples/explicit-panel.d.ts.map +1 -0
  277. package/dist/components/drawer/examples/filters-panel.d.ts +5 -0
  278. package/dist/components/drawer/examples/filters-panel.d.ts.map +1 -0
  279. package/dist/components/drawer/examples/mobile-nav-sheet.d.ts +5 -0
  280. package/dist/components/drawer/examples/mobile-nav-sheet.d.ts.map +1 -0
  281. package/dist/components/drawer/examples/settings-side.d.ts +5 -0
  282. package/dist/components/drawer/examples/settings-side.d.ts.map +1 -0
  283. package/dist/components/dropdown/Dropdown.d.ts +133 -0
  284. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  285. package/dist/components/dropdown/dropdownGeometry.d.ts +10 -0
  286. package/dist/components/dropdown/dropdownGeometry.d.ts.map +1 -0
  287. package/dist/components/dropdown/examples/account-menu.d.ts +3 -0
  288. package/dist/components/dropdown/examples/account-menu.d.ts.map +1 -0
  289. package/dist/components/dropdown/examples/actions-menu.d.ts +3 -0
  290. package/dist/components/dropdown/examples/actions-menu.d.ts.map +1 -0
  291. package/dist/components/dropdown/examples/as-child.d.ts +3 -0
  292. package/dist/components/dropdown/examples/as-child.d.ts.map +1 -0
  293. package/dist/components/dropdown/examples/composition.d.ts +3 -0
  294. package/dist/components/dropdown/examples/composition.d.ts.map +1 -0
  295. package/dist/components/dropdown/examples/controlled.d.ts +3 -0
  296. package/dist/components/dropdown/examples/controlled.d.ts.map +1 -0
  297. package/dist/components/dropdown/examples/full-width.d.ts +3 -0
  298. package/dist/components/dropdown/examples/full-width.d.ts.map +1 -0
  299. package/dist/components/dropdown/examples/placement-demo.d.ts +3 -0
  300. package/dist/components/dropdown/examples/placement-demo.d.ts.map +1 -0
  301. package/dist/components/dropdown/examples/select-like-list.d.ts +7 -0
  302. package/dist/components/dropdown/examples/select-like-list.d.ts.map +1 -0
  303. package/dist/components/dropdown/examples/sizes.d.ts +3 -0
  304. package/dist/components/dropdown/examples/sizes.d.ts.map +1 -0
  305. package/dist/components/dropdown/examples/states.d.ts +3 -0
  306. package/dist/components/dropdown/examples/states.d.ts.map +1 -0
  307. package/dist/components/dropdown/examples/variants.d.ts +3 -0
  308. package/dist/components/dropdown/examples/variants.d.ts.map +1 -0
  309. package/dist/components/dropdown/menuKeyboard.d.ts +4 -0
  310. package/dist/components/dropdown/menuKeyboard.d.ts.map +1 -0
  311. package/dist/components/dropdown/useDropdownPosition.d.ts +18 -0
  312. package/dist/components/dropdown/useDropdownPosition.d.ts.map +1 -0
  313. package/dist/components/empty-page/EmptyPage.d.ts +63 -0
  314. package/dist/components/empty-page/EmptyPage.d.ts.map +1 -0
  315. package/dist/components/empty-page/examples/canonical.d.ts +3 -0
  316. package/dist/components/empty-page/examples/canonical.d.ts.map +1 -0
  317. package/dist/components/empty-page/examples/sizes.d.ts +3 -0
  318. package/dist/components/empty-page/examples/sizes.d.ts.map +1 -0
  319. package/dist/components/empty-page/examples/table-region.d.ts +6 -0
  320. package/dist/components/empty-page/examples/table-region.d.ts.map +1 -0
  321. package/dist/components/example-frame/ExampleFrame.d.ts +53 -0
  322. package/dist/components/example-frame/ExampleFrame.d.ts.map +1 -0
  323. package/dist/components/file-upload/FileUpload.d.ts +176 -0
  324. package/dist/components/file-upload/FileUpload.d.ts.map +1 -0
  325. package/dist/components/file-upload/examples/avatar-upload.d.ts +6 -0
  326. package/dist/components/file-upload/examples/avatar-upload.d.ts.map +1 -0
  327. package/dist/components/file-upload/examples/controlled-list.d.ts +5 -0
  328. package/dist/components/file-upload/examples/controlled-list.d.ts.map +1 -0
  329. package/dist/components/file-upload/examples/custom-children.d.ts +6 -0
  330. package/dist/components/file-upload/examples/custom-children.d.ts.map +1 -0
  331. package/dist/components/file-upload/examples/document-attach.d.ts +5 -0
  332. package/dist/components/file-upload/examples/document-attach.d.ts.map +1 -0
  333. package/dist/components/file-upload/examples/drag-area.d.ts +5 -0
  334. package/dist/components/file-upload/examples/drag-area.d.ts.map +1 -0
  335. package/dist/components/file-upload/examples/full-width.d.ts +6 -0
  336. package/dist/components/file-upload/examples/full-width.d.ts.map +1 -0
  337. package/dist/components/hint/Hint.d.ts +27 -0
  338. package/dist/components/hint/Hint.d.ts.map +1 -0
  339. package/dist/components/hint/examples/a11y-describedby.d.ts +3 -0
  340. package/dist/components/hint/examples/a11y-describedby.d.ts.map +1 -0
  341. package/dist/components/hint/examples/controlled-variant.d.ts +3 -0
  342. package/dist/components/hint/examples/controlled-variant.d.ts.map +1 -0
  343. package/dist/components/hint/examples/error-hint.d.ts +3 -0
  344. package/dist/components/hint/examples/error-hint.d.ts.map +1 -0
  345. package/dist/components/hint/examples/field-help.d.ts +3 -0
  346. package/dist/components/hint/examples/field-help.d.ts.map +1 -0
  347. package/dist/components/hint/examples/field-states.d.ts +3 -0
  348. package/dist/components/hint/examples/field-states.d.ts.map +1 -0
  349. package/dist/components/hint/examples/inline-tip-form.d.ts +3 -0
  350. package/dist/components/hint/examples/inline-tip-form.d.ts.map +1 -0
  351. package/dist/components/hint/examples/sizes.d.ts +3 -0
  352. package/dist/components/hint/examples/sizes.d.ts.map +1 -0
  353. package/dist/components/hint/examples/success-confirmation.d.ts +6 -0
  354. package/dist/components/hint/examples/success-confirmation.d.ts.map +1 -0
  355. package/dist/components/hint/examples/variants.d.ts +3 -0
  356. package/dist/components/hint/examples/variants.d.ts.map +1 -0
  357. package/dist/components/hint/examples/with-icon.d.ts +3 -0
  358. package/dist/components/hint/examples/with-icon.d.ts.map +1 -0
  359. package/dist/components/index.css +8680 -0
  360. package/dist/components/index.css.map +7 -0
  361. package/dist/components/index.d.ts +97 -0
  362. package/dist/components/index.d.ts.map +1 -0
  363. package/dist/components/index.js +10361 -0
  364. package/dist/components/index.js.map +7 -0
  365. package/dist/components/input/Input.d.ts +73 -0
  366. package/dist/components/input/Input.d.ts.map +1 -0
  367. package/dist/components/input/examples/affix-url-and-amount.d.ts +5 -0
  368. package/dist/components/input/examples/affix-url-and-amount.d.ts.map +1 -0
  369. package/dist/components/input/examples/checkout-full-width.d.ts +5 -0
  370. package/dist/components/input/examples/checkout-full-width.d.ts.map +1 -0
  371. package/dist/components/input/examples/login-email.d.ts +5 -0
  372. package/dist/components/input/examples/login-email.d.ts.map +1 -0
  373. package/dist/components/input/examples/password-with-hint.d.ts +5 -0
  374. package/dist/components/input/examples/password-with-hint.d.ts.map +1 -0
  375. package/dist/components/input/examples/search.d.ts +5 -0
  376. package/dist/components/input/examples/search.d.ts.map +1 -0
  377. package/dist/components/kbd/Kbd.d.ts +15 -0
  378. package/dist/components/kbd/Kbd.d.ts.map +1 -0
  379. package/dist/components/kbd/examples/combination-keys.d.ts +3 -0
  380. package/dist/components/kbd/examples/combination-keys.d.ts.map +1 -0
  381. package/dist/components/kbd/examples/composition-chord-icon.d.ts +3 -0
  382. package/dist/components/kbd/examples/composition-chord-icon.d.ts.map +1 -0
  383. package/dist/components/kbd/examples/context-inherit-size.d.ts +6 -0
  384. package/dist/components/kbd/examples/context-inherit-size.d.ts.map +1 -0
  385. package/dist/components/kbd/examples/docs-legend.d.ts +3 -0
  386. package/dist/components/kbd/examples/docs-legend.d.ts.map +1 -0
  387. package/dist/components/kbd/examples/inline-doc-hint.d.ts +3 -0
  388. package/dist/components/kbd/examples/inline-doc-hint.d.ts.map +1 -0
  389. package/dist/components/kbd/examples/shortcut-row.d.ts +3 -0
  390. package/dist/components/kbd/examples/shortcut-row.d.ts.map +1 -0
  391. package/dist/components/kbd/examples/sizes-ladder.d.ts +3 -0
  392. package/dist/components/kbd/examples/sizes-ladder.d.ts.map +1 -0
  393. package/dist/components/kbd/examples/states-title.d.ts +3 -0
  394. package/dist/components/kbd/examples/states-title.d.ts.map +1 -0
  395. package/dist/components/kbd/examples/toolbar-hints.d.ts +3 -0
  396. package/dist/components/kbd/examples/toolbar-hints.d.ts.map +1 -0
  397. package/dist/components/label/Label.d.ts +29 -0
  398. package/dist/components/label/Label.d.ts.map +1 -0
  399. package/dist/components/label/examples/accessibility-pattern.d.ts +6 -0
  400. package/dist/components/label/examples/accessibility-pattern.d.ts.map +1 -0
  401. package/dist/components/label/examples/grouped-labels.d.ts +6 -0
  402. package/dist/components/label/examples/grouped-labels.d.ts.map +1 -0
  403. package/dist/components/label/examples/mixed-required-optional.d.ts +3 -0
  404. package/dist/components/label/examples/mixed-required-optional.d.ts.map +1 -0
  405. package/dist/components/label/examples/optional-field.d.ts +3 -0
  406. package/dist/components/label/examples/optional-field.d.ts.map +1 -0
  407. package/dist/components/label/examples/required-field.d.ts +3 -0
  408. package/dist/components/label/examples/required-field.d.ts.map +1 -0
  409. package/dist/components/label/examples/sizes.d.ts +3 -0
  410. package/dist/components/label/examples/sizes.d.ts.map +1 -0
  411. package/dist/components/label/examples/states.d.ts +3 -0
  412. package/dist/components/label/examples/states.d.ts.map +1 -0
  413. package/dist/components/label/examples/sub-line.d.ts +3 -0
  414. package/dist/components/label/examples/sub-line.d.ts.map +1 -0
  415. package/dist/components/label/examples/with-icon.d.ts +3 -0
  416. package/dist/components/label/examples/with-icon.d.ts.map +1 -0
  417. package/dist/components/link-button/LinkButton.d.ts +18 -0
  418. package/dist/components/link-button/LinkButton.d.ts.map +1 -0
  419. package/dist/components/link-button/examples/composition.d.ts +3 -0
  420. package/dist/components/link-button/examples/composition.d.ts.map +1 -0
  421. package/dist/components/link-button/examples/disabled.d.ts +7 -0
  422. package/dist/components/link-button/examples/disabled.d.ts.map +1 -0
  423. package/dist/components/link-button/examples/external.d.ts +3 -0
  424. package/dist/components/link-button/examples/external.d.ts.map +1 -0
  425. package/dist/components/link-button/examples/footer-legal.d.ts +3 -0
  426. package/dist/components/link-button/examples/footer-legal.d.ts.map +1 -0
  427. package/dist/components/link-button/examples/inline-text-link.d.ts +3 -0
  428. package/dist/components/link-button/examples/inline-text-link.d.ts.map +1 -0
  429. package/dist/components/link-button/examples/navigation-cluster.d.ts +3 -0
  430. package/dist/components/link-button/examples/navigation-cluster.d.ts.map +1 -0
  431. package/dist/components/link-button/examples/sizes.d.ts +3 -0
  432. package/dist/components/link-button/examples/sizes.d.ts.map +1 -0
  433. package/dist/components/modal/Modal.d.ts +79 -0
  434. package/dist/components/modal/Modal.d.ts.map +1 -0
  435. package/dist/components/modal/examples/canonical-maximal.d.ts +6 -0
  436. package/dist/components/modal/examples/canonical-maximal.d.ts.map +1 -0
  437. package/dist/components/modal/examples/pattern-close-behavior.d.ts +3 -0
  438. package/dist/components/modal/examples/pattern-close-behavior.d.ts.map +1 -0
  439. package/dist/components/modal/examples/pattern-controlled.d.ts +3 -0
  440. package/dist/components/modal/examples/pattern-controlled.d.ts.map +1 -0
  441. package/dist/components/modal/examples/pattern-full-width-footer.d.ts +3 -0
  442. package/dist/components/modal/examples/pattern-full-width-footer.d.ts.map +1 -0
  443. package/dist/components/modal/examples/pattern-portal-and-scroll.d.ts +3 -0
  444. package/dist/components/modal/examples/pattern-portal-and-scroll.d.ts.map +1 -0
  445. package/dist/components/modal/examples/scenario-confirm-delete.d.ts +3 -0
  446. package/dist/components/modal/examples/scenario-confirm-delete.d.ts.map +1 -0
  447. package/dist/components/modal/examples/scenario-edit-entity.d.ts +3 -0
  448. package/dist/components/modal/examples/scenario-edit-entity.d.ts.map +1 -0
  449. package/dist/components/modal/examples/scenario-legal-consent.d.ts +3 -0
  450. package/dist/components/modal/examples/scenario-legal-consent.d.ts.map +1 -0
  451. package/dist/components/modal/examples/scenario-multi-field-form.d.ts +3 -0
  452. package/dist/components/modal/examples/scenario-multi-field-form.d.ts.map +1 -0
  453. package/dist/components/notification/Notification.d.ts +42 -0
  454. package/dist/components/notification/Notification.d.ts.map +1 -0
  455. package/dist/components/notification/NotificationStore.d.ts +18 -0
  456. package/dist/components/notification/NotificationStore.d.ts.map +1 -0
  457. package/dist/components/notification/examples/action-toast.d.ts +2 -0
  458. package/dist/components/notification/examples/action-toast.d.ts.map +1 -0
  459. package/dist/components/notification/examples/composition.d.ts +2 -0
  460. package/dist/components/notification/examples/composition.d.ts.map +1 -0
  461. package/dist/components/notification/examples/controlled.d.ts +2 -0
  462. package/dist/components/notification/examples/controlled.d.ts.map +1 -0
  463. package/dist/components/notification/examples/error-success.d.ts +2 -0
  464. package/dist/components/notification/examples/error-success.d.ts.map +1 -0
  465. package/dist/components/notification/examples/features.d.ts +2 -0
  466. package/dist/components/notification/examples/features.d.ts.map +1 -0
  467. package/dist/components/notification/examples/notification-store.d.ts +5 -0
  468. package/dist/components/notification/examples/notification-store.d.ts.map +1 -0
  469. package/dist/components/notification/examples/positions.d.ts +2 -0
  470. package/dist/components/notification/examples/positions.d.ts.map +1 -0
  471. package/dist/components/notification/examples/sizes.d.ts +2 -0
  472. package/dist/components/notification/examples/sizes.d.ts.map +1 -0
  473. package/dist/components/notification/examples/states.d.ts +2 -0
  474. package/dist/components/notification/examples/states.d.ts.map +1 -0
  475. package/dist/components/notification/examples/toast-queue.d.ts +5 -0
  476. package/dist/components/notification/examples/toast-queue.d.ts.map +1 -0
  477. package/dist/components/notification/examples/variants.d.ts +2 -0
  478. package/dist/components/notification/examples/variants.d.ts.map +1 -0
  479. package/dist/components/page-content/PageContent.d.ts +64 -0
  480. package/dist/components/page-content/PageContent.d.ts.map +1 -0
  481. package/dist/components/pagination/Pagination.d.ts +19 -0
  482. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  483. package/dist/components/pagination/examples/canonical-composition.d.ts +5 -0
  484. package/dist/components/pagination/examples/canonical-composition.d.ts.map +1 -0
  485. package/dist/components/pagination/examples/compact.d.ts +3 -0
  486. package/dist/components/pagination/examples/compact.d.ts.map +1 -0
  487. package/dist/components/pagination/examples/controlled-page.d.ts +3 -0
  488. package/dist/components/pagination/examples/controlled-page.d.ts.map +1 -0
  489. package/dist/components/pagination/examples/features.d.ts +6 -0
  490. package/dist/components/pagination/examples/features.d.ts.map +1 -0
  491. package/dist/components/pagination/examples/full-width-list.d.ts +3 -0
  492. package/dist/components/pagination/examples/full-width-list.d.ts.map +1 -0
  493. package/dist/components/pagination/examples/range-modes.d.ts +6 -0
  494. package/dist/components/pagination/examples/range-modes.d.ts.map +1 -0
  495. package/dist/components/pagination/examples/sizes.d.ts +6 -0
  496. package/dist/components/pagination/examples/sizes.d.ts.map +1 -0
  497. package/dist/components/pagination/examples/states.d.ts +6 -0
  498. package/dist/components/pagination/examples/states.d.ts.map +1 -0
  499. package/dist/components/pagination/examples/table-footer.d.ts +3 -0
  500. package/dist/components/pagination/examples/table-footer.d.ts.map +1 -0
  501. package/dist/components/popover/Popover.d.ts +48 -0
  502. package/dist/components/popover/Popover.d.ts.map +1 -0
  503. package/dist/components/popover/examples/as-child.d.ts +5 -0
  504. package/dist/components/popover/examples/as-child.d.ts.map +1 -0
  505. package/dist/components/popover/examples/canonical-panel.d.ts +5 -0
  506. package/dist/components/popover/examples/canonical-panel.d.ts.map +1 -0
  507. package/dist/components/popover/examples/composition.d.ts +5 -0
  508. package/dist/components/popover/examples/composition.d.ts.map +1 -0
  509. package/dist/components/popover/examples/controlled.d.ts +5 -0
  510. package/dist/components/popover/examples/controlled.d.ts.map +1 -0
  511. package/dist/components/popover/examples/date-trigger.d.ts +5 -0
  512. package/dist/components/popover/examples/date-trigger.d.ts.map +1 -0
  513. package/dist/components/popover/examples/features.d.ts +5 -0
  514. package/dist/components/popover/examples/features.d.ts.map +1 -0
  515. package/dist/components/popover/examples/form-in-popover.d.ts +5 -0
  516. package/dist/components/popover/examples/form-in-popover.d.ts.map +1 -0
  517. package/dist/components/popover/examples/full-width.d.ts +5 -0
  518. package/dist/components/popover/examples/full-width.d.ts.map +1 -0
  519. package/dist/components/popover/examples/inset-variants.d.ts +5 -0
  520. package/dist/components/popover/examples/inset-variants.d.ts.map +1 -0
  521. package/dist/components/popover/examples/placement.d.ts +5 -0
  522. package/dist/components/popover/examples/placement.d.ts.map +1 -0
  523. package/dist/components/popover/examples/rich-content.d.ts +5 -0
  524. package/dist/components/popover/examples/rich-content.d.ts.map +1 -0
  525. package/dist/components/popover/examples/sizes.d.ts +5 -0
  526. package/dist/components/popover/examples/sizes.d.ts.map +1 -0
  527. package/dist/components/popover/examples/states.d.ts +5 -0
  528. package/dist/components/popover/examples/states.d.ts.map +1 -0
  529. package/dist/components/popover/popoverGeometry.d.ts +6 -0
  530. package/dist/components/popover/popoverGeometry.d.ts.map +1 -0
  531. package/dist/components/popover/usePopoverPosition.d.ts +18 -0
  532. package/dist/components/popover/usePopoverPosition.d.ts.map +1 -0
  533. package/dist/components/progress-bar/ProgressBar.d.ts +14 -0
  534. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -0
  535. package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts +6 -0
  536. package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts.map +1 -0
  537. package/dist/components/progress-bar/examples/labeled.d.ts +3 -0
  538. package/dist/components/progress-bar/examples/labeled.d.ts.map +1 -0
  539. package/dist/components/progress-bar/examples/sizes.d.ts +3 -0
  540. package/dist/components/progress-bar/examples/sizes.d.ts.map +1 -0
  541. package/dist/components/progress-bar/examples/step-progress.d.ts +3 -0
  542. package/dist/components/progress-bar/examples/step-progress.d.ts.map +1 -0
  543. package/dist/components/progress-bar/examples/upload-progress.d.ts +3 -0
  544. package/dist/components/progress-bar/examples/upload-progress.d.ts.map +1 -0
  545. package/dist/components/progress-bar/examples/values.d.ts +3 -0
  546. package/dist/components/progress-bar/examples/values.d.ts.map +1 -0
  547. package/dist/components/progress-bar/examples/wizard-composition.d.ts +3 -0
  548. package/dist/components/progress-bar/examples/wizard-composition.d.ts.map +1 -0
  549. package/dist/components/progress-circle/ProgressCircle.d.ts +33 -0
  550. package/dist/components/progress-circle/ProgressCircle.d.ts.map +1 -0
  551. package/dist/components/progress-circle/examples/a11y-label.d.ts +7 -0
  552. package/dist/components/progress-circle/examples/a11y-label.d.ts.map +1 -0
  553. package/dist/components/progress-circle/examples/composition.d.ts +3 -0
  554. package/dist/components/progress-circle/examples/composition.d.ts.map +1 -0
  555. package/dist/components/progress-circle/examples/controlled.d.ts +3 -0
  556. package/dist/components/progress-circle/examples/controlled.d.ts.map +1 -0
  557. package/dist/components/progress-circle/examples/dashboard-ring.d.ts +3 -0
  558. package/dist/components/progress-circle/examples/dashboard-ring.d.ts.map +1 -0
  559. package/dist/components/progress-circle/examples/max-scale.d.ts +3 -0
  560. package/dist/components/progress-circle/examples/max-scale.d.ts.map +1 -0
  561. package/dist/components/progress-circle/examples/sizes.d.ts +3 -0
  562. package/dist/components/progress-circle/examples/sizes.d.ts.map +1 -0
  563. package/dist/components/progress-circle/examples/states.d.ts +6 -0
  564. package/dist/components/progress-circle/examples/states.d.ts.map +1 -0
  565. package/dist/components/radio/Radio.d.ts +40 -0
  566. package/dist/components/radio/Radio.d.ts.map +1 -0
  567. package/dist/components/radio/examples/notification-channel.d.ts +3 -0
  568. package/dist/components/radio/examples/notification-channel.d.ts.map +1 -0
  569. package/dist/components/radio/examples/plan-picker.d.ts +3 -0
  570. package/dist/components/radio/examples/plan-picker.d.ts.map +1 -0
  571. package/dist/components/radio/examples/settings-group.d.ts +3 -0
  572. package/dist/components/radio/examples/settings-group.d.ts.map +1 -0
  573. package/dist/components/radio/examples/shipping-method.d.ts +3 -0
  574. package/dist/components/radio/examples/shipping-method.d.ts.map +1 -0
  575. package/dist/components/scroll-container/ScrollContainer.d.ts +42 -0
  576. package/dist/components/scroll-container/ScrollContainer.d.ts.map +1 -0
  577. package/dist/components/segmented-control/SegmentedControl.d.ts +40 -0
  578. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
  579. package/dist/components/segmented-control/examples/canonical-composition.d.ts +5 -0
  580. package/dist/components/segmented-control/examples/canonical-composition.d.ts.map +1 -0
  581. package/dist/components/segmented-control/examples/catalog-filters.d.ts +5 -0
  582. package/dist/components/segmented-control/examples/catalog-filters.d.ts.map +1 -0
  583. package/dist/components/segmented-control/examples/composition.d.ts +3 -0
  584. package/dist/components/segmented-control/examples/composition.d.ts.map +1 -0
  585. package/dist/components/segmented-control/examples/controlled.d.ts +3 -0
  586. package/dist/components/segmented-control/examples/controlled.d.ts.map +1 -0
  587. package/dist/components/segmented-control/examples/features.d.ts +3 -0
  588. package/dist/components/segmented-control/examples/features.d.ts.map +1 -0
  589. package/dist/components/segmented-control/examples/full-width.d.ts +3 -0
  590. package/dist/components/segmented-control/examples/full-width.d.ts.map +1 -0
  591. package/dist/components/segmented-control/examples/pricing-toggle.d.ts +5 -0
  592. package/dist/components/segmented-control/examples/pricing-toggle.d.ts.map +1 -0
  593. package/dist/components/segmented-control/examples/sizes.d.ts +3 -0
  594. package/dist/components/segmented-control/examples/sizes.d.ts.map +1 -0
  595. package/dist/components/segmented-control/examples/states.d.ts +3 -0
  596. package/dist/components/segmented-control/examples/states.d.ts.map +1 -0
  597. package/dist/components/segmented-control/examples/view-mode.d.ts +5 -0
  598. package/dist/components/segmented-control/examples/view-mode.d.ts.map +1 -0
  599. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +22 -0
  600. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts.map +1 -0
  601. package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts +3 -0
  602. package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts.map +1 -0
  603. package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts +3 -0
  604. package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts.map +1 -0
  605. package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts +3 -0
  606. package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts.map +1 -0
  607. package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts +3 -0
  608. package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts.map +1 -0
  609. package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts +3 -0
  610. package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts.map +1 -0
  611. package/dist/components/select/Select.d.ts +84 -0
  612. package/dist/components/select/Select.d.ts.map +1 -0
  613. package/dist/components/select/examples/01-country.d.ts +6 -0
  614. package/dist/components/select/examples/01-country.d.ts.map +1 -0
  615. package/dist/components/select/examples/02-controlled.d.ts +5 -0
  616. package/dist/components/select/examples/02-controlled.d.ts.map +1 -0
  617. package/dist/components/select/examples/03-groups.d.ts +5 -0
  618. package/dist/components/select/examples/03-groups.d.ts.map +1 -0
  619. package/dist/components/select/examples/04-full-width-form.d.ts +6 -0
  620. package/dist/components/select/examples/04-full-width-form.d.ts.map +1 -0
  621. package/dist/components/select/examples/pattern-composition.d.ts +3 -0
  622. package/dist/components/select/examples/pattern-composition.d.ts.map +1 -0
  623. package/dist/components/select/examples/pattern-controlled.d.ts +3 -0
  624. package/dist/components/select/examples/pattern-controlled.d.ts.map +1 -0
  625. package/dist/components/select/examples/pattern-features.d.ts +3 -0
  626. package/dist/components/select/examples/pattern-features.d.ts.map +1 -0
  627. package/dist/components/select/examples/pattern-full-width.d.ts +3 -0
  628. package/dist/components/select/examples/pattern-full-width.d.ts.map +1 -0
  629. package/dist/components/select/examples/pattern-native.d.ts +3 -0
  630. package/dist/components/select/examples/pattern-native.d.ts.map +1 -0
  631. package/dist/components/select/examples/pattern-sizes.d.ts +3 -0
  632. package/dist/components/select/examples/pattern-sizes.d.ts.map +1 -0
  633. package/dist/components/select/examples/pattern-states.d.ts +3 -0
  634. package/dist/components/select/examples/pattern-states.d.ts.map +1 -0
  635. package/dist/components/select/selectListbox.d.ts +13 -0
  636. package/dist/components/select/selectListbox.d.ts.map +1 -0
  637. package/dist/components/slider/Slider.d.ts +23 -0
  638. package/dist/components/slider/Slider.d.ts.map +1 -0
  639. package/dist/components/slider/examples/composition.d.ts +6 -0
  640. package/dist/components/slider/examples/composition.d.ts.map +1 -0
  641. package/dist/components/slider/examples/controlled.d.ts +3 -0
  642. package/dist/components/slider/examples/controlled.d.ts.map +1 -0
  643. package/dist/components/slider/examples/features.d.ts +3 -0
  644. package/dist/components/slider/examples/features.d.ts.map +1 -0
  645. package/dist/components/slider/examples/full-width.d.ts +3 -0
  646. package/dist/components/slider/examples/full-width.d.ts.map +1 -0
  647. package/dist/components/slider/examples/sizes.d.ts +5 -0
  648. package/dist/components/slider/examples/sizes.d.ts.map +1 -0
  649. package/dist/components/slider/examples/states.d.ts +3 -0
  650. package/dist/components/slider/examples/states.d.ts.map +1 -0
  651. package/dist/components/stepper/HorizontalStepper.d.ts +41 -0
  652. package/dist/components/stepper/HorizontalStepper.d.ts.map +1 -0
  653. package/dist/components/stepper/Stepper.d.ts +77 -0
  654. package/dist/components/stepper/Stepper.d.ts.map +1 -0
  655. package/dist/components/stepper/VerticalStepper.d.ts +41 -0
  656. package/dist/components/stepper/VerticalStepper.d.ts.map +1 -0
  657. package/dist/components/stepper/examples/01-checkout-horizontal.d.ts +5 -0
  658. package/dist/components/stepper/examples/01-checkout-horizontal.d.ts.map +1 -0
  659. package/dist/components/stepper/examples/02-onboarding-vertical.d.ts +5 -0
  660. package/dist/components/stepper/examples/02-onboarding-vertical.d.ts.map +1 -0
  661. package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts +5 -0
  662. package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts.map +1 -0
  663. package/dist/components/stepper/examples/04-checkout-step-error.d.ts +6 -0
  664. package/dist/components/stepper/examples/04-checkout-step-error.d.ts.map +1 -0
  665. package/dist/components/stepper/examples/05-horizontal-primitive.d.ts +5 -0
  666. package/dist/components/stepper/examples/05-horizontal-primitive.d.ts.map +1 -0
  667. package/dist/components/stepper/examples/composition.d.ts +3 -0
  668. package/dist/components/stepper/examples/composition.d.ts.map +1 -0
  669. package/dist/components/stepper/examples/controlled.d.ts +3 -0
  670. package/dist/components/stepper/examples/controlled.d.ts.map +1 -0
  671. package/dist/components/stepper/examples/features.d.ts +3 -0
  672. package/dist/components/stepper/examples/features.d.ts.map +1 -0
  673. package/dist/components/stepper/examples/full-width.d.ts +3 -0
  674. package/dist/components/stepper/examples/full-width.d.ts.map +1 -0
  675. package/dist/components/stepper/examples/low-level-api.d.ts +3 -0
  676. package/dist/components/stepper/examples/low-level-api.d.ts.map +1 -0
  677. package/dist/components/stepper/examples/orientation.d.ts +3 -0
  678. package/dist/components/stepper/examples/orientation.d.ts.map +1 -0
  679. package/dist/components/stepper/examples/polymorphic-as.d.ts +3 -0
  680. package/dist/components/stepper/examples/polymorphic-as.d.ts.map +1 -0
  681. package/dist/components/stepper/examples/sizes.d.ts +3 -0
  682. package/dist/components/stepper/examples/sizes.d.ts.map +1 -0
  683. package/dist/components/stepper/examples/states.d.ts +3 -0
  684. package/dist/components/stepper/examples/states.d.ts.map +1 -0
  685. package/dist/components/stepper/stepperAlignContext.d.ts +11 -0
  686. package/dist/components/stepper/stepperAlignContext.d.ts.map +1 -0
  687. package/dist/components/switch/Switch.d.ts +48 -0
  688. package/dist/components/switch/Switch.d.ts.map +1 -0
  689. package/dist/components/switch/examples/canonical-maximal.d.ts +5 -0
  690. package/dist/components/switch/examples/canonical-maximal.d.ts.map +1 -0
  691. package/dist/components/switch/examples/composition.d.ts +3 -0
  692. package/dist/components/switch/examples/composition.d.ts.map +1 -0
  693. package/dist/components/switch/examples/controlled.d.ts +3 -0
  694. package/dist/components/switch/examples/controlled.d.ts.map +1 -0
  695. package/dist/components/switch/examples/form-features.d.ts +3 -0
  696. package/dist/components/switch/examples/form-features.d.ts.map +1 -0
  697. package/dist/components/switch/examples/full-width.d.ts +3 -0
  698. package/dist/components/switch/examples/full-width.d.ts.map +1 -0
  699. package/dist/components/switch/examples/scenario-billing-annual.d.ts +5 -0
  700. package/dist/components/switch/examples/scenario-billing-annual.d.ts.map +1 -0
  701. package/dist/components/switch/examples/scenario-feature-flag.d.ts +5 -0
  702. package/dist/components/switch/examples/scenario-feature-flag.d.ts.map +1 -0
  703. package/dist/components/switch/examples/scenario-form-consent.d.ts +5 -0
  704. package/dist/components/switch/examples/scenario-form-consent.d.ts.map +1 -0
  705. package/dist/components/switch/examples/scenario-settings-toggle.d.ts +5 -0
  706. package/dist/components/switch/examples/scenario-settings-toggle.d.ts.map +1 -0
  707. package/dist/components/switch/examples/sizes.d.ts +3 -0
  708. package/dist/components/switch/examples/sizes.d.ts.map +1 -0
  709. package/dist/components/switch/examples/states.d.ts +3 -0
  710. package/dist/components/switch/examples/states.d.ts.map +1 -0
  711. package/dist/components/switch/examples/variants.d.ts +3 -0
  712. package/dist/components/switch/examples/variants.d.ts.map +1 -0
  713. package/dist/components/tabs/Tabs.d.ts +69 -0
  714. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  715. package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts +6 -0
  716. package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts.map +1 -0
  717. package/dist/components/tabs/examples/02-dashboard-subviews.d.ts +6 -0
  718. package/dist/components/tabs/examples/02-dashboard-subviews.d.ts.map +1 -0
  719. package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts +7 -0
  720. package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts.map +1 -0
  721. package/dist/components/tabs/examples/04-long-labels-narrow.d.ts +6 -0
  722. package/dist/components/tabs/examples/04-long-labels-narrow.d.ts.map +1 -0
  723. package/dist/components/tabs/examples/05-controlled-active-tab.d.ts +6 -0
  724. package/dist/components/tabs/examples/05-controlled-active-tab.d.ts.map +1 -0
  725. package/dist/components/tabs/examples/06-sizes-s-m-l-xl.d.ts +6 -0
  726. package/dist/components/tabs/examples/06-sizes-s-m-l-xl.d.ts.map +1 -0
  727. package/dist/components/tabs/examples/07-horizontal-disabled.d.ts +6 -0
  728. package/dist/components/tabs/examples/07-horizontal-disabled.d.ts.map +1 -0
  729. package/dist/components/tag/Tag.d.ts +29 -0
  730. package/dist/components/tag/Tag.d.ts.map +1 -0
  731. package/dist/components/tag/examples/01-filter-chips.d.ts +5 -0
  732. package/dist/components/tag/examples/01-filter-chips.d.ts.map +1 -0
  733. package/dist/components/tag/examples/02-removable-selected-values.d.ts +6 -0
  734. package/dist/components/tag/examples/02-removable-selected-values.d.ts.map +1 -0
  735. package/dist/components/tag/examples/03-status-metadata.d.ts +5 -0
  736. package/dist/components/tag/examples/03-status-metadata.d.ts.map +1 -0
  737. package/dist/components/tag/examples/basic.d.ts +3 -0
  738. package/dist/components/tag/examples/basic.d.ts.map +1 -0
  739. package/dist/components/tag/examples/composition.d.ts +3 -0
  740. package/dist/components/tag/examples/composition.d.ts.map +1 -0
  741. package/dist/components/tag/examples/context-size.d.ts +3 -0
  742. package/dist/components/tag/examples/context-size.d.ts.map +1 -0
  743. package/dist/components/tag/examples/controlled.d.ts +3 -0
  744. package/dist/components/tag/examples/controlled.d.ts.map +1 -0
  745. package/dist/components/tag/examples/disabled.d.ts +3 -0
  746. package/dist/components/tag/examples/disabled.d.ts.map +1 -0
  747. package/dist/components/tag/examples/removable.d.ts +3 -0
  748. package/dist/components/tag/examples/removable.d.ts.map +1 -0
  749. package/dist/components/tag/examples/sizes.d.ts +3 -0
  750. package/dist/components/tag/examples/sizes.d.ts.map +1 -0
  751. package/dist/components/tag/examples/states.d.ts +3 -0
  752. package/dist/components/tag/examples/states.d.ts.map +1 -0
  753. package/dist/components/tag/examples/with-icon.d.ts +3 -0
  754. package/dist/components/tag/examples/with-icon.d.ts.map +1 -0
  755. package/dist/components/textarea/Textarea.d.ts +43 -0
  756. package/dist/components/textarea/Textarea.d.ts.map +1 -0
  757. package/dist/components/textarea/examples/01-support-ticket.d.ts +5 -0
  758. package/dist/components/textarea/examples/01-support-ticket.d.ts.map +1 -0
  759. package/dist/components/textarea/examples/02-comment.d.ts +5 -0
  760. package/dist/components/textarea/examples/02-comment.d.ts.map +1 -0
  761. package/dist/components/textarea/examples/composition.d.ts +3 -0
  762. package/dist/components/textarea/examples/composition.d.ts.map +1 -0
  763. package/dist/components/textarea/examples/controlled.d.ts +3 -0
  764. package/dist/components/textarea/examples/controlled.d.ts.map +1 -0
  765. package/dist/components/textarea/examples/features.d.ts +3 -0
  766. package/dist/components/textarea/examples/features.d.ts.map +1 -0
  767. package/dist/components/textarea/examples/full-width.d.ts +3 -0
  768. package/dist/components/textarea/examples/full-width.d.ts.map +1 -0
  769. package/dist/components/textarea/examples/sizes.d.ts +3 -0
  770. package/dist/components/textarea/examples/sizes.d.ts.map +1 -0
  771. package/dist/components/textarea/examples/states.d.ts +3 -0
  772. package/dist/components/textarea/examples/states.d.ts.map +1 -0
  773. package/dist/components/textarea/examples/variants.d.ts +3 -0
  774. package/dist/components/textarea/examples/variants.d.ts.map +1 -0
  775. package/dist/components/tooltip/Tooltip.d.ts +47 -0
  776. package/dist/components/tooltip/Tooltip.d.ts.map +1 -0
  777. package/dist/components/tooltip/examples/canonical-icon-hint.d.ts +5 -0
  778. package/dist/components/tooltip/examples/canonical-icon-hint.d.ts.map +1 -0
  779. package/dist/components/tooltip/examples/composition.d.ts +3 -0
  780. package/dist/components/tooltip/examples/composition.d.ts.map +1 -0
  781. package/dist/components/tooltip/examples/controlled.d.ts +3 -0
  782. package/dist/components/tooltip/examples/controlled.d.ts.map +1 -0
  783. package/dist/components/tooltip/examples/delay.d.ts +3 -0
  784. package/dist/components/tooltip/examples/delay.d.ts.map +1 -0
  785. package/dist/components/tooltip/examples/long-content.d.ts +3 -0
  786. package/dist/components/tooltip/examples/long-content.d.ts.map +1 -0
  787. package/dist/components/tooltip/examples/side.d.ts +3 -0
  788. package/dist/components/tooltip/examples/side.d.ts.map +1 -0
  789. package/dist/components/tooltip/examples/sizes.d.ts +3 -0
  790. package/dist/components/tooltip/examples/sizes.d.ts.map +1 -0
  791. package/dist/components/tooltip/examples/states.d.ts +3 -0
  792. package/dist/components/tooltip/examples/states.d.ts.map +1 -0
  793. package/dist/components/tooltip/examples/surfaces.d.ts +3 -0
  794. package/dist/components/tooltip/examples/surfaces.d.ts.map +1 -0
  795. package/dist/components/typography/Typography.d.ts +30 -0
  796. package/dist/components/typography/Typography.d.ts.map +1 -0
  797. package/dist/components/typography/examples/01-article.d.ts +5 -0
  798. package/dist/components/typography/examples/01-article.d.ts.map +1 -0
  799. package/dist/components/typography/examples/02-form-labels-contrast.d.ts +6 -0
  800. package/dist/components/typography/examples/02-form-labels-contrast.d.ts.map +1 -0
  801. package/dist/components/typography/examples/03-marketing-hero.d.ts +3 -0
  802. package/dist/components/typography/examples/03-marketing-hero.d.ts.map +1 -0
  803. package/dist/components/typography/examples/04-reading-scale.d.ts +3 -0
  804. package/dist/components/typography/examples/04-reading-scale.d.ts.map +1 -0
  805. package/dist/components/typography/examples/05-inline-emphasis.d.ts +3 -0
  806. package/dist/components/typography/examples/05-inline-emphasis.d.ts.map +1 -0
  807. package/dist/components/typography/examples/as-prop.d.ts +3 -0
  808. package/dist/components/typography/examples/as-prop.d.ts.map +1 -0
  809. package/dist/components/typography/examples/composition.d.ts +6 -0
  810. package/dist/components/typography/examples/composition.d.ts.map +1 -0
  811. package/dist/components/typography/examples/full-width.d.ts +6 -0
  812. package/dist/components/typography/examples/full-width.d.ts.map +1 -0
  813. package/dist/components/typography/examples/reading-and-form.d.ts +6 -0
  814. package/dist/components/typography/examples/reading-and-form.d.ts.map +1 -0
  815. package/dist/components/typography/examples/states.d.ts +3 -0
  816. package/dist/components/typography/examples/states.d.ts.map +1 -0
  817. package/dist/components/typography/examples/variant-catalog.d.ts +3 -0
  818. package/dist/components/typography/examples/variant-catalog.d.ts.map +1 -0
  819. package/dist/components/typography/examples/variants.d.ts +3 -0
  820. package/dist/components/typography/examples/variants.d.ts.map +1 -0
  821. package/dist/hooks/useControllableState.d.ts +8 -0
  822. package/dist/hooks/useControllableState.d.ts.map +1 -0
  823. package/dist/hooks/useEscapeKey.d.ts +7 -0
  824. package/dist/hooks/useEscapeKey.d.ts.map +1 -0
  825. package/dist/hooks/useFieldIds.d.ts +17 -0
  826. package/dist/hooks/useFieldIds.d.ts.map +1 -0
  827. package/dist/hooks/useFocusTrap.d.ts +16 -0
  828. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  829. package/dist/hooks/useMergedRefs.d.ts +3 -0
  830. package/dist/hooks/useMergedRefs.d.ts.map +1 -0
  831. package/dist/hooks/useModalKeyboard.d.ts +14 -0
  832. package/dist/hooks/useModalKeyboard.d.ts.map +1 -0
  833. package/dist/hooks/useOutsideClick.d.ts +16 -0
  834. package/dist/hooks/useOutsideClick.d.ts.map +1 -0
  835. package/dist/hooks/useOverlayModal.d.ts +7 -0
  836. package/dist/hooks/useOverlayModal.d.ts.map +1 -0
  837. package/dist/hooks/usePosition.d.ts +41 -0
  838. package/dist/hooks/usePosition.d.ts.map +1 -0
  839. package/dist/hooks/useResponsiveMonths.d.ts +18 -0
  840. package/dist/hooks/useResponsiveMonths.d.ts.map +1 -0
  841. package/dist/hooks/useScrollLock.d.ts +8 -0
  842. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  843. package/dist/icons/Icon.d.ts +13 -0
  844. package/dist/icons/Icon.d.ts.map +1 -0
  845. package/dist/icons/index.d.ts +40 -0
  846. package/dist/icons/index.d.ts.map +1 -0
  847. package/dist/index.css +10101 -0
  848. package/dist/index.css.map +7 -0
  849. package/dist/index.d.ts +4 -0
  850. package/dist/index.d.ts.map +1 -0
  851. package/dist/index.js +10442 -0
  852. package/dist/index.js.map +7 -0
  853. package/dist/internal/ControlSizeContext.d.ts +17 -0
  854. package/dist/internal/ControlSizeContext.d.ts.map +1 -0
  855. package/dist/internal/DividerContentContext.d.ts +4 -0
  856. package/dist/internal/DividerContentContext.d.ts.map +1 -0
  857. package/dist/internal/OverlayPortalLayerContext.d.ts +13 -0
  858. package/dist/internal/OverlayPortalLayerContext.d.ts.map +1 -0
  859. package/dist/internal/Portal.d.ts +8 -0
  860. package/dist/internal/Portal.d.ts.map +1 -0
  861. package/dist/internal/context.d.ts +11 -0
  862. package/dist/internal/context.d.ts.map +1 -0
  863. package/dist/internal/cx.d.ts +2 -0
  864. package/dist/internal/cx.d.ts.map +1 -0
  865. package/dist/internal/data-attributes.d.ts +6 -0
  866. package/dist/internal/data-attributes.d.ts.map +1 -0
  867. package/dist/internal/highlightTsxHtml.d.ts +3 -0
  868. package/dist/internal/highlightTsxHtml.d.ts.map +1 -0
  869. package/dist/internal/layoutPxFromPrimitives.d.ts +13 -0
  870. package/dist/internal/layoutPxFromPrimitives.d.ts.map +1 -0
  871. package/dist/internal/mergeRefs.d.ts +4 -0
  872. package/dist/internal/mergeRefs.d.ts.map +1 -0
  873. package/dist/internal/runtimeUnits.d.ts +3 -0
  874. package/dist/internal/runtimeUnits.d.ts.map +1 -0
  875. package/dist/internal/scrollAncestors.d.ts +3 -0
  876. package/dist/internal/scrollAncestors.d.ts.map +1 -0
  877. package/dist/internal/slot.d.ts +19 -0
  878. package/dist/internal/slot.d.ts.map +1 -0
  879. package/dist/internal/states.d.ts +89 -0
  880. package/dist/internal/states.d.ts.map +1 -0
  881. package/dist/layout/app-shell/AppShell.d.ts +50 -0
  882. package/dist/layout/app-shell/AppShell.d.ts.map +1 -0
  883. package/dist/layout/index.d.ts +7 -0
  884. package/dist/layout/index.d.ts.map +1 -0
  885. package/dist/layout/sidebar/Sidebar.d.ts +244 -0
  886. package/dist/layout/sidebar/Sidebar.d.ts.map +1 -0
  887. package/dist/layout/sidebar/SidebarRoot.d.ts +51 -0
  888. package/dist/layout/sidebar/SidebarRoot.d.ts.map +1 -0
  889. package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts +6 -0
  890. package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts.map +1 -0
  891. package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts +6 -0
  892. package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts.map +1 -0
  893. package/dist/layout/sidebar/examples/03-controlled-state.d.ts +5 -0
  894. package/dist/layout/sidebar/examples/03-controlled-state.d.ts.map +1 -0
  895. package/dist/layout/sidebar/examples/04-router-navigation.d.ts +6 -0
  896. package/dist/layout/sidebar/examples/04-router-navigation.d.ts.map +1 -0
  897. package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts +7 -0
  898. package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts.map +1 -0
  899. package/dist/layout/sidebar/sidebar-context.d.ts +19 -0
  900. package/dist/layout/sidebar/sidebar-context.d.ts.map +1 -0
  901. package/dist/layout/sidebar/sidebarLayout.d.ts +12 -0
  902. package/dist/layout/sidebar/sidebarLayout.d.ts.map +1 -0
  903. package/dist/tokens/primitives.d.ts +390 -0
  904. package/dist/tokens/primitives.d.ts.map +1 -0
  905. package/dist/tokens/semantic.d.ts +732 -0
  906. package/dist/tokens/semantic.d.ts.map +1 -0
  907. package/dist/tokens/themes/dark.d.ts +143 -0
  908. package/dist/tokens/themes/dark.d.ts.map +1 -0
  909. package/dist/tokens/themes/light.d.ts +16 -0
  910. package/dist/tokens/themes/light.d.ts.map +1 -0
  911. package/package.json +143 -0
  912. package/src/components/accordion/COMPONENT.md +213 -0
  913. package/src/components/accordion/examples/01-faq-marketing.tsx +63 -0
  914. package/src/components/accordion/examples/02-settings-panels.tsx +63 -0
  915. package/src/components/accordion/examples/03-checkout-order-summary.tsx +89 -0
  916. package/src/components/accordion/examples/04-api-docs-sections.tsx +88 -0
  917. package/src/components/accordion/examples/05-knowledge-base-categories.tsx +60 -0
  918. package/src/components/accordion/examples/examples.module.css +30 -0
  919. package/src/components/avatar/COMPONENT.md +160 -0
  920. package/src/components/avatar/examples/app-header-nav.tsx +33 -0
  921. package/src/components/avatar/examples/comment-thread.tsx +57 -0
  922. package/src/components/avatar/examples/examples.module.css +72 -0
  923. package/src/components/avatar/examples/fallback-variants.tsx +33 -0
  924. package/src/components/avatar/examples/group-overflow.tsx +32 -0
  925. package/src/components/avatar/examples/group-three.tsx +28 -0
  926. package/src/components/avatar/examples/sizes.tsx +24 -0
  927. package/src/components/avatar/examples/src-from-state.tsx +34 -0
  928. package/src/components/avatar/examples/states.tsx +26 -0
  929. package/src/components/avatar/examples/team-list.tsx +45 -0
  930. package/src/components/badge/COMPONENT.md +115 -0
  931. package/src/components/badge/examples/admin-tags.tsx +35 -0
  932. package/src/components/badge/examples/canonical.tsx +6 -0
  933. package/src/components/badge/examples/ecommerce-inventory.tsx +35 -0
  934. package/src/components/badge/examples/inbox-labels.tsx +36 -0
  935. package/src/components/badge/examples/status-presence.tsx +32 -0
  936. package/src/components/banner/COMPONENT.md +172 -0
  937. package/src/components/banner/examples/billing-alert.tsx +35 -0
  938. package/src/components/banner/examples/controlled-visibility.tsx +42 -0
  939. package/src/components/banner/examples/cookie-consent-row.tsx +35 -0
  940. package/src/components/banner/examples/dismiss-close-button.tsx +26 -0
  941. package/src/components/banner/examples/feature-promo.tsx +35 -0
  942. package/src/components/banner/examples/maintenance.tsx +23 -0
  943. package/src/components/breadcrumb/COMPONENT.md +139 -0
  944. package/src/components/breadcrumb/examples/canonical.tsx +12 -0
  945. package/src/components/breadcrumb/examples/composition.tsx +25 -0
  946. package/src/components/breadcrumb/examples/deep-documentation.tsx +16 -0
  947. package/src/components/breadcrumb/examples/ecommerce-product.tsx +18 -0
  948. package/src/components/breadcrumb/examples/full-width.tsx +24 -0
  949. package/src/components/breadcrumb/examples/long-path-ellipsis.tsx +21 -0
  950. package/src/components/breadcrumb/examples/saas-settings.tsx +16 -0
  951. package/src/components/breadcrumb/examples/sizes.tsx +25 -0
  952. package/src/components/breadcrumb/examples/states.tsx +26 -0
  953. package/src/components/button/COMPONENT.md +106 -0
  954. package/src/components/button/examples/canonical-composition.tsx +46 -0
  955. package/src/components/button/examples/destructive-confirm.tsx +40 -0
  956. package/src/components/button/examples/form-submit-row.tsx +33 -0
  957. package/src/components/button/examples/full-width-stack.tsx +23 -0
  958. package/src/components/button/examples/icon-composition.tsx +63 -0
  959. package/src/components/button/examples/marketing-cta.tsx +26 -0
  960. package/src/components/button/examples/sizes-ladder.tsx +30 -0
  961. package/src/components/button/examples/toolbar.tsx +38 -0
  962. package/src/components/button-group/COMPONENT.md +143 -0
  963. package/src/components/button-group/examples/editor-toolbar.tsx +46 -0
  964. package/src/components/button-group/examples/form-footer.tsx +19 -0
  965. package/src/components/button-group/examples/full-width.tsx +22 -0
  966. package/src/components/button-group/examples/view-switcher.tsx +25 -0
  967. package/src/components/button-group/examples/wizard-actions.tsx +30 -0
  968. package/src/components/card/COMPONENT.md +327 -0
  969. package/src/components/card/examples/cover-banner.module.css +8 -0
  970. package/src/components/card/examples/cta-cover.tsx +44 -0
  971. package/src/components/card/examples/layout.module.css +7 -0
  972. package/src/components/card/examples/list-card.tsx +20 -0
  973. package/src/components/card/examples/media-mini.tsx +55 -0
  974. package/src/components/card/examples/metric-dashboard.tsx +60 -0
  975. package/src/components/card/examples/mini-kpi.tsx +16 -0
  976. package/src/components/card/examples/sparkline.module.css +10 -0
  977. package/src/components/card/examples/split-layout.tsx +29 -0
  978. package/src/components/checkbox/COMPONENT.md +139 -0
  979. package/src/components/checkbox/examples/bulk-select-rows.tsx +52 -0
  980. package/src/components/checkbox/examples/empty-label-form.tsx +23 -0
  981. package/src/components/checkbox/examples/feature-flags-list.tsx +42 -0
  982. package/src/components/checkbox/examples/settings-panel.tsx +47 -0
  983. package/src/components/checkbox/examples/terms-acceptance.tsx +42 -0
  984. package/src/components/code-block/COMPONENT.md +103 -0
  985. package/src/components/code-block/examples/api-response-preview.tsx +21 -0
  986. package/src/components/code-block/examples/config-snippet.tsx +17 -0
  987. package/src/components/code-block/examples/controlled.tsx +43 -0
  988. package/src/components/code-block/examples/error-stack.tsx +19 -0
  989. package/src/components/code-block/examples/minimal.tsx +6 -0
  990. package/src/components/code-block/examples/tutorial-step.tsx +28 -0
  991. package/src/components/color-picker/COMPONENT.md +195 -0
  992. package/src/components/color-picker/examples/brand-kit.tsx +48 -0
  993. package/src/components/color-picker/examples/controlled-form-field.tsx +38 -0
  994. package/src/components/color-picker/examples/field-eyedropper.tsx +58 -0
  995. package/src/components/color-picker/examples/format-variants.tsx +58 -0
  996. package/src/components/color-picker/examples/full-width.tsx +49 -0
  997. package/src/components/color-picker/examples/hex-input-sizes.tsx +34 -0
  998. package/src/components/color-picker/examples/minimal-popover.tsx +26 -0
  999. package/src/components/color-picker/examples/panel-placement.tsx +68 -0
  1000. package/src/components/color-picker/examples/product-variant-swatch.tsx +42 -0
  1001. package/src/components/color-picker/examples/readout-trigger.tsx +70 -0
  1002. package/src/components/color-picker/examples/states.tsx +79 -0
  1003. package/src/components/color-picker/examples/theme-accent.tsx +41 -0
  1004. package/src/components/command-menu/COMPONENT.md +214 -0
  1005. package/src/components/command-menu/examples/app-palette.tsx +129 -0
  1006. package/src/components/command-menu/examples/composition-tags-footer.tsx +131 -0
  1007. package/src/components/command-menu/examples/controlled-open-search.tsx +76 -0
  1008. package/src/components/command-menu/examples/disabled-items.tsx +77 -0
  1009. package/src/components/command-menu/examples/file-search.tsx +98 -0
  1010. package/src/components/command-menu/examples/full-width-panel.tsx +52 -0
  1011. package/src/components/command-menu/examples/item-icon-as.tsx +48 -0
  1012. package/src/components/command-menu/examples/quick-actions.tsx +74 -0
  1013. package/src/components/command-menu/examples/variants-density-items.tsx +83 -0
  1014. package/src/components/data-table/COMPONENT.md +140 -0
  1015. package/src/components/data-table/examples/canonical-orders.tsx +107 -0
  1016. package/src/components/data-table/examples/composition.tsx +91 -0
  1017. package/src/components/data-table/examples/controlled-sort-and-page.tsx +66 -0
  1018. package/src/components/data-table/examples/divider-styles.tsx +67 -0
  1019. package/src/components/data-table/examples/examples-demos.module.css +78 -0
  1020. package/src/components/data-table/examples/full-width.tsx +39 -0
  1021. package/src/components/data-table/examples/highlight-and-striped.tsx +71 -0
  1022. package/src/components/data-table/examples/infinite-scroll-load-more.tsx +63 -0
  1023. package/src/components/data-table/examples/row-selection.tsx +90 -0
  1024. package/src/components/data-table/examples/sizes.tsx +85 -0
  1025. package/src/components/data-table/examples/sorting-pagination.tsx +76 -0
  1026. package/src/components/data-table/examples/states.tsx +44 -0
  1027. package/src/components/data-table/examples/sticky-and-headers.tsx +113 -0
  1028. package/src/components/data-table/examples/sticky-header-first-column.tsx +55 -0
  1029. package/src/components/datepicker/COMPONENT.md +192 -0
  1030. package/src/components/datepicker/examples/birthdate.tsx +43 -0
  1031. package/src/components/datepicker/examples/booking.tsx +71 -0
  1032. package/src/components/datepicker/examples/full-width-form.tsx +52 -0
  1033. package/src/components/datepicker/examples/range-report.tsx +54 -0
  1034. package/src/components/digit-input/COMPONENT.md +116 -0
  1035. package/src/components/digit-input/examples/composition.tsx +24 -0
  1036. package/src/components/digit-input/examples/controlled.tsx +26 -0
  1037. package/src/components/digit-input/examples/error-state.tsx +12 -0
  1038. package/src/components/digit-input/examples/features.tsx +30 -0
  1039. package/src/components/digit-input/examples/otp-login.tsx +17 -0
  1040. package/src/components/digit-input/examples/pin.tsx +11 -0
  1041. package/src/components/digit-input/examples/resend-and-clear.tsx +17 -0
  1042. package/src/components/digit-input/examples/sizes.tsx +23 -0
  1043. package/src/components/digit-input/examples/states.tsx +22 -0
  1044. package/src/components/digit-input/examples/verification-step.tsx +21 -0
  1045. package/src/components/divider/COMPONENT.md +102 -0
  1046. package/src/components/divider/examples/card-splits.tsx +27 -0
  1047. package/src/components/divider/examples/divider-examples.module.css +137 -0
  1048. package/src/components/divider/examples/inset-stack.tsx +33 -0
  1049. package/src/components/divider/examples/line-spacing-column.tsx +27 -0
  1050. package/src/components/divider/examples/list-separators.tsx +20 -0
  1051. package/src/components/divider/examples/section-breaks.tsx +23 -0
  1052. package/src/components/drawer/COMPONENT.md +130 -0
  1053. package/src/components/drawer/examples/cart-preview.tsx +60 -0
  1054. package/src/components/drawer/examples/examples-scenarios.module.css +79 -0
  1055. package/src/components/drawer/examples/explicit-panel.tsx +40 -0
  1056. package/src/components/drawer/examples/filters-panel.tsx +58 -0
  1057. package/src/components/drawer/examples/mobile-nav-sheet.tsx +48 -0
  1058. package/src/components/drawer/examples/settings-side.tsx +59 -0
  1059. package/src/components/dropdown/COMPONENT.md +242 -0
  1060. package/src/components/dropdown/examples/account-menu.tsx +50 -0
  1061. package/src/components/dropdown/examples/actions-menu.tsx +36 -0
  1062. package/src/components/dropdown/examples/as-child.tsx +26 -0
  1063. package/src/components/dropdown/examples/composition.tsx +93 -0
  1064. package/src/components/dropdown/examples/controlled.tsx +31 -0
  1065. package/src/components/dropdown/examples/dropdown-examples.module.css +29 -0
  1066. package/src/components/dropdown/examples/full-width.tsx +27 -0
  1067. package/src/components/dropdown/examples/placement-demo.tsx +59 -0
  1068. package/src/components/dropdown/examples/select-like-list.tsx +31 -0
  1069. package/src/components/dropdown/examples/sizes.tsx +99 -0
  1070. package/src/components/dropdown/examples/states.tsx +20 -0
  1071. package/src/components/dropdown/examples/variants.tsx +21 -0
  1072. package/src/components/empty-page/COMPONENT.md +143 -0
  1073. package/src/components/empty-page/examples/canonical.tsx +22 -0
  1074. package/src/components/empty-page/examples/examples-demos.module.css +25 -0
  1075. package/src/components/empty-page/examples/sizes.tsx +23 -0
  1076. package/src/components/empty-page/examples/table-region.tsx +35 -0
  1077. package/src/components/file-upload/COMPONENT.md +250 -0
  1078. package/src/components/file-upload/examples/avatar-upload.tsx +54 -0
  1079. package/src/components/file-upload/examples/controlled-list.tsx +103 -0
  1080. package/src/components/file-upload/examples/custom-children.tsx +21 -0
  1081. package/src/components/file-upload/examples/document-attach.tsx +70 -0
  1082. package/src/components/file-upload/examples/drag-area.tsx +49 -0
  1083. package/src/components/file-upload/examples/full-width.tsx +32 -0
  1084. package/src/components/hint/COMPONENT.md +111 -0
  1085. package/src/components/hint/examples/a11y-describedby.tsx +21 -0
  1086. package/src/components/hint/examples/controlled-variant.tsx +23 -0
  1087. package/src/components/hint/examples/error-hint.tsx +20 -0
  1088. package/src/components/hint/examples/field-help.tsx +25 -0
  1089. package/src/components/hint/examples/field-states.tsx +34 -0
  1090. package/src/components/hint/examples/inline-tip-form.tsx +40 -0
  1091. package/src/components/hint/examples/sizes.tsx +13 -0
  1092. package/src/components/hint/examples/success-confirmation.tsx +28 -0
  1093. package/src/components/hint/examples/variants.tsx +12 -0
  1094. package/src/components/hint/examples/with-icon.tsx +13 -0
  1095. package/src/components/input/COMPONENT.md +140 -0
  1096. package/src/components/input/examples/affix-url-and-amount.tsx +24 -0
  1097. package/src/components/input/examples/checkout-full-width.module.css +8 -0
  1098. package/src/components/input/examples/checkout-full-width.tsx +39 -0
  1099. package/src/components/input/examples/login-email.tsx +29 -0
  1100. package/src/components/input/examples/password-with-hint.tsx +28 -0
  1101. package/src/components/input/examples/search.tsx +30 -0
  1102. package/src/components/kbd/COMPONENT.md +91 -0
  1103. package/src/components/kbd/examples/combination-keys.tsx +22 -0
  1104. package/src/components/kbd/examples/composition-chord-icon.tsx +34 -0
  1105. package/src/components/kbd/examples/context-inherit-size.tsx +46 -0
  1106. package/src/components/kbd/examples/docs-legend.tsx +44 -0
  1107. package/src/components/kbd/examples/inline-doc-hint.tsx +18 -0
  1108. package/src/components/kbd/examples/shortcut-row.tsx +21 -0
  1109. package/src/components/kbd/examples/sizes-ladder.tsx +21 -0
  1110. package/src/components/kbd/examples/states-title.tsx +19 -0
  1111. package/src/components/kbd/examples/toolbar-hints.tsx +31 -0
  1112. package/src/components/label/COMPONENT.md +155 -0
  1113. package/src/components/label/examples/accessibility-pattern.tsx +28 -0
  1114. package/src/components/label/examples/grouped-labels.tsx +30 -0
  1115. package/src/components/label/examples/mixed-required-optional.tsx +17 -0
  1116. package/src/components/label/examples/optional-field.tsx +14 -0
  1117. package/src/components/label/examples/required-field.tsx +20 -0
  1118. package/src/components/label/examples/sizes.tsx +37 -0
  1119. package/src/components/label/examples/states.tsx +17 -0
  1120. package/src/components/label/examples/sub-line.tsx +11 -0
  1121. package/src/components/label/examples/with-icon.tsx +16 -0
  1122. package/src/components/link-button/COMPONENT.md +108 -0
  1123. package/src/components/link-button/examples/composition.tsx +27 -0
  1124. package/src/components/link-button/examples/disabled.tsx +17 -0
  1125. package/src/components/link-button/examples/external.tsx +13 -0
  1126. package/src/components/link-button/examples/footer-legal.tsx +22 -0
  1127. package/src/components/link-button/examples/inline-text-link.tsx +12 -0
  1128. package/src/components/link-button/examples/navigation-cluster.tsx +16 -0
  1129. package/src/components/link-button/examples/sizes.tsx +21 -0
  1130. package/src/components/modal/COMPONENT.md +208 -0
  1131. package/src/components/modal/examples/canonical-maximal.tsx +47 -0
  1132. package/src/components/modal/examples/examples.module.css +13 -0
  1133. package/src/components/modal/examples/pattern-close-behavior.tsx +56 -0
  1134. package/src/components/modal/examples/pattern-controlled.tsx +41 -0
  1135. package/src/components/modal/examples/pattern-full-width-footer.tsx +46 -0
  1136. package/src/components/modal/examples/pattern-portal-and-scroll.tsx +84 -0
  1137. package/src/components/modal/examples/scenario-confirm-delete.tsx +42 -0
  1138. package/src/components/modal/examples/scenario-edit-entity.tsx +54 -0
  1139. package/src/components/modal/examples/scenario-legal-consent.tsx +40 -0
  1140. package/src/components/modal/examples/scenario-multi-field-form.tsx +73 -0
  1141. package/src/components/notification/COMPONENT.md +156 -0
  1142. package/src/components/notification/examples/action-toast.tsx +82 -0
  1143. package/src/components/notification/examples/composition.tsx +90 -0
  1144. package/src/components/notification/examples/controlled.tsx +87 -0
  1145. package/src/components/notification/examples/error-success.tsx +68 -0
  1146. package/src/components/notification/examples/features.tsx +102 -0
  1147. package/src/components/notification/examples/notification-store.tsx +5 -0
  1148. package/src/components/notification/examples/positions.tsx +73 -0
  1149. package/src/components/notification/examples/sizes.tsx +53 -0
  1150. package/src/components/notification/examples/states.tsx +143 -0
  1151. package/src/components/notification/examples/toast-queue.tsx +5 -0
  1152. package/src/components/notification/examples/variants.tsx +68 -0
  1153. package/src/components/page-content/COMPONENT.md +128 -0
  1154. package/src/components/pagination/COMPONENT.md +123 -0
  1155. package/src/components/pagination/examples/canonical-composition.tsx +20 -0
  1156. package/src/components/pagination/examples/compact.tsx +32 -0
  1157. package/src/components/pagination/examples/controlled-page.tsx +57 -0
  1158. package/src/components/pagination/examples/features.tsx +107 -0
  1159. package/src/components/pagination/examples/full-width-list.tsx +37 -0
  1160. package/src/components/pagination/examples/range-modes.tsx +60 -0
  1161. package/src/components/pagination/examples/sizes.tsx +50 -0
  1162. package/src/components/pagination/examples/states.tsx +80 -0
  1163. package/src/components/pagination/examples/table-footer.tsx +74 -0
  1164. package/src/components/popover/COMPONENT.md +146 -0
  1165. package/src/components/popover/examples/as-child.tsx +24 -0
  1166. package/src/components/popover/examples/canonical-panel.tsx +24 -0
  1167. package/src/components/popover/examples/composition.tsx +42 -0
  1168. package/src/components/popover/examples/controlled.tsx +40 -0
  1169. package/src/components/popover/examples/date-trigger.tsx +26 -0
  1170. package/src/components/popover/examples/features.tsx +58 -0
  1171. package/src/components/popover/examples/form-in-popover.tsx +71 -0
  1172. package/src/components/popover/examples/full-width.tsx +27 -0
  1173. package/src/components/popover/examples/inset-variants.tsx +46 -0
  1174. package/src/components/popover/examples/placement.tsx +37 -0
  1175. package/src/components/popover/examples/popover-examples.module.css +104 -0
  1176. package/src/components/popover/examples/rich-content.tsx +37 -0
  1177. package/src/components/popover/examples/sizes.tsx +30 -0
  1178. package/src/components/popover/examples/states.tsx +36 -0
  1179. package/src/components/progress-bar/COMPONENT.md +101 -0
  1180. package/src/components/progress-bar/examples/indeterminate-busy-state.tsx +21 -0
  1181. package/src/components/progress-bar/examples/labeled.tsx +6 -0
  1182. package/src/components/progress-bar/examples/progress-bar-examples.module.css +22 -0
  1183. package/src/components/progress-bar/examples/sizes.tsx +13 -0
  1184. package/src/components/progress-bar/examples/step-progress.tsx +22 -0
  1185. package/src/components/progress-bar/examples/upload-progress.tsx +27 -0
  1186. package/src/components/progress-bar/examples/values.tsx +13 -0
  1187. package/src/components/progress-bar/examples/wizard-composition.tsx +18 -0
  1188. package/src/components/progress-circle/COMPONENT.md +97 -0
  1189. package/src/components/progress-circle/examples/a11y-label.tsx +33 -0
  1190. package/src/components/progress-circle/examples/composition.tsx +66 -0
  1191. package/src/components/progress-circle/examples/controlled.tsx +53 -0
  1192. package/src/components/progress-circle/examples/dashboard-ring.tsx +31 -0
  1193. package/src/components/progress-circle/examples/max-scale.tsx +61 -0
  1194. package/src/components/progress-circle/examples/sizes.tsx +77 -0
  1195. package/src/components/progress-circle/examples/states.tsx +87 -0
  1196. package/src/components/radio/COMPONENT.md +137 -0
  1197. package/src/components/radio/examples/notification-channel.tsx +29 -0
  1198. package/src/components/radio/examples/plan-picker.tsx +50 -0
  1199. package/src/components/radio/examples/radio-examples.module.css +31 -0
  1200. package/src/components/radio/examples/settings-group.tsx +30 -0
  1201. package/src/components/radio/examples/shipping-method.tsx +26 -0
  1202. package/src/components/segmented-control/COMPONENT.md +121 -0
  1203. package/src/components/segmented-control/examples/canonical-composition.tsx +70 -0
  1204. package/src/components/segmented-control/examples/catalog-filters.tsx +41 -0
  1205. package/src/components/segmented-control/examples/composition.tsx +55 -0
  1206. package/src/components/segmented-control/examples/controlled.tsx +23 -0
  1207. package/src/components/segmented-control/examples/features.tsx +45 -0
  1208. package/src/components/segmented-control/examples/full-width.tsx +16 -0
  1209. package/src/components/segmented-control/examples/pricing-toggle.tsx +39 -0
  1210. package/src/components/segmented-control/examples/segmented-examples.module.css +41 -0
  1211. package/src/components/segmented-control/examples/sizes.tsx +51 -0
  1212. package/src/components/segmented-control/examples/states.tsx +43 -0
  1213. package/src/components/segmented-control/examples/view-mode.tsx +52 -0
  1214. package/src/components/segmented-progress-bar/COMPONENT.md +119 -0
  1215. package/src/components/segmented-progress-bar/examples/distribution-breakdown.tsx +16 -0
  1216. package/src/components/segmented-progress-bar/examples/multi-phase-rollout.tsx +15 -0
  1217. package/src/components/segmented-progress-bar/examples/segment-gaps.tsx +23 -0
  1218. package/src/components/segmented-progress-bar/examples/size-ladder.tsx +19 -0
  1219. package/src/components/segmented-progress-bar/examples/storage-mix.tsx +16 -0
  1220. package/src/components/select/COMPONENT.md +232 -0
  1221. package/src/components/select/examples/01-country.tsx +35 -0
  1222. package/src/components/select/examples/02-controlled.tsx +33 -0
  1223. package/src/components/select/examples/03-groups.tsx +43 -0
  1224. package/src/components/select/examples/04-full-width-form.tsx +47 -0
  1225. package/src/components/select/examples/examples.module.css +48 -0
  1226. package/src/components/select/examples/pattern-composition.tsx +40 -0
  1227. package/src/components/select/examples/pattern-controlled.tsx +29 -0
  1228. package/src/components/select/examples/pattern-features.tsx +33 -0
  1229. package/src/components/select/examples/pattern-full-width.tsx +21 -0
  1230. package/src/components/select/examples/pattern-native.tsx +14 -0
  1231. package/src/components/select/examples/pattern-sizes.tsx +51 -0
  1232. package/src/components/select/examples/pattern-states.tsx +47 -0
  1233. package/src/components/slider/COMPONENT.md +86 -0
  1234. package/src/components/slider/examples/composition.tsx +14 -0
  1235. package/src/components/slider/examples/controlled.tsx +23 -0
  1236. package/src/components/slider/examples/examples.module.css +37 -0
  1237. package/src/components/slider/examples/features.tsx +17 -0
  1238. package/src/components/slider/examples/full-width.tsx +12 -0
  1239. package/src/components/slider/examples/sizes.tsx +15 -0
  1240. package/src/components/slider/examples/states.tsx +11 -0
  1241. package/src/components/stepper/COMPONENT.md +221 -0
  1242. package/src/components/stepper/examples/01-checkout-horizontal.tsx +32 -0
  1243. package/src/components/stepper/examples/02-onboarding-vertical.tsx +51 -0
  1244. package/src/components/stepper/examples/03-vertical-primitive-rail.tsx +36 -0
  1245. package/src/components/stepper/examples/04-checkout-step-error.tsx +30 -0
  1246. package/src/components/stepper/examples/05-horizontal-primitive.tsx +37 -0
  1247. package/src/components/stepper/examples/composition.tsx +31 -0
  1248. package/src/components/stepper/examples/controlled.tsx +49 -0
  1249. package/src/components/stepper/examples/examples.module.css +81 -0
  1250. package/src/components/stepper/examples/features.tsx +29 -0
  1251. package/src/components/stepper/examples/full-width.tsx +34 -0
  1252. package/src/components/stepper/examples/low-level-api.tsx +58 -0
  1253. package/src/components/stepper/examples/orientation.tsx +52 -0
  1254. package/src/components/stepper/examples/polymorphic-as.tsx +51 -0
  1255. package/src/components/stepper/examples/sizes.tsx +71 -0
  1256. package/src/components/stepper/examples/states.tsx +44 -0
  1257. package/src/components/switch/COMPONENT.md +156 -0
  1258. package/src/components/switch/examples/canonical-maximal.tsx +19 -0
  1259. package/src/components/switch/examples/composition.tsx +23 -0
  1260. package/src/components/switch/examples/controlled.tsx +18 -0
  1261. package/src/components/switch/examples/examples.module.css +65 -0
  1262. package/src/components/switch/examples/form-features.tsx +31 -0
  1263. package/src/components/switch/examples/full-width.tsx +15 -0
  1264. package/src/components/switch/examples/scenario-billing-annual.tsx +27 -0
  1265. package/src/components/switch/examples/scenario-feature-flag.tsx +25 -0
  1266. package/src/components/switch/examples/scenario-form-consent.tsx +34 -0
  1267. package/src/components/switch/examples/scenario-settings-toggle.tsx +26 -0
  1268. package/src/components/switch/examples/sizes.tsx +23 -0
  1269. package/src/components/switch/examples/states.tsx +32 -0
  1270. package/src/components/switch/examples/variants.tsx +19 -0
  1271. package/src/components/tabs/COMPONENT.md +147 -0
  1272. package/src/components/tabs/examples/01-settings-vertical-rail.tsx +44 -0
  1273. package/src/components/tabs/examples/02-dashboard-subviews.tsx +42 -0
  1274. package/src/components/tabs/examples/03-tab-triggers-with-icons.tsx +62 -0
  1275. package/src/components/tabs/examples/04-long-labels-narrow.tsx +35 -0
  1276. package/src/components/tabs/examples/05-controlled-active-tab.tsx +48 -0
  1277. package/src/components/tabs/examples/06-sizes-s-m-l-xl.tsx +58 -0
  1278. package/src/components/tabs/examples/07-horizontal-disabled.tsx +40 -0
  1279. package/src/components/tabs/examples/examples.module.css +79 -0
  1280. package/src/components/tag/COMPONENT.md +97 -0
  1281. package/src/components/tag/examples/01-filter-chips.tsx +36 -0
  1282. package/src/components/tag/examples/02-removable-selected-values.tsx +33 -0
  1283. package/src/components/tag/examples/03-status-metadata.tsx +24 -0
  1284. package/src/components/tag/examples/basic.tsx +14 -0
  1285. package/src/components/tag/examples/composition.tsx +19 -0
  1286. package/src/components/tag/examples/context-size.tsx +17 -0
  1287. package/src/components/tag/examples/controlled.tsx +26 -0
  1288. package/src/components/tag/examples/disabled.tsx +15 -0
  1289. package/src/components/tag/examples/examples.module.css +20 -0
  1290. package/src/components/tag/examples/removable.tsx +22 -0
  1291. package/src/components/tag/examples/sizes.tsx +15 -0
  1292. package/src/components/tag/examples/states.tsx +17 -0
  1293. package/src/components/tag/examples/with-icon.tsx +23 -0
  1294. package/src/components/textarea/COMPONENT.md +132 -0
  1295. package/src/components/textarea/examples/01-support-ticket.tsx +34 -0
  1296. package/src/components/textarea/examples/02-comment.tsx +34 -0
  1297. package/src/components/textarea/examples/composition.tsx +21 -0
  1298. package/src/components/textarea/examples/controlled.tsx +17 -0
  1299. package/src/components/textarea/examples/examples.module.css +33 -0
  1300. package/src/components/textarea/examples/features.tsx +56 -0
  1301. package/src/components/textarea/examples/full-width.tsx +14 -0
  1302. package/src/components/textarea/examples/sizes.tsx +21 -0
  1303. package/src/components/textarea/examples/states.tsx +19 -0
  1304. package/src/components/textarea/examples/variants.tsx +15 -0
  1305. package/src/components/tooltip/COMPONENT.md +148 -0
  1306. package/src/components/tooltip/examples/canonical-icon-hint.tsx +19 -0
  1307. package/src/components/tooltip/examples/composition.tsx +38 -0
  1308. package/src/components/tooltip/examples/controlled.tsx +31 -0
  1309. package/src/components/tooltip/examples/delay.tsx +31 -0
  1310. package/src/components/tooltip/examples/examples.module.css +67 -0
  1311. package/src/components/tooltip/examples/long-content.tsx +34 -0
  1312. package/src/components/tooltip/examples/side.tsx +69 -0
  1313. package/src/components/tooltip/examples/sizes.tsx +69 -0
  1314. package/src/components/tooltip/examples/states.tsx +57 -0
  1315. package/src/components/tooltip/examples/surfaces.tsx +54 -0
  1316. package/src/components/typography/COMPONENT.md +127 -0
  1317. package/src/components/typography/examples/01-article.tsx +45 -0
  1318. package/src/components/typography/examples/02-form-labels-contrast.tsx +61 -0
  1319. package/src/components/typography/examples/03-marketing-hero.tsx +25 -0
  1320. package/src/components/typography/examples/04-reading-scale.tsx +47 -0
  1321. package/src/components/typography/examples/05-inline-emphasis.tsx +30 -0
  1322. package/src/components/typography/examples/as-prop.tsx +25 -0
  1323. package/src/components/typography/examples/composition.tsx +29 -0
  1324. package/src/components/typography/examples/examples.module.css +95 -0
  1325. package/src/components/typography/examples/full-width.tsx +32 -0
  1326. package/src/components/typography/examples/reading-and-form.tsx +40 -0
  1327. package/src/components/typography/examples/states.tsx +27 -0
  1328. package/src/components/typography/examples/variant-catalog.tsx +107 -0
  1329. package/src/components/typography/examples/variants.tsx +61 -0
  1330. package/src/layout/app-shell/COMPONENT.md +140 -0
  1331. package/src/layout/sidebar/COMPONENT.md +160 -0
  1332. package/src/layout/sidebar/examples/01-app-shell-nav.tsx +89 -0
  1333. package/src/layout/sidebar/examples/02-collapsible-desktop.tsx +74 -0
  1334. package/src/layout/sidebar/examples/03-controlled-state.tsx +82 -0
  1335. package/src/layout/sidebar/examples/04-router-navigation.tsx +80 -0
  1336. package/src/layout/sidebar/examples/05-responsive-behavior.tsx +56 -0
  1337. package/src/layout/sidebar/examples/examples.module.css +67 -0
  1338. package/src/styles/globals.css +91 -0
  1339. package/src/styles/reset.css +35 -0
  1340. package/src/styles/theme-dark.css +465 -0
  1341. package/src/styles/theme-light.css +466 -0
  1342. package/src/styles/tokens.css +267 -0
  1343. package/src/styles/units.css +106 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/internal/ControlSizeContext.tsx", "../src/internal/OverlayPortalLayerContext.tsx", "../src/layout/app-shell/AppShell.tsx", "../src/components/scroll-container/ScrollContainer.tsx", "../src/internal/cx.ts", "../src/components/scroll-container/ScrollContainer.module.css", "../src/internal/data-attributes.ts", "../src/internal/mergeRefs.ts", "../src/layout/app-shell/AppShell.module.css", "../src/layout/sidebar/Sidebar.tsx", "../src/components/divider/Divider.tsx", "../src/internal/DividerContentContext.tsx", "../src/components/divider/Divider.module.css", "../src/components/tooltip/Tooltip.tsx", "../src/hooks/useControllableState.ts", "../src/internal/context.ts", "../src/internal/Portal.tsx", "../src/components/tooltip/Tooltip.module.css", "../src/components/typography/Typography.tsx", "../src/components/typography/Typography.module.css", "../src/internal/slot.tsx", "../src/layout/sidebar/Sidebar.module.css", "../src/layout/sidebar/SidebarRoot.tsx", "../src/hooks/useEscapeKey.ts", "../src/hooks/useFocusTrap.ts", "../src/hooks/useScrollLock.ts", "../src/hooks/useOverlayModal.ts", "../src/layout/sidebar/sidebar-context.tsx", "../src/layout/sidebar/sidebarLayout.ts", "../src/components/accordion/Accordion.tsx", "../src/components/accordion/Accordion.module.css", "../src/components/avatar/Avatar.tsx", "../src/components/avatar/Avatar.module.css", "../src/components/badge/Badge.tsx", "../src/components/badge/Badge.module.css", "../src/components/banner/Banner.tsx", "../src/components/button/Button.tsx", "../src/components/button/Button.module.css", "../src/components/banner/Banner.module.css", "../src/components/breadcrumb/Breadcrumb.tsx", "../src/icons/index.ts", "../src/icons/Icon.tsx", "../src/icons/Icon.module.css", "../src/components/link-button/LinkButton.tsx", "../src/components/link-button/LinkButton.module.css", "../src/components/breadcrumb/Breadcrumb.module.css", "../src/components/button-group/ButtonGroup.tsx", "../src/components/button-group/ButtonGroup.module.css", "../src/components/card/Card.tsx", "../src/components/card/Card.module.css", "../src/components/checkbox/Checkbox.tsx", "../src/components/hint/Hint.module.css", "../src/components/hint/Hint.tsx", "../src/components/label/Label.tsx", "../src/components/label/Label.module.css", "../src/hooks/useMergedRefs.ts", "../src/components/checkbox/Checkbox.module.css", "../src/components/code-block/CodeBlock.tsx", "../src/internal/highlightTsxHtml.ts", "../src/components/code-block/CodeBlock.module.css", "../src/components/color-picker/ColorPicker.tsx", "../src/components/input/Input.tsx", "../src/hooks/useFieldIds.ts", "../src/components/input/Input.module.css", "../src/components/select/Select.tsx", "../src/hooks/useOutsideClick.ts", "../src/hooks/usePosition.ts", "../tokens/primitives.ts", "../src/internal/layoutPxFromPrimitives.ts", "../src/components/select/Select.module.css", "../src/components/select/selectListbox.ts", "../src/components/color-picker/ColorPicker.module.css", "../src/components/command-menu/CommandMenu.tsx", "../src/components/modal/Modal.tsx", "../src/hooks/useModalKeyboard.ts", "../src/components/modal/Modal.module.css", "../src/components/command-menu/CommandMenu.module.css", "../src/components/data-table/DataTable.tsx", "../src/internal/runtimeUnits.ts", "../src/components/pagination/Pagination.tsx", "../src/components/pagination/Pagination.module.css", "../src/components/data-table/DataTable.module.css", "../src/components/datepicker/Datepicker.tsx", "../src/hooks/useResponsiveMonths.ts", "../src/components/datepicker/Datepicker.module.css", "../src/components/digit-input/DigitInput.tsx", "../src/components/digit-input/DigitInput.module.css", "../src/components/drawer/Drawer.tsx", "../src/components/drawer/Drawer.module.css", "../src/components/dropdown/Dropdown.tsx", "../src/components/dropdown/Dropdown.module.css", "../src/components/dropdown/menuKeyboard.ts", "../src/components/dropdown/useDropdownPosition.ts", "../src/internal/scrollAncestors.ts", "../src/components/dropdown/dropdownGeometry.ts", "../src/components/empty-page/EmptyPage.tsx", "../src/components/empty-page/EmptyPage.module.css", "../src/components/example-frame/ExampleFrame.tsx", "../src/components/segmented-control/SegmentedControl.tsx", "../src/components/segmented-control/SegmentedControl.module.css", "../src/components/example-frame/ExampleFrame.module.css", "../src/components/file-upload/FileUpload.tsx", "../src/components/progress-bar/ProgressBar.tsx", "../src/components/progress-bar/ProgressBar.module.css", "../src/components/file-upload/FileUpload.module.css", "../src/components/kbd/Kbd.tsx", "../src/components/kbd/Kbd.module.css", "../src/components/notification/Notification.tsx", "../src/components/notification/Notification.module.css", "../src/components/notification/NotificationStore.tsx", "../src/components/page-content/PageContent.tsx", "../src/components/page-content/PageContent.module.css", "../src/components/popover/Popover.tsx", "../src/components/popover/Popover.module.css", "../src/components/popover/usePopoverPosition.ts", "../src/components/popover/popoverGeometry.ts", "../src/components/progress-circle/ProgressCircle.tsx", "../src/components/progress-circle/ProgressCircle.module.css", "../src/components/radio/Radio.tsx", "../src/components/radio/Radio.module.css", "../src/components/segmented-progress-bar/SegmentedProgressBar.tsx", "../src/components/segmented-progress-bar/SegmentedProgressBar.module.css", "../src/components/slider/Slider.tsx", "../src/components/slider/Slider.module.css", "../src/components/stepper/HorizontalStepper.tsx", "../src/components/stepper/StepperAlign.module.css", "../src/components/stepper/stepperAlignContext.tsx", "../src/components/stepper/Stepper.tsx", "../src/components/stepper/Stepper.module.css", "../src/components/stepper/VerticalStepper.tsx", "../src/components/switch/Switch.tsx", "../src/components/switch/Switch.module.css", "../src/components/tabs/Tabs.tsx", "../src/components/tabs/Tabs.module.css", "../src/components/tag/Tag.tsx", "../src/components/tag/Tag.module.css", "../src/components/textarea/Textarea.tsx", "../src/components/textarea/Textarea.module.css", "../src/internal/states.ts"],
4
+ "sourcesContent": ["import * as React from \"react\";\n\nimport type { InputSize } from \"@/internal/states\";\n\n/** \u0420\u0430\u0437\u043C\u0435\u0440 \u00AB\u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044C\u043D\u043E\u0439 \u043F\u043E\u0432\u0435\u0440\u0445\u043D\u043E\u0441\u0442\u0438\u00BB (\u043F\u043E\u043B\u044F, \u043A\u043D\u043E\u043F\u043A\u0438, \u0441\u0435\u043B\u0435\u043A\u0442 \u0438 \u0442.\u0434.) \u0434\u043B\u044F \u043A\u0430\u0441\u043A\u0430\u0434\u0430 \u0432 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 `Icon`. */\nexport type ControlSurfaceSize = \"xs\" | InputSize;\n\n/** \u0414\u043B\u044F Badge / Tag / Kbd: \u0432 \u044F\u0440\u0443\u0441\u0435 \u0442\u043E\u043B\u044C\u043A\u043E s\u2013xl, `xs` \u0441 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 \u043C\u0430\u043F\u043F\u0438\u0442\u0441\u044F \u0432 `s`. */\nexport function controlSurfaceToInputSize(surface: ControlSurfaceSize): InputSize {\n return surface === \"xs\" ? \"s\" : surface;\n}\n\nconst ControlSizeContext = React.createContext<ControlSurfaceSize | null>(null);\nControlSizeContext.displayName = \"ControlSizeContext\";\n\nexport type ControlSizeProviderProps = {\n value: ControlSurfaceSize;\n children: React.ReactNode;\n};\n\nexport function ControlSizeProvider({ value, children }: ControlSizeProviderProps) {\n return <ControlSizeContext.Provider value={value}>{children}</ControlSizeContext.Provider>;\n}\n\nControlSizeProvider.displayName = \"ControlSizeProvider\";\n\n/** \u0414\u043B\u044F `Icon`: \u0435\u0441\u043B\u0438 `size` \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u043D \u044F\u0432\u043D\u043E, \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u0438\u0437 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430. */\nexport function useOptionalControlSize(): ControlSurfaceSize | undefined {\n return React.useContext(ControlSizeContext) ?? undefined;\n}\n", "import * as React from \"react\";\n\n/**\n * \u0421\u043B\u043E\u0439 \u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430, \u043F\u043E\u0440\u0442\u0430\u043B\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u0432 `document.body` (Popover, Dropdown, Select, Tooltip).\n * \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u2014 `page`; \u0432\u043D\u0443\u0442\u0440\u0438 `Drawer` / `Modal` \u2014 \u0432\u044B\u0448\u0435 \u0447\u0438\u0441\u043B\u043E\u0432\u044B\u0445 \u0443\u0440\u043E\u0432\u043D\u0435\u0439 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438, \u0441\u043C. `tokens/primitives` \u2192 `zIndex`.\n */\nexport type OverlayPortalLayer = \"page\" | \"drawer\" | \"modal\" | \"drawerInModal\";\n\nconst OverlayPortalLayerContext = React.createContext<OverlayPortalLayer>(\"page\");\n\nexport type OverlayPortalLayerProviderProps = {\n value: OverlayPortalLayer;\n children: React.ReactNode;\n};\n\nexport function OverlayPortalLayerProvider({ value, children }: OverlayPortalLayerProviderProps) {\n return (\n <OverlayPortalLayerContext.Provider value={value}>\n {children}\n </OverlayPortalLayerContext.Provider>\n );\n}\n\nexport function useOverlayPortalLayer(): OverlayPortalLayer {\n return React.useContext(OverlayPortalLayerContext);\n}\n", "import * as React from \"react\";\nimport { useLayoutEffect } from \"react\";\nimport { useInRouterContext, useLocation } from \"react-router-dom\";\n\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport { mergeRefs } from \"@/internal/mergeRefs\";\n\nimport styles from \"./AppShell.module.css\";\n\nexport type AppShellRootProps = {\n fillViewport?: boolean;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst AppShellRoot = React.forwardRef<HTMLDivElement, AppShellRootProps>(function AppShellRoot(\n { fillViewport = false, className, children, ...rest },\n forwardedRef,\n) {\n return (\n <div\n ref={forwardedRef}\n className={cx(styles.layoutRoot, className)}\n {...rest}\n {...toDataAttributes({ \"fill-viewport\": fillViewport ? true : undefined })}\n >\n {children}\n </div>\n );\n});\nAppShellRoot.displayName = \"AppShell.Root\";\n\nexport type AppShellNavProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction AppShellNav({ className, children, ...rest }: AppShellNavProps) {\n return (\n <div className={cx(styles.layoutNav, className)} data-layout-region=\"nav\" {...rest}>\n {children}\n </div>\n );\n}\nAppShellNav.displayName = \"AppShell.Nav\";\n\nexport type AppShellMainProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst AppShellMain = React.forwardRef<HTMLElement, AppShellMainProps>(function AppShellMain(\n { className, children, ...rest },\n forwardedRef,\n) {\n return (\n <ScrollContainer\n as=\"main\"\n ref={forwardedRef}\n axis=\"vertical\"\n overscrollBehavior=\"contain\"\n className={cx(styles.layoutMain, className)}\n data-layout-region=\"main\"\n data-app-shell-main-padded=\"\"\n {...rest}\n >\n {children}\n </ScrollContainer>\n );\n});\nAppShellMain.displayName = \"AppShell.Main\";\n\nfunction AppShellMainRouteScrollReset({\n mainRef,\n}: {\n mainRef: React.RefObject<HTMLElement | null>;\n}) {\n const { pathname } = useLocation();\n // biome-ignore lint/correctness/useExhaustiveDependencies: \u0441\u0431\u0440\u043E\u0441 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 main \u043F\u0440\u0438 \u0441\u043C\u0435\u043D\u0435 \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0430\n useLayoutEffect(() => {\n mainRef.current?.scrollTo(0, 0);\n }, [pathname]);\n return null;\n}\n\nexport type AppShellTemplateProps = {\n fillViewport?: boolean;\n className?: string;\n /** \u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F: `Sidebar.Root` \u0438\u043B\u0438 `nav`. */\n nav: React.ReactNode;\n children?: React.ReactNode;\n navProps?: Omit<AppShellNavProps, \"children\">;\n mainProps?: Omit<AppShellMainProps, \"children\">;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"ref\">;\n\nconst AppShellTemplate = React.forwardRef<HTMLElement, AppShellTemplateProps>(\n function AppShellTemplate(\n { fillViewport, className, nav, children, navProps, mainProps, ...rootRest },\n forwardedRef,\n ) {\n const mainElementRef = React.useRef<HTMLElement>(null);\n const setMainRef = React.useMemo(() => mergeRefs(mainElementRef, forwardedRef), [forwardedRef]);\n const inRouter = useInRouterContext();\n\n return (\n <AppShellRoot\n fillViewport={fillViewport}\n className={className}\n {...rootRest}\n data-layout-template=\"app\"\n >\n <AppShellNav {...navProps}>{nav}</AppShellNav>\n <AppShellMain ref={setMainRef} {...mainProps}>\n {children}\n {inRouter ? <AppShellMainRouteScrollReset mainRef={mainElementRef} /> : null}\n </AppShellMain>\n </AppShellRoot>\n );\n },\n);\nAppShellTemplate.displayName = \"AppShell.Template\";\n\nexport const AppShell = {\n Root: AppShellRoot,\n Nav: AppShellNav,\n Main: AppShellMain,\n Template: AppShellTemplate,\n};\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\n\nimport styles from \"./ScrollContainer.module.css\";\n\nexport type ScrollContainerAxis = \"vertical\" | \"horizontal\" | \"both\";\n\nexport type ScrollContainerProps = {\n /**\n * \u041A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `div`; \u0434\u043B\u044F `AppShell.Main` \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 `main`.\n */\n as?: \"div\" | \"main\" | \"aside\" | \"section\" | \"nav\" | \"article\";\n /** \u041E\u0441\u044C \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F. */\n axis?: ScrollContainerAxis;\n /** `-webkit-overflow-scrolling: touch` (\u043F\u043E\u043B\u0435\u0437\u043D\u043E \u0434\u043B\u044F \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u0441\u043A\u0440\u043E\u043B\u043B\u043E\u0432 \u043D\u0430 iOS). \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E. */\n touch?: boolean;\n /** \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 `overscroll-behavior`. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `contain` \u0434\u043B\u044F \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u043F\u0430\u043D\u0435\u043B\u0435\u0439. */\n overscrollBehavior?: \"auto\" | \"contain\" | \"none\";\n /**\n * `min-height: 0` \u0438 `min-width: 0` \u2014 \u0442\u0438\u043F\u0438\u0447\u043D\u043E \u0434\u043B\u044F flex/grid-\u0440\u0435\u0431\u0451\u043D\u043A\u0430, \u0447\u0442\u043E\u0431\u044B \u0441\u043A\u0440\u043E\u043B\u043B \u043D\u0435 \u00AB\u043B\u043E\u043C\u0430\u043B\u00BB \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443.\n * \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E true.\n */\n flexItem?: boolean;\n className?: string;\n children?: React.ReactNode;\n} & Omit<React.HTMLAttributes<HTMLElement>, \"className\" | \"children\">;\n\nconst axisClass: Record<ScrollContainerAxis, string> = {\n vertical: styles.vertical,\n horizontal: styles.horizontal,\n both: styles.both,\n};\n\nconst ScrollContainer = React.forwardRef<HTMLElement, ScrollContainerProps>(\n function ScrollContainer(\n {\n as: Component = \"div\",\n axis = \"vertical\",\n touch = true,\n overscrollBehavior = \"contain\",\n flexItem = true,\n className,\n children,\n ...rest\n },\n ref,\n ) {\n return (\n <Component\n ref={ref as never}\n className={cx(\n styles.root,\n axisClass[axis],\n flexItem && styles.flexItem,\n touch && styles.touch,\n overscrollBehavior === \"contain\" && styles.overscrollContain,\n overscrollBehavior === \"none\" && styles.overscrollNone,\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nScrollContainer.displayName = \"ScrollContainer\";\n\nexport { ScrollContainer };\n", "export function cx(...classNames: Array<string | false | null | undefined>): string {\n return classNames.filter(Boolean).join(\" \");\n}\n", ".root {\n box-sizing: border-box;\n}\n\n.flexItem {\n min-height: 0;\n min-width: 0;\n}\n\n.vertical {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.horizontal {\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.both {\n overflow: auto;\n}\n\n.touch {\n -webkit-overflow-scrolling: touch;\n}\n\n.overscrollContain {\n overscroll-behavior: contain;\n}\n\n.overscrollNone {\n overscroll-behavior: none;\n}\n", "type DataPrimitive = string | number | boolean | undefined;\n\ntype DataAttributesInput = Record<string, DataPrimitive>;\ntype DataAttributesOutput = Record<string, string | undefined>;\n\nexport function toDataAttributes(input: DataAttributesInput): DataAttributesOutput {\n const result: DataAttributesOutput = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined) {\n continue;\n }\n\n const attributeName = `data-${key}`;\n result[attributeName] = typeof value === \"boolean\" ? String(value) : `${value}`;\n }\n\n return result;\n}\n", "import type * as React from \"react\";\n\n/** Composes multiple refs (callback or object) into one callback \u2014 same idea as Radix `composeRefs`. */\nexport function mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T> {\n return (value) => {\n for (const ref of refs) {\n if (ref == null) continue;\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n }\n };\n}\n", ".layoutRoot {\n box-sizing: border-box;\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr);\n align-items: stretch;\n column-gap: 0;\n row-gap: 0;\n width: 100%;\n min-height: 0;\n padding: 0;\n background: transparent;\n}\n\n.layoutRoot > .layoutMain:only-child {\n grid-column: 1 / -1;\n}\n\n.layoutRoot[data-fill-viewport=\"true\"] {\n height: 100dvh;\n max-height: 100dvh;\n overflow: hidden;\n}\n\n.layoutNav {\n box-sizing: border-box;\n min-width: 0;\n min-height: 0;\n max-height: 100%;\n padding: 0;\n margin: 0;\n overflow: visible;\n background: transparent;\n}\n\n/**\n * \u041F\u0440\u043E\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043C\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430: \u043A\u0430\u043D\u043E\u043D \u043F\u043E\u043B\u0435\u0439 \u043A \u043A\u0440\u0430\u044E \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (`x6`) \u0432\u0441\u0442\u0440\u043E\u0435\u043D \u0441\u044E\u0434\u0430 \u2014 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u0430\u044F \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430.\n * \u041C\u0430\u0440\u043A\u0435\u0440 \u0434\u043B\u044F \u043E\u0442\u043B\u0430\u0434\u043A\u0438: `data-app-shell-main-padded`.\n */\n.layoutMain {\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n margin: 0;\n background: transparent;\n padding-block: var(--prime-sys-spacing-x6);\n padding-inline: var(--prime-sys-spacing-x6);\n}\n\n@media (min-width: 48rem) {\n .layoutRoot[data-layout-template=\"app\"]:has(\n [data-sidebar-root=\"true\"][data-state=\"expanded\"],\n [data-sidebar-root=\"true\"][data-state=\"compact\"]\n ) {\n column-gap: var(--prime-sys-spacing-x3);\n }\n}\n", "import {\n ChevronsUpDown,\n PanelLeftClose,\n PanelLeftOpen,\n PanelRightClose,\n PanelRightOpen,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { Divider } from \"@/components/divider/Divider\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { Tooltip } from \"@/components/tooltip/Tooltip\";\nimport { Typography } from \"@/components/typography/Typography\";\nimport { cx } from \"@/internal/cx\";\nimport { Slot } from \"@/internal/slot\";\nimport type { SidebarSize } from \"@/internal/states\";\n\nimport styles from \"./Sidebar.module.css\";\nimport { SidebarRoot, type SidebarRootProps } from \"./SidebarRoot\";\nimport { useSidebarContext } from \"./sidebar-context\";\nimport type { SidebarLayoutMode } from \"./sidebarLayout\";\n\nexport type { SidebarLayoutMode, SidebarRootProps, SidebarSize };\nexport { useSidebarContext };\n\n/** @deprecated \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 `responsive` \u0438\u0437 `Sidebar.Root`. */\nexport type SidebarResponsive = boolean;\n\nconst SidebarComposedRoot = SidebarRoot;\n\nexport type SidebarToggleButtonProps = Omit<\n React.ComponentPropsWithoutRef<\"button\">,\n \"children\" | \"aria-label\"\n> & {\n openLabel?: string;\n closedLabel?: string;\n placement?: \"inline\" | \"edge\";\n};\n\nfunction iconForToggle(state: SidebarLayoutMode, side: \"left\" | \"right\") {\n if (side === \"left\") {\n return state === \"hidden\" ? <PanelLeftOpen size=\"1em\" /> : <PanelLeftClose size=\"1em\" />;\n }\n return state === \"hidden\" ? <PanelRightOpen size=\"1em\" /> : <PanelRightClose size=\"1em\" />;\n}\n\nconst SidebarToggleButton = React.forwardRef<HTMLButtonElement, SidebarToggleButtonProps>(\n (\n {\n className,\n openLabel = \"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u0430\u0439\u0434\u0431\u0430\u0440\",\n closedLabel = \"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0430\u0439\u0434\u0431\u0430\u0440\",\n placement = \"inline\",\n ...rest\n },\n ref,\n ) => {\n const { state, toggleOpen, navPanelId, side } = useSidebarContext();\n const expanded = state !== \"hidden\";\n\n return (\n <button\n {...rest}\n ref={ref}\n type={rest.type ?? \"button\"}\n className={cx(styles.toggleButton, className)}\n aria-expanded={expanded}\n aria-controls={navPanelId}\n aria-label={expanded ? openLabel : closedLabel}\n data-placement={placement}\n onClick={(event) => {\n rest.onClick?.(event);\n if (!event.defaultPrevented) {\n toggleOpen();\n }\n }}\n >\n <span className={styles.menuIcon} aria-hidden=\"true\">\n {iconForToggle(state, side)}\n </span>\n </button>\n );\n },\n);\n\nSidebarToggleButton.displayName = \"SidebarToggleButton\";\n\nexport type SidebarNavPanelProps = React.ComponentPropsWithoutRef<\"nav\"> & {\n /** \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0430\u044F \u043A\u043D\u043E\u043F\u043A\u0430 \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u044F \u043D\u0430 \u0433\u0440\u0430\u043D\u0438 \u043F\u0430\u043D\u0435\u043B\u0438 (`placement=\"edge\"`). \u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u2014 \u0447\u0435\u0440\u0435\u0437 `Sidebar.Root` (`state` / `onStateChange`) \u0438\u043B\u0438 `useSidebarContext`. */\n showToggle?: boolean;\n};\n\nfunction SidebarNavPanel({\n className,\n id,\n showToggle = true,\n children,\n ...rest\n}: SidebarNavPanelProps) {\n const { navPanelId } = useSidebarContext();\n\n return (\n <nav\n {...rest}\n id={id ?? navPanelId}\n className={cx(styles.navPanel, className)}\n aria-label={rest[\"aria-label\"] ?? \"Sidebar navigation\"}\n >\n <div className={styles.navPanelSurface}>\n {children}\n {showToggle ? <SidebarToggleButton placement=\"edge\" /> : null}\n </div>\n </nav>\n );\n}\n\nSidebarNavPanel.displayName = \"SidebarNavPanel\";\n\nexport type SidebarHeaderProps = React.ComponentPropsWithoutRef<\"header\">;\n\nfunction SidebarHeader({ className, ...rest }: SidebarHeaderProps) {\n return <header {...rest} className={cx(styles.header, className)} />;\n}\n\nSidebarHeader.displayName = \"SidebarHeader\";\n\nexport type SidebarHeaderRowProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarHeaderRow({ className, ...rest }: SidebarHeaderRowProps) {\n return <div {...rest} className={cx(styles.headerRow, className)} />;\n}\n\nSidebarHeaderRow.displayName = \"SidebarHeaderRow\";\n\nexport type SidebarHeaderMainProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarHeaderMain({ className, ...rest }: SidebarHeaderMainProps) {\n return <div {...rest} className={cx(styles.headerMain, className)} />;\n}\n\nSidebarHeaderMain.displayName = \"SidebarHeaderMain\";\n\nexport type SidebarContentProps = Omit<\n React.ComponentPropsWithoutRef<typeof ScrollContainer>,\n \"as\"\n>;\n\nfunction SidebarContent({ className, axis = \"vertical\", ...rest }: SidebarContentProps) {\n return (\n <ScrollContainer\n {...rest}\n axis={axis}\n className={cx(styles.content, className)}\n overscrollBehavior=\"contain\"\n />\n );\n}\n\nSidebarContent.displayName = \"SidebarContent\";\n\nexport type SidebarFooterProps = React.ComponentPropsWithoutRef<\"footer\"> & {\n variant?: \"plain\" | \"inset\";\n};\n\nfunction SidebarFooter({ className, variant = \"plain\", ...rest }: SidebarFooterProps) {\n return (\n <footer\n {...rest}\n className={cx(styles.footer, className, variant === \"inset\" && styles.footerInset)}\n />\n );\n}\n\nSidebarFooter.displayName = \"SidebarFooter\";\n\nexport type SidebarTextProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarText({ className, ...rest }: SidebarTextProps) {\n return <span {...rest} className={cx(styles.text, className)} />;\n}\n\nSidebarText.displayName = \"SidebarText\";\n\nexport type SidebarIdentityButtonProps = Omit<\n React.ComponentPropsWithoutRef<\"button\">,\n \"children\"\n> & {\n leading?: React.ReactNode;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n trailing?: React.ReactNode;\n};\n\nconst SidebarIdentityButton = React.forwardRef<HTMLButtonElement, SidebarIdentityButtonProps>(\n (\n { className, type = \"button\", leading, title, subtitle, trailing, disabled, onClick, ...rest },\n ref,\n ) => {\n const { size: _size } = useSidebarContext();\n void _size;\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n disabled={disabled}\n onClick={onClick}\n className={cx(styles.identityButton, className)}\n aria-label={typeof title === \"string\" ? title : rest[\"aria-label\"]}\n >\n {leading === undefined ? null : (\n <span className={styles.identityButtonLeading} aria-hidden=\"true\">\n {leading}\n </span>\n )}\n <span className={styles.identityButtonMain}>\n <span className={styles.identityButtonTitle}>{title}</span>\n {subtitle === undefined ? null : (\n <span className={styles.identityButtonSubtitle}>{subtitle}</span>\n )}\n </span>\n <span className={styles.identityButtonTrailing} aria-hidden=\"true\">\n {trailing ?? <ChevronsUpDown size=\"1em\" strokeWidth={2} />}\n </span>\n </button>\n );\n },\n);\n\nSidebarIdentityButton.displayName = \"SidebarIdentityButton\";\n\nexport type SidebarGroupProps = React.ComponentPropsWithoutRef<\"section\"> & {\n title?: React.ReactNode;\n action?: React.ReactNode;\n};\n\nfunction parseLengthToPx(value: string, baseFontSize: number): number | null {\n const raw = value.trim().toLowerCase();\n if (raw.length === 0) return null;\n\n if (raw.endsWith(\"px\")) {\n const parsed = Number.parseFloat(raw.slice(0, -2));\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n if (raw.endsWith(\"rem\") || raw.endsWith(\"em\")) {\n const parsed = Number.parseFloat(raw.slice(0, -3));\n return Number.isFinite(parsed) ? parsed * baseFontSize : null;\n }\n\n const parsed = Number.parseFloat(raw);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction SidebarHeadingText({ children }: { children: React.ReactNode }) {\n const { isMobile } = useSidebarContext();\n const trackRef = React.useRef<HTMLSpanElement | null>(null);\n const textRef = React.useRef<HTMLSpanElement | null>(null);\n const previousOffsetRef = React.useRef(0);\n\n const measureOffset = React.useCallback(() => {\n const track = trackRef.current;\n const text = textRef.current;\n if (track == null || text == null) return;\n\n const applyOffset = (next: number) => {\n const normalized = Math.abs(next) < 0.5 ? 0 : next;\n if (Math.abs(previousOffsetRef.current - normalized) < 0.5) return;\n previousOffsetRef.current = normalized;\n text.style.setProperty(\"--sb-heading-offset-px\", `${normalized}px`);\n };\n\n if (isMobile || typeof window === \"undefined\") {\n applyOffset(0);\n return;\n }\n\n const root = track.closest<HTMLElement>(\"[data-sidebar-root='true']\");\n if (root == null) return;\n\n const computed = window.getComputedStyle(root);\n const progressValue = Number.parseFloat(computed.getPropertyValue(\"--sb-progress\"));\n const progress = Number.isFinite(progressValue) ? Math.max(0, Math.min(1, progressValue)) : 0;\n\n if (progress <= 0.001) {\n applyOffset(0);\n return;\n }\n\n const trackWidth = track.clientWidth;\n const intrinsicTextWidth = text.scrollWidth;\n\n const baseFontSize = Number.parseFloat(\n window.getComputedStyle(document.documentElement).fontSize,\n );\n\n const compactWidth = parseLengthToPx(\n computed.getPropertyValue(\"--sb-compact-width\"),\n baseFontSize,\n );\n const currentWidth = root.getBoundingClientRect().width;\n\n if (compactWidth === null || currentWidth <= 0) {\n applyOffset(0);\n return;\n }\n\n // Project current heading track ratio to compact sidebar width to get a stable\n // compact target and avoid mid-transition bounce.\n const trackRatio = trackWidth / currentWidth;\n const compactTrackWidth = compactWidth * trackRatio;\n const compactTextWidth = Math.min(intrinsicTextWidth, compactTrackWidth);\n const targetCompactOffset = Math.max(0, (compactTrackWidth - compactTextWidth) / 2);\n\n applyOffset(targetCompactOffset * progress);\n }, [isMobile]);\n\n React.useLayoutEffect(() => {\n measureOffset();\n }, [measureOffset]);\n\n React.useLayoutEffect(() => {\n if (typeof window === \"undefined\") return;\n const track = trackRef.current;\n const text = textRef.current;\n if (track == null || text == null) return;\n const observer = new ResizeObserver(() => {\n measureOffset();\n });\n\n observer.observe(track);\n observer.observe(text);\n\n return () => observer.disconnect();\n }, [measureOffset]);\n\n return (\n <span ref={trackRef} className={styles.headingTrack}>\n <span\n ref={textRef}\n className={styles.headingText}\n style={{ \"--sb-heading-offset-px\": \"0px\" } as React.CSSProperties}\n >\n {children}\n </span>\n </span>\n );\n}\n\nfunction SidebarGroup({ className, title, action, children, ...rest }: SidebarGroupProps) {\n return (\n <section {...rest} className={cx(styles.group, className)}>\n {title !== undefined ? (\n <div className={styles.groupHeader}>\n <Typography.Root as=\"h3\" variant=\"body-small\" tone=\"muted\" className={styles.groupLabel}>\n <SidebarHeadingText>{title}</SidebarHeadingText>\n </Typography.Root>\n {action === undefined ? null : <div className={styles.groupHeaderAction}>{action}</div>}\n </div>\n ) : null}\n {children}\n </section>\n );\n}\n\nSidebarGroup.displayName = \"SidebarGroup\";\n\nexport type SidebarGroupLabelProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarGroupLabel({ className, children, ...rest }: SidebarGroupLabelProps) {\n return (\n <Typography.Root\n as=\"div\"\n variant=\"body-small\"\n tone=\"muted\"\n className={cx(styles.groupLabel, className)}\n {...rest}\n >\n <SidebarHeadingText>{children}</SidebarHeadingText>\n </Typography.Root>\n );\n}\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nexport type SidebarSeparatorProps = React.ComponentPropsWithoutRef<typeof Divider.Root>;\n\nfunction SidebarSeparator({ className, variant = \"line-spacing\", ...rest }: SidebarSeparatorProps) {\n return <Divider.Root {...rest} variant={variant} className={cx(styles.separator, className)} />;\n}\n\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nexport type SidebarMenuProps = React.ComponentPropsWithoutRef<\"ul\">;\n\nfunction SidebarMenu({ className, ...rest }: SidebarMenuProps) {\n return <ul {...rest} className={cx(styles.menu, className)} />;\n}\n\nSidebarMenu.displayName = \"SidebarMenu\";\n\nexport type SidebarMenuItemProps = React.ComponentPropsWithoutRef<\"li\">;\n\nfunction SidebarMenuItem({ className, ...rest }: SidebarMenuItemProps) {\n return <li {...rest} className={cx(styles.menuItem, className)} />;\n}\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport type SidebarMenuIconProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarMenuIcon({ className, ...rest }: SidebarMenuIconProps) {\n return <span {...rest} className={cx(styles.menuIcon, className)} aria-hidden=\"true\" />;\n}\n\nSidebarMenuIcon.displayName = \"SidebarMenuIcon\";\n\nexport type SidebarMenuLabelProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarMenuLabel({ className, ...rest }: SidebarMenuLabelProps) {\n return <span {...rest} className={cx(styles.menuLabel, className)} />;\n}\n\nSidebarMenuLabel.displayName = \"SidebarMenuLabel\";\n\nexport type SidebarMenuTrailingProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarMenuTrailing({ className, ...rest }: SidebarMenuTrailingProps) {\n return <span {...rest} className={cx(styles.menuTrailing, className)} aria-hidden=\"true\" />;\n}\n\nSidebarMenuTrailing.displayName = \"SidebarMenuTrailing\";\n\nexport type SidebarMenuActionProps = React.ComponentPropsWithoutRef<\"button\"> & {\n children?: React.ReactNode;\n};\n\nconst SidebarMenuAction = React.forwardRef<HTMLButtonElement, SidebarMenuActionProps>(\n ({ className, children, type = \"button\", ...rest }, ref) => {\n return (\n <button {...rest} ref={ref} type={type} className={cx(styles.menuAction, className)}>\n {children}\n </button>\n );\n },\n);\n\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nexport type SidebarMenuButtonProps = React.ComponentPropsWithoutRef<\"button\"> & {\n active?: boolean;\n asChild?: boolean;\n tooltip?: React.ReactNode;\n};\n\nfunction extractTextFromNode(node: unknown): string {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return String(node);\n }\n if (Array.isArray(node)) {\n return node.map((item) => extractTextFromNode(item)).join(\" \");\n }\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return extractTextFromNode(node.props.children);\n }\n return \"\";\n}\n\nfunction resolveMenuTooltipContent(\n explicitTooltip: React.ReactNode | undefined,\n fallbackNode: unknown,\n): React.ReactNode | null {\n if (explicitTooltip !== undefined && explicitTooltip !== null) {\n if (typeof explicitTooltip === \"string\") {\n const normalized = explicitTooltip.trim();\n return normalized.length > 0 ? normalized : null;\n }\n return explicitTooltip;\n }\n\n const fallbackText = extractTextFromNode(fallbackNode).trim();\n return fallbackText.length > 0 ? fallbackText : null;\n}\n\nfunction SidebarCompactTooltip({\n content,\n children,\n}: {\n content: React.ReactNode | null;\n children: React.ReactElement;\n}) {\n const { state, isMobile } = useSidebarContext();\n const shouldShowTooltip = !isMobile && state === \"compact\" && content !== null;\n\n if (!shouldShowTooltip) {\n return children;\n }\n\n return (\n <Tooltip.Provider delayDuration={0}>\n <Tooltip.Root>\n <Tooltip.Trigger>\n <span className={styles.menuTooltipAnchor}>{children}</span>\n </Tooltip.Trigger>\n <Tooltip.Content side=\"right\" size=\"l\">\n {content}\n </Tooltip.Content>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n (\n {\n className,\n active,\n asChild = false,\n disabled,\n onClick,\n type = \"button\",\n tooltip,\n children,\n ...rest\n },\n ref,\n ) => {\n const tooltipContent = resolveMenuTooltipContent(tooltip, rest[\"aria-label\"] ?? children);\n\n if (asChild) {\n const element = (\n <Slot\n {...rest}\n ref={ref as React.Ref<HTMLElement>}\n className={cx(styles.menuButton, className)}\n data-active={active ? \"true\" : undefined}\n aria-disabled={disabled || undefined}\n onClick={\n disabled\n ? (e: React.MouseEvent) => {\n e.preventDefault();\n }\n : onClick\n }\n >\n {children}\n </Slot>\n );\n\n return <SidebarCompactTooltip content={tooltipContent}>{element}</SidebarCompactTooltip>;\n }\n\n const element = (\n <button\n {...rest}\n ref={ref}\n type={type}\n disabled={disabled}\n className={cx(styles.menuButton, className)}\n data-active={active ? \"true\" : undefined}\n onClick={onClick}\n >\n {children}\n </button>\n );\n\n return <SidebarCompactTooltip content={tooltipContent}>{element}</SidebarCompactTooltip>;\n },\n);\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nexport type SidebarMenuLinkProps = React.ComponentPropsWithoutRef<\"a\"> & {\n active?: boolean;\n};\n\nconst SidebarMenuLink = React.forwardRef<HTMLAnchorElement, SidebarMenuLinkProps>(\n ({ active, className, ...rest }, ref) => (\n <SidebarMenuButton asChild active={active} className={className}>\n <a {...rest} ref={ref} />\n </SidebarMenuButton>\n ),\n);\n\nSidebarMenuLink.displayName = \"SidebarMenuLink\";\n\nexport type SidebarMenuRouterLinkProps = React.ComponentPropsWithoutRef<typeof NavLink> & {\n tooltip?: React.ReactNode;\n};\n\nconst SidebarMenuRouterLink = React.forwardRef<HTMLAnchorElement, SidebarMenuRouterLinkProps>(\n ({ className, tooltip, ...rest }, ref) => {\n const tooltipContent = resolveMenuTooltipContent(tooltip, rest[\"aria-label\"] ?? rest.children);\n\n if (typeof className === \"function\") {\n const element = (\n <NavLink\n ref={ref}\n {...rest}\n className={(navState) =>\n cx(styles.menuButton, navState.isActive && styles.menuButtonActive, className(navState))\n }\n />\n );\n return <SidebarCompactTooltip content={tooltipContent}>{element}</SidebarCompactTooltip>;\n }\n\n const element = <NavLink ref={ref} {...rest} className={cx(styles.menuButton, className)} />;\n return <SidebarCompactTooltip content={tooltipContent}>{element}</SidebarCompactTooltip>;\n },\n);\n\nSidebarMenuRouterLink.displayName = \"SidebarMenuRouterLink\";\n\nexport type SidebarNavPanelBodyProps = React.ComponentPropsWithoutRef<typeof ScrollContainer>;\n\nfunction SidebarNavPanelBody({ className, axis = \"vertical\", ...rest }: SidebarNavPanelBodyProps) {\n return (\n <ScrollContainer\n {...rest}\n axis={axis}\n className={cx(styles.navPanelBody, className)}\n overscrollBehavior=\"contain\"\n />\n );\n}\n\nSidebarNavPanelBody.displayName = \"SidebarNavPanelBody\";\n\nexport type SidebarNavDocTreeProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarNavDocTree({ className, ...rest }: SidebarNavDocTreeProps) {\n return <div {...rest} className={cx(styles.navDocTree, className)} />;\n}\n\nSidebarNavDocTree.displayName = \"SidebarNavDocTree\";\n\nexport type SidebarNavPanelHeadingProps = React.ComponentPropsWithoutRef<\"h2\">;\n\nfunction SidebarNavPanelHeading({ className, ...rest }: SidebarNavPanelHeadingProps) {\n const { children, ...headingRest } = rest;\n return (\n <h2 {...headingRest} className={cx(styles.navPanelHeading, className)}>\n <SidebarHeadingText>{children}</SidebarHeadingText>\n </h2>\n );\n}\n\nSidebarNavPanelHeading.displayName = \"SidebarNavPanelHeading\";\n\nexport type SidebarNavCategoryProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarNavCategory({ className, ...rest }: SidebarNavCategoryProps) {\n return <div {...rest} className={cx(styles.navCategory, className)} />;\n}\n\nSidebarNavCategory.displayName = \"SidebarNavCategory\";\n\nexport type SidebarNavCategoryTriggerProps = React.ComponentPropsWithoutRef<\"button\">;\n\nconst SidebarNavCategoryTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarNavCategoryTriggerProps\n>(({ className, type = \"button\", children, ...rest }, ref) => (\n <button ref={ref} type={type} className={cx(styles.navCategoryTrigger, className)} {...rest}>\n {children}\n </button>\n));\nSidebarNavCategoryTrigger.displayName = \"SidebarNavCategoryTrigger\";\n\nexport type SidebarNavCategoryLabelProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarNavCategoryLabel({ className, ...rest }: SidebarNavCategoryLabelProps) {\n return <span {...rest} className={cx(styles.navCategoryLabel, className)} />;\n}\n\nSidebarNavCategoryLabel.displayName = \"SidebarNavCategoryLabel\";\n\nexport type SidebarNavCategoryCountProps = React.ComponentPropsWithoutRef<\"span\">;\n\nfunction SidebarNavCategoryCount({ className, ...rest }: SidebarNavCategoryCountProps) {\n return <span {...rest} className={cx(styles.navCategoryCount, className)} />;\n}\n\nSidebarNavCategoryCount.displayName = \"SidebarNavCategoryCount\";\n\nexport type SidebarNavCategoryPanelProps = React.ComponentPropsWithoutRef<\"div\">;\n\nfunction SidebarNavCategoryPanel({ className, ...rest }: SidebarNavCategoryPanelProps) {\n return <div {...rest} className={cx(styles.navCategoryPanel, className)} />;\n}\n\nSidebarNavCategoryPanel.displayName = \"SidebarNavCategoryPanel\";\n\nexport type SidebarMenuSlotButtonProps = SidebarMenuButtonProps;\n\nconst SidebarMenuSlotButton = React.forwardRef<HTMLButtonElement, SidebarMenuSlotButtonProps>(\n (props, ref) => <SidebarMenuButton {...props} ref={ref} />,\n);\n\nSidebarMenuSlotButton.displayName = \"SidebarMenuSlotButton\";\n\nexport const Sidebar = Object.assign(SidebarComposedRoot, {\n Root: SidebarComposedRoot,\n NavPanel: SidebarNavPanel,\n NavPanelBody: SidebarNavPanelBody,\n NavDocTree: SidebarNavDocTree,\n NavPanelHeading: SidebarNavPanelHeading,\n NavCategory: SidebarNavCategory,\n NavCategoryTrigger: SidebarNavCategoryTrigger,\n NavCategoryLabel: SidebarNavCategoryLabel,\n NavCategoryCount: SidebarNavCategoryCount,\n NavCategoryPanel: SidebarNavCategoryPanel,\n Header: SidebarHeader,\n HeaderRow: SidebarHeaderRow,\n HeaderMain: SidebarHeaderMain,\n Content: SidebarContent,\n Footer: SidebarFooter,\n ToggleButton: SidebarToggleButton,\n IdentityButton: SidebarIdentityButton,\n Group: SidebarGroup,\n GroupLabel: SidebarGroupLabel,\n Separator: SidebarSeparator,\n Menu: SidebarMenu,\n MenuItem: SidebarMenuItem,\n MenuButton: SidebarMenuButton,\n MenuLink: SidebarMenuLink,\n MenuRouterLink: SidebarMenuRouterLink,\n MenuAction: SidebarMenuAction,\n MenuIcon: SidebarMenuIcon,\n MenuLabel: SidebarMenuLabel,\n MenuTrailing: SidebarMenuTrailing,\n MenuSlotButton: SidebarMenuSlotButton,\n Text: SidebarText,\n});\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { DividerContentContext } from \"@/internal/DividerContentContext\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { DividerSize } from \"@/internal/states\";\n\nimport styles from \"./Divider.module.css\";\n\nexport type { DividerSize };\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerAlign = \"start\" | \"center\" | \"end\";\n\n/** `line-spacing` \u2014 \u043C\u0430\u0440\u043A\u0435\u0440 \u0434\u043B\u044F \u043B\u0438\u043D\u0438\u0438 \u043C\u0435\u0436\u0434\u0443 \u0441\u0435\u043A\u0446\u0438\u044F\u043C\u0438 (\u0440\u0438\u0442\u043C \u0441\u043E\u0441\u0435\u0434\u0435\u0439 \u2014 \u0447\u0435\u0440\u0435\u0437 `gap` \u0443 flex-\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F); `text` \u2014 \u043F\u043E\u0434\u043F\u0438\u0441\u044C \u0441\u0435\u043A\u0446\u0438\u0438. */\nexport type DividerVariant = \"default\" | \"line-spacing\" | \"text\";\n\nexport type DividerRootProps = {\n orientation?: DividerOrientation;\n align?: DividerAlign;\n variant?: DividerVariant;\n size?: DividerSize;\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst DividerRoot = React.forwardRef<HTMLDivElement, DividerRootProps>(\n (\n {\n orientation = \"horizontal\",\n align: alignProp,\n variant = \"default\",\n size = \"m\",\n children,\n className,\n role = \"separator\",\n ...rest\n },\n ref,\n ) => {\n const align: DividerAlign = alignProp ?? (variant === \"text\" ? \"start\" : \"center\");\n\n return (\n <div\n {...rest}\n ref={ref}\n className={cx(styles.root, className)}\n role={role}\n {...(orientation === \"vertical\" ? { \"aria-orientation\": \"vertical\" as const } : {})}\n {...toDataAttributes({ orientation, align, variant, size })}\n >\n {children != null ? (\n <ControlSizeProvider value={size}>\n <DividerContentContext.Provider value>\n <span className={styles.content}>{children}</span>\n </DividerContentContext.Provider>\n </ControlSizeProvider>\n ) : null}\n </div>\n );\n },\n);\n\nDividerRoot.displayName = \"Divider.Root\";\n\nexport const Divider = { Root: DividerRoot };\n", "import * as React from \"react\";\n\n/** \u0412\u043D\u0443\u0442\u0440\u0438 `Divider.Root` \u2014 \u0443 `Icon` \u043D\u0435 \u0437\u0430\u0434\u0430\u044E\u0442\u0441\u044F \u043A\u043B\u0430\u0441\u0441\u044B \u0440\u0430\u0437\u043C\u0435\u0440\u0430; \u0433\u0430\u0431\u0430\u0440\u0438\u0442\u044B \u0438\u0437 `--prime-divider-icon`. */\nexport const DividerContentContext = React.createContext(false);\n\nDividerContentContext.displayName = \"DividerContentContext\";\n", "/*\n * \u041D\u043E\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0439 `data-size` = \u0440\u0430\u0437\u043C\u0435\u0440 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F.\n * \u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u044F\u0440\u0443\u0441 \u043D\u0430 \u0441\u0442\u0443\u043F\u0435\u043D\u044C \u043D\u0438\u0436\u0435: s\u2192xs, m\u2192xs, l\u2192s, xl\u2192m.\n */\n.root {\n display: flex;\n align-items: center;\n gap: var(--prime-divider-gap);\n color: var(--prime-sys-color-content-secondary);\n box-sizing: border-box;\n}\n\n.root[data-size=\"s\"] {\n --prime-divider-gap: var(--prime-sys-size-control-xs-gap);\n --prime-divider-icon: var(--prime-sys-size-control-xs-icon);\n --prime-divider-inline-pad: var(--prime-sys-size-control-xs-buttonPaddingX);\n --prime-divider-align-stub: var(--prime-sys-size-control-xs-buttonPaddingX);\n --prime-divider-label-font-size: var(--prime-sys-size-control-xs-text);\n --prime-divider-label-line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n}\n\n.root[data-size=\"m\"] {\n --prime-divider-gap: var(--prime-sys-size-control-xs-gap);\n --prime-divider-icon: var(--prime-sys-size-control-xs-icon);\n --prime-divider-inline-pad: var(--prime-sys-size-control-xs-buttonPaddingX);\n --prime-divider-align-stub: var(--prime-sys-size-control-xs-buttonPaddingX);\n --prime-divider-label-font-size: var(--prime-sys-size-control-xs-text);\n --prime-divider-label-line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n}\n\n.root[data-size=\"l\"] {\n --prime-divider-gap: var(--prime-sys-size-control-s-gap);\n --prime-divider-icon: var(--prime-sys-size-control-s-icon);\n --prime-divider-inline-pad: var(--prime-sys-size-control-s-buttonPaddingX);\n --prime-divider-align-stub: var(--prime-sys-size-control-s-buttonPaddingX);\n --prime-divider-label-font-size: var(--prime-sys-size-control-s-text);\n --prime-divider-label-line-height: var(--prime-sys-typography-lineHeightScale-xs);\n}\n\n.root[data-size=\"xl\"] {\n --prime-divider-gap: var(--prime-sys-size-control-m-gap);\n --prime-divider-icon: var(--prime-sys-size-control-m-icon);\n --prime-divider-inline-pad: var(--prime-sys-size-control-m-buttonPaddingX);\n --prime-divider-align-stub: var(--prime-sys-size-control-m-buttonPaddingX);\n --prime-divider-label-font-size: var(--prime-sys-size-control-m-text);\n --prime-divider-label-line-height: var(--prime-sys-typography-lineHeightScale-s);\n}\n\n/* \u0412 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 flex (\u043C\u0435\u043D\u044E, \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438) \u0442\u044F\u043D\u0435\u043C \u043B\u0438\u043D\u0438\u044E \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443 \u0440\u044F\u0434\u0430 */\n.root:not([data-orientation=\"vertical\"]) {\n width: 100%;\n min-width: 0;\n}\n\n.content {\n min-width: 0;\n display: inline-flex;\n align-items: center;\n gap: var(--prime-divider-gap);\n}\n\n.root::before,\n.root::after {\n content: \"\";\n flex: 1;\n height: var(--prime-sys-unit-1px);\n background: var(--prime-sys-color-border-subtle);\n}\n\n.root[data-align=\"start\"]::before {\n flex: 0 0 var(--prime-divider-align-stub);\n}\n\n.root[data-align=\"end\"]::after {\n flex: 0 0 var(--prime-divider-align-stub);\n}\n\n.root:empty::before {\n flex: 1;\n}\n\n.root:empty::after {\n display: none;\n}\n\n.root:empty {\n gap: 0;\n}\n\n.root[data-orientation=\"vertical\"] {\n flex-direction: column;\n width: var(--prime-sys-unit-1px);\n height: 100%;\n}\n\n.root[data-orientation=\"vertical\"]::before,\n.root[data-orientation=\"vertical\"]::after {\n width: var(--prime-sys-unit-1px);\n height: auto;\n flex: 1;\n}\n\n.root[data-variant=\"line-spacing\"] {\n flex: 0 0 auto;\n}\n\n.root[data-variant=\"text\"] {\n flex: 0 0 auto;\n font-size: var(--prime-divider-label-font-size);\n line-height: var(--prime-divider-label-line-height);\n font-weight: var(--prime-sys-typography-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--prime-sys-color-content-muted);\n}\n\n.root[data-variant=\"text\"] .content {\n padding-inline: var(--prime-divider-inline-pad);\n}\n\n/* Icon \u0432\u043D\u0443\u0442\u0440\u0438 \u043D\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 size-\u043A\u043B\u0430\u0441\u0441 \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 (\u0438 --prime-divider-* \u043E\u0442 data-size). */\n.root[data-size] .content svg {\n box-sizing: border-box;\n width: var(--prime-divider-icon);\n height: var(--prime-divider-icon);\n flex-shrink: 0;\n}\n", "import * as React from \"react\";\n\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport { useOverlayPortalLayer } from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\n\nimport styles from \"./Tooltip.module.css\";\n\n// \u2500\u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TooltipSize = \"s\" | \"m\" | \"l\" | \"xl\";\nexport type TooltipSide = \"top\" | \"bottom\" | \"left\" | \"right\";\n\n// \u2500\u2500\u2500 Provider Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype TooltipProviderContextValue = {\n delayDuration: number;\n};\n\nconst TooltipProviderContext = React.createContext<TooltipProviderContextValue>({\n delayDuration: 400,\n});\n\n// \u2500\u2500\u2500 Root Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype TooltipRootContextValue = {\n isOpen: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n contentId: string;\n handleOpen: () => void;\n handleClose: () => void;\n};\n\nconst [TooltipRootProvider, useTooltipRootContext] =\n createComponentContext<TooltipRootContextValue>(\"Tooltip\");\n\n// \u2500\u2500\u2500 Provider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TooltipProviderProps = {\n delayDuration?: number;\n children: React.ReactNode;\n};\n\nfunction TooltipProvider({ delayDuration = 400, children }: TooltipProviderProps) {\n const value = React.useMemo(() => ({ delayDuration }), [delayDuration]);\n return (\n <TooltipProviderContext.Provider value={value}>{children}</TooltipProviderContext.Provider>\n );\n}\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TooltipRootProps = {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nfunction TooltipRoot({ children, open, defaultOpen, onOpenChange }: TooltipRootProps) {\n const { delayDuration } = React.useContext(TooltipProviderContext);\n\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: open,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n const contentId = React.useId();\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setIsOpen(true), delayDuration);\n }, [delayDuration, setIsOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(timeoutRef.current);\n setIsOpen(false);\n }, [setIsOpen]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, []);\n\n return (\n <TooltipRootProvider value={{ isOpen, triggerRef, contentId, handleOpen, handleClose }}>\n {children}\n </TooltipRootProvider>\n );\n}\n\n// \u2500\u2500\u2500 Trigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TooltipTriggerProps = {\n children: React.ReactElement;\n className?: string;\n};\n\nfunction TooltipTrigger({ children, className }: TooltipTriggerProps) {\n const { triggerRef, contentId, handleOpen, handleClose } = useTooltipRootContext();\n const props = children.props as React.HTMLAttributes<HTMLElement> & {\n ref?: React.Ref<HTMLElement>;\n };\n\n return React.cloneElement(\n children as React.ReactElement<\n React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>\n >,\n {\n ref: triggerRef,\n className: cx(props.className, className) || undefined,\n \"aria-describedby\": contentId,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseEnter?.(e);\n handleOpen();\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e);\n handleClose();\n },\n onFocus: (e: React.FocusEvent<HTMLElement>) => {\n props.onFocus?.(e);\n handleOpen();\n },\n onBlur: (e: React.FocusEvent<HTMLElement>) => {\n props.onBlur?.(e);\n handleClose();\n },\n },\n );\n}\n\n// \u2500\u2500\u2500 Positioning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst TOOLTIP_OFFSET = 6;\n\ntype TooltipCoords = { top: number; left: number };\n\nfunction computePosition(\n anchor: HTMLElement,\n content: HTMLElement,\n side: TooltipSide,\n): TooltipCoords {\n const ar = anchor.getBoundingClientRect();\n const cr = content.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n let top: number;\n let left: number;\n\n switch (side) {\n case \"top\":\n top = ar.top - cr.height - TOOLTIP_OFFSET;\n left = ar.left + ar.width / 2 - cr.width / 2;\n break;\n case \"bottom\":\n top = ar.bottom + TOOLTIP_OFFSET;\n left = ar.left + ar.width / 2 - cr.width / 2;\n break;\n case \"left\":\n top = ar.top + ar.height / 2 - cr.height / 2;\n left = ar.left - cr.width - TOOLTIP_OFFSET;\n break;\n case \"right\":\n top = ar.top + ar.height / 2 - cr.height / 2;\n left = ar.right + TOOLTIP_OFFSET;\n break;\n }\n\n return {\n top: Math.round(Math.max(8, Math.min(top, vh - cr.height - 8))),\n left: Math.round(Math.max(8, Math.min(left, vw - cr.width - 8))),\n };\n}\n\n// \u2500\u2500\u2500 Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TooltipContentProps = {\n children: React.ReactNode;\n size?: TooltipSize;\n side?: TooltipSide;\n className?: string;\n};\n\nfunction TooltipContent({ children, size = \"m\", side = \"top\", className }: TooltipContentProps) {\n const { isOpen, triggerRef, contentId } = useTooltipRootContext();\n const overlayPortalLayer = useOverlayPortalLayer();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const [coords, setCoords] = React.useState<TooltipCoords | null>(null);\n\n React.useEffect(() => {\n if (!isOpen) {\n setCoords(null);\n return;\n }\n\n const update = () => {\n const anchor = triggerRef.current;\n const content = contentRef.current;\n if (!anchor || !content) return;\n setCoords(computePosition(anchor, content, side));\n };\n\n const frameId = requestAnimationFrame(update);\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n\n return () => {\n cancelAnimationFrame(frameId);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [isOpen, triggerRef, side]);\n\n if (!isOpen) return null;\n\n const positionStyle: React.CSSProperties = {\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n };\n\n return (\n <Portal>\n <div\n ref={contentRef}\n id={contentId}\n role=\"tooltip\"\n data-overlay-portal-layer={overlayPortalLayer}\n className={cx(styles.content, className)}\n style={positionStyle}\n {...toDataAttributes({ size, side })}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n </Portal>\n );\n}\n\n// \u2500\u2500\u2500 Exports \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nTooltipProvider.displayName = \"Tooltip.Provider\";\nTooltipRoot.displayName = \"Tooltip.Root\";\nTooltipTrigger.displayName = \"Tooltip.Trigger\";\nTooltipContent.displayName = \"Tooltip.Content\";\n\nexport const Tooltip = {\n Provider: TooltipProvider,\n Root: TooltipRoot,\n Trigger: TooltipTrigger,\n Content: TooltipContent,\n};\n", "import * as React from \"react\";\n\ntype UseControllableStateParams<T> = {\n value?: T;\n defaultValue: T;\n onChange?: (nextValue: T) => void;\n};\n\nexport function useControllableState<T>({\n value,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>) {\n const [internalValue, setInternalValue] = React.useState<T>(defaultValue);\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (nextValue: T | ((prev: T) => T)) => {\n const previousValue = currentValueRef.current;\n const computedValue =\n typeof nextValue === \"function\" ? (nextValue as (prev: T) => T)(previousValue) : nextValue;\n\n if (Object.is(previousValue, computedValue)) {\n return;\n }\n\n if (!isControlled) {\n setInternalValue(computedValue);\n }\n\n onChange?.(computedValue);\n },\n [isControlled, onChange],\n );\n\n return [currentValue, setValue] as const;\n}\n", "import * as React from \"react\";\n\n/**\n * Factory for creating typed React Context + a guard hook that throws\n * a descriptive error when used outside the provider.\n * Standardizes the composable-component pattern across prime-ui-kit.\n *\n * @example\n * const [InputProvider, useInputContext] = createComponentContext<InputContextValue>(\"Input\");\n */\nexport function createComponentContext<T>(displayName: string) {\n const Ctx = React.createContext<T | null>(null);\n Ctx.displayName = `${displayName}Context`;\n\n function useComponentContext(): T {\n const value = React.useContext(Ctx);\n if (value === null) {\n throw new Error(\n `[prime-ui-kit] \\`${displayName}\\` sub-component must be used inside \\`${displayName}.Root\\`.`,\n );\n }\n return value;\n }\n\n return [Ctx.Provider, useComponentContext] as const;\n}\n", "import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype PortalProps = {\n children: React.ReactNode;\n container?: HTMLElement | null;\n};\n\nexport function Portal({ children, container }: PortalProps) {\n const [mounted, setMounted] = React.useState(false);\n\n // useLayoutEffect: \u043F\u043E\u0440\u0442\u0430\u043B \u0432 DOM \u0434\u043E paint \u0438 \u0434\u043E layout-\u044D\u0444\u0444\u0435\u043A\u0442\u043E\u0432 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F (\u043D\u0443\u0436\u043D\u043E \u0434\u043B\u044F ref + \u043F\u043E\u0437\u0438\u0446\u0438\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F).\n React.useLayoutEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n if (!mounted) return null;\n\n return createPortal(children, container ?? document.body);\n}\n", ".content {\n --tt-arrow-size: var(--prime-sys-unit-8px);\n\n display: flex;\n flex-direction: column;\n position: fixed;\n isolation: isolate;\n pointer-events: none;\n border-radius: var(--prime-sys-size-tooltip-m-radius);\n padding-block: var(--prime-sys-size-tooltip-m-paddingY);\n padding-inline: var(--prime-sys-size-tooltip-m-paddingX);\n font-size: var(--prime-sys-size-tooltip-m-text);\n font-family: var(--prime-sys-typography-family-base);\n line-height: var(--prime-sys-typography-body-lineHeight);\n max-width: var(--prime-sys-unit-16rem);\n word-break: break-word;\n background: var(--prime-sys-color-tooltip-background);\n color: var(--prime-sys-color-tooltip-foreground);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n box-shadow: var(--prime-sys-elevation-shadow-tooltip);\n overflow: visible;\n animation: tooltipIn var(--prime-sys-motion-fast) var(--prime-sys-motion-standard) both;\n}\n\n.content[data-overlay-portal-layer=\"page\"] {\n z-index: var(--prime-sys-elevation-zIndex-tooltip);\n}\n\n.content[data-overlay-portal-layer=\"drawer\"] {\n z-index: var(--prime-sys-elevation-zIndex-tooltipInDrawer);\n}\n\n.content[data-overlay-portal-layer=\"modal\"] {\n z-index: var(--prime-sys-elevation-zIndex-tooltipInModal);\n}\n\n.content[data-overlay-portal-layer=\"drawerInModal\"] {\n z-index: var(--prime-sys-elevation-zIndex-tooltipInDrawerInModal);\n}\n\n.content::after {\n content: \"\";\n position: absolute;\n width: var(--tt-arrow-size);\n height: var(--tt-arrow-size);\n background: var(--prime-sys-color-tooltip-background);\n transform: rotate(45deg);\n}\n\n.content[data-side=\"top\"]::after {\n bottom: calc(var(--tt-arrow-size) / -2 - var(--prime-sys-unit-1px));\n left: calc(50% - var(--tt-arrow-size) / 2);\n border-right: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n}\n\n.content[data-side=\"bottom\"]::after {\n top: calc(var(--tt-arrow-size) / -2 - var(--prime-sys-unit-1px));\n left: calc(50% - var(--tt-arrow-size) / 2);\n border-left: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n}\n\n.content[data-side=\"left\"]::after {\n top: calc(50% - var(--tt-arrow-size) / 2);\n right: calc(var(--tt-arrow-size) / -2 - var(--prime-sys-unit-1px));\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n border-right: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n}\n\n.content[data-side=\"right\"]::after {\n top: calc(50% - var(--tt-arrow-size) / 2);\n left: calc(var(--tt-arrow-size) / -2 - var(--prime-sys-unit-1px));\n border-left: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-tooltip-border);\n}\n\n.content[data-size=\"s\"] {\n --tt-arrow-size: calc(var(--prime-sys-unit-8px) * 0.75);\n\n padding-block: var(--prime-sys-size-tooltip-s-paddingY);\n padding-inline: var(--prime-sys-size-tooltip-s-paddingX);\n font-size: var(--prime-sys-size-tooltip-s-text);\n border-radius: var(--prime-sys-size-tooltip-s-radius);\n}\n\n.content[data-size=\"l\"] {\n --tt-arrow-size: var(--prime-sys-unit-8px);\n\n padding-block: var(--prime-sys-size-tooltip-l-paddingY);\n padding-inline: var(--prime-sys-size-tooltip-l-paddingX);\n font-size: var(--prime-sys-size-tooltip-l-text);\n border-radius: var(--prime-sys-size-tooltip-l-radius);\n}\n\n.content[data-size=\"xl\"] {\n --tt-arrow-size: calc(var(--prime-sys-unit-8px) * 1.25);\n\n padding-block: var(--prime-sys-size-tooltip-xl-paddingY);\n padding-inline: var(--prime-sys-size-tooltip-xl-paddingX);\n font-size: var(--prime-sys-size-tooltip-xl-text);\n border-radius: var(--prime-sys-size-tooltip-xl-radius);\n}\n\n@keyframes tooltipIn {\n from {\n opacity: 0;\n transform: scale(0.97);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./Typography.module.css\";\n\n/** \u0421\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0440\u043E\u043B\u0438 \u0447\u0442\u0435\u043D\u0438\u044F; \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0442 `typography.role` \u0432 `tokens/semantic.ts`. */\nexport type TypographyVariant =\n | \"display\"\n | \"headline\"\n | \"heading-page\"\n | \"heading-section\"\n | \"heading-subsection\"\n | \"heading-group\"\n | \"body-large\"\n | \"body-default\"\n | \"body-small\"\n | \"body-compact\"\n | \"caption\"\n | \"caption-micro\";\n\nexport type TypographyWeight = \"regular\" | \"medium\" | \"semibold\";\n\nexport type TypographyTracking = \"normal\" | \"tight\" | \"tighter\" | \"wide\";\n\nexport type TypographyTone = \"default\" | \"muted\";\n\nexport type TypographyAs =\n | \"p\"\n | \"span\"\n | \"div\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"small\"\n | \"blockquote\"\n | \"article\"\n | \"section\"\n | \"header\"\n | \"footer\"\n | \"aside\"\n | \"nav\"\n | \"main\";\n\nexport type TypographyRootProps = {\n as?: TypographyAs;\n variant: TypographyVariant;\n weight?: TypographyWeight;\n tracking?: TypographyTracking;\n italic?: boolean;\n tone?: TypographyTone;\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst TypographyRoot = React.forwardRef<HTMLElement, TypographyRootProps>(\n (\n {\n as: Tag = \"p\",\n variant,\n weight = \"regular\",\n tracking = \"normal\",\n italic = false,\n tone = \"default\",\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n return (\n <Tag\n ref={ref as never}\n className={cx(styles.root, className)}\n {...rest}\n {...toDataAttributes({\n variant,\n weight: weight === \"regular\" ? undefined : weight,\n tracking: tracking === \"normal\" ? undefined : tracking,\n tone: tone === \"default\" ? undefined : tone,\n ...(italic ? { italic: true } : {}),\n })}\n >\n {children}\n </Tag>\n );\n },\n);\n\nTypographyRoot.displayName = \"Typography.Root\";\n\nexport const Typography = { Root: TypographyRoot };\n", ".root {\n margin: 0;\n color: var(--prime-sys-color-content-primary);\n text-wrap: balance;\n font-style: var(--prime-sys-typography-style-normal);\n font-weight: var(--prime-sys-typography-weight-regular);\n letter-spacing: var(--prime-sys-typography-tracking-normal);\n}\n\n.root[data-tone=\"muted\"] {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.root[data-italic=\"true\"] {\n font-style: var(--prime-sys-typography-style-italic);\n}\n\n.root[data-weight=\"medium\"] {\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.root[data-weight=\"semibold\"] {\n font-weight: var(--prime-sys-typography-weight-semibold);\n}\n\n.root[data-tracking=\"tight\"] {\n letter-spacing: var(--prime-sys-typography-tracking-tight);\n}\n\n.root[data-tracking=\"tighter\"] {\n letter-spacing: var(--prime-sys-typography-tracking-tighter);\n}\n\n.root[data-tracking=\"wide\"] {\n letter-spacing: var(--prime-sys-typography-tracking-wide);\n}\n\n.root[data-variant=\"display\"] {\n font-size: var(--prime-sys-typography-role-display-fontSize);\n line-height: var(--prime-sys-typography-role-display-lineHeight);\n}\n\n.root[data-variant=\"headline\"] {\n font-size: var(--prime-sys-typography-role-headline-fontSize);\n line-height: var(--prime-sys-typography-role-headline-lineHeight);\n}\n\n.root[data-variant=\"heading-page\"] {\n font-size: var(--prime-sys-typography-role-headingPage-fontSize);\n line-height: var(--prime-sys-typography-role-headingPage-lineHeight);\n}\n\n.root[data-variant=\"heading-section\"] {\n font-size: var(--prime-sys-typography-role-headingSection-fontSize);\n line-height: var(--prime-sys-typography-role-headingSection-lineHeight);\n}\n\n.root[data-variant=\"heading-subsection\"] {\n font-size: var(--prime-sys-typography-role-headingSubsection-fontSize);\n line-height: var(--prime-sys-typography-role-headingSubsection-lineHeight);\n}\n\n.root[data-variant=\"heading-group\"] {\n font-size: var(--prime-sys-typography-role-headingGroup-fontSize);\n line-height: var(--prime-sys-typography-role-headingGroup-lineHeight);\n}\n\n.root[data-variant=\"body-large\"] {\n font-size: var(--prime-sys-typography-role-bodyLarge-fontSize);\n line-height: var(--prime-sys-typography-role-bodyLarge-lineHeight);\n}\n\n.root[data-variant=\"body-default\"] {\n font-size: var(--prime-sys-typography-role-bodyDefault-fontSize);\n line-height: var(--prime-sys-typography-role-bodyDefault-lineHeight);\n}\n\n.root[data-variant=\"body-small\"] {\n font-size: var(--prime-sys-typography-role-bodySmall-fontSize);\n line-height: var(--prime-sys-typography-role-bodySmall-lineHeight);\n}\n\n.root[data-variant=\"body-compact\"] {\n font-size: var(--prime-sys-typography-role-bodyCompact-fontSize);\n line-height: var(--prime-sys-typography-role-bodyCompact-lineHeight);\n}\n\n.root[data-variant=\"caption\"] {\n font-size: var(--prime-sys-typography-role-caption-fontSize);\n line-height: var(--prime-sys-typography-role-caption-lineHeight);\n}\n\n.root[data-variant=\"caption-micro\"] {\n font-size: var(--prime-sys-typography-role-captionMicro-fontSize);\n line-height: var(--prime-sys-typography-role-captionMicro-lineHeight);\n}\n", "import * as React from \"react\";\n\nimport { mergeRefs } from \"./mergeRefs\";\n\ntype AnyProps = Record<string, unknown>;\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps {\n const merged: AnyProps = { ...slotProps };\n\n for (const key of Object.keys(childProps)) {\n const slotValue = slotProps[key];\n const childValue = childProps[key];\n\n if (key === \"className\") {\n // NavLink (and similar) pass className as a function receiving route state.\n // When slot has a plain string and child has a function, compose them.\n if (typeof childValue === \"function\" && typeof slotValue === \"string\") {\n const slotClass = slotValue;\n merged[key] = (...args: unknown[]) => {\n const resolved = (childValue as (...a: unknown[]) => unknown)(...args);\n return [slotClass, resolved].filter(Boolean).join(\" \") || undefined;\n };\n } else {\n const parts = [slotValue, childValue].filter(Boolean);\n merged[key] = parts.length > 0 ? parts.join(\" \") : undefined;\n }\n } else if (key === \"style\") {\n merged[key] =\n slotValue != null && childValue != null\n ? { ...(slotValue as object), ...(childValue as object) }\n : (childValue ?? slotValue);\n } else if (\n key.startsWith(\"on\") &&\n typeof slotValue === \"function\" &&\n typeof childValue === \"function\"\n ) {\n // Child handler runs first, then slot handler\n merged[key] = (...args: unknown[]) => {\n (childValue as (...a: unknown[]) => unknown)(...args);\n (slotValue as (...a: unknown[]) => unknown)(...args);\n };\n } else {\n // Child props override slot props\n merged[key] = childValue;\n }\n }\n\n return merged;\n}\n\nexport type SlotProps = { children?: React.ReactNode } & AnyProps;\n\n/**\n * Merges its own props onto the single React child element.\n * The basis of the `asChild` polymorphism pattern (same idea as Radix UI `Slot`).\n *\n * Merge rules:\n * - `className` \u2014 space-joined (slot first, child second)\n * - `style` \u2014 shallow-merged; child keys win\n * - `on*` handlers \u2014 both fire; child handler runs first\n * - All other props \u2014 child overrides slot\n * - `ref` \u2014 merged via `mergeRefs`\n */\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(({ children, ...slotProps }, ref) => {\n if (!React.isValidElement(children)) {\n return <>{children}</>;\n }\n\n const child = children as React.ReactElement<AnyProps>;\n const childRef = (child as unknown as { ref?: React.Ref<unknown> }).ref ?? null;\n const composedRef =\n ref != null || childRef != null\n ? mergeRefs<unknown>(ref as React.Ref<unknown> | undefined, childRef ?? undefined)\n : undefined;\n\n const merged = mergeProps(slotProps, child.props);\n\n return React.cloneElement(child, {\n ...merged,\n ...(composedRef !== undefined ? { ref: composedRef } : {}),\n } as AnyProps);\n});\n\nSlot.displayName = \"Slot\";\n", ".root {\n --sb-expanded-width: 18rem;\n --sb-compact-width: 5.25rem;\n --sb-progress: 0;\n --sb-visible-width: calc(\n var(--sb-expanded-width) -\n (var(--sb-expanded-width) - var(--sb-compact-width)) *\n var(--sb-progress)\n );\n --sb-transition-duration: var(--prime-sys-motion-duration-slow);\n --sb-transition-ease: var(--prime-sys-motion-easing-standard);\n --sb-control-height: var(--prime-sys-size-control-m-height);\n --sb-panel-padding-inline-expanded: var(--prime-sys-spacing-x2);\n --sb-panel-padding-inline-compact: var(--prime-sys-spacing-x1);\n --sb-panel-padding-inline: calc(\n var(--sb-panel-padding-inline-expanded) +\n (var(--sb-panel-padding-inline-compact) - var(--sb-panel-padding-inline-expanded)) *\n var(--sb-progress)\n );\n --sb-panel-padding-block: var(--prime-sys-spacing-x2);\n --sb-panel-gap: var(--prime-sys-spacing-x2);\n\n --sb-item-width: 100%;\n --sb-item-min-width: 0;\n --sb-item-max-width: 100%;\n --sb-item-offset-inline-start: 0px;\n --sb-item-padding-inline-expanded: var(--prime-sys-size-control-m-buttonPaddingX);\n --sb-item-padding-inline-compact: max(\n 0px,\n calc(\n (\n var(--sb-compact-width) -\n (2 * var(--sb-panel-padding-inline-compact)) -\n var(--prime-sys-size-control-m-icon)\n ) /\n 2\n )\n );\n --sb-item-padding-inline: calc(\n var(--sb-item-padding-inline-expanded) +\n (var(--sb-item-padding-inline-compact) - var(--sb-item-padding-inline-expanded)) *\n var(--sb-progress)\n );\n --sb-item-gap-expanded: var(--prime-sys-size-control-m-gap);\n --sb-item-gap-compact: var(--prime-sys-spacing-x1);\n --sb-item-gap: calc(\n var(--sb-item-gap-expanded) +\n (var(--sb-item-gap-compact) - var(--sb-item-gap-expanded)) *\n var(--sb-progress)\n );\n --sb-item-icon-col: var(--prime-sys-size-control-m-icon);\n --sb-item-label-col: 1fr;\n --sb-item-trailing-col: auto;\n --sb-item-label-opacity: calc(1 - var(--sb-progress));\n --sb-item-label-shift: calc(-0.125rem * var(--sb-progress));\n --sb-item-label-max-width: calc((1 - var(--sb-progress)) * 999px);\n --sb-item-trailing-opacity: calc(1 - var(--sb-progress));\n --sb-item-trailing-scale: calc(1 - (0.15 * var(--sb-progress)));\n --sb-item-trailing-max-width: calc((1 - var(--sb-progress)) * 999px);\n --sb-identity-main-max-width: calc((1 - var(--sb-progress)) * 999px);\n --sb-identity-padding-inline-compact: max(\n 0px,\n calc(\n (\n var(--sb-compact-width) -\n (2 * var(--sb-panel-padding-inline-compact)) -\n var(--prime-sys-size-avatar-m-size)\n ) /\n 2\n )\n );\n --sb-identity-padding-inline: calc(\n var(--sb-item-padding-inline-expanded) +\n (var(--sb-identity-padding-inline-compact) - var(--sb-item-padding-inline-expanded)) *\n var(--sb-progress)\n );\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 0 0 var(--sb-visible-width);\n width: var(--sb-visible-width);\n min-width: var(--sb-visible-width);\n min-height: 0;\n height: 100%;\n overflow: visible;\n}\n\n.root[data-size=\"s\"] {\n --sb-control-height: var(--prime-sys-size-control-s-height);\n}\n\n.root[data-size=\"l\"] {\n --sb-control-height: var(--prime-sys-size-control-l-height);\n}\n\n.root[data-size=\"xl\"] {\n --sb-control-height: var(--prime-sys-size-control-xl-height);\n}\n\n.root[data-state=\"hidden\"] {\n --sb-visible-width: 0px;\n overflow: hidden;\n}\n\n.navArea {\n position: relative;\n width: 100%;\n min-height: 0;\n height: 100%;\n pointer-events: auto;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n border: 0;\n margin: 0;\n padding: 0;\n background: transparent;\n opacity: 0;\n pointer-events: none;\n}\n\n/* \u0412\u043D\u0435\u0448\u043D\u044F\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430; edge ToggleButton \u0432\u043D\u0443\u0442\u0440\u0438 .navPanelSurface \u2014 \u0435\u0434\u0435\u0442 \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 \u043F\u0430\u043D\u0435\u043B\u044C\u044E (transform). */\n.navPanel {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 100%;\n min-height: 0;\n height: 100%;\n}\n\n.navPanelSurface {\n position: relative;\n z-index: 0;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 100%;\n min-height: 0;\n width: 100%;\n gap: var(--sb-panel-gap);\n padding-block: var(--sb-panel-padding-block);\n padding-inline: var(--sb-panel-padding-inline);\n border: 0;\n border-radius: 0;\n /*\n * \u0421\u0432\u0435\u0442\u043B\u0430\u044F: default + border-subtle \u2014 \u043D\u0435 accentSoft/neutralHover (\u0432 \u0442\u0435\u043C\u0435 \u044D\u0442\u043E \u0442\u043E\u0442 \u0436\u0435 gray-100).\n * \u0413\u0440\u0430\u043D\u044C \u043A \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0443 \u2014 \u0434\u0430\u0436\u0435 \u043A\u043E\u0433\u0434\u0430 default\u2248elevated (\u043F\u0440\u0435\u0441\u0435\u0442\u044B). \u0422\u0451\u043C\u043D\u0430\u044F: \u0442\u043E\u043B\u044C\u043A\u043E default.\n */\n background: color-mix(\n in srgb,\n var(--prime-sys-color-surface-default) 88%,\n var(--prime-sys-color-border-subtle) 12%\n );\n box-shadow: none;\n transition: background-color var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n:root[data-theme=\"dark\"] .navPanelSurface {\n background: var(--prime-sys-color-surface-default);\n}\n\n.root[data-side=\"left\"] .navPanelSurface {\n border-inline-end: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.root[data-side=\"right\"] .navPanel {\n margin-inline-start: auto;\n}\n\n.root[data-side=\"right\"] .navPanelSurface {\n border-inline-start: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.header {\n flex: 0 0 auto;\n width: 100%;\n min-width: 0;\n padding: 0;\n}\n\n.headerRow {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n min-width: 0;\n}\n\n.headerMain {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n min-width: 0;\n}\n\n.content {\n flex: 1 1 auto;\n width: 100%;\n min-width: 0;\n min-height: 0;\n padding: 0;\n scrollbar-gutter: stable;\n}\n\n.footer {\n flex: 0 0 auto;\n width: 100%;\n margin-top: auto;\n min-width: 0;\n padding: 0;\n}\n\n.footerInset {\n padding: var(--prime-sys-spacing-x3);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-sys-shape-radius-m);\n background: color-mix(\n in srgb,\n var(--prime-sys-color-surface-elevated) 92%,\n var(--prime-sys-color-surface-default)\n );\n}\n\n.group {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n min-width: 0;\n}\n\n.group + .group {\n margin-block-start: var(--prime-sys-spacing-x2);\n}\n\n.groupHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n min-block-size: var(--prime-sys-size-control-s-height);\n gap: var(--prime-sys-spacing-x1);\n}\n\n.groupHeaderAction {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.groupLabel {\n display: block;\n width: 100%;\n min-width: 0;\n min-block-size: 1.2em;\n line-height: 1.2;\n padding-inline: var(--prime-sys-spacing-x1);\n overflow: hidden;\n}\n\n.headingTrack {\n position: relative;\n display: block;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n}\n\n.headingText {\n --sb-heading-offset-px: 0px;\n display: inline-block;\n width: max-content;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transform: translateX(var(--sb-heading-offset-px));\n}\n\n.separator {\n margin-block: var(--prime-sys-spacing-x1);\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n list-style: none;\n margin: 0;\n padding: 0;\n min-width: 0;\n}\n\n.menuItem {\n display: flex;\n align-items: stretch;\n min-width: 0;\n}\n\n.menuTooltipAnchor {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.menuButton {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--sb-item-gap);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n min-height: var(--sb-control-height);\n margin-inline-start: 0;\n padding-block: var(--prime-sys-size-control-m-buttonPaddingY);\n padding-inline: var(--sb-item-padding-inline);\n border: 0;\n border-radius: var(--prime-sys-size-control-m-radius);\n background: transparent;\n color: var(--prime-sys-color-content-primary);\n font-size: var(--prime-sys-size-control-m-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.2;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n transition:\n background-color var(--sb-transition-duration) var(--sb-transition-ease),\n color var(--sb-transition-duration) var(--sb-transition-ease),\n opacity var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.menuButton:hover {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.menuButton:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.menuButtonActive:focus-visible,\n.menuButton[data-active=\"true\"]:focus-visible,\n.menuButton[aria-current=\"page\"]:focus-visible {\n outline: none;\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.menuButton:disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n\n.menuButtonActive,\n.menuButton[data-active=\"true\"],\n.menuButton[aria-current=\"page\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.menuButtonActive:hover:not(:disabled),\n.menuButton[data-active=\"true\"]:hover:not(:disabled),\n.menuButton[aria-current=\"page\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n.menuIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n flex-shrink: 0;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.menuIcon > :global(svg) {\n width: 100%;\n height: 100%;\n}\n\n.menuLabel {\n flex: 1 1 auto;\n min-width: 0;\n max-width: var(--sb-item-label-max-width);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n opacity: var(--sb-item-label-opacity);\n transform: translateX(var(--sb-item-label-shift));\n}\n\n.menuTrailing {\n margin-inline-start: auto;\n max-width: var(--sb-item-trailing-max-width);\n overflow: hidden;\n color: var(--prime-sys-color-content-muted);\n opacity: var(--sb-item-trailing-opacity);\n transform: scale(var(--sb-item-trailing-scale));\n}\n\n.menuButtonActive .menuIcon,\n.menuButton[data-active=\"true\"] .menuIcon,\n.menuButton[aria-current=\"page\"] .menuIcon {\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.menuButtonActive .menuTrailing,\n.menuButton[data-active=\"true\"] .menuTrailing,\n.menuButton[aria-current=\"page\"] .menuTrailing {\n color: var(--prime-sys-color-action-primaryForeground);\n opacity: 0.72;\n}\n\n.menuAction {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: auto;\n min-width: var(--sb-control-height);\n min-height: var(--sb-control-height);\n padding-inline: var(--prime-sys-spacing-x2);\n padding-block: 0;\n border: 0;\n border-radius: var(--prime-sys-size-control-m-radius);\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n cursor: pointer;\n transition:\n background-color var(--sb-transition-duration) var(--sb-transition-ease),\n color var(--sb-transition-duration) var(--sb-transition-ease),\n opacity var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.menuAction:hover {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n}\n\n.menuAction:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.menuAction:disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n\n.toggleButton {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: var(--sb-control-height);\n min-width: var(--sb-control-height);\n max-width: var(--sb-control-height);\n min-height: var(--sb-control-height);\n padding: 0;\n border: 0;\n border-radius: var(--prime-sys-size-control-m-radius);\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n cursor: pointer;\n transition:\n background-color var(--sb-transition-duration) var(--sb-transition-ease),\n color var(--sb-transition-duration) var(--sb-transition-ease),\n opacity var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.toggleButton:hover {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n}\n\n.toggleButton:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.toggleButton:disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n\n.toggleButton[data-placement=\"edge\"] {\n position: absolute;\n z-index: 3;\n width: calc(var(--sb-control-height) * 0.72);\n min-width: calc(var(--sb-control-height) * 0.72);\n max-width: calc(var(--sb-control-height) * 0.72);\n min-height: calc(var(--sb-control-height) * 0.6);\n padding: var(--prime-sys-size-control-s-buttonPaddingY);\n border-radius: var(--prime-sys-size-control-s-radius);\n font-size: var(--prime-sys-size-control-s-icon);\n inset-block-start: calc(\n var(--sb-panel-padding-block) +\n var(--sb-control-height) +\n var(--prime-sys-spacing-x3) +\n var(--prime-sys-spacing-x1)\n );\n inset-inline-end: 0;\n transform: translate(50%, -50%);\n background: var(--prime-sys-color-surface-elevated);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n /* \u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C .navArea \u043C\u043E\u0436\u0435\u0442 \u0438\u043C\u0435\u0442\u044C pointer-events: none \u2014 \u043A\u043D\u043E\u043F\u043A\u0430 \u043E\u0441\u0442\u0430\u0451\u0442\u0441\u044F \u043A\u043B\u0438\u043A\u0430\u0431\u0435\u043B\u044C\u043D\u043E\u0439. */\n pointer-events: auto;\n}\n\n.toggleButton[data-placement=\"edge\"] .menuIcon {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.root:not([data-state=\"hidden\"]) .toggleButton[data-placement=\"edge\"]:not(:disabled) {\n opacity: 0.5;\n}\n\n.root:not([data-state=\"hidden\"]) .toggleButton[data-placement=\"edge\"]:not(:disabled):hover,\n.root:not([data-state=\"hidden\"]) .toggleButton[data-placement=\"edge\"]:not(:disabled):focus-visible {\n opacity: 1;\n}\n\n.root[data-side=\"right\"] .toggleButton[data-placement=\"edge\"] {\n inset-inline-end: auto;\n inset-inline-start: 0;\n transform: translate(-50%, -50%);\n}\n\n.identityButton {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: var(--sb-item-gap);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n min-height: calc(var(--sb-control-height) + var(--prime-sys-spacing-x2));\n margin-inline-start: 0;\n padding-inline: var(--sb-identity-padding-inline);\n padding-block: var(--prime-sys-size-control-m-buttonPaddingY);\n border: 0;\n border-radius: var(--prime-sys-size-control-m-radius);\n background: transparent;\n color: var(--prime-sys-color-content-primary);\n text-align: left;\n cursor: pointer;\n overflow: hidden;\n transition:\n background-color var(--sb-transition-duration) var(--sb-transition-ease),\n color var(--sb-transition-duration) var(--sb-transition-ease),\n opacity var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.identityButton:hover {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.identityButton:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.identityButton:disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n\n.identityButtonLeading {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--prime-sys-size-avatar-m-size);\n height: var(--prime-sys-size-avatar-m-size);\n flex-shrink: 0;\n}\n\n.identityButtonMain {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n max-width: var(--sb-identity-main-max-width);\n overflow: hidden;\n gap: var(--prime-sys-unit-2px);\n opacity: var(--sb-item-label-opacity);\n transform: translateX(var(--sb-item-label-shift));\n}\n\n.identityButtonTitle {\n font-size: var(--prime-sys-size-control-m-text);\n line-height: 1.2;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.identityButtonSubtitle {\n font-size: var(--prime-sys-size-control-s-supportText);\n line-height: 1.2;\n color: var(--prime-sys-color-content-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.identityButtonTrailing {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-inline-start: auto;\n flex-shrink: 0;\n font-size: var(--prime-sys-size-control-m-icon);\n color: var(--prime-sys-color-content-secondary);\n opacity: var(--sb-item-trailing-opacity);\n transform: scale(var(--sb-item-trailing-scale));\n}\n\n.text {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.navPanelBody {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n gap: var(--prime-sys-spacing-x2);\n scrollbar-gutter: stable;\n}\n\n.navDocTree {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: var(--prime-sys-spacing-x2);\n}\n\n.navPanelHeading {\n margin: 0;\n width: 100%;\n min-width: 0;\n min-block-size: 1.2em;\n font-size: var(--prime-sys-size-control-m-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n line-height: 1.2;\n overflow: hidden;\n}\n\n.navCategory {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: var(--prime-sys-spacing-x1);\n}\n\n.navCategoryTrigger {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x1);\n width: 100%;\n min-width: 0;\n margin: 0;\n padding-block: var(--prime-sys-spacing-x1);\n padding-inline: var(--prime-sys-spacing-x2);\n border: 0;\n border-radius: var(--prime-sys-size-control-m-radius);\n background: transparent;\n color: var(--prime-sys-color-content-muted);\n cursor: pointer;\n transition:\n background-color var(--sb-transition-duration) var(--sb-transition-ease),\n color var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.navCategoryTrigger:hover {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.navCategoryTrigger > :global(svg) {\n margin-inline-start: auto;\n transition: transform var(--sb-transition-duration) var(--sb-transition-ease);\n}\n\n.navCategoryTrigger[data-expanded=\"true\"] > :global(svg) {\n transform: rotate(90deg);\n}\n\n.navCategoryLabel {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.navCategoryCount {\n flex-shrink: 0;\n color: var(--prime-sys-color-content-muted);\n font-size: var(--prime-sys-size-control-s-supportText);\n}\n\n.navCategoryPanel {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: var(--prime-sys-spacing-x1);\n}\n\n@media (min-width: 48rem) {\n .root[data-state=\"compact\"] .identityButtonMain {\n flex: 0 1 auto;\n }\n\n .root[data-state=\"compact\"] .groupHeaderAction,\n .root[data-state=\"compact\"] .menuTrailing,\n .root[data-state=\"compact\"] .navCategoryCount,\n .root[data-state=\"compact\"] .identityButtonTrailing {\n pointer-events: none;\n }\n\n .root[data-state=\"compact\"] .navCategoryTrigger {\n justify-content: center;\n padding-inline: var(--prime-sys-spacing-x2);\n }\n\n .root[data-state=\"compact\"] .navCategoryTrigger > :global(svg) {\n opacity: 0;\n pointer-events: none;\n }\n}\n\n@media (max-width: 47.999rem) {\n .root {\n width: 0;\n min-width: 0;\n flex-basis: 0;\n }\n\n .navArea {\n position: fixed;\n inset: 0;\n z-index: var(--prime-sys-elevation-zIndex-drawer);\n pointer-events: none;\n }\n\n .root[data-mobile-open=\"true\"] .navArea {\n pointer-events: auto;\n }\n\n .backdrop {\n display: block;\n background: var(--prime-sys-color-surface-overlay);\n backdrop-filter: blur(var(--prime-sys-unit-8px));\n transition: opacity var(--sb-transition-duration) var(--sb-transition-ease);\n }\n\n .root[data-mobile-open=\"true\"] .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .navPanel {\n position: absolute;\n top: 0;\n bottom: 0;\n width: min(var(--sb-expanded-width), 90vw);\n min-width: min(var(--sb-expanded-width), 90vw);\n max-width: 100vw;\n height: 100dvh;\n transform: none;\n overflow: visible;\n }\n\n .navPanelSurface {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n transition:\n transform var(--sb-transition-duration) var(--sb-transition-ease),\n background-color var(--sb-transition-duration) var(--sb-transition-ease);\n }\n\n .root[data-side=\"left\"] .navPanel {\n left: 0;\n border-radius: 0 var(--prime-sys-shape-radius-l) var(--prime-sys-shape-radius-l) 0;\n }\n\n .root[data-side=\"right\"] .navPanel {\n right: 0;\n border-radius: var(--prime-sys-shape-radius-l) 0 0 var(--prime-sys-shape-radius-l);\n }\n\n .root[data-side=\"left\"] .navPanelSurface {\n transform: translateX(-100%);\n }\n\n .root[data-side=\"right\"] .navPanelSurface {\n transform: translateX(100%);\n }\n\n .root[data-mobile-open=\"true\"] .navPanelSurface {\n transform: translateX(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .root,\n .navPanel,\n .navPanelSurface,\n .backdrop,\n .menuButton,\n .menuLabel,\n .menuTrailing,\n .identityButton,\n .identityButtonMain,\n .identityButtonTrailing,\n .groupLabel,\n .navPanelHeading,\n .headingTrack,\n .headingText,\n .navCategoryTrigger > :global(svg) {\n transition: none;\n }\n}\n", "import { animate, useMotionValue, useMotionValueEvent, useReducedMotion } from \"framer-motion\";\nimport * as React from \"react\";\n\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useOverlayModal } from \"@/hooks/useOverlayModal\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { SidebarSize } from \"@/internal/states\";\n\nimport styles from \"./Sidebar.module.css\";\nimport { SidebarProvider, type SidebarSide } from \"./sidebar-context\";\nimport {\n type LegacySidebarLayoutMode,\n normalizeSidebarMode,\n SIDEBAR_MEDIA_QUERY_NARROW,\n type SidebarLayoutMode,\n} from \"./sidebarLayout\";\n\nexport type { SidebarLayoutMode, SidebarSide };\n\nexport type SidebarRootProps = Omit<React.ComponentPropsWithoutRef<\"aside\">, \"children\"> & {\n children: React.ReactNode;\n size?: SidebarSize;\n side?: SidebarSide;\n state?: SidebarLayoutMode;\n defaultState?: SidebarLayoutMode;\n onStateChange?: (state: SidebarLayoutMode) => void;\n /** @deprecated */\n mode?: SidebarLayoutMode | LegacySidebarLayoutMode;\n /** @deprecated */\n defaultMode?: SidebarLayoutMode | LegacySidebarLayoutMode;\n /** @deprecated */\n onModeChange?: (state: SidebarLayoutMode) => void;\n /** @deprecated */\n open?: boolean;\n /** @deprecated */\n defaultOpen?: boolean;\n /** @deprecated */\n onOpenChange?: (open: boolean) => void;\n responsive?: boolean;\n sidebarSlot?: \"page-nav\";\n};\n\nfunction initialMobileMatch(responsive: boolean): boolean {\n if (!responsive) return false;\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return false;\n return window.matchMedia(SIDEBAR_MEDIA_QUERY_NARROW).matches;\n}\n\nfunction defaultStateFromProps(\n responsive: boolean,\n isMobile: boolean,\n defaultOpen: boolean,\n): SidebarLayoutMode {\n if (responsive && isMobile) return \"hidden\";\n return defaultOpen ? \"expanded\" : \"hidden\";\n}\n\nconst SidebarRoot = React.forwardRef<HTMLElement, SidebarRootProps>(function SidebarRoot(\n {\n children,\n className,\n size = \"m\",\n side = \"left\",\n state,\n defaultState,\n onStateChange,\n mode,\n defaultMode,\n onModeChange,\n open,\n defaultOpen = true,\n onOpenChange,\n responsive = true,\n sidebarSlot,\n \"aria-label\": ariaLabel = \"Sidebar\",\n ...rest\n },\n ref,\n) {\n const rootRef = React.useRef<HTMLElement | null>(null);\n const reducedMotion = useReducedMotion();\n const compactProgress = useMotionValue(0);\n\n const setRootRef = React.useCallback(\n (node: HTMLElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const initialMobile = initialMobileMatch(Boolean(responsive));\n\n const modeControlled = mode === undefined ? undefined : normalizeSidebarMode(mode);\n const modeDefault = defaultMode === undefined ? undefined : normalizeSidebarMode(defaultMode);\n\n const controlledState =\n state ?? modeControlled ?? (open === undefined ? undefined : open ? \"expanded\" : \"hidden\");\n\n const resolvedDefaultState =\n defaultState ??\n modeDefault ??\n defaultStateFromProps(Boolean(responsive), initialMobile, Boolean(defaultOpen));\n\n const [layoutState, setLayoutState] = useControllableState<SidebarLayoutMode>({\n value: controlledState,\n defaultValue: resolvedDefaultState,\n onChange: (next) => {\n onStateChange?.(next);\n onModeChange?.(next);\n onOpenChange?.(next !== \"hidden\");\n },\n });\n\n const [isMobile, setIsMobile] = React.useState(initialMobile);\n const previousMobileRef = React.useRef(initialMobile);\n\n React.useEffect(() => {\n if (!responsive || typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n setIsMobile(false);\n previousMobileRef.current = false;\n return;\n }\n\n const query = window.matchMedia(SIDEBAR_MEDIA_QUERY_NARROW);\n const update = () => setIsMobile(query.matches);\n update();\n\n if (typeof query.addEventListener === \"function\") {\n query.addEventListener(\"change\", update);\n return () => query.removeEventListener(\"change\", update);\n }\n\n query.addListener(update);\n return () => query.removeListener(update);\n }, [responsive]);\n\n React.useEffect(() => {\n const wasMobile = previousMobileRef.current;\n if (wasMobile === isMobile || !responsive) return;\n previousMobileRef.current = isMobile;\n\n if (isMobile) {\n setLayoutState(\"hidden\");\n return;\n }\n\n if (layoutState === \"hidden\" && defaultOpen) {\n setLayoutState(\"expanded\");\n }\n }, [defaultOpen, isMobile, layoutState, responsive, setLayoutState]);\n\n const setState = React.useCallback(\n (next: SidebarLayoutMode) => {\n setLayoutState(next);\n },\n [setLayoutState],\n );\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n setLayoutState(next ? \"expanded\" : \"hidden\");\n },\n [setLayoutState],\n );\n\n const toggleOpen = React.useCallback(() => {\n setLayoutState((prev) => {\n if (isMobile) {\n return prev === \"hidden\" ? \"expanded\" : \"hidden\";\n }\n if (prev === \"expanded\") return \"compact\";\n if (prev === \"compact\") return \"expanded\";\n return \"expanded\";\n });\n }, [isMobile, setLayoutState]);\n\n const openState = layoutState !== \"hidden\";\n const mobileOpen = Boolean(responsive) && isMobile && openState;\n\n const compactProgressTarget = !isMobile && layoutState === \"compact\" ? 1 : 0;\n\n React.useEffect(() => {\n const controls = animate(compactProgress, compactProgressTarget, {\n duration: reducedMotion ? 0 : 0.24,\n ease: [0.4, 0, 0.2, 1],\n });\n return () => controls.stop();\n }, [compactProgress, compactProgressTarget, reducedMotion]);\n\n React.useLayoutEffect(() => {\n const root = rootRef.current;\n if (root == null) return;\n root.style.setProperty(\"--sb-progress\", compactProgress.get().toString());\n }, [compactProgress]);\n\n useMotionValueEvent(compactProgress, \"change\", (value) => {\n const root = rootRef.current;\n if (root == null) return;\n root.style.setProperty(\"--sb-progress\", value.toString());\n });\n\n const closeMobile = React.useCallback(() => {\n setLayoutState(\"hidden\");\n }, [setLayoutState]);\n\n const navAreaRef = useOverlayModal<HTMLDivElement>(mobileOpen, closeMobile);\n\n const navPanelId = React.useId();\n\n const contextValue = React.useMemo(\n () => ({\n size,\n side,\n state: layoutState,\n setState,\n mode: layoutState,\n setMode: setState,\n open: openState,\n setOpen,\n toggleOpen,\n isMobile,\n navPanelId,\n }),\n [isMobile, layoutState, navPanelId, openState, setOpen, setState, side, size, toggleOpen],\n );\n\n return (\n <SidebarProvider value={contextValue}>\n <aside\n {...rest}\n ref={setRootRef}\n className={cx(styles.root, className)}\n aria-label={ariaLabel}\n {...toDataAttributes({\n size,\n side,\n state: layoutState,\n open: openState,\n responsive: responsive ? true : undefined,\n mobile: isMobile ? true : undefined,\n \"mobile-open\": mobileOpen ? true : undefined,\n \"sidebar-slot\": sidebarSlot,\n \"sidebar-mode\": layoutState,\n \"sidebar-root\": true,\n })}\n >\n <div ref={navAreaRef} className={styles.navArea}>\n <button\n type=\"button\"\n className={styles.backdrop}\n aria-label=\"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u0430\u0439\u0434\u0431\u0430\u0440\"\n onClick={closeMobile}\n tabIndex={mobileOpen ? 0 : -1}\n aria-hidden={mobileOpen ? undefined : true}\n />\n {children}\n </div>\n </aside>\n </SidebarProvider>\n );\n});\n\nSidebarRoot.displayName = \"SidebarRoot\";\n\nexport { SidebarRoot };\n", "import * as React from \"react\";\n\ntype UseEscapeKeyOptions = {\n enabled: boolean;\n onEscape: () => void;\n};\n\nexport function useEscapeKey({ enabled, onEscape }: UseEscapeKeyOptions) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") {\n return;\n }\n\n onEscape();\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [enabled, onEscape]);\n}\n", "import * as React from \"react\";\n\nconst FOCUSABLE_SELECTORS = [\n 'a[href]:not([tabindex=\"-1\"])',\n 'button:not([disabled]):not([tabindex=\"-1\"])',\n 'input:not([disabled]):not([type=\"hidden\"]):not([tabindex=\"-1\"])',\n 'select:not([disabled]):not([tabindex=\"-1\"])',\n 'textarea:not([disabled]):not([tabindex=\"-1\"])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(\", \");\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS)).filter((el) => {\n if (el.getAttribute(\"aria-hidden\") === \"true\") return false;\n const style = window.getComputedStyle(el);\n return style.display !== \"none\" && style.visibility !== \"hidden\";\n });\n}\n\ntype UseFocusTrapOptions = {\n enabled: boolean;\n /** Whether to restore focus to the previously focused element on disable */\n restoreFocus?: boolean;\n /** Element to focus initially; falls back to first focusable element */\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n};\n\n/**\n * Traps keyboard focus inside a container element.\n * Tab cycles forward through focusable elements, Shift+Tab cycles backward.\n * Shared by Modal (panel), Select.Content, Dropdown.\n */\nexport function useFocusTrap<T extends HTMLElement = HTMLElement>(\n options: UseFocusTrapOptions,\n): React.RefObject<T | null> {\n const { enabled, restoreFocus = true, initialFocusRef } = options;\n const containerRef = React.useRef<T | null>(null);\n const previousFocusRef = React.useRef<HTMLElement | null>(null);\n\n React.useEffect(() => {\n if (!enabled) return;\n\n const container = containerRef.current;\n if (!container) return;\n\n previousFocusRef.current = document.activeElement as HTMLElement;\n\n // Focus initial element or first focusable\n const toFocus = initialFocusRef?.current ?? getFocusableElements(container)[0] ?? container;\n (toFocus as HTMLElement).focus({ preventScroll: true });\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Tab\") return;\n\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !container.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !container.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n if (restoreFocus && previousFocusRef.current) {\n previousFocusRef.current.focus({ preventScroll: true });\n }\n };\n }, [enabled, restoreFocus, initialFocusRef]);\n\n return containerRef;\n}\n", "import * as React from \"react\";\n\nlet lockCount = 0;\nlet savedOverflow = \"\";\nlet savedPaddingRight = \"\";\n\nfunction lockScroll() {\n if (lockCount === 0) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n savedOverflow = document.body.style.overflow;\n savedPaddingRight = document.body.style.paddingRight;\n\n document.body.style.overflow = \"hidden\";\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n lockCount++;\n}\n\nfunction unlockScroll() {\n lockCount = Math.max(0, lockCount - 1);\n if (lockCount === 0) {\n document.body.style.overflow = savedOverflow;\n document.body.style.paddingRight = savedPaddingRight;\n }\n}\n\n/**\n * Locks body scroll when enabled. Supports multiple concurrent callers via\n * a reference-counted lock \u2014 the last caller to unmount restores scroll.\n * Compensates for scrollbar width to prevent layout shift.\n * Shared by modal/drawer overlays.\n */\nexport function useScrollLock(enabled: boolean) {\n React.useEffect(() => {\n if (!enabled) return;\n lockScroll();\n return () => unlockScroll();\n }, [enabled]);\n}\n", "import type * as React from \"react\";\n\nimport { useEscapeKey } from \"./useEscapeKey\";\nimport { useFocusTrap } from \"./useFocusTrap\";\nimport { useScrollLock } from \"./useScrollLock\";\n\n/**\n * \u041E\u0431\u0449\u0438\u0439 \u0441\u043B\u043E\u0439 \u0434\u043B\u044F \u043C\u043E\u0434\u0430\u043B\u044C\u043D\u044B\u0445 \u043E\u0432\u0435\u0440\u043B\u0435\u0435\u0432 (Sidebar narrow, Drawer \u0438 \u0442.\u0434.):\n * \u043B\u043E\u0432\u0443\u0448\u043A\u0430 \u0444\u043E\u043A\u0443\u0441\u0430, \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430, Escape.\n */\nexport function useOverlayModal<T extends HTMLElement = HTMLElement>(\n enabled: boolean,\n onClose: () => void,\n): React.RefObject<T | null> {\n const trapRef = useFocusTrap<T>({ enabled });\n useScrollLock(enabled);\n useEscapeKey({ enabled, onEscape: onClose });\n return trapRef;\n}\n", "import { createComponentContext } from \"@/internal/context\";\nimport type { SidebarSize } from \"@/internal/states\";\nimport type { SidebarLayoutMode } from \"./sidebarLayout\";\n\nexport type SidebarSide = \"left\" | \"right\";\n\nexport type SidebarContextValue = {\n size: SidebarSize;\n side: SidebarSide;\n state: SidebarLayoutMode;\n setState: (mode: SidebarLayoutMode) => void;\n mode: SidebarLayoutMode;\n setMode: (mode: SidebarLayoutMode) => void;\n open: boolean;\n setOpen: (next: boolean) => void;\n toggleOpen: () => void;\n isMobile: boolean;\n navPanelId: string;\n};\n\nconst [SidebarProvider, useSidebarContext] = createComponentContext<SidebarContextValue>(\"Sidebar\");\n\nexport { SidebarProvider, useSidebarContext };\n", "/**\n * \u0415\u0434\u0438\u043D\u0430\u044F \u0442\u043E\u0447\u043A\u0430 \u0434\u043B\u044F JS/CSS: mobile < 768px, desktop/tablet >= 768px.\n */\n\nexport type SidebarLayoutMode = \"hidden\" | \"compact\" | \"expanded\";\n\n/** @deprecated use `SidebarLayoutMode` */\nexport type LegacySidebarLayoutMode = \"hidden\" | \"compact\" | \"expand\";\n\nexport const SIDEBAR_LAYOUT_BREAKPOINT_MAX = \"47.999rem\";\n\nexport const SIDEBAR_MEDIA_QUERY_NARROW = `(max-width: ${SIDEBAR_LAYOUT_BREAKPOINT_MAX})`;\n\nexport const SIDEBAR_MEDIA_QUERY_INLINE = \"(min-width: 48rem)\";\n\nexport const SIDEBAR_MEDIA_QUERY_XS_HIDDEN = \"(max-width: 29.999rem)\";\n\nexport function normalizeSidebarMode(\n mode: SidebarLayoutMode | LegacySidebarLayoutMode,\n): SidebarLayoutMode {\n return mode === \"expand\" ? \"expanded\" : mode;\n}\n", "import { ChevronDown } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport type { AccordionSize } from \"@/internal/states\";\n\nimport styles from \"./Accordion.module.css\";\n\nexport type AccordionType = \"single\" | \"multiple\";\n\nexport type { AccordionSize };\n\nexport type AccordionRootProps = React.HTMLAttributes<HTMLDivElement> & {\n type?: AccordionType;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n /** \u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F `type=\"single\"`. \u0415\u0441\u043B\u0438 `false`, \u0432 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u043F\u0443\u043D\u043A\u0442. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `true`. */\n collapsible?: boolean;\n /** \u0420\u0430\u0437\u043C\u0435\u0440 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430, \u0438\u043A\u043E\u043D\u043E\u043A \u0438 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u0432 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `m`. */\n size?: AccordionSize;\n /** \u0413\u0440\u0443\u043F\u043F\u043E\u0432\u043E\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0431\u0435\u0437 \u0437\u0430\u0437\u043E\u0440\u043E\u0432 (`grouped`) \u0438\u043B\u0438 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 (`separate`). */\n layout?: \"grouped\" | \"separate\";\n};\n\ntype AccordionContextValue = { size: AccordionSize };\n\nconst [AccordionProvider, useAccordionContext] =\n createComponentContext<AccordionContextValue>(\"Accordion\");\n\ntype AccordionStateContextValue = {\n type: AccordionType;\n collapsible: boolean;\n openValues: string[];\n toggleItem: (value: string, disabled: boolean) => void;\n};\n\nconst [AccordionStateProvider, useAccordionState] =\n createComponentContext<AccordionStateContextValue>(\"Accordion\");\n\ntype AccordionItemContextValue = {\n value: string;\n disabled: boolean;\n open: boolean;\n triggerId: string;\n contentId: string;\n};\n\nconst [AccordionItemProvider, useAccordionItem] =\n createComponentContext<AccordionItemContextValue>(\"Accordion\");\n\nexport type AccordionItemProps = React.HTMLAttributes<HTMLDivElement> & {\n value: string;\n disabled?: boolean;\n};\n\nexport type AccordionHeaderProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nexport type AccordionTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type AccordionContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type AccordionIconProps<T extends React.ElementType = \"div\"> = {\n as?: T;\n className?: string;\n children?: React.ReactNode;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"as\" | \"className\">;\n\nexport type AccordionArrowProps = React.HTMLAttributes<HTMLSpanElement> & {\n openIcon?: React.ElementType<{ className?: string; strokeWidth?: number | string }>;\n closeIcon?: React.ElementType<{ className?: string; strokeWidth?: number | string }>;\n};\n\nfunction singleControlledValue(value: string | string[] | undefined): string | undefined {\n if (value === undefined) return undefined;\n if (Array.isArray(value)) return value[0] ?? \"\";\n return value;\n}\n\nfunction singleDefaultValue(defaultValue: string | string[] | undefined): string | undefined {\n if (defaultValue === undefined) return undefined;\n if (Array.isArray(defaultValue)) return defaultValue[0] ?? \"\";\n return defaultValue;\n}\n\nfunction multipleControlledValue(value: string | string[] | undefined): string[] | undefined {\n if (value === undefined) return undefined;\n if (Array.isArray(value)) return value;\n return value === \"\" ? [] : [value];\n}\n\nfunction multipleDefaultValue(defaultValue: string | string[] | undefined): string[] | undefined {\n if (defaultValue === undefined) return undefined;\n if (Array.isArray(defaultValue)) return defaultValue;\n return defaultValue === \"\" ? [] : [defaultValue];\n}\n\nfunction normalizeValues(values: string[]): string[] {\n return Array.from(new Set(values.filter((value) => value !== \"\")));\n}\n\nconst AccordionRoot = React.forwardRef<HTMLDivElement, AccordionRootProps>(function AccordionRoot(\n {\n type = \"single\",\n value,\n defaultValue,\n onValueChange,\n collapsible = true,\n size = \"m\",\n layout = \"grouped\",\n className,\n children,\n ...rest\n },\n ref,\n) {\n const contextValue = React.useMemo(() => ({ size }), [size]);\n const isMultiple = type === \"multiple\";\n const isControlled = value !== undefined;\n\n const initialUncontrolledValues = React.useMemo(() => {\n if (isMultiple) return normalizeValues(multipleDefaultValue(defaultValue) ?? []);\n const initialSingle = singleDefaultValue(defaultValue);\n return initialSingle ? [initialSingle] : [];\n }, [defaultValue, isMultiple]);\n\n const [uncontrolledValues, setUncontrolledValues] =\n React.useState<string[]>(initialUncontrolledValues);\n\n const controlledValues = React.useMemo(() => {\n if (!isControlled) return undefined;\n if (isMultiple) return normalizeValues(multipleControlledValue(value) ?? []);\n const singleValue = singleControlledValue(value);\n return singleValue ? [singleValue] : [];\n }, [isControlled, isMultiple, value]);\n\n const openValues = controlledValues ?? uncontrolledValues;\n\n const updateValues = React.useCallback(\n (nextValues: string[]) => {\n if (!isControlled) {\n setUncontrolledValues(nextValues);\n }\n\n if (isMultiple) {\n onValueChange?.(nextValues);\n } else {\n onValueChange?.(nextValues[0] ?? \"\");\n }\n },\n [isControlled, isMultiple, onValueChange],\n );\n\n const toggleItem = React.useCallback(\n (itemValue: string, disabledItem: boolean) => {\n if (disabledItem) return;\n\n if (isMultiple) {\n if (openValues.includes(itemValue)) {\n updateValues(openValues.filter((valueEntry) => valueEntry !== itemValue));\n return;\n }\n\n updateValues([...openValues, itemValue]);\n return;\n }\n\n const currentValue = openValues[0];\n if (currentValue === itemValue) {\n if (!collapsible) return;\n updateValues([]);\n return;\n }\n\n updateValues([itemValue]);\n },\n [collapsible, isMultiple, openValues, updateValues],\n );\n\n const stateContextValue = React.useMemo<AccordionStateContextValue>(\n () => ({\n type,\n collapsible,\n openValues,\n toggleItem,\n }),\n [collapsible, openValues, toggleItem, type],\n );\n\n return (\n <AccordionStateProvider value={stateContextValue}>\n <AccordionProvider value={contextValue}>\n <div\n ref={ref}\n className={cx(styles.root, className)}\n data-size={size}\n data-type={type}\n data-layout={layout}\n {...rest}\n >\n {children}\n </div>\n </AccordionProvider>\n </AccordionStateProvider>\n );\n});\nAccordionRoot.displayName = \"Accordion.Root\";\n\nconst AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(function AccordionItem(\n { className, value, disabled = false, children, ...rest },\n ref,\n) {\n const state = useAccordionState();\n const open = state.openValues.includes(value);\n const reactId = React.useId();\n const triggerId = `prime-accordion-trigger-${reactId}`;\n const contentId = `prime-accordion-content-${reactId}`;\n\n const itemContextValue = React.useMemo<AccordionItemContextValue>(\n () => ({\n value,\n disabled,\n open,\n triggerId,\n contentId,\n }),\n [contentId, disabled, open, triggerId, value],\n );\n\n return (\n <AccordionItemProvider value={itemContextValue}>\n <div\n ref={ref}\n className={cx(styles.item, className)}\n data-state={open ? \"open\" : \"closed\"}\n data-disabled={disabled ? \"\" : undefined}\n {...rest}\n >\n {children}\n </div>\n </AccordionItemProvider>\n );\n});\nAccordionItem.displayName = \"Accordion.Item\";\n\nconst AccordionHeader = React.forwardRef<HTMLHeadingElement, AccordionHeaderProps>(\n function AccordionHeader({ className, ...rest }, ref) {\n return <h3 ref={ref} className={cx(styles.header, className)} {...rest} />;\n },\n);\nAccordionHeader.displayName = \"Accordion.Header\";\n\nconst AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n function AccordionTrigger({ className, children, ...rest }, ref) {\n const { size } = useAccordionContext();\n const state = useAccordionState();\n const item = useAccordionItem();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n rest.onClick?.(event);\n if (event.defaultPrevented) return;\n state.toggleItem(item.value, item.disabled);\n };\n\n return (\n <button\n ref={ref}\n type={rest.type ?? \"button\"}\n {...rest}\n id={item.triggerId}\n disabled={item.disabled}\n aria-controls={item.contentId}\n aria-expanded={item.open}\n data-state={item.open ? \"open\" : \"closed\"}\n data-disabled={item.disabled ? \"\" : undefined}\n className={cx(styles.trigger, className)}\n onClick={handleClick}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </button>\n );\n },\n);\nAccordionTrigger.displayName = \"Accordion.Trigger\";\n\nconst AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n function AccordionContent({ className, children, style, ...rest }, ref) {\n const { size } = useAccordionContext();\n const item = useAccordionItem();\n const innerRef = React.useRef<HTMLDivElement | null>(null);\n const [contentHeight, setContentHeight] = React.useState(0);\n\n React.useLayoutEffect(() => {\n if (!innerRef.current) return;\n const target = innerRef.current;\n setContentHeight(target.scrollHeight);\n\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(() => {\n setContentHeight(target.scrollHeight);\n });\n observer.observe(target);\n return () => observer.disconnect();\n }, []);\n\n const combinedStyle = React.useMemo<React.CSSProperties>(\n () => ({\n ...style,\n \"--prime-accordion-content-height\": `${contentHeight}px`,\n }),\n [contentHeight, style],\n );\n\n const setRefs = (node: HTMLDivElement | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n return (\n <section\n ref={setRefs}\n id={item.contentId}\n aria-labelledby={item.triggerId}\n aria-hidden={!item.open}\n data-state={item.open ? \"open\" : \"closed\"}\n className={styles.content}\n style={combinedStyle}\n {...rest}\n >\n <div ref={innerRef} className={cx(styles.contentInner, className)}>\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n </section>\n );\n },\n);\nAccordionContent.displayName = \"Accordion.Content\";\n\nfunction AccordionIcon<T extends React.ElementType = \"div\">({\n as,\n className,\n children,\n ...rest\n}: AccordionIconProps<T>) {\n const Component = (as ?? \"div\") as React.ElementType;\n\n return (\n <Component className={cx(styles.icon, className)} {...rest}>\n {children}\n </Component>\n );\n}\nAccordionIcon.displayName = \"Accordion.Icon\";\n\nfunction AccordionArrow({\n className,\n openIcon: OpenIcon = ChevronDown,\n closeIcon: CloseIcon,\n ...rest\n}: AccordionArrowProps) {\n const isRotatingChevron = CloseIcon == null || CloseIcon === OpenIcon;\n\n if (isRotatingChevron) {\n return (\n <span className={cx(styles.arrow, className)} {...rest}>\n <OpenIcon\n aria-hidden\n className={cx(styles.arrowIcon, styles.arrowIconRotate)}\n strokeWidth={1.75}\n />\n </span>\n );\n }\n\n return (\n <span className={cx(styles.arrow, className)} {...rest}>\n <OpenIcon\n aria-hidden\n className={cx(styles.arrowIcon, styles.arrowIconClosed)}\n strokeWidth={1.75}\n />\n <CloseIcon\n aria-hidden\n className={cx(styles.arrowIcon, styles.arrowIconOpen)}\n strokeWidth={1.75}\n />\n </span>\n );\n}\nAccordionArrow.displayName = \"Accordion.Arrow\";\n\nexport const Accordion = {\n Root: AccordionRoot,\n Header: AccordionHeader,\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Icon: AccordionIcon,\n Arrow: AccordionArrow,\n Content: AccordionContent,\n};\n", ".root {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n border-radius: var(--prime-sys-size-control-m-radius);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-elevated);\n overflow: hidden;\n --prime-accordion-text: var(--prime-sys-size-control-m-text);\n --prime-accordion-icon: var(--prime-sys-size-control-m-icon);\n --prime-accordion-supportText: var(--prime-sys-size-control-m-supportText);\n --prime-accordion-gap: var(--prime-sys-size-control-m-gap);\n --prime-accordion-col-gap: var(--prime-sys-size-control-m-inputPaddingX);\n --prime-accordion-padding-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --prime-accordion-padding-y: var(--prime-sys-size-control-m-buttonPaddingY);\n --prime-accordion-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.root[data-size=\"s\"] {\n --prime-accordion-text: var(--prime-sys-size-control-s-text);\n --prime-accordion-icon: var(--prime-sys-size-control-s-icon);\n --prime-accordion-supportText: var(--prime-sys-size-control-s-supportText);\n --prime-accordion-gap: var(--prime-sys-size-control-s-gap);\n --prime-accordion-col-gap: var(--prime-sys-size-control-s-inputPaddingX);\n --prime-accordion-padding-x: var(--prime-sys-size-control-s-buttonPaddingX);\n --prime-accordion-padding-y: var(--prime-sys-size-control-s-buttonPaddingY);\n --prime-accordion-radius: var(--prime-sys-size-control-s-radius);\n}\n\n.root[data-size=\"m\"] {\n --prime-accordion-text: var(--prime-sys-size-control-m-text);\n --prime-accordion-icon: var(--prime-sys-size-control-m-icon);\n --prime-accordion-supportText: var(--prime-sys-size-control-m-supportText);\n --prime-accordion-gap: var(--prime-sys-size-control-m-gap);\n --prime-accordion-col-gap: var(--prime-sys-size-control-m-inputPaddingX);\n --prime-accordion-padding-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --prime-accordion-padding-y: var(--prime-sys-size-control-m-buttonPaddingY);\n --prime-accordion-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.root[data-size=\"l\"] {\n --prime-accordion-text: var(--prime-sys-size-control-l-text);\n --prime-accordion-icon: var(--prime-sys-size-control-l-icon);\n --prime-accordion-supportText: var(--prime-sys-size-control-l-supportText);\n --prime-accordion-gap: var(--prime-sys-size-control-l-gap);\n --prime-accordion-col-gap: var(--prime-sys-size-control-l-inputPaddingX);\n --prime-accordion-padding-x: var(--prime-sys-size-control-l-buttonPaddingX);\n --prime-accordion-padding-y: var(--prime-sys-size-control-l-buttonPaddingY);\n --prime-accordion-radius: var(--prime-sys-size-control-l-radius);\n}\n\n.root[data-size=\"xl\"] {\n --prime-accordion-text: var(--prime-sys-size-control-xl-text);\n --prime-accordion-icon: var(--prime-sys-size-control-xl-icon);\n --prime-accordion-supportText: var(--prime-sys-size-control-xl-supportText);\n --prime-accordion-gap: var(--prime-sys-size-control-xl-gap);\n --prime-accordion-col-gap: var(--prime-sys-size-control-xl-inputPaddingX);\n --prime-accordion-padding-x: var(--prime-sys-size-control-xl-buttonPaddingX);\n --prime-accordion-padding-y: var(--prime-sys-size-control-xl-buttonPaddingY);\n --prime-accordion-radius: var(--prime-sys-size-control-xl-radius);\n}\n\n.item {\n display: flex;\n flex-direction: column;\n min-width: 0;\n background: transparent;\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n transition:\n background-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n border-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.item:last-child {\n border-bottom: none;\n}\n\n.item:hover {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.item:focus-within {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.item[data-state=\"open\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.item[data-disabled] {\n opacity: 0.55;\n pointer-events: none;\n}\n\n.header {\n margin: 0;\n display: flex;\n min-width: 0;\n}\n\n.trigger {\n display: flex;\n align-items: center;\n gap: 0;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n padding-inline: var(--prime-accordion-padding-x);\n padding-block: var(--prime-accordion-padding-y);\n border: none;\n font: inherit;\n font-size: var(--prime-accordion-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n text-align: left;\n background: transparent;\n cursor: pointer;\n outline: none;\n}\n\n.trigger:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.icon {\n display: inline-flex;\n flex-shrink: 0;\n width: var(--prime-accordion-icon);\n height: var(--prime-accordion-icon);\n margin-inline-end: var(--prime-accordion-col-gap);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.arrow {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n margin-inline-start: auto;\n padding-inline-start: var(--prime-accordion-col-gap);\n}\n\n.arrowIcon {\n width: var(--prime-accordion-icon);\n height: var(--prime-accordion-icon);\n color: var(--prime-sys-color-content-secondary);\n transition:\n color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n transform var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.item:hover .arrowIcon {\n color: var(--prime-sys-color-content-primary);\n}\n\n.arrowIconClosed {\n display: block;\n}\n\n.arrowIconRotate {\n display: block;\n}\n\n.arrowIconOpen {\n display: none;\n color: var(--prime-sys-color-content-primary);\n}\n\n.item[data-state=\"open\"] .arrowIconRotate {\n transform: rotate(180deg);\n color: var(--prime-sys-color-content-primary);\n}\n\n.item[data-state=\"open\"] .arrowIconClosed {\n display: none;\n}\n\n.item[data-state=\"open\"] .arrowIconOpen {\n display: block;\n}\n\n.content {\n max-height: 0;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n opacity: 0;\n visibility: hidden;\n transition:\n max-height var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n opacity var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n visibility 0s linear var(--prime-sys-motion-fast);\n}\n\n.content[data-state=\"open\"] {\n max-height: var(--prime-accordion-content-height, 0);\n opacity: 1;\n visibility: visible;\n transition-delay: 0s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .content {\n transition: none;\n }\n}\n\n.contentInner {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n padding-top: var(--prime-accordion-col-gap);\n padding-bottom: var(--prime-accordion-padding-y);\n padding-inline: var(--prime-accordion-padding-x);\n font-size: var(--prime-accordion-supportText);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-secondary);\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.root[data-layout=\"separate\"] {\n gap: var(--prime-sys-spacing-x3);\n border: none;\n background: transparent;\n overflow: visible;\n}\n\n.root[data-layout=\"separate\"] .item {\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-accordion-radius);\n}\n", "import * as React from \"react\";\n\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./Avatar.module.css\";\n\nexport type AvatarSize = \"s\" | \"m\" | \"l\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\" | \"6xl\";\n\nexport type AvatarImageStatus = \"idle\" | \"loading\" | \"loaded\" | \"error\";\n\ntype AvatarContextValue = {\n size: AvatarSize;\n imageStatus: AvatarImageStatus;\n setImageStatus: React.Dispatch<React.SetStateAction<AvatarImageStatus>>;\n};\n\nconst [AvatarProvider, useAvatarContext] = createComponentContext<AvatarContextValue>(\"Avatar\");\n\nexport type AvatarRootProps = {\n size?: AvatarSize;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst AvatarRoot = React.forwardRef<HTMLDivElement, AvatarRootProps>(\n ({ size = \"m\", className, children, ...rest }, ref) => {\n const [imageStatus, setImageStatus] = React.useState<AvatarImageStatus>(\"idle\");\n\n const value = React.useMemo(\n () => ({\n size,\n imageStatus,\n setImageStatus,\n }),\n [size, imageStatus],\n );\n\n return (\n <AvatarProvider value={value}>\n <div\n ref={ref}\n className={cx(styles.root, className)}\n {...toDataAttributes({ size })}\n {...rest}\n >\n {children}\n </div>\n </AvatarProvider>\n );\n },\n);\n\nAvatarRoot.displayName = \"AvatarRoot\";\n\nexport type AvatarImageProps = {\n src: string;\n alt?: string;\n className?: string;\n} & Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\" | \"alt\">;\n\ntype AvatarImageInnerProps = AvatarImageProps & {\n setImageStatus: React.Dispatch<React.SetStateAction<AvatarImageStatus>>;\n};\n\nconst AvatarImageInner = React.forwardRef<HTMLImageElement, AvatarImageInnerProps>(\n ({ setImageStatus, src, alt = \"\", className, onLoad, onError, ...rest }, ref) => {\n const [status, setStatus] = React.useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n React.useLayoutEffect(() => {\n setImageStatus(\"loading\");\n return () => {\n setImageStatus(\"idle\");\n };\n }, [setImageStatus]);\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setStatus(\"loaded\");\n setImageStatus(\"loaded\");\n onLoad?.(event);\n },\n [onLoad, setImageStatus],\n );\n\n const handleError = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setStatus(\"error\");\n setImageStatus(\"error\");\n onError?.(event);\n },\n [onError, setImageStatus],\n );\n\n return (\n <img\n ref={ref}\n src={src}\n alt={alt}\n className={cx(styles.image, className)}\n onLoad={handleLoad}\n onError={handleError}\n {...toDataAttributes({ status })}\n {...rest}\n />\n );\n },\n);\n\nAvatarImageInner.displayName = \"AvatarImageInner\";\n\nconst AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>((props, ref) => {\n const { setImageStatus } = useAvatarContext();\n return <AvatarImageInner key={props.src} ref={ref} setImageStatus={setImageStatus} {...props} />;\n});\n\nAvatarImage.displayName = \"AvatarImage\";\n\nexport type AvatarFallbackProps = {\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction AvatarFallback({ children, className, ...rest }: AvatarFallbackProps) {\n const { imageStatus } = useAvatarContext();\n\n return (\n <span\n className={cx(styles.fallback, className)}\n aria-hidden={imageStatus === \"loaded\" ? true : undefined}\n {...rest}\n >\n {children}\n </span>\n );\n}\n\nAvatarFallback.displayName = \"AvatarFallback\";\n\nconst AVATAR_ROOT_DISPLAY = \"AvatarRoot\";\nconst AVATAR_GROUP_OVERFLOW_DISPLAY = \"AvatarGroupOverflow\";\n\nfunction getComponentDisplayName(type: unknown): string | undefined {\n if (typeof type === \"function\" || (typeof type === \"object\" && type !== null)) {\n return (type as { displayName?: string }).displayName;\n }\n return undefined;\n}\n\nfunction isAvatarRootElement(child: React.ReactElement): boolean {\n return child.type === AvatarRoot || getComponentDisplayName(child.type) === AVATAR_ROOT_DISPLAY;\n}\n\nexport type AvatarGroupOverflowProps = {\n size?: AvatarSize;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst AvatarGroupOverflow = React.forwardRef<HTMLDivElement, AvatarGroupOverflowProps>(\n ({ size = \"m\", className, children, ...rest }, ref) => (\n <div\n ref={ref}\n className={cx(styles.groupOverflow, className)}\n {...toDataAttributes({ size })}\n {...rest}\n >\n {children}\n </div>\n ),\n);\n\nAvatarGroupOverflow.displayName = AVATAR_GROUP_OVERFLOW_DISPLAY;\n\nfunction isAvatarGroupOverflowElement(child: React.ReactElement): boolean {\n return (\n child.type === AvatarGroupOverflow ||\n getComponentDisplayName(child.type) === AVATAR_GROUP_OVERFLOW_DISPLAY\n );\n}\n\nfunction injectAvatarGroupSize(children: React.ReactNode, size: AvatarSize): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n if (child.type === React.Fragment) {\n return React.cloneElement(\n child,\n {},\n injectAvatarGroupSize((child.props as { children?: React.ReactNode }).children, size),\n );\n }\n if (isAvatarRootElement(child)) {\n const props = child.props as AvatarRootProps;\n if (props.size !== undefined) {\n return child;\n }\n return React.cloneElement(child, { size } as Partial<AvatarRootProps>);\n }\n if (isAvatarGroupOverflowElement(child)) {\n const props = child.props as AvatarGroupOverflowProps;\n if (props.size !== undefined) {\n return child;\n }\n return React.cloneElement(child, { size } as Partial<AvatarGroupOverflowProps>);\n }\n return child;\n });\n}\n\nexport type AvatarGroupRootProps = {\n size?: AvatarSize;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst AvatarGroupRoot = React.forwardRef<HTMLDivElement, AvatarGroupRootProps>(\n ({ size = \"m\", className, children, ...rest }, ref) => (\n <div\n ref={ref}\n className={cx(styles.groupRoot, className)}\n {...toDataAttributes({ size })}\n {...rest}\n >\n {injectAvatarGroupSize(children, size)}\n </div>\n ),\n);\n\nAvatarGroupRoot.displayName = \"AvatarGroupRoot\";\n\nexport const Avatar = {\n Root: AvatarRoot,\n Image: AvatarImage,\n Fallback: AvatarFallback,\n Group: {\n Root: AvatarGroupRoot,\n Overflow: AvatarGroupOverflow,\n },\n};\n", ".root {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--prime-sys-color-surface-accentSoft);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.root[data-size=\"s\"] {\n width: var(--prime-sys-size-avatar-s-size);\n height: var(--prime-sys-size-avatar-s-size);\n font-size: var(--prime-sys-size-avatar-s-text);\n border-radius: var(--prime-sys-size-avatar-s-radius);\n}\n\n.root[data-size=\"m\"] {\n width: var(--prime-sys-size-avatar-m-size);\n height: var(--prime-sys-size-avatar-m-size);\n font-size: var(--prime-sys-size-avatar-m-text);\n border-radius: var(--prime-sys-size-avatar-m-radius);\n}\n\n.root[data-size=\"l\"] {\n width: var(--prime-sys-size-avatar-l-size);\n height: var(--prime-sys-size-avatar-l-size);\n font-size: var(--prime-sys-size-avatar-l-text);\n border-radius: var(--prime-sys-size-avatar-l-radius);\n}\n\n.root[data-size=\"xl\"] {\n width: var(--prime-sys-size-avatar-xl-size);\n height: var(--prime-sys-size-avatar-xl-size);\n font-size: var(--prime-sys-size-avatar-xl-text);\n border-radius: var(--prime-sys-size-avatar-xl-radius);\n}\n\n.root[data-size=\"2xl\"] {\n width: var(--prime-sys-size-avatar-2xl-size);\n height: var(--prime-sys-size-avatar-2xl-size);\n font-size: var(--prime-sys-size-avatar-2xl-text);\n border-radius: var(--prime-sys-size-avatar-2xl-radius);\n}\n\n.root[data-size=\"3xl\"] {\n width: var(--prime-sys-size-avatar-3xl-size);\n height: var(--prime-sys-size-avatar-3xl-size);\n font-size: var(--prime-sys-size-avatar-3xl-text);\n border-radius: var(--prime-sys-size-avatar-3xl-radius);\n}\n\n.root[data-size=\"4xl\"] {\n width: var(--prime-sys-size-avatar-4xl-size);\n height: var(--prime-sys-size-avatar-4xl-size);\n font-size: var(--prime-sys-size-avatar-4xl-text);\n border-radius: var(--prime-sys-size-avatar-4xl-radius);\n}\n\n.root[data-size=\"5xl\"] {\n width: var(--prime-sys-size-avatar-5xl-size);\n height: var(--prime-sys-size-avatar-5xl-size);\n font-size: var(--prime-sys-size-avatar-5xl-text);\n border-radius: var(--prime-sys-size-avatar-5xl-radius);\n}\n\n.root[data-size=\"6xl\"] {\n width: var(--prime-sys-size-avatar-6xl-size);\n height: var(--prime-sys-size-avatar-6xl-size);\n font-size: var(--prime-sys-size-avatar-6xl-text);\n border-radius: var(--prime-sys-size-avatar-6xl-radius);\n}\n\n.image {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.image[data-status=\"loading\"] {\n opacity: 0;\n}\n\n.image[data-status=\"loaded\"] {\n opacity: 1;\n}\n\n.image[data-status=\"error\"] {\n display: none;\n}\n\n.fallback {\n position: absolute;\n inset: 0;\n z-index: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-secondary);\n font-size: inherit;\n user-select: none;\n text-align: center;\n}\n\n/* Avatar.Group.Root \u2014 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u044F\u0434: \u0441\u043B\u0435\u0432\u0430 \u043D\u0430\u043F\u0440\u0430\u0432\u043E, \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432 DOM \u043F\u0435\u0440\u0435\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0435 */\n.groupRoot {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n}\n\n.groupRoot > * {\n position: relative;\n flex-shrink: 0;\n box-sizing: border-box;\n border: var(--prime-sys-unit-2px) solid var(--prime-sys-color-surface-raised);\n border-radius: var(--prime-sys-shape-radius-round);\n}\n\n.groupRoot[data-size=\"s\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-0p56rem);\n}\n\n.groupRoot[data-size=\"m\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-0p7rem);\n}\n\n.groupRoot[data-size=\"l\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-0p84rem);\n}\n\n.groupRoot[data-size=\"xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-0p98rem);\n}\n\n.groupRoot[data-size=\"2xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-1p12rem);\n}\n\n.groupRoot[data-size=\"3xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-1p26rem);\n}\n\n.groupRoot[data-size=\"4xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-1p4rem);\n}\n\n.groupRoot[data-size=\"5xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-1p54rem);\n}\n\n.groupRoot[data-size=\"6xl\"] > * + * {\n margin-inline-start: var(--prime-sys-unit-neg-1p68rem);\n}\n\n/* \u0421\u043B\u043E\u0442 +N: \u0442\u043E\u0442 \u0436\u0435 \u0434\u0438\u0430\u043C\u0435\u0442\u0440 \u0438 \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430, \u0447\u0442\u043E \u0443 Avatar.Root \u044D\u0442\u043E\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430 */\n.groupOverflow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-secondary);\n font-weight: var(--prime-sys-typography-weight-medium);\n user-select: none;\n text-align: center;\n}\n\n.groupOverflow[data-size=\"s\"] {\n width: var(--prime-sys-size-avatar-s-size);\n height: var(--prime-sys-size-avatar-s-size);\n font-size: var(--prime-sys-size-avatar-s-text);\n}\n\n.groupOverflow[data-size=\"m\"] {\n width: var(--prime-sys-size-avatar-m-size);\n height: var(--prime-sys-size-avatar-m-size);\n font-size: var(--prime-sys-size-avatar-m-text);\n}\n\n.groupOverflow[data-size=\"l\"] {\n width: var(--prime-sys-size-avatar-l-size);\n height: var(--prime-sys-size-avatar-l-size);\n font-size: var(--prime-sys-size-avatar-l-text);\n}\n\n.groupOverflow[data-size=\"xl\"] {\n width: var(--prime-sys-size-avatar-xl-size);\n height: var(--prime-sys-size-avatar-xl-size);\n font-size: var(--prime-sys-size-avatar-xl-text);\n}\n\n.groupOverflow[data-size=\"2xl\"] {\n width: var(--prime-sys-size-avatar-2xl-size);\n height: var(--prime-sys-size-avatar-2xl-size);\n font-size: var(--prime-sys-size-avatar-2xl-text);\n}\n\n.groupOverflow[data-size=\"3xl\"] {\n width: var(--prime-sys-size-avatar-3xl-size);\n height: var(--prime-sys-size-avatar-3xl-size);\n font-size: var(--prime-sys-size-avatar-3xl-text);\n}\n\n.groupOverflow[data-size=\"4xl\"] {\n width: var(--prime-sys-size-avatar-4xl-size);\n height: var(--prime-sys-size-avatar-4xl-size);\n font-size: var(--prime-sys-size-avatar-4xl-text);\n}\n\n.groupOverflow[data-size=\"5xl\"] {\n width: var(--prime-sys-size-avatar-5xl-size);\n height: var(--prime-sys-size-avatar-5xl-size);\n font-size: var(--prime-sys-size-avatar-5xl-text);\n}\n\n.groupOverflow[data-size=\"6xl\"] {\n width: var(--prime-sys-size-avatar-6xl-size);\n height: var(--prime-sys-size-avatar-6xl-size);\n font-size: var(--prime-sys-size-avatar-6xl-text);\n}\n", "import * as React from \"react\";\n\nimport {\n ControlSizeProvider,\n controlSurfaceToInputSize,\n useOptionalControlSize,\n} from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./Badge.module.css\";\n\nexport type BadgeColor =\n | \"gray\"\n | \"red\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"yellow\"\n | \"purple\"\n | \"sky\"\n | \"pink\"\n | \"teal\";\n\n/** \u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u0438 `variant=\"status\"`. */\nexport type BadgeStatus = \"online\" | \"offline\" | \"away\" | \"busy\";\n\nexport type BadgeVariant = \"filled\" | \"light\" | \"lighter\" | \"stroke\" | \"status\";\n\nexport type BadgeSize = \"s\" | \"m\" | \"l\" | \"xl\";\n\nexport type BadgeRootProps = {\n color?: BadgeColor;\n variant?: BadgeVariant;\n size?: BadgeSize;\n disabled?: boolean;\n /** \u041F\u0440\u0438 `variant=\"status\"` \u2014 \u0446\u0432\u0435\u0442 \u0442\u043E\u0447\u043A\u0438 (online / offline / away / busy). */\n status?: BadgeStatus;\n /** \u041F\u0440\u0438 `variant=\"status\"` \u2014 `aria-label` \u043D\u0430 \u043A\u043E\u0440\u043D\u0435 (`role=\"status\"`). */\n label?: string;\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nexport type BadgeIconProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nexport type BadgeDotProps = {\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst BadgeRoot = React.forwardRef<HTMLDivElement, BadgeRootProps>(\n (\n {\n color = \"gray\",\n variant = \"light\",\n size: sizeProp,\n disabled,\n status,\n label,\n children,\n className,\n ...rest\n },\n ref,\n ) => {\n const controlSurface = useOptionalControlSize();\n const size =\n sizeProp ?? (controlSurface !== undefined ? controlSurfaceToInputSize(controlSurface) : \"m\");\n\n const isStatus = variant === \"status\";\n const presence = isStatus ? (status ?? \"online\") : undefined;\n\n const dataProps = isStatus\n ? toDataAttributes({\n variant: \"status\",\n status: presence,\n size,\n disabled: disabled ? true : undefined,\n })\n : toDataAttributes({\n color,\n variant,\n size,\n disabled: disabled ? true : undefined,\n });\n\n if (isStatus) {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={cx(styles.root, className)}\n {...dataProps}\n {...rest}\n >\n <span className={styles.statusDot} aria-hidden=\"true\" />\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n );\n }\n\n return (\n <div ref={ref} className={cx(styles.root, className)} {...dataProps} {...rest}>\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n );\n },\n);\n\nBadgeRoot.displayName = \"BadgeRoot\";\n\nfunction BadgeIcon({ children, className, ...rest }: BadgeIconProps) {\n return (\n <span className={cx(styles.icon, className)} {...rest}>\n {children}\n </span>\n );\n}\n\nBadgeIcon.displayName = \"BadgeIcon\";\n\nfunction BadgeDot({ className, ...rest }: BadgeDotProps) {\n return <span className={cx(styles.dot, className)} aria-hidden=\"true\" {...rest} />;\n}\n\nBadgeDot.displayName = \"BadgeDot\";\n\nexport const Badge = { Root: BadgeRoot, Icon: BadgeIcon, Dot: BadgeDot };\n", ".root {\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-size-badge-m-gap);\n padding-block: var(--prime-sys-size-badge-m-paddingY);\n padding-inline: var(--prime-sys-size-badge-m-paddingX);\n font-size: var(--prime-sys-size-badge-m-text);\n line-height: 1;\n border-radius: var(--prime-sys-size-badge-m-radius);\n font-weight: var(--prime-sys-typography-weight-medium);\n white-space: nowrap;\n border: var(--prime-sys-unit-1px) solid transparent;\n box-sizing: border-box;\n}\n\n.root[data-size=\"s\"] {\n gap: var(--prime-sys-size-badge-s-gap);\n padding-block: var(--prime-sys-size-badge-s-paddingY);\n padding-inline: var(--prime-sys-size-badge-s-paddingX);\n font-size: var(--prime-sys-size-badge-s-text);\n border-radius: var(--prime-sys-size-badge-s-radius);\n}\n\n.root[data-size=\"l\"] {\n gap: var(--prime-sys-size-badge-l-gap);\n padding-block: var(--prime-sys-size-badge-l-paddingY);\n padding-inline: var(--prime-sys-size-badge-l-paddingX);\n font-size: var(--prime-sys-size-badge-l-text);\n border-radius: var(--prime-sys-size-badge-l-radius);\n}\n\n.root[data-size=\"xl\"] {\n gap: var(--prime-sys-size-badge-xl-gap);\n padding-block: var(--prime-sys-size-badge-xl-paddingY);\n padding-inline: var(--prime-sys-size-badge-xl-paddingX);\n font-size: var(--prime-sys-size-badge-xl-text);\n border-radius: var(--prime-sys-size-badge-xl-radius);\n}\n\n/* gray */\n.root[data-color=\"gray\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-color=\"gray\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-badge-grayFilled-background);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"gray\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-surface-default);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.root[data-color=\"gray\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-border-subtle);\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* red \u2192 error */\n.root[data-color=\"red\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-error-background);\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.root[data-color=\"red\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-error-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"red\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-error-background);\n color: var(--prime-sys-color-status-error-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"red\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-error-border);\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n/* blue \u2192 information */\n.root[data-color=\"blue\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-information-background);\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.root[data-color=\"blue\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-information-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"blue\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-information-background);\n color: var(--prime-sys-color-status-information-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"blue\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-information-border);\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n/* green \u2192 success */\n.root[data-color=\"green\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-success-background);\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.root[data-color=\"green\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"green\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-success-background);\n color: var(--prime-sys-color-status-success-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"green\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-success-border);\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n/* orange \u2192 warning */\n.root[data-color=\"orange\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-warning-background);\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n.root[data-color=\"orange\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-warning-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"orange\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-warning-background);\n color: var(--prime-sys-color-status-warning-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"orange\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-warning-border);\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n/* yellow \u2192 away */\n.root[data-color=\"yellow\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-away-background);\n color: var(--prime-sys-color-status-away-foreground);\n}\n\n.root[data-color=\"yellow\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-away-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"yellow\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-away-background);\n color: var(--prime-sys-color-status-away-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"yellow\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-away-border);\n color: var(--prime-sys-color-status-away-foreground);\n}\n\n/* purple \u2192 feature */\n.root[data-color=\"purple\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-feature-background);\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n.root[data-color=\"purple\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-feature-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"purple\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-feature-background);\n color: var(--prime-sys-color-status-feature-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"purple\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-feature-border);\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n/* sky \u2192 verified */\n.root[data-color=\"sky\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-status-verified-background);\n color: var(--prime-sys-color-status-verified-foreground);\n}\n\n.root[data-color=\"sky\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-status-verified-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"sky\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-status-verified-background);\n color: var(--prime-sys-color-status-verified-foreground);\n opacity: 0.7;\n}\n\n.root[data-color=\"sky\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-status-verified-border);\n color: var(--prime-sys-color-status-verified-foreground);\n}\n\n/* pink / teal \u2014 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u043A\u0430 `color.badge.*` */\n.root[data-color=\"pink\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-badge-pink-backgroundSoft);\n color: var(--prime-sys-color-badge-pink-foregroundOnSoft);\n}\n\n.root[data-color=\"pink\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-badge-pink-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"pink\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-badge-pink-backgroundSoft);\n color: var(--prime-sys-color-badge-pink-foregroundOnSoft);\n opacity: 0.7;\n}\n\n.root[data-color=\"pink\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-badge-pink-border);\n color: var(--prime-sys-color-badge-pink-foregroundOnSoft);\n}\n\n.root[data-color=\"teal\"][data-variant=\"light\"] {\n background: var(--prime-sys-color-badge-teal-backgroundSoft);\n color: var(--prime-sys-color-badge-teal-foregroundOnSoft);\n}\n\n.root[data-color=\"teal\"][data-variant=\"filled\"] {\n background: var(--prime-sys-color-badge-teal-backgroundEmphasis);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-color=\"teal\"][data-variant=\"lighter\"] {\n background: var(--prime-sys-color-badge-teal-backgroundSoft);\n color: var(--prime-sys-color-badge-teal-foregroundOnSoft);\n opacity: 0.7;\n}\n\n.root[data-color=\"teal\"][data-variant=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-badge-teal-border);\n color: var(--prime-sys-color-badge-teal-foregroundOnSoft);\n}\n\n.root[data-disabled=\"true\"] {\n opacity: 0.5;\n}\n\n.dot {\n width: var(--prime-sys-size-badge-m-dotSize);\n height: var(--prime-sys-size-badge-m-dotSize);\n border-radius: var(--prime-sys-shape-radius-round);\n background: currentcolor;\n flex-shrink: 0;\n}\n\n.root[data-size=\"s\"] .dot {\n width: var(--prime-sys-size-badge-s-dotSize);\n height: var(--prime-sys-size-badge-s-dotSize);\n}\n\n.root[data-size=\"l\"] .dot {\n width: var(--prime-sys-size-badge-l-dotSize);\n height: var(--prime-sys-size-badge-l-dotSize);\n}\n\n.root[data-size=\"xl\"] .dot {\n width: var(--prime-sys-size-badge-xl-dotSize);\n height: var(--prime-sys-size-badge-xl-dotSize);\n}\n\n.icon {\n width: var(--prime-sys-size-badge-m-iconSize);\n height: var(--prime-sys-size-badge-m-iconSize);\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n}\n\n.root[data-size=\"s\"] .icon {\n width: var(--prime-sys-size-badge-s-iconSize);\n height: var(--prime-sys-size-badge-s-iconSize);\n}\n\n.root[data-size=\"l\"] .icon {\n width: var(--prime-sys-size-badge-l-iconSize);\n height: var(--prime-sys-size-badge-l-iconSize);\n}\n\n.root[data-size=\"xl\"] .icon {\n width: var(--prime-sys-size-badge-xl-iconSize);\n height: var(--prime-sys-size-badge-xl-iconSize);\n}\n\n.icon > * {\n width: 100%;\n height: 100%;\n}\n\n/* \u2500\u2500\u2500 variant status: \u0442\u043E\u0447\u043A\u0430 + \u043F\u043E\u0434\u043F\u0438\u0441\u044C (\u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 StatusBadge) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.root[data-variant=\"status\"] {\n height: auto;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n font-weight: var(--prime-sys-typography-weight-regular);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-primary);\n}\n\n.statusDot {\n width: var(--prime-sys-size-badge-m-dotSize);\n height: var(--prime-sys-size-badge-m-dotSize);\n border-radius: var(--prime-sys-shape-radius-round);\n flex-shrink: 0;\n}\n\n.root[data-size=\"s\"] .statusDot {\n width: var(--prime-sys-size-badge-s-dotSize);\n height: var(--prime-sys-size-badge-s-dotSize);\n}\n\n.root[data-size=\"l\"] .statusDot {\n width: var(--prime-sys-size-badge-l-dotSize);\n height: var(--prime-sys-size-badge-l-dotSize);\n}\n\n.root[data-size=\"xl\"] .statusDot {\n width: var(--prime-sys-size-badge-xl-dotSize);\n height: var(--prime-sys-size-badge-xl-dotSize);\n}\n\n.root[data-variant=\"status\"][data-status=\"online\"] .statusDot {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n}\n\n.root[data-variant=\"status\"][data-status=\"offline\"] .statusDot {\n background: var(--prime-sys-color-content-disabled);\n}\n\n.root[data-variant=\"status\"][data-status=\"away\"] .statusDot {\n background: var(--prime-sys-color-status-away-backgroundEmphasis);\n}\n\n.root[data-variant=\"status\"][data-status=\"busy\"] .statusDot {\n background: var(--prime-sys-color-status-error-backgroundEmphasis);\n}\n", "import { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { ControlSizeProvider, useOptionalControlSize } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { BannerSize } from \"@/internal/states\";\n\nimport styles from \"./Banner.module.css\";\n\nexport type BannerVariant = \"filled\" | \"light\" | \"lighter\" | \"stroke\";\n\nexport type BannerStatus = \"information\" | \"warning\" | \"error\" | \"success\" | \"feature\";\n\nexport type { BannerSize };\n\nexport type BannerRootProps = {\n variant?: BannerVariant;\n status?: BannerStatus;\n size?: BannerSize;\n onDismiss?: () => void;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction childHasCloseButton(children: React.ReactNode): boolean {\n return React.Children.toArray(children).some(\n (c) => React.isValidElement(c) && c.type === BannerCloseButton,\n );\n}\n\nconst BannerRoot = React.forwardRef<HTMLDivElement, BannerRootProps>(function BannerRoot(\n {\n variant = \"filled\",\n status = \"information\",\n size = \"m\",\n onDismiss,\n className,\n children,\n ...rest\n },\n forwardedRef,\n) {\n const showInjectedClose = Boolean(onDismiss) && !childHasCloseButton(children);\n\n return (\n <div\n ref={forwardedRef}\n {...rest}\n className={cx(styles.root, className)}\n {...toDataAttributes({ variant, status, size })}\n >\n <ControlSizeProvider value={size}>\n {children}\n {showInjectedClose ? (\n <BannerCloseButton aria-label=\"Dismiss\" type=\"button\" onClick={onDismiss} />\n ) : null}\n </ControlSizeProvider>\n </div>\n );\n});\nBannerRoot.displayName = \"BannerRoot\";\n\nexport type BannerContentProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction BannerContent({ className, children, ...rest }: BannerContentProps) {\n return (\n <div className={cx(styles.content, className)} {...rest}>\n {children}\n </div>\n );\n}\nBannerContent.displayName = \"BannerContent\";\n\nexport type BannerIconProps<T extends React.ElementType = \"div\"> = {\n as?: T;\n className?: string;\n children?: React.ReactNode;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"as\" | \"className\">;\n\nfunction BannerIcon<T extends React.ElementType = \"div\">({\n as,\n className,\n children,\n ...rest\n}: BannerIconProps<T>) {\n const Component = (as ?? \"div\") as React.ElementType;\n\n return (\n <Component className={cx(styles.icon, className)} {...rest}>\n {children}\n </Component>\n );\n}\nBannerIcon.displayName = \"BannerIcon\";\n\nexport type BannerTitleProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction BannerTitle({ className, children, ...rest }: BannerTitleProps) {\n return (\n <span className={cx(styles.title, className)} {...rest}>\n {children}\n </span>\n );\n}\nBannerTitle.displayName = \"BannerTitle\";\n\nexport type BannerDescriptionProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction BannerDescription({ className, children, ...rest }: BannerDescriptionProps) {\n return (\n <span className={cx(styles.description, className)} {...rest}>\n {children}\n </span>\n );\n}\nBannerDescription.displayName = \"BannerDescription\";\n\nexport type BannerActionsProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction BannerActions({ className, children, ...rest }: BannerActionsProps) {\n return (\n <div className={cx(styles.actions, className)} {...rest}>\n {children}\n </div>\n );\n}\nBannerActions.displayName = \"BannerActions\";\n\nexport type BannerCloseButtonProps = {\n className?: string;\n children?: React.ReactNode;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\">;\n\nconst BannerCloseButton = React.forwardRef<HTMLButtonElement, BannerCloseButtonProps>(\n function BannerCloseButton({ className, children, type = \"button\", ...rest }, forwardedRef) {\n const controlSize = useOptionalControlSize() ?? \"m\";\n const buttonSize = controlSize === \"xs\" ? \"s\" : controlSize;\n\n return (\n <Button.Root\n ref={forwardedRef}\n type={type}\n size={buttonSize}\n mode=\"ghost\"\n variant=\"neutral\"\n className={cx(styles.closeButton, className)}\n {...rest}\n >\n {children ?? (\n <Button.Icon>\n <X aria-hidden strokeWidth={2} />\n </Button.Icon>\n )}\n </Button.Root>\n );\n },\n);\nBannerCloseButton.displayName = \"BannerCloseButton\";\n\nexport const Banner = {\n Root: BannerRoot,\n Content: BannerContent,\n Icon: BannerIcon,\n Title: BannerTitle,\n Description: BannerDescription,\n Actions: BannerActions,\n CloseButton: BannerCloseButton,\n};\n", "import * as React from \"react\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport { Slot } from \"@/internal/slot\";\nimport type { ButtonMode, ButtonSize, ButtonVariant } from \"@/internal/states\";\n\nimport styles from \"./Button.module.css\";\n\ntype ButtonContextValue = {\n loading: boolean;\n};\n\nconst [ButtonProvider, useButtonContext] = createComponentContext<ButtonContextValue>(\"Button\");\n\nexport type ButtonRootProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\"> & {\n variant?: ButtonVariant;\n mode?: ButtonMode;\n size?: ButtonSize;\n fullWidth?: boolean;\n loading?: boolean;\n /**\n * Merges Button props onto its single child element instead of rendering `<button>`.\n * Use when the trigger must be a different element (e.g. `<a>`, React Router `<Link>`).\n *\n * - `disabled` / `loading` \u2192 `aria-disabled=\"true\"` + `pointer-events: none` (CSS);\n * native `disabled` attribute is NOT set (invalid on non-button elements).\n * - `type` is not forwarded (irrelevant for non-button elements).\n * - The child must accept `className`, `aria-*`, `data-*`, and event handler props.\n */\n asChild?: boolean;\n};\n\nconst ButtonRoot = React.forwardRef<HTMLButtonElement, ButtonRootProps>(\n (\n {\n children,\n className,\n variant = \"primary\",\n mode = \"filled\",\n size = \"m\",\n fullWidth,\n type = \"button\",\n loading = false,\n disabled,\n asChild = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n },\n ref,\n ) => {\n const isDisabled = disabled || loading;\n const contextValue = React.useMemo(() => ({ loading }), [loading]);\n\n const dataAttrs = toDataAttributes({ variant, mode, size, loading, \"full-width\": fullWidth });\n\n if (asChild) {\n const { onClick: userOnClick, ...restWithoutClick } = rest;\n return (\n <ButtonProvider value={contextValue}>\n <ControlSizeProvider value={size}>\n <Slot\n {...restWithoutClick}\n ref={ref as React.Ref<HTMLElement>}\n className={cx(styles.root, className)}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n onClick={\n isDisabled\n ? (e: React.MouseEvent) => {\n e.preventDefault();\n }\n : userOnClick\n }\n {...dataAttrs}\n >\n {children}\n </Slot>\n </ControlSizeProvider>\n </ButtonProvider>\n );\n }\n\n return (\n <ButtonProvider value={contextValue}>\n <button\n {...rest}\n ref={ref}\n type={type}\n className={cx(styles.root, className)}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n {...dataAttrs}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </button>\n </ButtonProvider>\n );\n },\n);\n\nButtonRoot.displayName = \"ButtonRoot\";\n\nexport type ButtonIconProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nfunction ButtonIcon({ children, className, ...rest }: ButtonIconProps) {\n return (\n <span className={cx(styles.icon, className)} aria-hidden=\"true\" {...rest}>\n {children}\n </span>\n );\n}\n\nButtonIcon.displayName = \"ButtonIcon\";\n\nexport type ButtonSpinnerProps = {\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction ButtonSpinner({ className, ...rest }: ButtonSpinnerProps) {\n const { loading } = useButtonContext();\n if (!loading) return null;\n return <span className={cx(styles.spinner, className)} aria-hidden=\"true\" {...rest} />;\n}\n\nButtonSpinner.displayName = \"ButtonSpinner\";\n\nexport const Button = { Root: ButtonRoot, Icon: ButtonIcon, Spinner: ButtonSpinner };\n", ".root {\n position: relative;\n border: var(--prime-sys-border-width-control) solid transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-size-control-m-gap);\n font-size: var(--prime-sys-size-control-m-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1;\n white-space: nowrap;\n box-sizing: border-box;\n text-decoration: none;\n cursor: pointer;\n transition:\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n transform var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n opacity var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.root[data-full-width=\"true\"] {\n width: 100%;\n}\n\n.root[data-size=\"m\"] {\n --prime-icon-size: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-height);\n /* \u041D\u0435 \u043D\u0438\u0436\u0435 \u0432\u044B\u0441\u043E\u0442\u044B (icon-only), \u043D\u043E \u043D\u0435 \u0441\u0443\u0436\u0430\u0442\u044C \u043D\u0438\u0436\u0435 \u0442\u0435\u043A\u0441\u0442\u0430 \u043F\u0440\u0438 flex-shrink. */\n min-width: max(var(--prime-sys-size-control-m-height), min-content);\n border-radius: var(--prime-sys-size-control-m-radius);\n gap: var(--prime-sys-size-control-m-gap);\n padding-inline: var(--prime-sys-size-control-m-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-m-buttonPaddingY);\n}\n\n.root[data-size=\"s\"] {\n --prime-icon-size: var(--prime-sys-size-control-s-icon);\n font-size: var(--prime-sys-size-control-s-text);\n height: var(--prime-sys-size-control-s-height);\n min-width: max(var(--prime-sys-size-control-s-height), min-content);\n border-radius: var(--prime-sys-size-control-s-radius);\n gap: var(--prime-sys-size-control-s-gap);\n padding-inline: var(--prime-sys-size-control-s-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-s-buttonPaddingY);\n}\n\n.root[data-size=\"l\"] {\n --prime-icon-size: var(--prime-sys-size-control-l-icon);\n font-size: var(--prime-sys-size-control-l-text);\n height: var(--prime-sys-size-control-l-height);\n min-width: max(var(--prime-sys-size-control-l-height), min-content);\n border-radius: var(--prime-sys-size-control-l-radius);\n gap: var(--prime-sys-size-control-l-gap);\n padding-inline: var(--prime-sys-size-control-l-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-l-buttonPaddingY);\n}\n\n.root[data-size=\"xl\"] {\n --prime-icon-size: var(--prime-sys-size-control-xl-icon);\n font-size: var(--prime-sys-size-control-xl-text);\n height: var(--prime-sys-size-control-xl-height);\n min-width: max(var(--prime-sys-size-control-xl-height), min-content);\n border-radius: var(--prime-sys-size-control-xl-radius);\n gap: var(--prime-sys-size-control-xl-gap);\n padding-inline: var(--prime-sys-size-control-xl-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-xl-buttonPaddingY);\n}\n\n/* \u041F\u043E\u0434\u043F\u0438\u0441\u044C \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043A\u0435\u0433\u043B\u044C \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430 \u043E\u0442 \u043A\u043E\u0440\u043D\u044F: \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0439 Typography \u0441 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u043C data-variant \u043D\u0435 \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 */\n.root[data-size]\n:is(\n p,\n span,\n div,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n small,\n blockquote,\n article,\n section,\n header,\n footer,\n aside,\n nav,\n main\n)[data-variant] {\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n}\n\n.root:focus-visible {\n outline: none;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"filled\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"filled\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"filled\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"stroke\"] {\n background: transparent;\n color: var(--prime-sys-color-action-primaryBackground);\n border-color: var(--prime-sys-color-action-primaryBackground);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"stroke\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-accentSoft);\n border-color: transparent;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"stroke\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"lighter\"] {\n background: var(--prime-sys-color-action-primarySoftBackground);\n color: var(--prime-sys-color-action-primarySoftForeground);\n border-color: transparent;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"lighter\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-raised);\n border-color: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"lighter\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"ghost\"] {\n background: transparent;\n color: var(--prime-sys-color-action-primaryBackground);\n border-color: transparent;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"ghost\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"ghost\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"filled\"] {\n background: var(--prime-sys-color-content-primary);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"filled\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-content-secondary);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"filled\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"stroke\"] {\n background: transparent;\n border-color: var(--prime-sys-color-border-strong);\n color: var(--prime-sys-color-action-neutralForeground);\n box-shadow: none;\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"stroke\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n box-shadow: none;\n border-color: transparent;\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"stroke\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n border-color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"lighter\"] {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-action-neutralForeground);\n border-color: transparent;\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"lighter\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-neutralBackground);\n color: var(--prime-sys-color-content-primary);\n border-color: var(--prime-sys-color-border-strong);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"lighter\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n border-color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"ghost\"] {\n background: transparent;\n color: var(--prime-sys-color-action-neutralForeground);\n border-color: transparent;\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"ghost\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"ghost\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n border-color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"error\"][data-mode=\"filled\"] {\n background: var(--prime-sys-color-action-errorBackground);\n color: var(--prime-sys-color-action-errorForeground);\n}\n\n.root[data-variant=\"error\"][data-mode=\"filled\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-errorBackgroundHover);\n}\n\n.root[data-variant=\"error\"][data-mode=\"filled\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.root[data-variant=\"error\"][data-mode=\"stroke\"] {\n background: transparent;\n color: var(--prime-sys-color-border-danger);\n border-color: var(--prime-sys-color-border-danger);\n}\n\n.root[data-variant=\"error\"][data-mode=\"stroke\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-dangerSoft);\n border-color: transparent;\n}\n\n.root[data-variant=\"error\"][data-mode=\"stroke\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.root[data-variant=\"error\"][data-mode=\"lighter\"] {\n background: var(--prime-sys-color-surface-dangerSoft);\n color: var(--prime-sys-color-border-danger);\n border-color: transparent;\n}\n\n.root[data-variant=\"error\"][data-mode=\"lighter\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-raised);\n border-color: var(--prime-sys-color-border-danger);\n}\n\n.root[data-variant=\"error\"][data-mode=\"lighter\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.root[data-variant=\"error\"][data-mode=\"ghost\"] {\n background: transparent;\n color: var(--prime-sys-color-border-danger);\n border-color: transparent;\n}\n\n.root[data-variant=\"error\"][data-mode=\"ghost\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-surface-dangerSoft);\n}\n\n.root[data-variant=\"error\"][data-mode=\"ghost\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--prime-icon-size);\n height: var(--prime-icon-size);\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.spinner {\n width: 1em;\n height: 1em;\n border: var(--prime-sys-unit-2px) solid currentColor;\n border-right-color: transparent;\n border-radius: var(--prime-sys-shape-radius-round);\n animation: spin 0.8s linear infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* AlignUI FancyButton: \u0442\u0435\u043D\u044C, \u0432\u0435\u0440\u0445\u043D\u0438\u0439 \u0431\u043B\u0438\u043A (::after), \u0433\u0440\u0430\u0434\u0438\u0435\u043D\u0442\u043D\u043E\u0435 \u043A\u043E\u043B\u044C\u0446\u043E (::before) */\n.root[data-mode=\"fancy\"] {\n border-color: transparent;\n isolation: isolate;\n}\n\n.root[data-mode=\"fancy\"] .icon,\n.root[data-mode=\"fancy\"] .spinner {\n position: relative;\n z-index: 2;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n box-shadow: var(--prime-sys-elevation-shadow-fancyButtonPrimary);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-primaryBackground);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-primaryFocus);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"] {\n background: var(--prime-sys-color-content-primary);\n color: var(--prime-sys-color-content-inverse);\n box-shadow: var(--prime-sys-elevation-shadow-fancyButtonNeutral);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-content-primary);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.root[data-variant=\"error\"][data-mode=\"fancy\"] {\n background: var(--prime-sys-color-action-errorBackground);\n color: var(--prime-sys-color-action-errorForeground);\n box-shadow: var(--prime-sys-elevation-shadow-fancyButtonError);\n}\n\n.root[data-variant=\"error\"][data-mode=\"fancy\"]:hover:not(:disabled) {\n background: var(--prime-sys-color-action-errorBackground);\n}\n\n.root[data-variant=\"error\"][data-mode=\"fancy\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"]::before,\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"]::before,\n.root[data-variant=\"error\"][data-mode=\"fancy\"]::before {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n padding: var(--prime-sys-unit-1px);\n pointer-events: none;\n background: linear-gradient(\n to bottom,\n color-mix(in srgb, var(--prime-sys-color-border-inverse) 12%, transparent),\n transparent\n );\n mask-image:\n linear-gradient(var(--prime-sys-color-border-inverse) 0 0),\n linear-gradient(var(--prime-sys-color-border-inverse) 0 0);\n mask-clip: content-box, border-box;\n mask-composite: exclude;\n mask-origin: border-box;\n -webkit-mask-image:\n linear-gradient(var(--prime-sys-color-border-inverse) 0 0),\n linear-gradient(var(--prime-sys-color-border-inverse) 0 0);\n -webkit-mask-clip: content-box, border-box;\n -webkit-mask-composite: xor;\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"]::after,\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"]::after,\n.root[data-variant=\"error\"][data-mode=\"fancy\"]::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 0;\n border-radius: inherit;\n pointer-events: none;\n background: linear-gradient(to bottom, var(--prime-sys-color-border-inverse), transparent);\n opacity: 0.16;\n transition: opacity var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.root[data-variant=\"primary\"][data-mode=\"fancy\"]:hover:not(:disabled)::after,\n.root[data-variant=\"neutral\"][data-mode=\"fancy\"]:hover:not(:disabled)::after,\n.root[data-variant=\"error\"][data-mode=\"fancy\"]:hover:not(:disabled)::after {\n opacity: 0.24;\n}\n\n.root:disabled[data-variant][data-mode]:not([data-loading=\"true\"]),\n.root[aria-disabled=\"true\"][data-variant][data-mode]:not([data-loading=\"true\"]) {\n background: var(--prime-sys-color-surface-raised);\n color: var(--prime-sys-color-content-disabled);\n border-color: var(--prime-sys-color-border-subtle);\n box-shadow: none;\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n/* asChild: non-button elements need pointer-events blocked at CSS level */\n.root[aria-disabled=\"true\"]:not([data-loading=\"true\"]) {\n pointer-events: none;\n}\n\n.root:disabled[data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"]),\n.root[aria-disabled=\"true\"][data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"]) {\n border-color: transparent;\n}\n\n.root:disabled[data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"])::before,\n.root:disabled[data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"])::after,\n.root[aria-disabled=\"true\"][data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"])::before,\n.root[aria-disabled=\"true\"][data-variant][data-mode=\"fancy\"]:not([data-loading=\"true\"])::after {\n display: none;\n}\n\n.root[data-loading=\"true\"][data-variant][data-mode] {\n opacity: 0.92;\n cursor: progress;\n}\n\n/* Active navigation link when Button.Root is used via asChild (e.g. NavLink sets aria-current). */\n.root[aria-current=\"page\"] {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.root[data-loading=\"true\"] .icon {\n display: none;\n}\n\n.root[data-loading=\"true\"] .spinner {\n order: -1;\n}\n\n/* \u041F\u0435\u0440\u0435\u0431\u0438\u0442\u044C min-width \u043F\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0443: \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F \u0432 \u0443\u0437\u043A\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 \u0431\u0435\u0437 \u0440\u0430\u0437\u0434\u0443\u0432\u0430 \u043F\u043E min-content. */\n.root[data-full-width=\"true\"] {\n min-width: 0;\n}\n", ".root {\n position: relative;\n box-sizing: border-box;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n width: 100%;\n border: var(--prime-sys-unit-1px) solid transparent;\n}\n\n.content {\n grid-column: 2;\n justify-self: center;\n display: inline-flex;\n max-width: min(100%, var(--prime-sys-unit-72rem));\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n}\n\n.icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.title {\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.25;\n}\n\n.description {\n line-height: 1.35;\n opacity: 0.92;\n}\n\n.actions {\n display: inline-flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n}\n\n.root[data-size=\"s\"] {\n column-gap: var(--prime-sys-size-control-s-gap);\n min-height: var(--prime-sys-size-control-s-height);\n padding-block: var(--prime-sys-spacing-x2);\n padding-inline: var(--prime-sys-size-control-s-inputPaddingX);\n border-radius: var(--prime-sys-size-control-s-radius);\n}\n\n.root[data-size=\"s\"] .content {\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"s\"] .icon {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.root[data-size=\"s\"] .title {\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"s\"] .description {\n font-size: var(--prime-sys-size-control-s-supportText);\n}\n\n.root[data-size=\"s\"] .actions {\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"m\"] {\n column-gap: var(--prime-sys-size-control-m-gap);\n min-height: var(--prime-sys-size-control-m-height);\n padding-block: var(--prime-sys-spacing-x2);\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n border-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.root[data-size=\"m\"] .content {\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n.root[data-size=\"m\"] .icon {\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.root[data-size=\"m\"] .title {\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"m\"] .description {\n font-size: var(--prime-sys-size-control-m-supportText);\n}\n\n.root[data-size=\"m\"] .actions {\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n.root[data-size=\"l\"] {\n column-gap: var(--prime-sys-size-control-l-gap);\n min-height: var(--prime-sys-size-control-l-height);\n padding-block: var(--prime-sys-spacing-x3);\n padding-inline: var(--prime-sys-size-control-l-inputPaddingX);\n border-radius: var(--prime-sys-size-control-l-radius);\n}\n\n.root[data-size=\"l\"] .content {\n gap: var(--prime-sys-size-control-l-gap);\n}\n\n.root[data-size=\"l\"] .icon {\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n}\n\n.root[data-size=\"l\"] .title {\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"l\"] .description {\n font-size: var(--prime-sys-size-control-l-supportText);\n}\n\n.root[data-size=\"l\"] .actions {\n gap: var(--prime-sys-size-control-l-gap);\n}\n\n.root[data-size=\"xl\"] {\n column-gap: var(--prime-sys-size-control-xl-gap);\n min-height: var(--prime-sys-size-control-xl-height);\n padding-block: var(--prime-sys-spacing-x4);\n padding-inline: var(--prime-sys-size-control-xl-inputPaddingX);\n border-radius: var(--prime-sys-size-control-xl-radius);\n}\n\n.root[data-size=\"xl\"] .content {\n gap: var(--prime-sys-size-control-xl-gap);\n}\n\n.root[data-size=\"xl\"] .icon {\n width: var(--prime-sys-size-control-xl-icon);\n height: var(--prime-sys-size-control-xl-icon);\n}\n\n.root[data-size=\"xl\"] .title {\n font-size: var(--prime-sys-size-control-xl-text);\n}\n\n.root[data-size=\"xl\"] .description {\n font-size: var(--prime-sys-size-control-xl-supportText);\n}\n\n.root[data-size=\"xl\"] .actions {\n gap: var(--prime-sys-size-control-xl-gap);\n}\n\n.closeButton {\n grid-column: 3;\n justify-self: end;\n flex-shrink: 0;\n margin: 0;\n color: inherit;\n transition: opacity var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.root[data-variant=\"light\"]\n .closeButton[data-variant=\"neutral\"][data-mode=\"ghost\"]:hover:not(:disabled),\n.root[data-variant=\"lighter\"]\n .closeButton[data-variant=\"neutral\"][data-mode=\"ghost\"]:hover:not(:disabled),\n.root[data-variant=\"stroke\"]\n .closeButton[data-variant=\"neutral\"][data-mode=\"ghost\"]:hover:not(:disabled) {\n color: inherit;\n}\n\n.closeButton:disabled {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\n.root[data-variant=\"filled\"]\n .closeButton[data-variant=\"neutral\"][data-mode=\"ghost\"]:hover:not(:disabled) {\n background: transparent;\n color: inherit;\n}\n\n.root[data-variant=\"filled\"] .closeButton[data-variant=\"neutral\"][data-mode=\"ghost\"]:focus-visible {\n box-shadow: 0 0 0 var(--prime-sys-border-width-focusRing) var(--prime-sys-color-focus-ring);\n border-color: transparent;\n}\n\n.root[data-variant=\"filled\"] .closeButton {\n opacity: 0.72;\n}\n\n.root[data-variant=\"light\"] .closeButton,\n.root[data-variant=\"lighter\"] .closeButton,\n.root[data-variant=\"stroke\"] .closeButton {\n opacity: 0.48;\n}\n\n.root[data-variant=\"light\"] .closeButton:hover:not(:disabled),\n.root[data-variant=\"lighter\"] .closeButton:hover:not(:disabled),\n.root[data-variant=\"stroke\"] .closeButton:hover:not(:disabled) {\n opacity: 0.72;\n}\n\n.root[data-variant=\"filled\"] .closeButton:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n/* --- Filled --- */\n.root[data-variant=\"filled\"][data-status=\"error\"] {\n background: var(--prime-sys-color-status-error-backgroundEmphasis);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"filled\"][data-status=\"warning\"] {\n background: var(--prime-sys-color-status-warning-backgroundEmphasis);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"filled\"][data-status=\"success\"] {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"filled\"][data-status=\"information\"] {\n background: var(--prime-sys-color-status-information-backgroundEmphasis);\n color: var(--prime-sys-color-content-inverse);\n}\n\n.root[data-variant=\"filled\"][data-status=\"feature\"] {\n background: var(--prime-sys-color-status-feature-backgroundEmphasis);\n color: var(--prime-sys-color-content-inverse);\n}\n\n/* --- Light --- */\n.root[data-variant=\"light\"][data-status=\"error\"] {\n background: var(--prime-sys-color-status-error-background);\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.root[data-variant=\"light\"][data-status=\"warning\"] {\n background: var(--prime-sys-color-status-warning-background);\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n.root[data-variant=\"light\"][data-status=\"success\"] {\n background: var(--prime-sys-color-status-success-background);\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.root[data-variant=\"light\"][data-status=\"information\"] {\n background: var(--prime-sys-color-status-information-background);\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.root[data-variant=\"light\"][data-status=\"feature\"] {\n background: var(--prime-sys-color-status-feature-background);\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n/* --- Lighter --- */\n.root[data-variant=\"lighter\"][data-status=\"error\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-status-error-background) 58%,\n var(--prime-sys-color-surface-default)\n );\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.root[data-variant=\"lighter\"][data-status=\"warning\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-status-warning-background) 58%,\n var(--prime-sys-color-surface-default)\n );\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n.root[data-variant=\"lighter\"][data-status=\"success\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-status-success-background) 58%,\n var(--prime-sys-color-surface-default)\n );\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.root[data-variant=\"lighter\"][data-status=\"information\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-status-information-background) 58%,\n var(--prime-sys-color-surface-default)\n );\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.root[data-variant=\"lighter\"][data-status=\"feature\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-status-feature-background) 58%,\n var(--prime-sys-color-surface-default)\n );\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n/* --- Stroke: \u043D\u0438\u0436\u043D\u044F\u044F \u0430\u043A\u0446\u0435\u043D\u0442\u043D\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0443 --- */\n.root[data-variant=\"stroke\"] {\n background: var(--prime-sys-color-surface-raised);\n color: var(--prime-sys-color-content-primary);\n}\n\n.root[data-variant=\"stroke\"]::after {\n content: \"\";\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: var(--prime-sys-unit-1px);\n pointer-events: none;\n}\n\n.root[data-variant=\"stroke\"][data-status=\"error\"] .icon {\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"error\"]::after {\n background: var(--prime-sys-color-status-error-border);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"warning\"] .icon {\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"warning\"]::after {\n background: var(--prime-sys-color-status-warning-border);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"success\"] .icon {\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"success\"]::after {\n background: var(--prime-sys-color-status-success-border);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"information\"] .icon {\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"information\"]::after {\n background: var(--prime-sys-color-status-information-border);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"feature\"] .icon {\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n.root[data-variant=\"stroke\"][data-status=\"feature\"]::after {\n background: var(--prime-sys-color-status-feature-border);\n}\n", "import * as React from \"react\";\n\nimport { Icon } from \"@/icons\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { BreadcrumbSize } from \"@/internal/states\";\n\nimport { LinkButton } from \"../link-button/LinkButton\";\n\nimport styles from \"./Breadcrumb.module.css\";\n\nexport type { BreadcrumbSize };\n\nconst BreadcrumbSizeContext = React.createContext<BreadcrumbSize>(\"m\");\nBreadcrumbSizeContext.displayName = \"BreadcrumbSizeContext\";\n\nfunction useBreadcrumbSize(): BreadcrumbSize {\n return React.useContext(BreadcrumbSizeContext);\n}\n\nexport type BreadcrumbRootProps = {\n children: React.ReactNode;\n className?: string;\n /** \u041A\u0435\u0433\u043B\u044C \u0441\u0441\u044B\u043B\u043E\u043A (LinkButton), \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B, \u043C\u043D\u043E\u0433\u043E\u0442\u043E\u0447\u0438\u044F; \u0438\u043A\u043E\u043D\u043A\u0430-\u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0438 \u0438\u043A\u043E\u043D\u043A\u0430 \u00AB\u0434\u043E\u043C\u00BB \u2014 \u0442\u043E\u0442 \u0436\u0435 \u044F\u0440\u0443\u0441. */\n size?: BreadcrumbSize;\n} & React.HTMLAttributes<HTMLElement>;\n\nfunction BreadcrumbRoot({ children, className, size = \"m\", ...rest }: BreadcrumbRootProps) {\n return (\n <BreadcrumbSizeContext.Provider value={size}>\n <ControlSizeProvider value={size}>\n <nav\n aria-label=\"Breadcrumb\"\n className={cx(styles.root, className)}\n {...toDataAttributes({ size })}\n {...rest}\n >\n <ol>{children}</ol>\n </nav>\n </ControlSizeProvider>\n </BreadcrumbSizeContext.Provider>\n );\n}\nBreadcrumbRoot.displayName = \"Breadcrumb.Root\";\n\nexport type BreadcrumbItemProps = {\n href?: string;\n current?: boolean;\n children?: React.ReactNode;\n className?: string;\n /** \u0414\u043B\u044F \u0441\u0441\u044B\u043B\u043A\u0438 \u0431\u0435\u0437 \u0432\u0438\u0434\u0438\u043C\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u043A\u043E\u043D\u043A\u0430 \u00AB\u0434\u043E\u043C\u00BB). */\n \"aria-label\"?: string;\n};\n\nfunction BreadcrumbItem({\n href,\n current,\n children,\n className,\n \"aria-label\": ariaLabel,\n}: BreadcrumbItemProps) {\n const size = useBreadcrumbSize();\n return (\n <li className={cx(styles.item, className)}>\n {href ? (\n <LinkButton.Root\n href={href}\n size={size}\n className={styles.breadcrumbLink}\n aria-label={ariaLabel}\n >\n {children}\n </LinkButton.Root>\n ) : (\n <span\n className={current ? styles.itemCurrent : undefined}\n aria-current={current ? \"page\" : undefined}\n >\n {children}\n </span>\n )}\n </li>\n );\n}\nBreadcrumbItem.displayName = \"Breadcrumb.Item\";\n\nexport type BreadcrumbSeparatorProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nfunction BreadcrumbSeparator({ children, className }: BreadcrumbSeparatorProps) {\n const size = useBreadcrumbSize();\n return (\n <li aria-hidden=\"true\" className={cx(styles.separator, className)}>\n {children ?? <Icon name=\"nav.chevronRight\" size={size} tone=\"subtle\" />}\n </li>\n );\n}\nBreadcrumbSeparator.displayName = \"Breadcrumb.Separator\";\n\nexport type BreadcrumbEllipsisProps = {\n className?: string;\n};\n\nfunction BreadcrumbEllipsis({ className }: BreadcrumbEllipsisProps) {\n return <li className={cx(styles.ellipsis, className)}>\u2026</li>;\n}\nBreadcrumbEllipsis.displayName = \"Breadcrumb.Ellipsis\";\n\nexport const Breadcrumb = {\n Root: BreadcrumbRoot,\n Item: BreadcrumbItem,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n};\n", "import {\n Check,\n ChevronRight,\n Circle,\n CircleDot,\n CloudUpload,\n Copy,\n Download,\n Eye,\n EyeOff,\n House,\n LayoutGrid,\n Lock,\n Mail,\n Moon,\n Sun,\n X,\n} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport type { BaseIconProps } from \"./Icon\";\nimport { createIcon } from \"./Icon\";\n\nexport const IconCheck = createIcon(Check);\nexport const IconChevronRight = createIcon(ChevronRight);\nexport const IconCircleDot = createIcon(CircleDot);\nexport const IconNavItemDot = createIcon(Circle);\nexport const IconClose = createIcon(X);\nexport const IconCloudUpload = createIcon(CloudUpload);\nexport const IconCopy = createIcon(Copy);\nexport const IconDownload = createIcon(Download);\nexport const IconMail = createIcon(Mail);\nexport const IconEye = createIcon(Eye);\nexport const IconEyeOff = createIcon(EyeOff);\nexport const IconHouse = createIcon(House);\nexport const IconLayoutGrid = createIcon(LayoutGrid);\nexport const IconLock = createIcon(Lock);\nexport const IconMoon = createIcon(Moon);\nexport const IconSun = createIcon(Sun);\n\nexport const iconRegistry = {\n \"nav.chevronRight\": IconChevronRight,\n \"nav.home\": IconHouse,\n \"nav.itemDot\": IconNavItemDot,\n \"nav.layoutGrid\": IconLayoutGrid,\n \"action.close\": IconClose,\n \"action.copy\": IconCopy,\n \"action.upload\": IconCloudUpload,\n \"field.email\": IconMail,\n \"field.password.show\": IconEye,\n \"field.password.hide\": IconEyeOff,\n \"status.locked\": IconLock,\n \"theme.dark\": IconMoon,\n \"theme.light\": IconSun,\n} as const;\n\nexport type IconName = keyof typeof iconRegistry;\n\nexport type NamedIconProps = BaseIconProps & {\n name: IconName;\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, NamedIconProps>(({ name, ...rest }, ref) => {\n const IconGlyph = iconRegistry[name];\n return React.createElement(IconGlyph, { ref, ...rest });\n});\n\nIcon.displayName = \"Icon\";\n\nexport type { BaseIconProps, IconSize, IconTone } from \"./Icon\";\n", "import type { LucideProps } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { useOptionalControlSize } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { DividerContentContext } from \"@/internal/DividerContentContext\";\n\nimport styles from \"./Icon.module.css\";\n\ntype IconTone = \"default\" | \"subtle\" | \"accent\" | \"danger\";\ntype IconSize = \"s\" | \"m\" | \"l\" | \"xl\";\ntype IconResolvedSize = \"xs\" | IconSize;\n\nconst SIZE_CLASS: Record<IconResolvedSize, string> = {\n xs: styles.sizeXs,\n s: styles.sizeS,\n m: styles.sizeM,\n l: styles.sizeL,\n xl: styles.sizeXl,\n};\n\ntype BaseIconProps = Omit<LucideProps, \"size\" | \"color\"> & {\n size?: IconSize;\n tone?: IconTone;\n};\n\ntype IconComponent = React.ComponentType<LucideProps>;\n\nfunction createIcon(IconGlyph: IconComponent) {\n const WrappedIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n ({ className, size: sizeProp, tone = \"default\", strokeWidth = 1.9, style, ...rest }, ref) => {\n const controlSize = useOptionalControlSize();\n const insideDividerContent = React.useContext(DividerContentContext);\n const resolvedSize = (sizeProp ?? controlSize ?? \"m\") as IconResolvedSize;\n const sizeClass = insideDividerContent ? undefined : SIZE_CLASS[resolvedSize];\n\n const toneClassName =\n tone === \"default\"\n ? styles.toneDefault\n : tone === \"subtle\"\n ? styles.toneSubtle\n : tone === \"accent\"\n ? styles.toneAccent\n : styles.toneDanger;\n\n return (\n <IconGlyph\n ref={ref}\n className={cx(styles.root, sizeClass, toneClassName, className)}\n style={style}\n strokeWidth={strokeWidth}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n },\n );\n\n WrappedIcon.displayName = `EsIcon(${IconGlyph.displayName ?? \"Glyph\"})`;\n return WrappedIcon;\n}\n\nexport type { BaseIconProps, IconSize, IconTone };\nexport { createIcon };\n", ".root {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n}\n\n/* \u0420\u0430\u0437\u043C\u0435\u0440\u044B = size.control.*.icon \u0438\u0437 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 (theme-light/dark.css). */\n.sizeXs {\n width: var(--prime-sys-size-control-xs-icon);\n height: var(--prime-sys-size-control-xs-icon);\n}\n\n.sizeS {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.sizeM {\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.sizeL {\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n}\n\n.sizeXl {\n width: var(--prime-sys-size-control-xl-icon);\n height: var(--prime-sys-size-control-xl-icon);\n}\n\n.toneDefault {\n color: currentColor;\n}\n\n.toneSubtle {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.toneAccent {\n color: var(--prime-sys-color-content-accent);\n}\n\n.toneDanger {\n color: var(--prime-sys-color-content-danger);\n}\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { LinkButtonSize } from \"@/internal/states\";\n\nimport styles from \"./LinkButton.module.css\";\n\nexport type { LinkButtonSize };\n\nexport type LinkButtonRootProps = {\n size?: LinkButtonSize;\n disabled?: boolean;\n children?: React.ReactNode;\n className?: string;\n} & React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst LinkButtonRoot = React.forwardRef<HTMLAnchorElement, LinkButtonRootProps>(\n (\n {\n size = \"m\",\n disabled = false,\n children,\n className,\n tabIndex,\n \"aria-disabled\": ariaDisabled,\n ...rest\n },\n ref,\n ) => {\n const cls = cx(styles.root, className);\n const dataProps = toDataAttributes({\n size,\n ...(disabled ? { disabled: true } : {}),\n });\n\n if (disabled) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: disabled state is not a navigable <a>; span keeps cursor + a11y without href\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n role=\"link\"\n aria-disabled=\"true\"\n tabIndex={-1}\n className={cls}\n {...dataProps}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </span>\n );\n }\n\n return (\n <a\n {...rest}\n ref={ref}\n className={cls}\n aria-disabled={ariaDisabled}\n tabIndex={tabIndex}\n {...dataProps}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </a>\n );\n },\n);\n\nLinkButtonRoot.displayName = \"LinkButton.Root\";\n\nexport const LinkButton = {\n Root: LinkButtonRoot,\n};\n", ".root {\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-size-control-m-gap);\n font-size: var(--prime-sys-size-control-m-text);\n color: var(--prime-sys-color-content-primary);\n text-decoration-line: underline;\n text-decoration-color: transparent;\n text-underline-offset: var(--prime-sys-unit-2px);\n transition:\n color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n text-decoration-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n cursor: pointer;\n}\n\n.root:hover {\n color: var(--prime-sys-color-content-accent);\n text-decoration-color: currentColor;\n}\n\n.root:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n text-decoration-color: currentColor;\n}\n\n.root[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n text-decoration: none;\n}\n\n.root[data-size=\"s\"] {\n gap: var(--prime-sys-size-control-s-gap);\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"l\"] {\n gap: var(--prime-sys-size-control-l-gap);\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] {\n gap: var(--prime-sys-size-control-xl-gap);\n font-size: var(--prime-sys-size-control-xl-text);\n}\n", ".root {\n --bc-text: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"s\"] {\n --bc-text: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"l\"] {\n --bc-text: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] {\n --bc-text: var(--prime-sys-size-control-xl-text);\n}\n\n.root ol {\n display: flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n list-style: none;\n padding: 0;\n margin: 0;\n flex-wrap: wrap;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n}\n\n/* \u041F\u0435\u0440\u0432\u044B\u0439 \u043F\u0443\u043D\u043A\u0442 \u00AB\u0442\u043E\u043B\u044C\u043A\u043E \u0438\u043A\u043E\u043D\u043A\u0430\u00BB (\u0434\u043E\u043C): \u0432\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435, \u0431\u0435\u0437 \u043B\u0438\u0448\u043D\u0435\u0439 \u0432\u044B\u0441\u043E\u0442\u044B \u0441\u0442\u0440\u043E\u043A\u0438. */\n.itemHome .breadcrumbLink {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n\n/* \u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0435 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u044B: \u043F\u0440\u0438\u0433\u043B\u0443\u0448\u0451\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442; hover \u0447\u0443\u0442\u044C \u0441\u0438\u043B\u044C\u043D\u0435\u0435, \u0431\u0435\u0437 \u00AB\u0430\u043A\u0446\u0435\u043D\u0442\u043D\u043E\u0433\u043E\u00BB \u0446\u0432\u0435\u0442\u0430 \u0441\u0441\u044B\u043B\u043A\u0438.\n \u041A\u0435\u0433\u043B\u044C \u0437\u0430\u0434\u0430\u0451\u0442 LinkButton \u043F\u043E `size` \u0443 Root. */\n.item a.breadcrumbLink {\n color: var(--prime-sys-color-content-muted);\n}\n\n.item a.breadcrumbLink:hover {\n color: var(--prime-sys-color-content-primary);\n text-decoration-color: transparent;\n}\n\n.item a.breadcrumbLink:focus-visible {\n color: var(--prime-sys-color-content-primary);\n text-decoration-color: transparent;\n}\n\n/* \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430: \u0442\u043E\u0442 \u0436\u0435 \u043A\u0435\u0433\u043B\u044C, \u0447\u0442\u043E \u0438 \u0441\u0441\u044B\u043B\u043A\u0438 \u043F\u0440\u0438 \u0434\u0430\u043D\u043D\u043E\u043C `size`. */\n.itemCurrent {\n color: var(--prime-sys-color-content-primary);\n font-size: var(--bc-text);\n}\n\n.separator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--prime-sys-color-content-muted);\n user-select: none;\n}\n\n.ellipsis {\n color: var(--prime-sys-color-content-muted);\n font-size: var(--bc-text);\n}\n", "import * as React from \"react\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport type { ButtonGroupSize } from \"@/internal/states\";\n\nimport styles from \"./ButtonGroup.module.css\";\n\nexport type ButtonGroupOrientation = \"horizontal\" | \"vertical\";\n\ntype ButtonGroupContextValue = {\n size: ButtonGroupSize;\n};\n\nconst [ButtonGroupProvider, useButtonGroupContext] =\n createComponentContext<ButtonGroupContextValue>(\"ButtonGroup\");\n\nexport type ButtonGroupRootProps = React.HTMLAttributes<HTMLDivElement> & {\n orientation?: ButtonGroupOrientation;\n size?: ButtonGroupSize;\n children: React.ReactNode;\n};\n\nconst ButtonGroupRoot = React.forwardRef<HTMLDivElement, ButtonGroupRootProps>(\n ({ orientation = \"horizontal\", size = \"m\", children, className, ...rest }, ref) => {\n const value = React.useMemo(() => ({ size }), [size]);\n\n return (\n <ButtonGroupProvider value={value}>\n <div\n ref={ref}\n className={cx(styles.root, className)}\n data-orientation={orientation === \"vertical\" ? \"vertical\" : undefined}\n data-size={size}\n {...rest}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n </ButtonGroupProvider>\n );\n },\n);\n\nButtonGroupRoot.displayName = \"ButtonGroupRoot\";\n\nexport type ButtonGroupItemProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** \u0412\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430: `data-state=\"on\"` \u0438 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439 `aria-pressed`. */\n pressed?: boolean;\n};\n\nconst ButtonGroupItem = React.forwardRef<HTMLButtonElement, ButtonGroupItemProps>(\n ({ className, pressed, type = \"button\", ...rest }, ref) => {\n useButtonGroupContext();\n\n return (\n <button\n ref={ref}\n type={type}\n className={cx(styles.item, className)}\n data-state={pressed === true ? \"on\" : undefined}\n aria-pressed={typeof pressed === \"boolean\" ? pressed : undefined}\n {...rest}\n />\n );\n },\n);\n\nButtonGroupItem.displayName = \"ButtonGroupItem\";\n\nexport type ButtonGroupIconProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nfunction ButtonGroupIcon({ children, className, ...rest }: ButtonGroupIconProps) {\n useButtonGroupContext();\n\n return (\n <span className={cx(styles.icon, className)} aria-hidden=\"true\" {...rest}>\n {children}\n </span>\n );\n}\n\nButtonGroupIcon.displayName = \"ButtonGroupIcon\";\n\nexport type { ButtonGroupSize };\n\nexport const ButtonGroup = { Root: ButtonGroupRoot, Item: ButtonGroupItem, Icon: ButtonGroupIcon };\n", "/* \u0421\u0435\u0433\u043C\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0433\u0440\u0443\u043F\u043F\u0430: \u043E\u0431\u0449\u0430\u044F \u043E\u0431\u0432\u043E\u0434\u043A\u0430, \u0441\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043D\u0430\u0440\u0443\u0436\u0438, \u0441\u0442\u044B\u043A\u043E\u0432\u043A\u0430 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u043E\u0432 \u0447\u0435\u0440\u0435\u0437 var(--prime-sys-unit-neg-1px) */\n\n.root {\n --prime-bg-group-radius: var(--prime-sys-size-control-m-radius);\n --prime-bg-item-height: var(--prime-sys-size-control-m-height);\n /* \u0427\u0443\u0442\u044C \u0448\u0438\u0440\u0435, \u0447\u0435\u043C \u0443 Button: \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u044B \u0441 \u0438\u043A\u043E\u043D\u043A\u043E\u0439+\u0442\u0435\u043A\u0441\u0442\u043E\u043C \u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u043B\u0443\u0447\u0448\u0435 */\n --prime-bg-item-pad-x: var(--prime-sys-spacing-x4);\n --prime-bg-item-font: var(--prime-sys-size-control-m-text);\n --prime-bg-item-icon: var(--prime-sys-size-control-m-icon);\n\n display: inline-flex;\n vertical-align: middle;\n}\n\n.root[data-size=\"s\"] {\n --prime-bg-group-radius: var(--prime-sys-size-control-s-radius);\n --prime-bg-item-height: var(--prime-sys-size-control-s-height);\n --prime-bg-item-pad-x: var(--prime-sys-spacing-x3);\n --prime-bg-item-font: var(--prime-sys-size-control-s-text);\n --prime-bg-item-icon: var(--prime-sys-size-control-s-icon);\n}\n\n.root[data-size=\"l\"] {\n --prime-bg-group-radius: var(--prime-sys-size-control-l-radius);\n --prime-bg-item-height: var(--prime-sys-size-control-l-height);\n --prime-bg-item-pad-x: var(--prime-sys-spacing-x5);\n --prime-bg-item-font: var(--prime-sys-size-control-l-text);\n --prime-bg-item-icon: var(--prime-sys-size-control-l-icon);\n}\n\n.root[data-size=\"xl\"] {\n --prime-bg-group-radius: var(--prime-sys-size-control-xl-radius);\n --prime-bg-item-height: var(--prime-sys-size-control-xl-height);\n --prime-bg-item-pad-x: var(--prime-sys-spacing-x6);\n --prime-bg-item-font: var(--prime-sys-size-control-xl-text);\n --prime-bg-item-icon: var(--prime-sys-size-control-xl-icon);\n}\n\n.root[data-orientation=\"vertical\"] {\n flex-direction: column;\n align-items: stretch;\n}\n\n.item {\n position: relative;\n z-index: 0;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--prime-bg-item-pad-x);\n height: var(--prime-bg-item-height);\n padding-block: 0;\n padding-inline: var(--prime-bg-item-pad-x);\n margin: 0;\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-elevated);\n color: var(--prime-sys-color-content-secondary);\n font-family: inherit;\n font-size: var(--prime-bg-item-font);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n transition:\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.item:hover:not(:disabled) {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n}\n\n.item:focus {\n outline: none;\n}\n\n.item:focus-visible {\n z-index: 1;\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.item[data-state=\"on\"] {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n color: var(--prime-sys-color-content-primary);\n}\n\n.item:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n color: var(--prime-sys-color-content-disabled);\n}\n\n.item:disabled:hover {\n background: var(--prime-sys-color-surface-elevated);\n}\n\n/* Horizontal: \u0441\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F \u0441\u043B\u0435\u0432\u0430 / \u0441\u043F\u0440\u0430\u0432\u0430 \u0443 \u043A\u0440\u0430\u0451\u0432 \u0433\u0440\u0443\u043F\u043F\u044B */\n.root:not([data-orientation=\"vertical\"]) > .item:first-child {\n border-start-start-radius: var(--prime-bg-group-radius);\n border-end-start-radius: var(--prime-bg-group-radius);\n}\n\n.root:not([data-orientation=\"vertical\"]) > .item:last-child {\n border-start-end-radius: var(--prime-bg-group-radius);\n border-end-end-radius: var(--prime-bg-group-radius);\n}\n\n.root:not([data-orientation=\"vertical\"]) > .item + .item {\n margin-inline-start: var(--prime-sys-unit-neg-1px);\n}\n\n/* Vertical */\n.root[data-orientation=\"vertical\"] > .item:first-child {\n border-start-start-radius: var(--prime-bg-group-radius);\n border-start-end-radius: var(--prime-bg-group-radius);\n}\n\n.root[data-orientation=\"vertical\"] > .item:last-child {\n border-end-start-radius: var(--prime-bg-group-radius);\n border-end-end-radius: var(--prime-bg-group-radius);\n}\n\n.root[data-orientation=\"vertical\"] > .item + .item {\n margin-top: var(--prime-sys-unit-neg-1px);\n}\n\n.icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--prime-bg-item-icon);\n height: var(--prime-bg-item-icon);\n margin-inline: var(--prime-sys-unit-neg-0p25rem);\n}\n\n.icon > svg {\n width: 100%;\n height: 100%;\n}\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./Card.module.css\";\n\n/** \u041A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0434\u0430\u0448\u0431\u043E\u0440\u0434\u0430: KPI, \u0441\u043F\u0438\u0441\u043A\u0438, CTA, split, cover \u0438 \u0441\u0435\u043A\u0446\u0438\u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u043A\u0430\u043C\u0438. */\nexport type CardVariant =\n | \"mini\"\n | \"mini-media\"\n | \"metric\"\n | \"panel\"\n | \"stat-trend\"\n | \"cta\"\n | \"list\"\n | \"split\"\n | \"cover\";\n\nexport type CardRootProps = {\n variant: CardVariant;\n /**\n * \u0411\u0435\u0437 \u043B\u0451\u0433\u043A\u043E\u0439 \u0442\u0435\u043D\u0438 (\u043F\u043B\u043E\u0441\u043A\u0430\u044F \u043F\u043B\u0438\u0442\u043A\u0430 \u043D\u0430 \u0444\u043E\u043D\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B).\n * \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u0442\u0435\u043D\u044C \u043F\u043E\u0432\u0435\u0440\u0445\u043D\u043E\u0441\u0442\u0438 \u0434\u043B\u044F \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043E\u0442 \u0444\u043E\u043D\u0430.\n */\n flat?: boolean;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst CardRoot = React.forwardRef<HTMLDivElement, CardRootProps>(function CardRoot(\n { variant, flat = false, className, children, ...rest },\n forwardedRef,\n) {\n return (\n <div\n ref={forwardedRef}\n {...rest}\n className={cx(styles.root, className)}\n {...toDataAttributes({ variant, flat })}\n >\n {children}\n </div>\n );\n});\nCardRoot.displayName = \"CardRoot\";\n\nexport type CardIconBoxProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardIconBox({ className, children, ...rest }: CardIconBoxProps) {\n return (\n <div className={cx(styles.iconBox, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardIconBox.displayName = \"CardIconBox\";\n\nexport type CardLeadProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardLead({ className, children, ...rest }: CardLeadProps) {\n return (\n <div className={cx(styles.lead, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardLead.displayName = \"CardLead\";\n\nexport type CardHeaderRowProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardHeaderRow({ className, children, ...rest }: CardHeaderRowProps) {\n return (\n <div className={cx(styles.headerRow, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardHeaderRow.displayName = \"CardHeaderRow\";\n\nexport type CardStackProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardStack({ className, children, ...rest }: CardStackProps) {\n return (\n <div className={cx(styles.stack, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardStack.displayName = \"CardStack\";\n\nexport type CardLabelProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction CardLabel({ className, children, ...rest }: CardLabelProps) {\n return (\n <span className={cx(styles.label, className)} {...rest}>\n {children}\n </span>\n );\n}\nCardLabel.displayName = \"CardLabel\";\n\nexport type CardValueProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction CardValue({ className, children, ...rest }: CardValueProps) {\n return (\n <span className={cx(styles.value, className)} {...rest}>\n {children}\n </span>\n );\n}\nCardValue.displayName = \"CardValue\";\n\nexport type CardDescriptionProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLParagraphElement>;\n\nfunction CardDescription({ className, children, ...rest }: CardDescriptionProps) {\n return (\n <p className={cx(styles.description, className)} {...rest}>\n {children}\n </p>\n );\n}\nCardDescription.displayName = \"CardDescription\";\n\nexport type CardMediaProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardMedia({ className, children, ...rest }: CardMediaProps) {\n return (\n <div className={cx(styles.media, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardMedia.displayName = \"CardMedia\";\n\nexport type CardTitleProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLHeadingElement>;\n\nfunction CardTitle({ className, children, ...rest }: CardTitleProps) {\n return (\n <h3 className={cx(styles.title, className)} {...rest}>\n {children}\n </h3>\n );\n}\nCardTitle.displayName = \"CardTitle\";\n\nexport type CardDeltaProps = {\n /** \u041F\u043E\u0434\u043A\u0440\u0430\u0441\u043A\u0430 \u0442\u0440\u0435\u043D\u0434\u0430: \u0440\u043E\u0441\u0442 / \u043F\u0430\u0434\u0435\u043D\u0438\u0435 / \u043D\u0435\u0439\u0442\u0440\u0430\u043B\u044C\u043D\u043E. */\n trend?: \"up\" | \"down\" | \"neutral\";\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction CardDelta({ className, trend, children, ...rest }: CardDeltaProps) {\n return (\n <span\n className={cx(styles.delta, className)}\n {...(trend != null ? { \"data-trend\": trend } : {})}\n {...rest}\n >\n {children}\n </span>\n );\n}\nCardDelta.displayName = \"CardDelta\";\n\nexport type CardActionsProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardActions({ className, children, ...rest }: CardActionsProps) {\n return (\n <div className={cx(styles.actions, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardActions.displayName = \"CardActions\";\n\nexport type CardCtaBodyProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardCtaBody({ className, children, ...rest }: CardCtaBodyProps) {\n return (\n <div className={cx(styles.ctaBody, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardCtaBody.displayName = \"CardCtaBody\";\n\nexport type CardCoverProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardCover({ className, children, ...rest }: CardCoverProps) {\n return (\n <div className={cx(styles.cover, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardCover.displayName = \"CardCover\";\n\nexport type CardSplitProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardSplit({ className, children, ...rest }: CardSplitProps) {\n return (\n <div className={cx(styles.split, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardSplit.displayName = \"CardSplit\";\n\nexport type CardSplitCellProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardSplitCell({ className, children, ...rest }: CardSplitCellProps) {\n return (\n <div className={cx(styles.splitCell, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardSplitCell.displayName = \"CardSplitCell\";\n\nexport type CardListHeaderProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardListHeader({ className, children, ...rest }: CardListHeaderProps) {\n return (\n <div className={cx(styles.listHeader, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardListHeader.displayName = \"CardListHeader\";\n\nexport type CardListProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLUListElement>;\n\nconst CardList = React.forwardRef<HTMLUListElement, CardListProps>(function CardList(\n { className, children, ...rest },\n forwardedRef,\n) {\n return (\n <ul ref={forwardedRef} className={cx(styles.list, className)} {...rest}>\n {children}\n </ul>\n );\n});\nCardList.displayName = \"CardList\";\n\nexport type CardListItemProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLLIElement>;\n\nconst CardListItem = React.forwardRef<HTMLLIElement, CardListItemProps>(function CardListItem(\n { className, children, ...rest },\n forwardedRef,\n) {\n return (\n <li ref={forwardedRef} className={cx(styles.listItem, className)} {...rest}>\n {children}\n </li>\n );\n});\nCardListItem.displayName = \"CardListItem\";\n\nexport type CardSectionHeaderProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardSectionHeader({ className, children, ...rest }: CardSectionHeaderProps) {\n return (\n <div className={cx(styles.sectionHeader, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardSectionHeader.displayName = \"CardSectionHeader\";\n\nexport type CardSectionTitleProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLHeadingElement>;\n\nfunction CardSectionTitle({ className, children, ...rest }: CardSectionTitleProps) {\n return (\n <h3 className={cx(styles.sectionTitle, className)} {...rest}>\n {children}\n </h3>\n );\n}\nCardSectionTitle.displayName = \"CardSectionTitle\";\n\nexport type CardSectionTrailingProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardSectionTrailing({ className, children, ...rest }: CardSectionTrailingProps) {\n return (\n <div className={cx(styles.sectionTrailing, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardSectionTrailing.displayName = \"CardSectionTrailing\";\n\nexport type CardBodyProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardBody({ className, children, ...rest }: CardBodyProps) {\n return (\n <div className={cx(styles.body, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardBody.displayName = \"CardBody\";\n\nexport type CardChartProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction CardChart({ className, children, ...rest }: CardChartProps) {\n return (\n <div className={cx(styles.chart, className)} {...rest}>\n {children}\n </div>\n );\n}\nCardChart.displayName = \"CardChart\";\n\nexport const Card = {\n Root: CardRoot,\n IconBox: CardIconBox,\n Lead: CardLead,\n HeaderRow: CardHeaderRow,\n Stack: CardStack,\n Label: CardLabel,\n Value: CardValue,\n Description: CardDescription,\n Media: CardMedia,\n Title: CardTitle,\n Delta: CardDelta,\n Actions: CardActions,\n CtaBody: CardCtaBody,\n Cover: CardCover,\n Split: CardSplit,\n SplitCell: CardSplitCell,\n ListHeader: CardListHeader,\n List: CardList,\n ListItem: CardListItem,\n SectionHeader: CardSectionHeader,\n SectionTitle: CardSectionTitle,\n SectionTrailing: CardSectionTrailing,\n Body: CardBody,\n Chart: CardChart,\n};\n", ".root {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-sys-shape-radius-l);\n background: var(--prime-sys-color-surface-raised);\n text-align: start;\n}\n\n.root[data-flat=\"false\"] {\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.root[data-variant=\"mini\"] {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--prime-sys-spacing-l);\n padding: var(--prime-sys-spacing-l);\n}\n\n.root[data-variant=\"mini-media\"] {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n align-content: flex-start;\n row-gap: var(--prime-sys-spacing-m);\n column-gap: var(--prime-sys-spacing-l);\n padding: var(--prime-sys-spacing-l);\n}\n\n.root[data-variant=\"metric\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-sys-spacing-m);\n padding: var(--prime-sys-spacing-l);\n}\n\n.root[data-variant=\"panel\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0;\n overflow: hidden;\n /* \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438: Body \u0441 flex-grow \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 \u043E\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044F \u043C\u0435\u0441\u0442\u043E \u043F\u043E\u0434 \u0433\u0440\u0430\u0444\u0438\u043A/\u0442\u0430\u0431\u043B\u0438\u0446\u0443. */\n min-height: var(--prime-sys-unit-18rem);\n}\n\n.iconBox {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: calc(var(--prime-sys-size-control-m-icon) + var(--prime-sys-spacing-m) * 2);\n height: calc(var(--prime-sys-size-control-m-icon) + var(--prime-sys-spacing-m) * 2);\n border-radius: var(--prime-sys-size-control-m-radius);\n background: var(--prime-sys-color-status-information-background);\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.iconBox svg {\n display: block;\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.lead {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: flex-start;\n min-width: 0;\n max-width: 100%;\n}\n\n.lead svg {\n display: block;\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n flex-shrink: 0;\n color: var(--prime-sys-color-content-primary);\n}\n\n.headerRow {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-m);\n width: 100%;\n min-width: 0;\n}\n\n.stack {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: var(--prime-sys-spacing-xs);\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.label {\n font-size: var(--prime-sys-size-control-m-supportText);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n font-weight: var(--prime-sys-typography-weight-regular);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.value {\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n font-weight: var(--prime-sys-typography-weight-semibold);\n color: var(--prime-sys-color-content-primary);\n}\n\n.headerRow > .value {\n flex-shrink: 0;\n text-align: end;\n}\n\n.description {\n margin: 0;\n font-size: var(--prime-sys-size-control-m-supportText);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n font-weight: var(--prime-sys-typography-weight-regular);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.media {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-end;\n width: 100%;\n min-width: 0;\n min-height: var(--prime-sys-spacing-4xl);\n padding-block-start: var(--prime-sys-spacing-s);\n border-block-start: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.root[data-variant=\"mini-media\"] > .iconBox {\n flex: 0 0 auto;\n}\n\n.root[data-variant=\"mini-media\"] > .stack {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.root[data-variant=\"mini-media\"] > .media {\n flex: 1 1 100%;\n width: 100%;\n min-width: 100%;\n}\n\n.sectionHeader {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-m);\n padding: var(--prime-sys-spacing-l) var(--prime-sys-spacing-xl);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-raised);\n}\n\n.sectionTitle {\n margin: 0;\n min-width: 0;\n flex: 1 1 auto;\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n font-weight: var(--prime-sys-typography-title-weight);\n color: var(--prime-sys-color-content-primary);\n}\n\n.sectionTrailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: flex-end;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.sectionTrailing svg {\n display: block;\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n/* \u0422\u0435\u043A\u0441\u0442, \u0442\u0430\u0431\u043B\u0438\u0446\u044B, \u0441\u0432\u043E\u0434\u043A\u0438 \u2014 \u0441 \u043F\u043E\u043B\u044F\u043C\u0438 \u043F\u043E \u043A\u0440\u0430\u044F\u043C. */\n.body {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-l);\n min-width: 0;\n min-height: 0;\n flex: 1 1 auto;\n padding: var(--prime-sys-spacing-l) var(--prime-sys-spacing-xl) var(--prime-sys-spacing-xl);\n background: var(--prime-sys-color-surface-raised);\n}\n\n.body > *:only-child {\n flex: 1 1 auto;\n min-height: 0;\n align-self: stretch;\n width: 100%;\n}\n\n/* \u0413\u0440\u0430\u0444\u0438\u043A edge-to-edge \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C \u0441\u0435\u043A\u0446\u0438\u0438 (\u0431\u0435\u0437 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043F\u043E\u043B\u0435\u0439). */\n.chart {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 0;\n min-height: 0;\n flex: 1 1 auto;\n padding: 0;\n background: var(--prime-sys-color-surface-raised);\n}\n\n.chart > *:only-child {\n flex: 1 1 auto;\n min-height: 0;\n align-self: stretch;\n width: 100%;\n}\n\n/* --- variant panel: \u0440\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0432\u044B\u0441\u043E\u0442\u044B \u043C\u0435\u0436\u0434\u0443 Body \u0438 Chart --- */\n\n.root[data-variant=\"panel\"] > .sectionHeader + .body:last-child,\n.root[data-variant=\"panel\"] > .sectionHeader + .chart:last-child {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.root[data-variant=\"panel\"] > .sectionHeader + .body:not(:last-child) {\n flex: 0 1 auto;\n}\n\n.root[data-variant=\"panel\"] > .body + .chart {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n/* --- stat-trend: \u043A\u0440\u0443\u043F\u043D\u0430\u044F \u043C\u0435\u0442\u0440\u0438\u043A\u0430 + \u0434\u0435\u043B\u044C\u0442\u0430 \u043F\u0435\u0440\u0438\u043E\u0434\u0430 --- */\n\n.root[data-variant=\"stat-trend\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-sys-spacing-s);\n padding: var(--prime-sys-spacing-l);\n}\n\n.root[data-variant=\"stat-trend\"] .value {\n font-size: var(--prime-sys-typography-sizeScale-3xl);\n line-height: var(--prime-sys-typography-lineHeightScale-2xl);\n font-weight: var(--prime-sys-typography-weight-semibold);\n letter-spacing: -0.02em;\n}\n\n.title {\n margin: 0;\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n font-weight: var(--prime-sys-typography-title-weight);\n color: var(--prime-sys-color-content-primary);\n}\n\n.delta {\n font-size: var(--prime-sys-size-control-m-supportText);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.delta[data-trend=\"up\"] {\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.delta[data-trend=\"down\"] {\n color: var(--prime-sys-color-content-danger);\n}\n\n.delta[data-trend=\"neutral\"] {\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* --- cta: \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u0442\u0435\u043A\u0441\u0442, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432\u043D\u0438\u0437\u0443 (\u043A\u0430\u043A base tile + CTA) --- */\n\n.root[data-variant=\"cta\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-sys-spacing-m);\n padding: var(--prime-sys-spacing-l);\n}\n\n.ctaBody {\n font-size: var(--prime-sys-size-control-m-supportText);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.actions {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--prime-sys-spacing-m);\n width: 100%;\n min-width: 0;\n padding-top: var(--prime-sys-spacing-m);\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n/* --- list: \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A + \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0442\u0440\u043E\u043A (\u043B\u0435\u043D\u0442\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u0438 / \u0430\u043B\u0435\u0440\u0442\u044B) --- */\n\n.root[data-variant=\"list\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.listHeader {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-m);\n padding: var(--prime-sys-spacing-l);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.listItem {\n padding: var(--prime-sys-spacing-m) var(--prime-sys-spacing-l);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n font-size: var(--prime-sys-size-control-m-supportText);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n color: var(--prime-sys-color-content-primary);\n}\n\n.listItem:last-child {\n border-bottom: none;\n}\n\n/* --- split: \u0434\u0432\u0435 \u043C\u0435\u0442\u0440\u0438\u043A\u0438 \u0432 \u043E\u0434\u043D\u043E\u0439 \u043F\u043B\u0438\u0442\u043A\u0435 --- */\n\n.root[data-variant=\"split\"] {\n padding: var(--prime-sys-spacing-l);\n}\n\n.split {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n width: 100%;\n min-width: 0;\n}\n\n.splitCell {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-xs);\n min-width: 0;\n padding-inline: var(--prime-sys-spacing-m);\n}\n\n.splitCell:first-child {\n padding-inline-start: 0;\n}\n\n.splitCell:last-child {\n padding-inline-end: 0;\n border-inline-start: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n/* \u041A\u0430\u043A mini: IconBox + Stack \u2014 \u0440\u044F\u0434, \u0438\u043A\u043E\u043D\u043A\u0430 \u0432 \u0442\u043E\u043A\u0435\u043D\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0439 \u043F\u043B\u0438\u0442\u043A\u0435 */\n.splitCell:has(> .iconBox) {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--prime-sys-spacing-l);\n}\n\n.splitCell:has(> .iconBox) > .stack {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n/* --- cover: \u043C\u0435\u0434\u0438\u0430 \u0441\u0432\u0435\u0440\u0445\u0443 + \u043A\u043E\u043D\u0442\u0435\u043D\u0442 (\u043A\u0430\u043A Card.Meta + cover \u0432 Ant Design) --- */\n\n.root[data-variant=\"cover\"] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.cover {\n display: block;\n width: 100%;\n min-height: var(--prime-sys-unit-8rem);\n max-height: var(--prime-sys-unit-12rem);\n overflow: hidden;\n background: var(--prime-sys-color-surface-default);\n}\n\n.cover > * {\n display: block;\n width: 100%;\n height: 100%;\n min-height: var(--prime-sys-unit-8rem);\n object-fit: cover;\n}\n\n.root[data-variant=\"cover\"] > .stack {\n padding: var(--prime-sys-spacing-l);\n padding-top: var(--prime-sys-spacing-m);\n gap: var(--prime-sys-spacing-xs);\n}\n\n.root[data-variant=\"cover\"] > .actions {\n padding: var(--prime-sys-spacing-m) var(--prime-sys-spacing-l) var(--prime-sys-spacing-l);\n}\n", "import * as React from \"react\";\nimport { Hint } from \"@/components/hint/Hint\";\nimport { Label } from \"@/components/label/Label\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useMergedRefs } from \"@/hooks/useMergedRefs\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { CheckboxSize, CheckboxVariant, HintSize, LabelSize } from \"@/internal/states\";\n\nimport styles from \"./Checkbox.module.css\";\n\ntype CheckboxContextValue = {\n inputId: string;\n hintId: string;\n errorId: string;\n size: CheckboxSize;\n inputRef: React.Ref<HTMLInputElement>;\n isChecked: boolean;\n invalid: boolean;\n disabled: boolean;\n indeterminate: boolean;\n describedBy: string | undefined;\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n restInputPropsRef: React.MutableRefObject<React.InputHTMLAttributes<HTMLInputElement>>;\n registerHint: () => void;\n unregisterHint: () => void;\n registerError: () => void;\n unregisterError: () => void;\n};\n\nconst [CheckboxProvider, useCheckboxContext] =\n createComponentContext<CheckboxContextValue>(\"Checkbox\");\n\nexport type CheckboxRootProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> & {\n variant?: CheckboxVariant;\n size?: CheckboxSize;\n indeterminate?: boolean;\n};\n\nconst CheckboxRoot = React.forwardRef<HTMLInputElement, CheckboxRootProps>(\n (\n {\n id,\n variant = \"default\",\n size = \"m\",\n disabled,\n className,\n checked,\n defaultChecked,\n onChange,\n indeterminate = false,\n \"aria-describedby\": ariaDescribedBy,\n children,\n ...inputRest\n },\n ref,\n ) => {\n const rawId = React.useId();\n const inputId = id ?? rawId;\n const hintId = `${inputId}-hint`;\n const errorId = `${inputId}-error`;\n\n const [hasHint, setHasHint] = React.useState(false);\n const [hasError, setHasError] = React.useState(false);\n\n const invalid = variant === \"error\" || hasError;\n\n const [isChecked, setIsChecked] = useControllableState<boolean>({\n value: checked as boolean | undefined,\n defaultValue: Boolean(defaultChecked),\n onChange: undefined,\n });\n\n const internalRef = React.useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs(internalRef, ref);\n\n React.useEffect(() => {\n if (internalRef.current) {\n internalRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsChecked(e.target.checked);\n onChange?.(e);\n },\n [onChange, setIsChecked],\n );\n\n const restInputPropsRef = React.useRef<React.InputHTMLAttributes<HTMLInputElement>>(inputRest);\n restInputPropsRef.current = inputRest;\n\n const parts = [\n ariaDescribedBy,\n hasHint ? hintId : undefined,\n hasError ? errorId : undefined,\n ].filter(Boolean);\n const describedBy = parts.length > 0 ? parts.join(\" \") : undefined;\n\n const registerHint = React.useCallback(() => setHasHint(true), []);\n const unregisterHint = React.useCallback(() => setHasHint(false), []);\n const registerError = React.useCallback(() => setHasError(true), []);\n const unregisterError = React.useCallback(() => setHasError(false), []);\n\n const showChecked = isChecked && !indeterminate;\n\n const ctxValue = React.useMemo(\n () => ({\n inputId,\n hintId,\n errorId,\n size,\n inputRef: mergedRef,\n isChecked,\n invalid,\n disabled: Boolean(disabled),\n indeterminate,\n describedBy,\n handleChange,\n restInputPropsRef,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n }),\n [\n inputId,\n hintId,\n errorId,\n size,\n mergedRef,\n isChecked,\n invalid,\n disabled,\n indeterminate,\n describedBy,\n handleChange,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n ],\n );\n\n return (\n <CheckboxProvider value={ctxValue}>\n <ControlSizeProvider value={size}>\n <div\n className={cx(styles.field, className)}\n {...toDataAttributes({\n size,\n variant,\n disabled: Boolean(disabled),\n invalid,\n checked: showChecked,\n indeterminate,\n })}\n >\n {children}\n </div>\n </ControlSizeProvider>\n </CheckboxProvider>\n );\n },\n);\n\nCheckboxRoot.displayName = \"CheckboxRoot\";\n\n// \u2500\u2500\u2500 Label \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CheckboxLabelProps = {\n children?: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLLabelElement>, \"htmlFor\" | \"size\">;\n\nconst CheckboxLabel = React.forwardRef<HTMLLabelElement, CheckboxLabelProps>(function CheckboxLabel(\n { children, className, ...rest },\n ref,\n) {\n const {\n inputId,\n inputRef,\n isChecked,\n invalid,\n disabled,\n describedBy,\n handleChange,\n restInputPropsRef,\n size,\n } = useCheckboxContext();\n\n const filterId = React.useId();\n const svgFilterId = `es-cb-${filterId.replace(/:/g, \"\")}`;\n\n return (\n <Label.Root\n ref={ref}\n htmlFor={inputId}\n size={size as LabelSize}\n disabled={disabled}\n className={cx(styles.labelRow, className)}\n {...rest}\n >\n <span className={styles.controlCell}>\n <input\n ref={inputRef}\n id={inputId}\n type=\"checkbox\"\n className={styles.input}\n disabled={disabled}\n checked={isChecked}\n onChange={handleChange}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy || undefined}\n {...restInputPropsRef.current}\n />\n <span className={styles.control} aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" className={styles.svg} aria-hidden=\"true\">\n <defs>\n <filter id={svgFilterId}>\n <feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"0.5\" floodOpacity=\"0.12\" />\n </filter>\n </defs>\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n className={styles.rect}\n filter={`url(#${svgFilterId})`}\n />\n <path d=\"M4 8l2.5 2.5L12 5\" className={styles.checkPath} />\n <line x1=\"4.5\" y1=\"8\" x2=\"11.5\" y2=\"8\" className={styles.indeterminateLine} />\n </svg>\n </span>\n </span>\n {children !== undefined && children !== null ? (\n <span className={styles.text}>{children}</span>\n ) : null}\n </Label.Root>\n );\n});\n\nCheckboxLabel.displayName = \"CheckboxLabel\";\n\n// \u2500\u2500\u2500 Hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CheckboxHintProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction CheckboxHint({ children, className, ...rest }: CheckboxHintProps) {\n const { hintId, registerHint, unregisterHint, size, disabled } = useCheckboxContext();\n\n React.useLayoutEffect(() => {\n registerHint();\n return () => {\n unregisterHint();\n };\n }, [registerHint, unregisterHint]);\n\n return (\n <Hint.Root\n id={hintId}\n size={size as HintSize}\n variant={disabled ? \"disabled\" : \"default\"}\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nCheckboxHint.displayName = \"CheckboxHint\";\n\n// \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CheckboxErrorProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction CheckboxError({ children, className, ...rest }: CheckboxErrorProps) {\n const { errorId, registerError, unregisterError, size } = useCheckboxContext();\n\n React.useLayoutEffect(() => {\n registerError();\n return () => {\n unregisterError();\n };\n }, [registerError, unregisterError]);\n\n return (\n <Hint.Root\n id={errorId}\n size={size as HintSize}\n variant=\"error\"\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nCheckboxError.displayName = \"CheckboxError\";\n\n// \u2500\u2500\u2500 Namespace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Checkbox = {\n Root: CheckboxRoot,\n Label: CheckboxLabel,\n Hint: CheckboxHint,\n Error: CheckboxError,\n};\n", ".root {\n margin: 0;\n display: inline-flex;\n align-items: flex-start;\n color: var(--prime-sys-color-content-secondary);\n}\n\n/*\n * \u041D\u043E\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0439 `data-size` = \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u043E\u043B\u044F.\n * \u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u044F\u0440\u0443\u0441 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043D\u0430 \u0441\u0442\u0443\u043F\u0435\u043D\u044C \u043D\u0438\u0436\u0435: s\u2192xs, m\u2192s, l\u2192m, xl\u2192l.\n */\n.root[data-size=\"s\"] {\n --prime-hint-icon: var(--prime-sys-size-control-xs-icon);\n gap: var(--prime-sys-size-control-xs-gap);\n font-size: var(--prime-sys-size-control-xs-text);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n}\n\n.root[data-size=\"m\"] {\n --prime-hint-icon: var(--prime-sys-size-control-s-icon);\n gap: var(--prime-sys-size-control-s-gap);\n font-size: var(--prime-sys-size-control-s-text);\n line-height: var(--prime-sys-typography-lineHeightScale-xs);\n}\n\n.root[data-size=\"l\"] {\n --prime-hint-icon: var(--prime-sys-size-control-m-icon);\n gap: var(--prime-sys-size-control-m-gap);\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n}\n\n.root[data-size=\"xl\"] {\n --prime-hint-icon: var(--prime-sys-size-control-l-icon);\n gap: var(--prime-sys-size-control-l-gap);\n font-size: var(--prime-sys-size-control-l-text);\n line-height: var(--prime-sys-typography-lineHeightScale-m);\n}\n\n.root[data-variant=\"error\"] {\n color: var(--prime-sys-color-content-danger);\n}\n\n.root[data-variant=\"disabled\"] {\n color: var(--prime-sys-color-content-disabled);\n}\n\n.icon {\n flex-shrink: 0;\n display: inline-flex;\n width: var(--prime-hint-icon);\n height: var(--prime-hint-icon);\n}\n\n.icon :where(svg) {\n width: 100%;\n height: 100%;\n display: block;\n}\n", "import type * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { HintSize } from \"@/internal/states\";\n\nimport styles from \"./Hint.module.css\";\n\nexport type HintVariant = \"default\" | \"error\" | \"disabled\";\n\nexport type { HintSize };\n\nexport type HintRootProps = {\n size?: HintSize;\n variant?: HintVariant;\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLParagraphElement>;\n\nfunction HintRoot({\n className,\n size = \"m\",\n variant = \"default\",\n children,\n ...rest\n}: HintRootProps) {\n return (\n <ControlSizeProvider value={size}>\n <p className={cx(styles.root, className)} {...rest} {...toDataAttributes({ variant, size })}>\n {children}\n </p>\n </ControlSizeProvider>\n );\n}\nHintRoot.displayName = \"HintRoot\";\n\nexport type HintIconProps = {\n children: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction HintIcon({ className, children, ...rest }: HintIconProps) {\n return (\n <span className={cx(styles.icon, className)} aria-hidden=\"true\" {...rest}>\n {children}\n </span>\n );\n}\nHintIcon.displayName = \"HintIcon\";\n\nexport const Hint = { Root: HintRoot, Icon: HintIcon };\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { LabelSize } from \"@/internal/states\";\n\nimport styles from \"./Label.module.css\";\n\nexport type { LabelSize };\n\nconst LabelSizeContext = React.createContext<LabelSize>(\"m\");\n\nexport type LabelRootProps = Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"size\"> & {\n disabled?: boolean;\n size?: LabelSize;\n};\n\nconst LabelRoot = React.forwardRef<HTMLLabelElement, LabelRootProps>(\n ({ className, disabled, children, size = \"m\", ...rest }, ref) => {\n return (\n // biome-ignore lint/a11y/noLabelWithoutControl: field label primitive; association via htmlFor or wrapping control is caller responsibility\n <label\n ref={ref}\n className={cx(styles.root, className)}\n aria-disabled={disabled || undefined}\n {...rest}\n {...toDataAttributes({ disabled, size })}\n >\n <LabelSizeContext.Provider value={size}>{children}</LabelSizeContext.Provider>\n </label>\n );\n },\n);\nLabelRoot.displayName = \"LabelRoot\";\n\nfunction LabelIcon({ className, children, ...rest }: React.HTMLAttributes<HTMLSpanElement>) {\n const size = React.useContext(LabelSizeContext);\n return (\n <span className={cx(styles.iconSlot, className)} {...rest}>\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </span>\n );\n}\nLabelIcon.displayName = \"LabelIcon\";\n\nfunction LabelAsterisk({ className, children, ...rest }: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span className={cx(styles.asterisk, className)} {...rest}>\n {children ?? \"*\"}\n </span>\n );\n}\nLabelAsterisk.displayName = \"LabelAsterisk\";\n\nfunction LabelSub({ className, children, ...rest }: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span className={cx(styles.sub, className)} {...rest}>\n {children}\n </span>\n );\n}\nLabelSub.displayName = \"LabelSub\";\n\nexport const Label = { Root: LabelRoot, Icon: LabelIcon, Asterisk: LabelAsterisk, Sub: LabelSub };\n", ".root {\n font-size: var(--prime-sys-size-control-m-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n.root[data-size=\"s\"] {\n font-size: var(--prime-sys-size-control-s-text);\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"l\"] {\n font-size: var(--prime-sys-size-control-l-text);\n gap: var(--prime-sys-size-control-l-gap);\n}\n\n.root[data-size=\"xl\"] {\n font-size: var(--prime-sys-size-control-xl-text);\n gap: var(--prime-sys-size-control-xl-gap);\n}\n\n.iconSlot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n}\n\n.root[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n}\n\n.asterisk {\n color: var(--prime-sys-color-content-danger);\n}\n\n.sub {\n color: var(--prime-sys-color-content-secondary);\n font-weight: var(--prime-sys-typography-weight-regular);\n}\n", "import * as React from \"react\";\n\nfunction assignRef<T>(ref: React.Ref<T> | undefined, value: T) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n\n if (ref && \"current\" in ref) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n}\n\nexport function useMergedRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return React.useCallback(\n (value: T) => {\n for (const ref of refs) {\n assignRef(ref, value);\n }\n },\n [refs],\n );\n}\n", "/*\n * \u0417\u0430\u0437\u043E\u0440 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u2013\u0442\u0435\u043A\u0441\u0442: \u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0443 \u043F\u043E\u043B\u044F m; \u0434\u043B\u044F l/xl \u0440\u0430\u0441\u0442\u0451\u0442 \u043F\u0440\u043E\u043F\u043E\u0440\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0443\n * \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430 (\u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 px \u043F\u0440\u0438 \u043A\u0440\u0443\u043F\u043D\u043E\u043C \u0447\u0435\u043A\u0431\u043E\u043A\u0441\u0435 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u043B \u00AB\u0443\u0436\u0435\u00BB, \u0447\u0435\u043C \u0443 s).\n */\n.field {\n --prime-choice-control-size: var(--prime-sys-size-choice-m-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-m-inputPaddingX);\n /* \u0421\u043E\u0432\u043F\u0430\u0434\u0430\u0435\u0442 \u0441 \u043B\u0435\u0432\u044B\u043C \u043A\u0440\u0430\u0435\u043C \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0442\u0435\u043A\u0441\u0442\u0430 \u0432 `labelRow` (grid: control | text). */\n --prime-choice-hint-offset: calc(var(--prime-choice-control-size) + var(--prime-choice-col-gap));\n --prime-choice-stack-gap: var(--prime-sys-size-control-m-gap);\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-choice-stack-gap);\n}\n\n.field[data-size=\"s\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-s-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-s-inputPaddingX);\n}\n\n.field[data-size=\"l\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-l-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-l-inputPaddingX);\n}\n\n.field[data-size=\"xl\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-xl-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-xl-inputPaddingX);\n}\n\n/* .field \u2014 \u0432\u044B\u0448\u0435 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u0447\u043D\u043E\u0441\u0442\u044C, \u0447\u0435\u043C \u0443 Label.Root (inline-flex + gap), \u0447\u0442\u043E\u0431\u044B \u0441\u0435\u0442\u043A\u0430 \u043D\u0435 \u043B\u043E\u043C\u0430\u043B\u0430\u0441\u044C. */\n.field .labelRow {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0;\n row-gap: 0;\n column-gap: var(--prime-choice-col-gap);\n align-items: center;\n width: 100%;\n cursor: pointer;\n}\n\n.controlCell {\n position: relative;\n flex-shrink: 0;\n width: var(--prime-choice-control-size);\n height: var(--prime-choice-control-size);\n}\n\n.input {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n.control {\n position: relative;\n width: 100%;\n height: 100%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.svg {\n width: 100%;\n height: 100%;\n display: inline-flex;\n overflow: visible;\n}\n\n/* ---- rect (background + border) ---- */\n\n.rect {\n fill: var(--prime-sys-color-surface-raised);\n stroke: var(--prime-sys-color-field-border);\n stroke-width: 1;\n transition:\n fill var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n stroke var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n/* ---- checkmark path ---- */\n\n.checkPath {\n fill: none;\n stroke: var(--prime-sys-color-content-inverse);\n stroke-width: 1.5;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n transition: stroke-dashoffset var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n/* ---- indeterminate line ---- */\n\n.indeterminateLine {\n fill: none;\n stroke: var(--prime-sys-color-content-inverse);\n stroke-width: 1.5;\n stroke-linecap: round;\n stroke-dasharray: 7;\n stroke-dashoffset: 7;\n transition: stroke-dashoffset var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n/* \u0422\u0435\u043A\u0441\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043A\u0435\u0433\u043B\u044C \u043E\u0442 Label.Root; \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u043C \u043F\u0435\u0440\u0435\u043D\u043E\u0441. */\n.text {\n line-height: var(--prime-sys-typography-body-lineHeight);\n min-width: 0;\n}\n\n/* ---- hover (unchecked) ---- */\n\n.labelRow:hover .rect {\n stroke: var(--prime-sys-color-field-borderHover);\n fill: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n/* ---- checked / indeterminate \u2014 rect fill ---- */\n\n.field[data-checked=\"true\"] .rect,\n.field[data-indeterminate=\"true\"] .rect {\n fill: var(--prime-sys-color-action-primaryBackground);\n stroke: var(--prime-sys-color-action-primaryBackground);\n}\n\n/* ---- checked / indeterminate \u2014 hover ---- */\n\n.field[data-checked=\"true\"] .labelRow:hover .rect,\n.field[data-indeterminate=\"true\"] .labelRow:hover .rect {\n fill: var(--prime-sys-color-action-primaryBackgroundHover);\n stroke: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n/* ---- animate checkmark ---- */\n\n.field[data-checked=\"true\"] .checkPath {\n stroke-dashoffset: 0;\n}\n\n/* ---- animate indeterminate line ---- */\n\n.field[data-indeterminate=\"true\"] .indeterminateLine {\n stroke-dashoffset: 0;\n}\n\n/* ---- focus-visible ---- */\n\n.input:focus-visible + .control {\n border-radius: var(--prime-sys-shape-radius-s);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n/* ---- invalid (variant=error \u0438\u043B\u0438 Checkbox.Error) \u2014 \u043A\u0430\u043A \u0443 Radio ---- */\n\n.field[data-invalid=\"true\"] .rect {\n stroke: var(--prime-sys-color-field-borderError);\n}\n\n/* ---- disabled ---- */\n\n.field[data-disabled=\"true\"] .labelRow {\n cursor: not-allowed;\n}\n\n.field[data-disabled=\"true\"] .rect {\n stroke: var(--prime-sys-color-border-subtle);\n fill: var(--prime-sys-color-surface-accentSoft);\n}\n\n.field[data-disabled=\"true\"] .checkPath,\n.field[data-disabled=\"true\"] .indeterminateLine {\n stroke: var(--prime-sys-color-content-disabled);\n}\n\n.field[data-disabled=\"true\"] .labelRow:hover .rect {\n stroke: var(--prime-sys-color-border-subtle);\n fill: var(--prime-sys-color-surface-accentSoft);\n}\n\n/* Hint / error \u2014 \u043F\u043E\u0434 \u043A\u043E\u043B\u043E\u043D\u043A\u043E\u0439 \u0442\u0435\u043A\u0441\u0442\u0430 (\u043A\u0430\u043A meta \u0443 Input), \u043D\u0435 \u043F\u043E\u0434 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043E\u043C. */\n.hintSlot {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n padding-inline-start: var(--prime-choice-hint-offset);\n justify-content: flex-start;\n}\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { highlightTsxHtml } from \"@/internal/highlightTsxHtml\";\n\nimport styles from \"./CodeBlock.module.css\";\n\nexport type CodeBlockColorScheme = \"light\" | \"dark\";\n\nexport type CodeBlockRootProps = {\n /** \u0418\u0441\u0445\u043E\u0434\u043D\u0438\u043A TS/TSX; \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 \u0447\u0435\u0440\u0435\u0437 `highlightTsxHtml`. */\n code: string;\n colorScheme?: CodeBlockColorScheme;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLPreElement>, \"children\" | \"dangerouslySetInnerHTML\">;\n\nconst CodeBlockRoot = React.forwardRef<HTMLPreElement, CodeBlockRootProps>(function CodeBlockRoot(\n { code, colorScheme = \"light\", className, ...rest },\n ref,\n) {\n const html = React.useMemo(() => highlightTsxHtml(code.trimEnd()), [code]);\n\n return (\n <pre\n ref={ref}\n className={cx(styles.root, className)}\n data-theme={colorScheme}\n {...rest}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0438\u0437 \u0434\u043E\u0432\u0435\u0440\u0435\u043D\u043D\u043E\u0433\u043E `highlightTsxHtml(code)`\n dangerouslySetInnerHTML={{ __html: `<code class=\"${styles.code}\">${html}</code>` }}\n />\n );\n});\nCodeBlockRoot.displayName = \"CodeBlock.Root\";\n\nexport const CodeBlock = {\n Root: CodeBlockRoot,\n};\n", "/** \u041F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043D\u0430\u044F \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 TS/TSX \u0434\u043B\u044F \u043F\u043B\u0435\u0439\u0433\u0440\u0430\u0443\u043D\u0434\u0430: \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438, \u0441\u0442\u0440\u043E\u043A\u0438, \u0447\u0438\u0441\u043B\u0430, \u043A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430, JSX-\u0442\u0435\u0433\u0438. */\n\nconst KW = new Set(\n \"break case catch class const continue debugger default delete do else export extends false finally for from function if import in instanceof let new null return super switch this throw true try typeof var void while with yield async await of type interface implements package private protected public static readonly keyof as is enum namespace module declare abstract satisfies using\".split(\n \" \",\n ),\n);\n\nconst INTRINSIC =\n /^(?:div|span|a|button|input|form|label|p|code|pre|section|article|header|footer|nav|main|aside|ul|ol|li|table|tr|td|th|img|svg|path|circle|Fragment|Suspense|h[1-6])\\b/;\n\nfunction esc(s: string): string {\n return s.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\nfunction span(cls: string, raw: string): string {\n return `<span class=\"${cls}\">${esc(raw)}</span>`;\n}\n\nfunction readString(s: string, start: number, quote: '\"' | \"'\" | \"`\"): number {\n let j = start + 1;\n while (j < s.length) {\n const c = s[j];\n if (c === \"\\\\\" && j + 1 < s.length) {\n j += 2;\n continue;\n }\n if (c === quote) return j + 1;\n j++;\n }\n return s.length;\n}\n\nexport function highlightTsxHtml(source: string): string {\n let i = 0;\n let out = \"\";\n const n = source.length;\n\n while (i < n) {\n const ch = source[i];\n const ch2 = source[i + 1];\n\n if (ch === \" \" || ch === \"\\t\" || ch === \"\\n\" || ch === \"\\r\") {\n out += esc(ch);\n i++;\n continue;\n }\n\n if (ch === \"/\" && ch2 === \"/\") {\n let j = i + 2;\n while (j < n && source[j] !== \"\\n\") j++;\n out += span(\"prime-tok-c\", source.slice(i, j));\n i = j;\n continue;\n }\n\n if (ch === \"/\" && ch2 === \"*\") {\n let j = i + 2;\n while (j + 1 < n && !(source[j] === \"*\" && source[j + 1] === \"/\")) j++;\n j = j + 2 <= n ? j + 2 : n;\n out += span(\"prime-tok-c\", source.slice(i, j));\n i = j;\n continue;\n }\n\n if (ch === \"`\") {\n const j = readString(source, i, \"`\");\n out += span(\"prime-tok-s\", source.slice(i, j));\n i = j;\n continue;\n }\n if (ch === '\"') {\n const j = readString(source, i, '\"');\n out += span(\"prime-tok-s\", source.slice(i, j));\n i = j;\n continue;\n }\n if (ch === \"'\") {\n const j = readString(source, i, \"'\");\n out += span(\"prime-tok-s\", source.slice(i, j));\n i = j;\n continue;\n }\n\n if (ch === \"<\" && source.slice(i, i + 4) === \"<!--\") {\n const end = source.indexOf(\"-->\", i + 4);\n const j = end === -1 ? n : end + 3;\n out += span(\"prime-tok-c\", source.slice(i, j));\n i = j;\n continue;\n }\n\n if (ch === \"<\") {\n const mm = source.slice(i).match(/^<(\\/?)([A-Za-z_][\\w.]*)\\b/);\n if (mm) {\n const name = mm[2];\n const isJsx = /^[A-Z]/.test(name) || INTRINSIC.test(name);\n if (isJsx) {\n const len = mm[0].length;\n out += span(\"prime-tok-x\", source.slice(i, i + len));\n i += len;\n continue;\n }\n }\n out += esc(\"<\");\n i++;\n continue;\n }\n\n if (/\\d/.test(ch)) {\n let j = i + 1;\n while (j < n && /[\\d.eE+-]/.test(source[j])) j++;\n out += span(\"prime-tok-n\", source.slice(i, j));\n i = j;\n continue;\n }\n\n if (/[a-zA-Z_$]/.test(ch)) {\n let j = i + 1;\n while (j < n && /[a-zA-Z0-9_$]/.test(source[j])) j++;\n const w = source.slice(i, j);\n out += KW.has(w) ? span(\"prime-tok-k\", w) : esc(w);\n i = j;\n continue;\n }\n\n out += esc(ch);\n i++;\n }\n\n return out;\n}\n", ".root {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n white-space: pre;\n tab-size: 2;\n background: transparent;\n font-family: var(--prime-ref-font-family-mono);\n font-size: inherit;\n line-height: inherit;\n color: var(--prime-sys-color-content-primary);\n}\n\n.code {\n font-family: inherit;\n}\n\n/* \u041F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 TS/TSX (`highlightTsxHtml`) */\n.root[data-theme=\"light\"] :global(.prime-tok-k) {\n color: var(--prime-ref-color-purple-800);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.root[data-theme=\"dark\"] :global(.prime-tok-k) {\n color: var(--prime-ref-color-purple-300);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.root[data-theme=\"light\"] :global(.prime-tok-s) {\n color: var(--prime-ref-color-teal-800);\n}\n\n.root[data-theme=\"dark\"] :global(.prime-tok-s) {\n color: var(--prime-ref-color-teal-200);\n}\n\n.root[data-theme=\"light\"] :global(.prime-tok-c) {\n color: var(--prime-sys-color-content-muted);\n}\n\n.root[data-theme=\"dark\"] :global(.prime-tok-c) {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.root[data-theme=\"light\"] :global(.prime-tok-n) {\n color: var(--prime-ref-color-orange-700);\n}\n\n.root[data-theme=\"dark\"] :global(.prime-tok-n) {\n color: var(--prime-ref-color-orange-300);\n}\n\n.root[data-theme=\"light\"] :global(.prime-tok-x) {\n color: var(--prime-ref-color-blue-700);\n}\n\n.root[data-theme=\"dark\"] :global(.prime-tok-x) {\n color: var(--prime-ref-color-blue-300);\n}\n", "import type { ColorChannel } from \"@react-types/color\";\nimport * as React from \"react\";\nimport {\n ColorArea as AriaColorArea,\n type ColorAreaProps as AriaColorAreaProps,\n ColorField as AriaColorField,\n ColorPicker as AriaColorPicker,\n type ColorPickerProps as AriaColorPickerProps,\n ColorSlider as AriaColorSlider,\n type ColorSliderProps as AriaColorSliderProps,\n ColorSwatch as AriaColorSwatch,\n ColorSwatchPicker as AriaColorSwatchPicker,\n ColorSwatchPickerItem as AriaColorSwatchPickerItem,\n type ColorSwatchPickerItemProps as AriaColorSwatchPickerItemProps,\n type ColorSwatchPickerProps as AriaColorSwatchPickerProps,\n type ColorSwatchProps as AriaColorSwatchProps,\n ColorThumb as AriaColorThumb,\n type ColorThumbProps as AriaColorThumbProps,\n SliderOutput as AriaSliderOutput,\n type SliderOutputProps as AriaSliderOutputProps,\n SliderTrack as AriaSliderTrack,\n type SliderTrackProps as AriaSliderTrackProps,\n ColorPickerStateContext,\n composeRenderProps,\n parseColor,\n} from \"react-aria-components\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { Input } from \"@/components/input/Input\";\nimport { Select } from \"@/components/select/Select\";\nimport selectStyles from \"@/components/select/Select.module.css\";\nimport { cx } from \"@/internal/cx\";\nimport type { InputSize } from \"@/internal/states\";\n\nimport styles from \"./ColorPicker.module.css\";\n\nexport type { Color as ColorPickerColorValue, ColorPickerRenderProps } from \"react-aria-components\";\nexport type ColorPickerRootProps = AriaColorPickerProps;\nexport type ColorValueFormat = \"hsl\" | \"rgb\" | \"hex\";\n\nexport type ColorPickerHexInputProps = {\n size?: InputSize;\n label?: React.ReactNode;\n className?: string;\n};\n\nexport type ColorPickerFormatProviderProps = {\n children: React.ReactNode;\n defaultFormat?: ColorValueFormat;\n};\n\nexport { parseColor };\n\ntype EyeDropperCtor = new () => { open: () => Promise<{ sRGBHex: string }> };\n\nconst CHECKER_GRADIENT =\n \"repeating-conic-gradient(var(--prime-sys-color-border-inverse) 0deg 90deg, color-mix(in srgb, var(--prime-sys-color-content-primary) 22%, transparent) 90deg 180deg)\";\nconst CHECKER_BG = `${CHECKER_GRADIENT} 0% 0% / var(--prime-sys-unit-0p5rem) var(--prime-sys-unit-0p5rem)`;\nconst TRIGGER_SWATCH_FALLBACK_FILL =\n \"color-mix(in srgb, var(--prime-sys-color-content-primary) 12%, transparent)\";\n\ntype ColorPickerCtx = NonNullable<React.ContextType<typeof ColorPickerStateContext>>;\n\nconst CHANNEL_ARIA: Partial<Record<ColorChannel, string>> = {\n hue: \"\u041E\u0442\u0442\u0435\u043D\u043E\u043A, \u0433\u0440\u0430\u0434\u0443\u0441\u044B\",\n saturation: \"\u041D\u0430\u0441\u044B\u0449\u0435\u043D\u043D\u043E\u0441\u0442\u044C, \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B\",\n lightness: \"\u042F\u0440\u043A\u043E\u0441\u0442\u044C, \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B\",\n alpha: \"\u041D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C, \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B\",\n red: \"\u041A\u0440\u0430\u0441\u043D\u044B\u0439, 0\u2013255\",\n green: \"\u0417\u0435\u043B\u0451\u043D\u044B\u0439, 0\u2013255\",\n blue: \"\u0421\u0438\u043D\u0438\u0439, 0\u2013255\",\n};\n\nconst ColorValueFormatContext = React.createContext<{\n format: ColorValueFormat;\n setFormat: (f: ColorValueFormat) => void;\n} | null>(null);\n\nfunction useColorValueFormat(): {\n format: ColorValueFormat;\n setFormat: (f: ColorValueFormat) => void;\n} {\n const v = React.useContext(ColorValueFormatContext);\n if (!v) {\n throw new Error(\n \"ColorPicker: \u043E\u0431\u0435\u0440\u043D\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443 \u0432 ColorPicker.FormatProvider \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u0438 \u043F\u043E\u043B\u043E\u0441\u044B \u043A\u0430\u043D\u0430\u043B\u043E\u0432.\",\n );\n }\n return v;\n}\n\nfunction FormatProvider({ children, defaultFormat = \"hsl\" }: ColorPickerFormatProviderProps) {\n const [format, setFormat] = React.useState<ColorValueFormat>(defaultFormat);\n const value = React.useMemo(() => ({ format, setFormat }), [format]);\n return (\n <ColorValueFormatContext.Provider value={value}>{children}</ColorValueFormatContext.Provider>\n );\n}\n\nconst FORMAT_SELECT_LABEL: Record<ColorValueFormat, string> = {\n hsl: \"HSL\",\n rgb: \"RGB\",\n hex: \"Hex\",\n};\n\nfunction FormatSelect({ className }: { className?: string }) {\n const ctx = React.useContext(ColorValueFormatContext);\n if (!ctx) {\n return null;\n }\n const { format, setFormat } = ctx;\n\n return (\n <div className={cx(styles.formatSelectWrap, className)}>\n <Select.Root\n value={format}\n onChange={(v) => {\n if (v === \"hsl\" || v === \"rgb\" || v === \"hex\") {\n setFormat(v);\n }\n }}\n >\n <Select.Trigger aria-label=\"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u0446\u0432\u0435\u0442\u0430\">\n <span className={selectStyles.triggerValue}>{FORMAT_SELECT_LABEL[format]}</span>\n </Select.Trigger>\n <Select.Content>\n <Select.Item label=\"HSL\" value=\"hsl\">\n HSL\n </Select.Item>\n <Select.Item label=\"RGB\" value=\"rgb\">\n RGB\n </Select.Item>\n <Select.Item label=\"Hex\" value=\"hex\">\n Hex\n </Select.Item>\n </Select.Content>\n </Select.Root>\n </div>\n );\n}\n\nfunction displayChannelValue(\n color: ColorPickerCtx[\"color\"],\n channel: ColorChannel,\n space: \"hsl\" | \"rgb\",\n) {\n const c = color.toFormat(space);\n const raw = c.getChannelValue(channel);\n if (channel === \"alpha\") {\n return String(Math.round(raw * 100));\n }\n return String(Math.round(raw));\n}\n\nfunction applyChannelValue(\n state: ColorPickerCtx,\n channel: ColorChannel,\n space: \"hsl\" | \"rgb\",\n text: string,\n) {\n const trimmed = text.trim().replace(\",\", \".\");\n const n = Number.parseFloat(trimmed);\n if (Number.isNaN(n)) {\n return;\n }\n if (channel === \"alpha\") {\n const pct = Math.min(100, Math.max(0, n));\n state.setColor(state.color.withChannelValue(\"alpha\", pct / 100));\n return;\n }\n const c = state.color.toFormat(space);\n const range = c.getChannelRange(channel);\n const v = Math.min(range.maxValue, Math.max(range.minValue, n));\n state.setColor(c.withChannelValue(channel, v));\n}\n\nfunction ChannelField({\n channel,\n space,\n suffix,\n}: {\n channel: ColorChannel;\n space: \"hsl\" | \"rgb\";\n suffix: string;\n}) {\n const state = React.useContext(ColorPickerStateContext);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [text, setText] = React.useState(() =>\n state ? displayChannelValue(state.color, channel, space) : \"\",\n );\n const fingerprint = state ? state.color.toString(\"hexa\") : \"\";\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: \u0441\u043C. HexInput \u2014 state \u0441\u0442\u0430\u0431\u0438\u043B\u0435\u043D, \u0446\u0432\u0435\u0442 \u043F\u043E fingerprint\n React.useEffect(() => {\n if (!state) {\n return;\n }\n if (inputRef.current && document.activeElement === inputRef.current) {\n return;\n }\n setText(displayChannelValue(state.color, channel, space));\n }, [fingerprint]);\n\n if (!state) {\n return null;\n }\n\n const commit = () => {\n applyChannelValue(state, channel, space, text);\n setText(displayChannelValue(state.color, channel, space));\n };\n\n return (\n <div className={styles.channelCell}>\n <input\n ref={inputRef}\n aria-label={CHANNEL_ARIA[channel] ?? String(channel)}\n className={styles.channelInput}\n inputMode=\"decimal\"\n value={text}\n onBlur={commit}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n inputRef.current?.blur();\n }\n }}\n />\n <span className={styles.channelSuffix}>{suffix}</span>\n </div>\n );\n}\n\nfunction StripHexField() {\n const state = React.useContext(ColorPickerStateContext);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [text, setText] = React.useState(() => {\n if (!state) {\n return \"\";\n }\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n return c.toString(a < 1 ? \"hexa\" : \"hex\");\n });\n const fingerprint = state ? state.color.toString(\"hexa\") : \"\";\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: \u0441\u043C. HexInput\n React.useEffect(() => {\n if (!state) {\n return;\n }\n if (inputRef.current && document.activeElement === inputRef.current) {\n return;\n }\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n setText(c.toString(a < 1 ? \"hexa\" : \"hex\"));\n }, [fingerprint]);\n\n if (!state) {\n return null;\n }\n\n const commit = () => {\n try {\n state.setColor(parseColor(text.trim()));\n } catch {\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n setText(c.toString(a < 1 ? \"hexa\" : \"hex\"));\n }\n };\n\n return (\n <div className={cx(styles.channelCell, styles.channelCellHex)}>\n <input\n ref={inputRef}\n aria-label=\"Hex\"\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n className={styles.channelInput}\n spellCheck={false}\n value={text}\n onBlur={commit}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n inputRef.current?.blur();\n }\n }}\n />\n </div>\n );\n}\n\n/** \u041F\u043E\u043B\u043E\u0441\u0430 \u043A\u0430\u043D\u0430\u043B\u043E\u0432: \u0441\u043B\u0435\u0432\u0430 \u043F\u0438\u043F\u0435\u0442\u043A\u0430 \u0438\u0437 {@link EyeDropperButton}, \u0441\u043F\u0440\u0430\u0432\u0430 \u2014 \u044F\u0447\u0435\u0439\u043A\u0438; \u0438\u043A\u043E\u043D\u043A\u0443 \u043F\u0438\u043F\u0435\u0442\u043A\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 `pipetteIcon`. */\nfunction ChannelStripWithIcon({\n className,\n pipetteIcon,\n}: {\n className?: string;\n pipetteIcon: React.ReactNode;\n}) {\n const { format } = useColorValueFormat();\n\n return (\n <div className={cx(styles.channelStrip, className)}>\n <div className={styles.channelStripLead}>\n <EyeDropperButton className={styles.channelStripEyedropperBtn}>\n <Button.Icon>{pipetteIcon}</Button.Icon>\n </EyeDropperButton>\n </div>\n {format === \"hex\" ? (\n <StripHexField />\n ) : format === \"hsl\" ? (\n <>\n <ChannelField channel=\"hue\" space=\"hsl\" suffix=\"\u00B0\" />\n <ChannelField channel=\"saturation\" space=\"hsl\" suffix=\"%\" />\n <ChannelField channel=\"lightness\" space=\"hsl\" suffix=\"%\" />\n <ChannelField channel=\"alpha\" space=\"hsl\" suffix=\"%\" />\n </>\n ) : (\n <>\n <ChannelField channel=\"red\" space=\"rgb\" suffix=\"\" />\n <ChannelField channel=\"green\" space=\"rgb\" suffix=\"\" />\n <ChannelField channel=\"blue\" space=\"rgb\" suffix=\"\" />\n <ChannelField channel=\"alpha\" space=\"rgb\" suffix=\"%\" />\n </>\n )}\n </div>\n );\n}\n\nfunction ColorPickerRoot(props: AriaColorPickerProps) {\n return <AriaColorPicker {...props} />;\n}\n\nfunction Field({ className, ...props }: React.ComponentProps<typeof AriaColorField>) {\n return (\n <AriaColorField\n className={composeRenderProps(className, (c) => cx(styles.field, c))}\n {...props}\n />\n );\n}\n\nfunction Slider({ className, ...props }: AriaColorSliderProps) {\n return (\n <AriaColorSlider\n className={composeRenderProps(className, (c) => cx(styles.slider, c))}\n data-size=\"m\"\n {...props}\n />\n );\n}\n\nfunction Area({ className, ...props }: AriaColorAreaProps) {\n return (\n <AriaColorArea\n className={composeRenderProps(className, (c) => cx(styles.area, c))}\n {...props}\n />\n );\n}\n\nfunction SliderTrack({ className, style, ...props }: AriaSliderTrackProps) {\n return (\n <AriaSliderTrack\n className={composeRenderProps(className, (c) => cx(styles.sliderTrack, c))}\n style={(renderProps) => {\n const fromUser = typeof style === \"function\" ? style(renderProps) : style;\n const baseBg = renderProps.defaultStyle.background;\n const layered =\n renderProps.isDisabled || baseBg === undefined\n ? baseBg\n : `${String(baseBg)}, ${CHECKER_BG}`;\n return {\n ...renderProps.defaultStyle,\n ...fromUser,\n ...(layered !== undefined ? { background: layered } : null),\n };\n }}\n {...props}\n />\n );\n}\n\nfunction Thumb({ className, ...props }: AriaColorThumbProps) {\n return (\n <AriaColorThumb\n className={composeRenderProps(className, (c) => cx(styles.thumb, c))}\n {...props}\n />\n );\n}\n\nfunction AreaThumb({ className, ...props }: AriaColorThumbProps) {\n return (\n <AriaColorThumb\n className={composeRenderProps(className, (c) => cx(styles.thumbArea, c))}\n {...props}\n />\n );\n}\n\nfunction SwatchPicker({ className, ...props }: AriaColorSwatchPickerProps) {\n return (\n <AriaColorSwatchPicker\n className={composeRenderProps(className, (c) => cx(styles.swatchPicker, c))}\n {...props}\n />\n );\n}\n\nfunction SwatchPickerItem({ className, ...props }: AriaColorSwatchPickerItemProps) {\n return (\n <AriaColorSwatchPickerItem\n className={composeRenderProps(className, (c) => cx(styles.swatchItem, c))}\n {...props}\n />\n );\n}\n\nfunction Swatch({ className, style, ...props }: AriaColorSwatchProps) {\n return (\n <AriaColorSwatch\n className={composeRenderProps(className, (c) => cx(styles.swatch, c))}\n style={(renderProps) => {\n const fromUser = typeof style === \"function\" ? style(renderProps) : style;\n const baseBg = renderProps.defaultStyle.background;\n return {\n ...renderProps.defaultStyle,\n ...fromUser,\n ...(baseBg !== undefined ? { background: `${String(baseBg)}, ${CHECKER_BG}` } : null),\n };\n }}\n {...props}\n />\n );\n}\n\nfunction Output(props: AriaSliderOutputProps) {\n return (\n <AriaSliderOutput\n {...props}\n className={composeRenderProps(props.className, (c) => cx(styles.sliderValue, c))}\n />\n );\n}\n\nfunction SliderMeta({ label }: { label: React.ReactNode }) {\n return (\n <div className={styles.sliderHeader}>\n <span className={styles.sliderLabel}>{label}</span>\n <Output />\n </div>\n );\n}\n\nfunction HexInput({ size = \"m\", label = \"Hex\", className }: ColorPickerHexInputProps) {\n const state = React.useContext(ColorPickerStateContext);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [text, setText] = React.useState(() => {\n if (!state) {\n return \"\";\n }\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n return c.toString(a < 1 ? \"hexa\" : \"hex\");\n });\n const colorFingerprint = state ? state.color.toString(\"hexa\") : \"\";\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: \u043E\u0431\u044A\u0435\u043A\u0442 state \u043E\u0442 RAC \u0441\u0442\u0430\u0431\u0438\u043B\u0435\u043D \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435; \u043F\u0435\u0440\u0435\u0441\u0438\u043D\u0445\u0440\u043E\u043D \u043F\u0440\u0438 \u0441\u043C\u0435\u043D\u0435 \u0446\u0432\u0435\u0442\u0430 \u0434\u0430\u0451\u0442 \u0442\u043E\u043B\u044C\u043A\u043E colorFingerprint\n React.useEffect(() => {\n if (!state) {\n return;\n }\n if (inputRef.current && document.activeElement === inputRef.current) {\n return;\n }\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n setText(c.toString(a < 1 ? \"hexa\" : \"hex\"));\n }, [colorFingerprint]);\n\n if (!state) {\n return null;\n }\n\n const commit = () => {\n try {\n state.setColor(parseColor(text.trim()));\n } catch {\n const c = state.color;\n const a = c.getChannelValue(\"alpha\");\n setText(c.toString(a < 1 ? \"hexa\" : \"hex\"));\n }\n };\n\n return (\n <Input.Root className={className} label={label} size={size}>\n <Input.Wrapper>\n <Input.Field\n ref={inputRef}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n value={text}\n onBlur={commit}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n (e.target as HTMLInputElement).blur();\n }\n }}\n />\n </Input.Wrapper>\n </Input.Root>\n );\n}\n\nconst EyeDropperButton = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentPropsWithoutRef<typeof Button.Root>, \"variant\" | \"mode\" | \"size\">\n>(function EyeDropperButton(\n { children, onClick, type = \"button\", \"aria-label\": ariaLabel, className, ...rest },\n forwardedRef,\n) {\n const state = React.useContext(ColorPickerStateContext);\n const EyeDropperApi =\n typeof globalThis !== \"undefined\"\n ? (globalThis as unknown as { EyeDropper?: EyeDropperCtor }).EyeDropper\n : undefined;\n\n if (!state) {\n return null;\n }\n\n if (!EyeDropperApi) {\n return (\n <Button.Root\n ref={forwardedRef}\n aria-hidden\n className={cx(styles.eyeDropperSquare, className)}\n disabled\n mode=\"stroke\"\n tabIndex={-1}\n type={type}\n variant=\"neutral\"\n {...rest}\n >\n {children}\n </Button.Root>\n );\n }\n\n return (\n <Button.Root\n ref={forwardedRef}\n type={type}\n aria-label={ariaLabel ?? \"\u041F\u0438\u043F\u0435\u0442\u043A\u0430\"}\n className={cx(styles.eyeDropperSquare, className)}\n mode=\"stroke\"\n variant=\"neutral\"\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) {\n return;\n }\n void new EyeDropperApi()\n .open()\n .then((result) => state.setColor(parseColor(result.sRGBHex)))\n .catch(() => {});\n }}\n {...rest}\n >\n {children}\n </Button.Root>\n );\n});\n\nEyeDropperButton.displayName = \"EyeDropperButton\";\n\nexport type ColorPickerTriggerSwatchProps = {\n className?: string;\n};\n\n/** \u041A\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043A \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 {@link ColorPickerStateContext}; \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043F\u043E\u043F\u043E\u0432\u0435\u0440\u0430 \u0438 \u0442.\u043F. */\nfunction TriggerSwatch({ className }: ColorPickerTriggerSwatchProps) {\n const state = React.useContext(ColorPickerStateContext);\n const colorCss = state != null ? state.color.toString(\"css\") : TRIGGER_SWATCH_FALLBACK_FILL;\n return (\n <span aria-hidden className={cx(styles.triggerSwatch, className)}>\n <svg\n className={styles.triggerSwatchSvg}\n aria-hidden=\"true\"\n viewBox=\"0 0 1 1\"\n preserveAspectRatio=\"none\"\n >\n <rect width=\"1\" height=\"1\" fill={colorCss} />\n </svg>\n </span>\n );\n}\n\nTriggerSwatch.displayName = \"ColorPicker.TriggerSwatch\";\n\nexport const ColorPicker = {\n Root: ColorPickerRoot,\n TriggerSwatch,\n FormatProvider,\n FormatSelect,\n ChannelStrip: ChannelStripWithIcon,\n Field,\n HexInput,\n Area,\n AreaThumb,\n Slider,\n SliderMeta,\n SliderTrack,\n Thumb,\n Output,\n SwatchPicker,\n SwatchPickerItem,\n Swatch,\n EyeDropperButton,\n};\n", "import * as React from \"react\";\nimport { Hint } from \"@/components/hint/Hint\";\nimport { useFieldIds } from \"@/hooks/useFieldIds\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { HintSize, InputSize } from \"@/internal/states\";\n\nimport composableStyles from \"./Input.module.css\";\n\n// \u2500\u2500\u2500 Composable API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype InputContextValue = {\n size: InputSize;\n hasError: boolean;\n inputId: string;\n describedBy: string | undefined;\n};\n\nconst [InputProvider, useInputContext] = createComponentContext<InputContextValue>(\"Input\");\n\n// ---- InputRoot ----\n\nexport type InputRootProps = {\n size?: InputSize;\n /** Mark the field as invalid visually and propagate aria-invalid to the input. */\n hasError?: boolean;\n label?: React.ReactNode;\n optionalLabel?: React.ReactNode;\n hint?: React.ReactNode;\n /** Error message rendered below the field; also sets hasError=true. */\n error?: React.ReactNode;\n /** Explicit id for the underlying <input>; auto-generated if omitted. */\n id?: string;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction InputRoot({\n size = \"m\",\n hasError: hasErrorProp = false,\n label,\n optionalLabel,\n hint,\n error,\n id,\n children,\n className,\n}: InputRootProps) {\n const hasError = hasErrorProp || Boolean(error);\n const { inputId, hintId, errorId, describedBy } = useFieldIds(id, {\n hasHint: Boolean(hint),\n hasError: Boolean(error),\n });\n\n return (\n <InputProvider value={{ size, hasError, inputId, describedBy }}>\n <ControlSizeProvider value={size}>\n <div className={cx(composableStyles.root, className)} {...toDataAttributes({ size })}>\n {(label != null || optionalLabel != null) && (\n <div className={composableStyles.header}>\n {label != null ? (\n <label htmlFor={inputId} className={composableStyles.label}>\n {label}\n </label>\n ) : (\n <span />\n )}\n {optionalLabel != null && (\n <span className={composableStyles.optionalLabel}>{optionalLabel}</span>\n )}\n </div>\n )}\n {children}\n {(hint != null || error != null) && (\n <div className={composableStyles.meta}>\n {hint != null && (\n <Hint.Root\n id={hintId}\n size={size as HintSize}\n className={composableStyles.metaHint}\n >\n {hint}\n </Hint.Root>\n )}\n {error != null && (\n <Hint.Root\n id={errorId}\n size={size as HintSize}\n variant=\"error\"\n className={composableStyles.metaHint}\n >\n {error}\n </Hint.Root>\n )}\n </div>\n )}\n </div>\n </ControlSizeProvider>\n </InputProvider>\n );\n}\nInputRoot.displayName = \"Input.Root\";\n\n// ---- InputWrapper ----\n\nexport type InputWrapperProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nfunction InputWrapper({ children, className }: InputWrapperProps) {\n const { size, hasError } = useInputContext();\n\n return (\n <div\n className={cx(composableStyles.wrapper, className)}\n {...toDataAttributes({ size, \"has-error\": hasError })}\n >\n {children}\n </div>\n );\n}\nInputWrapper.displayName = \"Input.Wrapper\";\n\n// ---- InputField ----\n\nexport type InputFieldProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">;\n\nconst InputField = React.forwardRef<HTMLInputElement, InputFieldProps>(\n ({ className, \"aria-describedby\": ariaDescribedBy, ...rest }, ref) => {\n const { inputId, hasError, describedBy } = useInputContext();\n\n const resolvedDescribedBy =\n [ariaDescribedBy, describedBy].filter(Boolean).join(\" \") || undefined;\n\n return (\n <input\n ref={ref}\n id={inputId}\n className={cx(composableStyles.field, className)}\n aria-invalid={hasError || undefined}\n aria-describedby={resolvedDescribedBy}\n {...rest}\n />\n );\n },\n);\nInputField.displayName = \"Input.Field\";\n\n// ---- InputIcon ----\n\nexport type InputIconProps = {\n side: \"start\" | \"end\";\n children: React.ReactNode;\n className?: string;\n};\n\nfunction InputIcon({ side, children, className }: InputIconProps) {\n return (\n <span className={cx(composableStyles.icon, className)} data-side={side} aria-hidden=\"true\">\n {children}\n </span>\n );\n}\nInputIcon.displayName = \"Input.Icon\";\n\n// ---- InputAffix ----\n\nexport type InputAffixProps = {\n side: \"start\" | \"end\";\n children: React.ReactNode;\n className?: string;\n};\n\nfunction InputAffix({ side, children, className }: InputAffixProps) {\n return (\n <div className={cx(composableStyles.affix, className)} data-side={side} aria-hidden=\"true\">\n {children}\n </div>\n );\n}\nInputAffix.displayName = \"Input.Affix\";\n\n// ---- InputInlineAffix ----\n\nexport type InputInlineAffixProps = {\n side: \"start\" | \"end\";\n children: React.ReactNode;\n className?: string;\n};\n\nfunction InputInlineAffix({ side, children, className }: InputInlineAffixProps) {\n return (\n <span\n className={cx(composableStyles.inlineAffix, className)}\n data-side={side}\n aria-hidden=\"true\"\n >\n {children}\n </span>\n );\n}\nInputInlineAffix.displayName = \"Input.InlineAffix\";\n\n// ---- Namespace export ----\n\nexport const Input = {\n Root: InputRoot,\n Wrapper: InputWrapper,\n Field: InputField,\n Icon: InputIcon,\n Affix: InputAffix,\n InlineAffix: InputInlineAffix,\n};\n\n// Export context hook for advanced consumers (e.g. custom sub-components)\nexport { useInputContext };\n", "import * as React from \"react\";\n\ntype UseFieldIdsResult = {\n inputId: string;\n hintId: string;\n errorId: string;\n describedBy: string | undefined;\n};\n\n/**\n * Generates stable IDs for form field elements and builds aria-describedby.\n * Shared by Input, Select, Checkbox, Radio, Switch, Textarea.\n */\nexport function useFieldIds(\n explicitId?: string,\n options: { hasHint?: boolean; hasError?: boolean; extraDescribedBy?: string } = {},\n): UseFieldIdsResult {\n const generated = React.useId();\n const inputId = explicitId ?? generated;\n const hintId = `${inputId}-hint`;\n const errorId = `${inputId}-error`;\n\n const parts = [\n options.extraDescribedBy,\n options.hasHint ? hintId : undefined,\n options.hasError ? errorId : undefined,\n ].filter(Boolean);\n\n const describedBy = parts.length > 0 ? parts.join(\" \") : undefined;\n\n return { inputId, hintId, errorId, describedBy };\n}\n", "/* ---- Root ---- */\n.root {\n --prime-input-text: var(--prime-sys-size-control-m-text);\n --prime-input-support-text: var(--prime-sys-size-control-m-supportText);\n --prime-input-icon: var(--prime-sys-size-control-m-icon);\n --prime-input-stack-gap: var(--prime-sys-size-control-m-gap);\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: grid;\n gap: var(--prime-input-stack-gap);\n}\n\n.root[data-size=\"s\"] {\n --prime-input-text: var(--prime-sys-size-control-s-text);\n --prime-input-support-text: var(--prime-sys-size-control-s-supportText);\n --prime-input-icon: var(--prime-sys-size-control-s-icon);\n --prime-input-stack-gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"l\"] {\n --prime-input-text: var(--prime-sys-size-control-l-text);\n --prime-input-support-text: var(--prime-sys-size-control-l-supportText);\n --prime-input-icon: var(--prime-sys-size-control-l-icon);\n --prime-input-stack-gap: var(--prime-sys-size-control-l-gap);\n}\n\n.root[data-size=\"xl\"] {\n --prime-input-text: var(--prime-sys-size-control-xl-text);\n --prime-input-support-text: var(--prime-sys-size-control-xl-supportText);\n --prime-input-icon: var(--prime-sys-size-control-xl-icon);\n --prime-input-stack-gap: var(--prime-sys-size-control-xl-gap);\n}\n\n/* ---- Header ---- */\n.header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--prime-input-stack-gap);\n}\n\n.label {\n font-size: var(--prime-input-support-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n}\n\n.optionalLabel {\n font-size: var(--prime-input-support-text);\n color: var(--prime-sys-color-content-muted);\n}\n\n/* ---- Wrapper ---- */\n.wrapper {\n position: relative;\n display: flex;\n align-items: center;\n overflow: hidden;\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-field-bg);\n color: var(--prime-sys-color-field-text);\n border-radius: var(--prime-sys-size-control-m-radius);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n transition:\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n/* Hover \u2014 fires on wrapper hover, disabled + focus excluded */\n.wrapper:hover:not(:has(input:focus-visible)):not(:has(input:disabled)) {\n border-color: var(--prime-sys-color-field-borderHover);\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n box-shadow: none;\n}\n\n/* Focus ring via :has */\n.wrapper:has(input:focus-visible) {\n border-color: var(--prime-sys-color-field-borderFocus);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n/* Error */\n.wrapper[data-has-error=\"true\"] {\n border-color: var(--prime-sys-color-field-borderError);\n}\n\n.wrapper[data-has-error=\"true\"]:has(input:focus-visible) {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n/* Disabled */\n.wrapper:has(input:disabled) {\n background: var(--prime-sys-color-surface-accentSoft);\n border-color: transparent;\n box-shadow: none;\n cursor: not-allowed;\n}\n\n/* ---- Size variants ---- */\n.wrapper[data-size=\"s\"] {\n height: var(--prime-sys-size-control-s-height);\n border-radius: var(--prime-sys-size-control-s-radius);\n padding-inline: var(--prime-sys-size-control-s-inputPaddingX);\n padding-block: var(--prime-sys-size-control-s-inputPaddingY);\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n.wrapper[data-size=\"m\"] {\n height: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-size-control-m-radius);\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n padding-block: var(--prime-sys-size-control-m-inputPaddingY);\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n.wrapper[data-size=\"l\"] {\n height: var(--prime-sys-size-control-l-height);\n border-radius: var(--prime-sys-size-control-l-radius);\n padding-inline: var(--prime-sys-size-control-l-inputPaddingX);\n padding-block: var(--prime-sys-size-control-l-inputPaddingY);\n gap: var(--prime-sys-size-control-l-gap);\n}\n\n.wrapper[data-size=\"xl\"] {\n height: var(--prime-sys-size-control-xl-height);\n border-radius: var(--prime-sys-size-control-xl-radius);\n padding-inline: var(--prime-sys-size-control-xl-inputPaddingX);\n padding-block: var(--prime-sys-size-control-xl-inputPaddingY);\n gap: var(--prime-sys-size-control-xl-gap);\n}\n\n/* When affix is present, remove wrapper padding on that side */\n.wrapper:has(.affix[data-side=\"start\"]) {\n padding-inline-start: 0;\n}\n\n.wrapper:has(.affix[data-side=\"end\"]) {\n padding-inline-end: 0;\n}\n\n/* ---- Field (input element) ---- */\n.field {\n -webkit-appearance: none;\n appearance: none;\n flex: 1 1 auto;\n min-width: 0;\n border: 0;\n background: transparent;\n color: inherit;\n outline: none;\n box-shadow: none;\n font-size: var(--prime-input-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n}\n\n.field:focus,\n.field:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n.field::-webkit-search-decoration,\n.field::-webkit-search-cancel-button,\n.field::-webkit-search-results-button,\n.field::-webkit-search-results-decoration {\n -webkit-appearance: none;\n}\n\n.field::placeholder {\n color: var(--prime-sys-color-field-placeholder);\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.wrapper:hover .field::placeholder,\n.wrapper:has(input:focus-visible) .field::placeholder {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.field:disabled {\n color: var(--prime-sys-color-content-disabled);\n cursor: not-allowed;\n}\n\n/* ---- Icon ---- */\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--prime-input-icon);\n height: var(--prime-input-icon);\n color: var(--prime-sys-color-content-muted);\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.icon[data-side=\"start\"] {\n order: -1;\n}\n\n.icon[data-side=\"end\"] {\n order: 1;\n}\n\n.wrapper:hover .icon,\n.wrapper:has(input:focus-visible) .icon {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.wrapper:has(input:disabled) .icon {\n color: var(--prime-sys-color-content-disabled);\n}\n\n/* ---- Affix (sectioned block with border) ---- */\n.affix {\n display: flex;\n align-items: center;\n align-self: stretch;\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n font-size: var(--prime-input-text);\n white-space: nowrap;\n flex-shrink: 0;\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n}\n\n.affix[data-side=\"start\"] {\n border-right: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n order: -1;\n}\n\n.affix[data-side=\"end\"] {\n border-left: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n order: 1;\n}\n\n.wrapper[data-size=\"s\"] .affix {\n padding-inline: var(--prime-sys-size-control-s-inputPaddingX);\n}\n\n.wrapper[data-size=\"m\"] .affix {\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n}\n\n.wrapper[data-size=\"l\"] .affix {\n padding-inline: var(--prime-sys-size-control-l-inputPaddingX);\n}\n\n.wrapper[data-size=\"xl\"] .affix {\n padding-inline: var(--prime-sys-size-control-xl-inputPaddingX);\n}\n\n/* ---- InlineAffix ---- */\n.inlineAffix {\n color: var(--prime-sys-color-content-muted);\n font-size: var(--prime-input-text);\n flex-shrink: 0;\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.inlineAffix[data-side=\"start\"] {\n order: -1;\n}\n\n.inlineAffix[data-side=\"end\"] {\n order: 1;\n}\n\n.wrapper:hover .inlineAffix,\n.wrapper:has(input:focus-visible) .inlineAffix {\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* ---- Meta (hint + error) ---- */\n.meta {\n display: grid;\n gap: var(--prime-sys-spacing-x1);\n}\n\n.metaHint {\n width: 100%;\n max-width: 100%;\n}\n", "import * as React from \"react\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useEscapeKey } from \"@/hooks/useEscapeKey\";\nimport { useOutsideClick } from \"@/hooks/useOutsideClick\";\nimport { usePosition } from \"@/hooks/usePosition\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport { useOverlayPortalLayer } from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\nimport type { SelectSize } from \"@/internal/states\";\n\nimport styles from \"./Select.module.css\";\nimport { handleSelectListboxKeyDown, queryEnabledSelectOptions } from \"./selectListbox\";\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype SelectedLabelBinding = { value: string; label: string };\n\ntype SelectContextValue = {\n size: SelectSize;\n hasError: boolean;\n isOpen: boolean;\n selectedValue: string | undefined;\n /** Label shown in trigger; only applies while `binding.value === selectedValue` (avoids stale label on controlled value changes). */\n selectedLabelBinding: SelectedLabelBinding | undefined;\n onSelect: (value: string, label: string) => void;\n onClose: () => void;\n onOpen: () => void;\n highlightedValue: string | undefined;\n setHighlightedValue: (v: string | undefined) => void;\n triggerId: string;\n listboxId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n disabled?: boolean;\n placeholder?: string;\n onInitLabel: (value: string, label: string) => void;\n};\n\nconst [SelectProvider, useSelectContext] = createComponentContext<SelectContextValue>(\"Select\");\n\n// \u2500\u2500\u2500 SelectRoot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectRootProps = {\n size?: SelectSize;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n placeholder?: string;\n hasError?: boolean;\n /**\n * When `true`, renders a native `<select>` (options from `Select.Item` / groups in the tree).\n * Default `false` \u2014 custom combobox with portaled listbox.\n */\n native?: boolean;\n children: React.ReactNode;\n};\n\nfunction SelectRoot(props: SelectRootProps) {\n const { native = false, ...rest } = props;\n if (native) {\n return <SelectNativeRoot {...rest} />;\n }\n return <SelectComboboxRoot {...rest} />;\n}\nSelectRoot.displayName = \"SelectRoot\";\n\nfunction SelectComboboxRoot({\n size = \"m\",\n value,\n defaultValue,\n onChange,\n disabled,\n placeholder,\n hasError = false,\n children,\n}: Omit<SelectRootProps, \"native\">) {\n const handleChange = React.useCallback(\n (v: string | undefined) => {\n if (v !== undefined) onChange?.(v);\n },\n [onChange],\n );\n\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\n value,\n defaultValue,\n onChange: handleChange,\n });\n\n const [selectedLabelBinding, setSelectedLabelBinding] = React.useState<\n SelectedLabelBinding | undefined\n >(undefined);\n const [isOpen, setIsOpen] = React.useState(false);\n const [highlightedValue, setHighlightedValue] = React.useState<string | undefined>(undefined);\n\n const generatedId = React.useId();\n const triggerId = `${generatedId}-trigger`;\n const listboxId = `${generatedId}-listbox`;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n // Sync ref so onInitLabel doesn't go stale\n const selectedValueRef = React.useRef(selectedValue);\n selectedValueRef.current = selectedValue;\n\n const onInitLabel = React.useCallback((val: string, label: string) => {\n if (val === selectedValueRef.current) {\n setSelectedLabelBinding({ value: val, label });\n }\n }, []);\n\n const onSelect = React.useCallback(\n (val: string, label: string) => {\n setSelectedValue(val);\n setSelectedLabelBinding({ value: val, label });\n setIsOpen(false);\n },\n [setSelectedValue],\n );\n\n const onClose = React.useCallback(() => setIsOpen(false), []);\n const onOpen = React.useCallback(() => setIsOpen(true), []);\n\n return (\n <SelectProvider\n value={{\n size,\n hasError,\n isOpen,\n selectedValue,\n selectedLabelBinding,\n onSelect,\n onClose,\n onOpen,\n highlightedValue,\n setHighlightedValue,\n triggerId,\n listboxId,\n triggerRef,\n disabled,\n placeholder,\n onInitLabel,\n }}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </SelectProvider>\n );\n}\nSelectComboboxRoot.displayName = \"SelectComboboxRoot\";\n\n// \u2500\u2500\u2500 SelectTrigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectTriggerProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"id\" | \"type\" | \"role\"\n>;\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, onClick, onKeyDown, ...rest }, forwardedRef) => {\n const { isOpen, onOpen, onClose, triggerId, listboxId, disabled, size, hasError, triggerRef } =\n useSelectContext();\n\n const setRefs = React.useCallback(\n (el: HTMLButtonElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLButtonElement | null>).current = el;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLButtonElement | null>).current = el;\n }\n },\n [forwardedRef, triggerRef],\n );\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!disabled) {\n if (isOpen) onClose();\n else onOpen();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if ([\"ArrowDown\", \"ArrowUp\", \" \", \"Enter\"].includes(e.key)) {\n e.preventDefault();\n if (!isOpen) onOpen();\n }\n };\n\n return (\n <button\n ref={setRefs}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cx(styles.trigger, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...toDataAttributes({ open: isOpen, size, \"has-error\": hasError })}\n {...rest}\n >\n <span className={styles.triggerMain}>{children}</span>\n <span className={styles.triggerChevronSlot} aria-hidden>\n <span className={styles.triggerChevron} />\n </span>\n </button>\n );\n },\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\n// \u2500\u2500\u2500 SelectValue \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectValueProps = {\n className?: string;\n};\n\nfunction SelectValue({ className }: SelectValueProps) {\n const { selectedLabelBinding, selectedValue, placeholder } = useSelectContext();\n /* \u041F\u043E\u0434\u043F\u0438\u0441\u044C \u0438\u0437 items \u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E value; \u0438\u043D\u0430\u0447\u0435 \u2014 raw value \u0438\u043B\u0438 placeholder \u0434\u043E onInitLabel */\n const display =\n selectedLabelBinding && selectedLabelBinding.value === selectedValue\n ? selectedLabelBinding.label\n : (selectedValue ?? placeholder);\n return (\n <span\n className={cx(styles.triggerValue, className)}\n {...toDataAttributes({ placeholder: display == null || display === \"\" })}\n >\n {display}\n </span>\n );\n}\nSelectValue.displayName = \"SelectValue\";\n\n// \u2500\u2500\u2500 SelectTriggerIcon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectTriggerIconProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction SelectTriggerIcon({ className, children, ...rest }: SelectTriggerIconProps) {\n return (\n <span className={cx(styles.triggerIcon, className)} {...rest}>\n {children}\n </span>\n );\n}\nSelectTriggerIcon.displayName = \"SelectTriggerIcon\";\n\n// \u2500\u2500\u2500 SelectContent \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectContentProps = {\n className?: string;\n children: React.ReactNode;\n};\n\nfunction SelectContent({ className, children }: SelectContentProps) {\n const {\n isOpen,\n onClose,\n onSelect,\n triggerId,\n listboxId,\n triggerRef,\n highlightedValue,\n setHighlightedValue,\n selectedValue,\n size,\n } = useSelectContext();\n\n const overlayPortalLayer = useOverlayPortalLayer();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const { resolvedSide, update } = usePosition(triggerRef, contentRef, {\n side: \"bottom\",\n align: \"start\",\n });\n\n const getItems = React.useCallback(() => queryEnabledSelectOptions(contentRef.current), []);\n\n /* \u041F\u043E\u0437\u0438\u0446\u0438\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u0433\u0434\u0430 \u0441\u043F\u0438\u0441\u043E\u043A \u043E\u0442\u043A\u0440\u044B\u0442 */\n React.useLayoutEffect(() => {\n if (!isOpen) return;\n update();\n const rafId = requestAnimationFrame(() => update());\n return () => cancelAnimationFrame(rafId);\n }, [isOpen, update]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setHighlightedValue(undefined);\n return;\n }\n\n const reposition = () => {\n requestAnimationFrame(() => update());\n };\n\n const bootstrap = () => {\n requestAnimationFrame(() => {\n const el = contentRef.current;\n if (!el) return;\n el.focus({ preventScroll: true });\n const items = queryEnabledSelectOptions(el);\n const selectedIndex = items.findIndex((i) => i.dataset.value === selectedValue);\n // \u0412\u044B\u0434\u0435\u043B\u044F\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435; \u0438\u043D\u0430\u0447\u0435 \u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C undefined\n if (selectedIndex >= 0 && selectedValue) {\n setHighlightedValue(selectedValue);\n }\n });\n };\n\n bootstrap();\n window.addEventListener(\"resize\", reposition);\n const vv = window.visualViewport;\n vv?.addEventListener(\"resize\", reposition);\n return () => {\n window.removeEventListener(\"resize\", reposition);\n vv?.removeEventListener(\"resize\", reposition);\n };\n }, [isOpen, update, selectedValue, setHighlightedValue]);\n\n useEscapeKey({ enabled: isOpen, onEscape: onClose });\n useOutsideClick({ refs: [triggerRef, contentRef], enabled: isOpen, onOutsideClick: onClose });\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n handleSelectListboxKeyDown(e, {\n items: getItems(),\n highlightedValue,\n setHighlightedValue,\n onSelect,\n onClose,\n });\n };\n\n return (\n <Portal>\n <ScrollContainer\n ref={contentRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={triggerId}\n aria-hidden={!isOpen}\n tabIndex={-1}\n data-react-aria-top-layer=\"true\"\n data-overlay-portal-layer={overlayPortalLayer}\n className={cx(styles.content, className)}\n onKeyDown={handleKeyDown}\n style={{ display: isOpen ? undefined : \"none\" }}\n {...toDataAttributes({ side: resolvedSide, size })}\n >\n {children}\n </ScrollContainer>\n </Portal>\n );\n}\nSelectContent.displayName = \"SelectContent\";\n\n// \u2500\u2500\u2500 SelectItemIcon (\u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u0434\u043E SelectItem \u2014 partition \u043F\u043E child.type) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectItemIconProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction SelectItemIcon({ className, children, ...rest }: SelectItemIconProps) {\n return (\n <span className={cx(styles.itemIcon, className)} {...rest}>\n {children}\n </span>\n );\n}\nSelectItemIcon.displayName = \"SelectItemIcon\";\n\nfunction selectItemTextFromRest(rest: React.ReactNode[]): string | undefined {\n const parts: string[] = [];\n for (const node of rest) {\n if (typeof node === \"string\" || typeof node === \"number\") {\n const s = String(node).trim();\n if (s.length > 0) parts.push(s);\n }\n }\n return parts.length > 0 ? parts.join(\" \") : undefined;\n}\n\nfunction partitionSelectItemChildren(children: React.ReactNode) {\n const icons: React.ReactElement[] = [];\n const rest: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === SelectItemIcon) {\n icons.push(child);\n } else if (child != null && child !== false) {\n rest.push(child);\n }\n });\n\n return { icons, rest };\n}\n\n// \u2500\u2500\u2500 SelectItem \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectItemProps = {\n value: string;\n /** Explicit label for display in trigger; falls back to string children, then value */\n label?: string;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n ({ value, label, disabled, className, children }, ref) => {\n const { selectedValue, highlightedValue, setHighlightedValue, onSelect, onInitLabel } =\n useSelectContext();\n\n const { icons, rest } = partitionSelectItemChildren(children);\n\n const isSelected = selectedValue === value;\n const isHighlighted = highlightedValue === value;\n const resolvedLabel =\n label ??\n selectItemTextFromRest(rest) ??\n (typeof children === \"string\" ? children : undefined) ??\n value;\n\n // Controlled selection can change without this item's props changing \u2014 re-register label for the current value.\n // biome-ignore lint/correctness/useExhaustiveDependencies: selectedValue intentionally forces re-run for external value updates\n React.useEffect(() => {\n onInitLabel(value, resolvedLabel);\n }, [value, resolvedLabel, onInitLabel, selectedValue]);\n\n const handleClick = () => {\n if (!disabled) onSelect(value, resolvedLabel);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) {\n e.preventDefault();\n onSelect(value, resolvedLabel);\n }\n };\n\n const handleMouseEnter = () => {\n if (!disabled) setHighlightedValue(value);\n };\n\n return (\n <div\n ref={ref}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n tabIndex={-1}\n className={cx(styles.item, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n {...toDataAttributes({\n value,\n label: resolvedLabel,\n selected: isSelected,\n highlighted: isHighlighted,\n disabled: Boolean(disabled),\n })}\n >\n {icons.map((icon, index) =>\n React.cloneElement(icon, {\n key: icon.key ?? `prime-select-item-icon-${String(index)}`,\n }),\n )}\n <span className={styles.itemText}>{rest}</span>\n {isSelected ? (\n <span className={styles.itemCheckSlot} aria-hidden=\"true\">\n <span className={styles.itemCheck} />\n </span>\n ) : null}\n </div>\n );\n },\n);\nSelectItem.displayName = \"SelectItem\";\n\n// \u2500\u2500\u2500 SelectGroup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectGroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction SelectGroup({ className, ...rest }: SelectGroupProps) {\n // biome-ignore lint/a11y/useSemanticElements: role=\"group\" is correct for ARIA listbox groups; <fieldset> is not valid inside role=\"listbox\"\n return <div role=\"group\" className={cx(styles.group, className)} {...rest} />;\n}\nSelectGroup.displayName = \"SelectGroup\";\n\n// \u2500\u2500\u2500 SelectGroupLabel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectGroupLabelProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction SelectGroupLabel({ className, ...rest }: SelectGroupLabelProps) {\n return <div className={cx(styles.groupLabel, className)} {...rest} />;\n}\nSelectGroupLabel.displayName = \"SelectGroupLabel\";\n\n// \u2500\u2500\u2500 SelectSeparator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SelectSeparatorProps = React.HTMLAttributes<HTMLHRElement>;\n\nfunction SelectSeparator({ className, ...rest }: SelectSeparatorProps) {\n return <hr className={cx(styles.separator, className)} {...rest} />;\n}\nSelectSeparator.displayName = \"SelectSeparator\";\n\n// \u2500\u2500\u2500 Native <select> (Select.Root native) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype NativeOptionsWalkResult = {\n nodes: React.ReactNode[];\n firstEnabledValue: string | undefined;\n};\n\nfunction extractPlainTextFromNode(node: React.ReactNode): string {\n if (node == null || typeof node === \"boolean\") return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(extractPlainTextFromNode).join(\"\");\n if (React.isValidElement(node)) {\n const p = node.props as { children?: React.ReactNode };\n if (p != null && typeof p === \"object\" && \"children\" in p) {\n return extractPlainTextFromNode(p.children);\n }\n }\n return \"\";\n}\n\nfunction renderNativeOptionElement(\n el: React.ReactElement<SelectItemProps>,\n keyIndex: number,\n): React.ReactNode {\n const { value, label, disabled, children } = el.props;\n const { rest } = partitionSelectItemChildren(children);\n const resolvedLabel =\n label ??\n selectItemTextFromRest(rest) ??\n (typeof children === \"string\" ? children : undefined) ??\n value;\n return (\n <option key={`prime-select-native-opt-${keyIndex}`} value={value} disabled={disabled}>\n {resolvedLabel}\n </option>\n );\n}\n\nfunction walkNativeOptions(node: React.ReactNode): NativeOptionsWalkResult {\n const nodes: React.ReactNode[] = [];\n let firstEnabledValue: string | undefined;\n let keyIndex = 0;\n\n const visit = (n: React.ReactNode) => {\n React.Children.forEach(n, (child) => {\n if (child == null || child === false) return;\n if (!React.isValidElement(child)) return;\n if (child.type === React.Fragment) {\n visit((child.props as { children?: React.ReactNode }).children);\n return;\n }\n if (child.type === SelectItem) {\n const p = child.props as SelectItemProps;\n if (!p.disabled && firstEnabledValue === undefined) {\n firstEnabledValue = p.value;\n }\n nodes.push(\n renderNativeOptionElement(child as React.ReactElement<SelectItemProps>, keyIndex),\n );\n keyIndex += 1;\n return;\n }\n if (child.type === SelectGroup) {\n const ogKey = keyIndex;\n let groupLabel = \"\";\n const groupNodes: React.ReactNode[] = [];\n React.Children.forEach((child.props as { children?: React.ReactNode }).children, (gc) => {\n if (!React.isValidElement(gc)) return;\n if (gc.type === SelectGroupLabel) {\n groupLabel = extractPlainTextFromNode(\n (gc.props as { children?: React.ReactNode }).children,\n );\n } else if (gc.type === SelectItem) {\n const gp = gc.props as SelectItemProps;\n if (!gp.disabled && firstEnabledValue === undefined) {\n firstEnabledValue = gp.value;\n }\n groupNodes.push(\n renderNativeOptionElement(gc as React.ReactElement<SelectItemProps>, keyIndex),\n );\n keyIndex += 1;\n }\n });\n nodes.push(\n <optgroup key={`prime-select-native-og-${ogKey}`} label={groupLabel || \"\\u00A0\"}>\n {groupNodes}\n </optgroup>,\n );\n return;\n }\n if (child.type === SelectSeparator) {\n return;\n }\n const wrapProps = child.props as { children?: React.ReactNode };\n if (wrapProps.children != null) {\n visit(wrapProps.children);\n }\n });\n };\n\n visit(node);\n return { nodes, firstEnabledValue };\n}\n\ntype SelectNativeRootProps = Omit<SelectRootProps, \"native\">;\n\nfunction SelectNativeRoot({\n size = \"m\",\n value,\n defaultValue,\n onChange,\n disabled,\n placeholder,\n hasError = false,\n children,\n}: SelectNativeRootProps) {\n const handleChange = React.useCallback(\n (v: string | undefined) => {\n if (v !== undefined) onChange?.(v);\n },\n [onChange],\n );\n\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\n value,\n defaultValue,\n onChange: handleChange,\n });\n\n const { nodes: optionNodes, firstEnabledValue } = React.useMemo(\n () => walkNativeOptions(children),\n [children],\n );\n\n const hasPlaceholder = placeholder != null && placeholder !== \"\";\n const selectValue =\n selectedValue === undefined ? (hasPlaceholder ? \"\" : (firstEnabledValue ?? \"\")) : selectedValue;\n\n const handleNativeChange = React.useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n const v = e.target.value;\n setSelectedValue(v === \"\" ? undefined : v);\n },\n [setSelectedValue],\n );\n\n return (\n <ControlSizeProvider value={size}>\n <select\n className={styles.nativeSelect}\n disabled={disabled}\n value={selectValue}\n onChange={handleNativeChange}\n {...toDataAttributes({ size, \"has-error\": hasError })}\n >\n {hasPlaceholder ? <option value=\"\">{placeholder}</option> : null}\n {optionNodes}\n </select>\n </ControlSizeProvider>\n );\n}\nSelectNativeRoot.displayName = \"SelectNativeRoot\";\n\n// \u2500\u2500\u2500 Namespace export \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Select = {\n Root: SelectRoot,\n Trigger: SelectTrigger,\n Value: SelectValue,\n TriggerIcon: SelectTriggerIcon,\n Content: SelectContent,\n Item: SelectItem,\n ItemIcon: SelectItemIcon,\n Group: SelectGroup,\n GroupLabel: SelectGroupLabel,\n Separator: SelectSeparator,\n};\n", "import * as React from \"react\";\n\n/**\n * \u041A\u043B\u0438\u043A \u043F\u043E listbox Select \u0432 \u043F\u043E\u0440\u0442\u0430\u043B\u0435: \u0442\u0440\u0438\u0433\u0433\u0435\u0440 \u043A\u043E\u043C\u0431\u043E\u0431\u043E\u043A\u0441\u0430 \u043B\u0435\u0436\u0438\u0442 \u0432\u043D\u0443\u0442\u0440\u0438 `container`\n * (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u043F\u0430\u043D\u0435\u043B\u044C Dropdown), \u0438\u043D\u0430\u0447\u0435 useOutsideClick \u0437\u0430\u043A\u0440\u043E\u0435\u0442 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F.\n */\nexport function isPortaledSelectListboxOwnedByContainer(\n target: EventTarget | null,\n container: HTMLElement | null,\n): boolean {\n if (!(target instanceof Element) || !container) {\n return false;\n }\n const listbox = target.closest('[role=\"listbox\"][data-react-aria-top-layer=\"true\"]');\n if (!listbox) {\n return false;\n }\n const triggerId = listbox.getAttribute(\"aria-labelledby\")?.trim().split(/\\s+/)[0];\n if (!triggerId) {\n return false;\n }\n const trigger = listbox.ownerDocument.getElementById(triggerId);\n return Boolean(trigger && container.contains(trigger));\n}\n\ntype UseOutsideClickParams = {\n refs: Array<React.RefObject<HTMLElement | null>>;\n enabled: boolean;\n onOutsideClick: (event: MouseEvent | TouchEvent) => void;\n /** \u0415\u0441\u043B\u0438 \u0432\u0435\u0440\u043D\u0451\u0442 true, \u043A\u043B\u0438\u043A \u043D\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \u00AB\u0441\u043D\u0430\u0440\u0443\u0436\u0438\u00BB (\u043F\u043E\u0440\u0442\u0430\u043B\u044B \u0432\u043D\u0443\u0442\u0440\u0438 refs) */\n shouldSuppressOutsideClick?: (target: EventTarget | null) => boolean;\n};\n\nexport function useOutsideClick({\n refs,\n enabled,\n onOutsideClick,\n shouldSuppressOutsideClick,\n}: UseOutsideClickParams) {\n const suppressRef = React.useRef(shouldSuppressOutsideClick);\n suppressRef.current = shouldSuppressOutsideClick;\n\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const hasClickedOutside = (target: EventTarget | null) =>\n refs.every((ref) => {\n const node = ref.current;\n return !node || !target || !node.contains(target as Node);\n });\n\n const onPointerDown = (event: MouseEvent | TouchEvent) => {\n if (suppressRef.current?.(event.target)) {\n return;\n }\n if (hasClickedOutside(event.target)) {\n onOutsideClick(event);\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"touchstart\", onPointerDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"touchstart\", onPointerDown);\n };\n }, [enabled, onOutsideClick, refs]);\n}\n", "import * as React from \"react\";\n\nimport {\n getFloatingSelectListboxOffsetPx,\n getFloatingViewportPadPx,\n} from \"@/internal/layoutPxFromPrimitives\";\n\nexport type PositionSide = \"bottom\" | \"top\";\nexport type PositionAlign = \"start\" | \"center\" | \"end\";\n\ntype UsePositionOptions = {\n side?: PositionSide;\n align?: PositionAlign;\n offset?: number;\n /** \u041E\u0442\u0441\u0442\u0443\u043F \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u043E\u0442 \u043A\u0440\u0430\u0451\u0432 \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430 \u043F\u0440\u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u0435 flip/\u043F\u043E\u0437\u0438\u0446\u0438\u0438 (px). */\n viewportPad?: number;\n flip?: boolean;\n matchTriggerMinWidth?: boolean;\n};\n\ntype PositionStyle = {\n position: \"fixed\";\n top: number;\n left: number;\n minWidth?: number;\n maxHeight?: number;\n};\n\nexport type PositionUpdateMeta = { resolvedSide: PositionSide };\n\nconst MIN_MENU_ESTIMATE = 176;\nconst FALLBACK_VIEWPORT_PAD_PX = 8;\n/** \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0441\u043A\u0440\u043E\u043B\u043B\u0430 \u0432\u044B\u043F\u0430\u0434\u0430\u0448\u043A\u0438 \u043F\u0440\u0438 \u043E\u0447\u0435\u043D\u044C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u043C \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0435. */\nconst MIN_FLOATING_MAX_HEIGHT = 120;\n/** \u041F\u043E\u043A\u0430 offsetHeight === 0, \u0434\u043B\u044F side=top \u0437\u0430\u0434\u0430\u0451\u043C top \u043E\u0442 \u044F\u043A\u043E\u0440\u044F \u0441 \u0433\u0440\u0443\u0431\u043E\u0439 \u043E\u0446\u0435\u043D\u043A\u043E\u0439 \u0432\u044B\u0441\u043E\u0442\u044B (\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u0430\u0434\u0440 \u043F\u043E\u043F\u0440\u0430\u0432\u0438\u0442). */\nconst FIRST_PAINT_FLOAT_HEIGHT_GUESS_PX = 280;\n\nexport type ComputeFloatingOptions = {\n preferredSide: PositionSide;\n align: PositionAlign;\n offset: number;\n /** \u041E\u0442\u0441\u0442\u0443\u043F \u043E\u0442 \u043A\u0440\u0430\u0451\u0432 \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430 (px); \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E 8 \u043F\u0440\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 (\u0442\u0435\u0441\u0442\u044B / legacy). */\n viewportPad?: number;\n flip: boolean;\n matchTriggerMinWidth: boolean;\n};\n\nexport type ComputedFloatPosition = {\n top: number;\n left: number;\n resolvedSide: PositionSide;\n minWidth?: number;\n /** \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u043F\u043E\u0434 \u043A\u043E\u043D\u0442\u0435\u043D\u0442 (px), \u0441\u043E \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F. */\n maxHeight?: number;\n};\n\nfunction pickSideForFlip(\n preferred: PositionSide,\n roomBottom: number,\n roomTop: number,\n contentH: number,\n): PositionSide {\n if (contentH > 0) {\n const fitsB = roomBottom >= contentH;\n const fitsT = roomTop >= contentH;\n if (fitsB && !fitsT) return \"bottom\";\n if (fitsT && !fitsB) return \"top\";\n if (fitsB && fitsT) return \"bottom\";\n }\n /* \u0411\u0435\u0437 \u0432\u044B\u0441\u043E\u0442\u044B \u043D\u0435\u043B\u044C\u0437\u044F \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0442\u044C \u00AB\u043A\u0443\u0434\u0430 \u0432\u043B\u0435\u0437\u0435\u0442\u00BB \u0438 \u043D\u0435\u043B\u044C\u0437\u044F \u0431\u0440\u0430\u0442\u044C \u0441\u0442\u043E\u0440\u043E\u043D\u0443 \u043F\u043E room*: \u0438\u043D\u0430\u0447\u0435 side=top, \u0430 top \u0432 px \u0441\u0447\u0438\u0442\u0430\u044E\u0442 \u043A\u0430\u043A \u0434\u043B\u044F bottom \u2014 \u043F\u0430\u043D\u0435\u043B\u044C \u0443\u0435\u0437\u0436\u0430\u0435\u0442, maxHeight \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u043E\u0442 \u043D\u0435\u0432\u0435\u0440\u043D\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u044B. */\n if (contentH === 0) return preferred;\n if (roomBottom > roomTop) return \"bottom\";\n if (roomTop > roomBottom) return \"top\";\n return preferred;\n}\n\n/** \u042F\u043A\u043E\u0440\u044C + \u0440\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u043B\u043E\u044F + \u0432\u044C\u044E\u043F\u043E\u0440\u0442; \u043F\u0440\u0438 flip \u2014 \u0441\u0442\u043E\u0440\u043E\u043D\u0430 \u0441 \u0431\u043E\u043B\u044C\u0448\u0438\u043C \u0437\u0430\u043F\u0430\u0441\u043E\u043C / \u043A\u0443\u0434\u0430 \u0432\u043B\u0435\u0437\u0430\u0435\u0442 \u043A\u043E\u043D\u0442\u0435\u043D\u0442. */\nexport function computeFloatingPosition(\n anchorRect: DOMRectReadOnly,\n contentW: number,\n contentH: number,\n vw: number,\n vh: number,\n opts: ComputeFloatingOptions,\n): ComputedFloatPosition {\n const { preferredSide, align, offset, flip, matchTriggerMinWidth } = opts;\n const pad = opts.viewportPad ?? FALLBACK_VIEWPORT_PAD_PX;\n const roomBottom = vh - anchorRect.bottom - offset - pad;\n const roomTop = anchorRect.top - offset - pad;\n\n const side = flip ? pickSideForFlip(preferredSide, roomBottom, roomTop, contentH) : preferredSide;\n\n const top =\n contentH === 0\n ? side === \"bottom\"\n ? anchorRect.bottom + offset\n : Math.max(pad, anchorRect.top - offset - FIRST_PAINT_FLOAT_HEIGHT_GUESS_PX)\n : side === \"bottom\"\n ? anchorRect.bottom + offset\n : anchorRect.top - offset - contentH;\n\n const contentWidth =\n contentW > 0\n ? contentW\n : matchTriggerMinWidth\n ? anchorRect.width\n : Math.max(anchorRect.width, MIN_MENU_ESTIMATE);\n\n let left: number;\n if (align === \"start\") left = anchorRect.left;\n else if (align === \"end\") left = anchorRect.right - contentWidth;\n else left = anchorRect.left + anchorRect.width / 2 - contentWidth / 2;\n\n left = Math.max(pad, Math.min(left, vw - contentWidth - pad));\n\n const out: ComputedFloatPosition = {\n top: Math.round(top),\n left: Math.round(left),\n resolvedSide: side,\n };\n if (matchTriggerMinWidth) out.minWidth = anchorRect.width;\n const roomVertical = side === \"bottom\" ? roomBottom : roomTop;\n out.maxHeight = Math.max(MIN_FLOATING_MAX_HEIGHT, Math.floor(roomVertical));\n return out;\n}\n\ntype UsePositionResult = {\n resolvedSide: PositionSide;\n update: () => PositionUpdateMeta | undefined;\n};\n\nexport function usePosition(\n anchorRef: React.RefObject<HTMLElement | null>,\n contentRef: React.RefObject<HTMLElement | null>,\n options: UsePositionOptions = {},\n): UsePositionResult {\n const {\n side: preferredSide = \"bottom\",\n align = \"start\",\n offset = getFloatingSelectListboxOffsetPx(),\n viewportPad: viewportPadOption,\n flip = true,\n matchTriggerMinWidth = true,\n } = options;\n\n const [resolvedSide, setResolvedSide] = React.useState<PositionSide>(preferredSide);\n\n const applyPositionStyle = React.useCallback(\n (pos: PositionStyle) => {\n const content = contentRef.current;\n if (!content) return;\n\n content.style.position = pos.position;\n content.style.top = `${pos.top}px`;\n content.style.left = `${pos.left}px`;\n content.style.minWidth = pos.minWidth !== undefined ? `${pos.minWidth}px` : \"\";\n content.style.maxHeight = pos.maxHeight !== undefined ? `${pos.maxHeight}px` : \"\";\n },\n [contentRef],\n );\n\n const update = React.useCallback((): PositionUpdateMeta | undefined => {\n const anchor = anchorRef.current;\n const content = contentRef.current;\n if (!anchor) return undefined;\n\n const viewportPad = viewportPadOption ?? getFloatingViewportPadPx();\n const anchorRect = anchor.getBoundingClientRect();\n const pos = computeFloatingPosition(\n anchorRect,\n content?.offsetWidth ?? 0,\n content?.offsetHeight ?? 0,\n window.innerWidth,\n window.innerHeight,\n { preferredSide, align, offset, viewportPad, flip, matchTriggerMinWidth },\n );\n\n setResolvedSide(pos.resolvedSide);\n applyPositionStyle({\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n ...(pos.minWidth !== undefined ? { minWidth: pos.minWidth } : {}),\n ...(pos.maxHeight !== undefined ? { maxHeight: pos.maxHeight } : {}),\n });\n return { resolvedSide: pos.resolvedSide };\n }, [\n anchorRef,\n applyPositionStyle,\n contentRef,\n preferredSide,\n align,\n offset,\n flip,\n matchTriggerMinWidth,\n viewportPadOption,\n ]);\n\n return { resolvedSide, update };\n}\n", "export const primitiveTokens = {\n /** \u0426\u0432\u0435\u0442\u0430: white/black, \u043D\u0435\u0439\u0442\u0440\u0430\u043B\u044C `gray`, \u043F\u0430\u043B\u0438\u0442\u0440\u044B 50\u2013950. */\n color: {\n white: \"#f8f7f4\",\n black: \"#0f1115\",\n /** \u0421\u043A\u0440\u0438\u043C \u043C\u043E\u0434\u0430\u043B\u043E\u043A/\u043E\u0432\u0435\u0440\u043B\u0435\u0435\u0432 (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432\u044B\u043D\u0435\u0441\u0435\u043D\u044B \u0438\u0437 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u043A\u0438). */\n overlay: {\n scrimLight: \"rgba(15, 17, 21, 0.58)\",\n scrimDark: \"rgba(8, 10, 14, 0.78)\",\n },\n /** \u041D\u0435\u0439\u0442\u0440\u0430\u043B\u044C: \u0448\u043A\u0430\u043B\u0430 50\u2013950 + `0` (\u0431\u0443\u043C\u0430\u0433\u0430), \u0430\u043B\u044C\u0444\u044B \u0434\u043B\u044F \u043E\u0432\u0435\u0440\u043B\u0435\u0435\u0432. */\n gray: {\n 0: \"#f8f7f4\",\n 50: \"#f3f4f7\",\n 100: \"#eceef2\",\n 200: \"#dde1e8\",\n 300: \"#c7ced9\",\n 400: \"#9ba6b6\",\n 500: \"#707c8e\",\n 600: \"#566174\",\n 700: \"#3f495a\",\n 800: \"#2b3342\",\n 900: \"#1b2230\",\n 950: \"#121823\",\n alpha10: \"rgba(112, 124, 142, 0.10)\",\n alpha16: \"rgba(112, 124, 142, 0.16)\",\n alpha24: \"rgba(112, 124, 142, 0.24)\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 red: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 blue: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 green: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 orange: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 yellow: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 purple: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 sky: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 pink: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\",\n },\n /** \u041F\u0430\u043B\u0438\u0442\u0440\u0430 teal: \u0448\u043A\u0430\u043B\u0430 50\u2013950 (\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440 \u2014 Tailwind v3). */\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\",\n },\n },\n /** \u0412\u044B\u0441\u043E\u0442\u0430 \u0440\u044F\u0434\u0430 / \u0431\u043B\u043E\u043A\u0430: \u043E\u0441\u044C `xs`\u2192`6xl`, \u0448\u0430\u0433 **+0.25rem**; \u0432 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u043A\u0435 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044B \u2014 xs\u2026xl. */\n size: {\n xs: \"1.75rem\",\n s: \"2rem\",\n m: \"2.25rem\",\n l: \"2.5rem\",\n xl: \"2.75rem\",\n \"2xl\": \"3rem\",\n \"3xl\": \"3.25rem\",\n \"4xl\": \"3.5rem\",\n \"5xl\": \"3.75rem\",\n \"6xl\": \"4rem\",\n },\n /**\n * \u041A\u043E\u043B\u044C\u0446\u0435\u0432\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441: \u0434\u0438\u0430\u043C\u0435\u0442\u0440 \u0432 rem (\u043A\u0430\u043A \u0432 \u043C\u0430\u043A\u0435\u0442\u0435) \u0438 \u0442\u043E\u043B\u0449\u0438\u043D\u0430 \u0448\u0442\u0440\u0438\u0445\u0430 \u0432 px.\n * TS \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F, \u0447\u0442\u043E \u0438 \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u043A\u0430\u043B\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.\n */\n progressCircle: {\n s: { diameter: \"2.5625rem\", strokeWidth: \"3\" },\n m: { diameter: \"3.375rem\", strokeWidth: \"4\" },\n l: { diameter: \"4.25rem\", strokeWidth: \"5\" },\n xl: { diameter: \"5.125rem\", strokeWidth: \"6\" },\n },\n /** \u041E\u0442\u0441\u0442\u0443\u043F\u044B: `layout` \u2014 \u0441\u0435\u0442\u043A\u0430 \u043C\u0430\u043A\u0435\u0442\u0430; `control` \u2014 \u0440\u0438\u0442\u043C \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043E\u0432. */\n spaces: {\n /** \u0421\u0435\u0442\u043A\u0430 \u043C\u0430\u043A\u0435\u0442\u0430: \u0448\u0430\u0433 **0.25rem (4px)**, \u043E\u0441\u044C `xs`\u2192`6xl` + `0`; `spacing.x*` \u2014 \u0448\u0430\u0433\u0438 \u043F\u043E 4px. */\n layout: {\n 0: \"0\",\n xs: \"0.25rem\",\n s: \"0.5rem\",\n m: \"0.75rem\",\n l: \"1rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"2rem\",\n \"4xl\": \"2.5rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.5rem\",\n },\n /** \u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044B: \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0438\u0442\u043C (`spacing`) \u0438 \u043E\u0442\u0441\u0442\u0443\u043F \u043A\u043D\u043E\u043F\u043A\u0438 (`button`). */\n control: {\n /** Gap \u0438 inputPaddingX: \u043E\u0441\u044C `xs`\u2192`6xl`, \u0448\u0430\u0433 **+0.125rem**. */\n spacing: {\n xs: \"0.375rem\",\n s: \"0.5rem\",\n m: \"0.625rem\",\n l: \"0.75rem\",\n xl: \"0.875rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.125rem\",\n \"4xl\": \"1.25rem\",\n \"5xl\": \"1.375rem\",\n \"6xl\": \"1.5rem\",\n },\n /** Padding \u043A\u043D\u043E\u043F\u043A\u0438: \u043D\u0430 **+0.125rem** \u0431\u043E\u043B\u044C\u0448\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0433\u043E `spacing.*`. */\n button: {\n xs: \"0.5rem\",\n s: \"0.625rem\",\n m: \"0.75rem\",\n l: \"0.875rem\",\n xl: \"1rem\",\n \"2xl\": \"1.125rem\",\n \"3xl\": \"1.25rem\",\n \"4xl\": \"1.375rem\",\n \"5xl\": \"1.5rem\",\n \"6xl\": \"1.625rem\",\n },\n },\n },\n /** \u0421\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F: \u043E\u0441\u044C `xs`\u2192`6xl` + `circle`; \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044B \u2014 xs\u2026xl, \u043A\u0440\u0443\u043F\u043D\u044B\u0435 \u043F\u043E\u0432\u0435\u0440\u0445\u043D\u043E\u0441\u0442\u0438 \u2014 3xl\u20266xl. */\n radius: {\n 0: \"0\",\n xs: \"8px\",\n s: \"10px\",\n m: \"11px\",\n l: \"12px\",\n xl: \"13px\",\n \"2xl\": \"16px\",\n \"3xl\": \"20px\",\n \"4xl\": \"24px\",\n \"5xl\": \"32px\",\n \"6xl\": \"40px\",\n round: \"9999px\",\n },\n /** \u0418\u043A\u043E\u043D\u043A\u0438 \u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u044B: \u043E\u0441\u044C `xs`\u2192`6xl`, \u0448\u0430\u0433 **+0.125rem**. */\n icon: {\n xs: \"0.75rem\",\n s: \"0.875rem\",\n m: \"1rem\",\n l: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.375rem\",\n \"3xl\": \"1.5rem\",\n \"4xl\": \"1.625rem\",\n \"5xl\": \"1.75rem\",\n \"6xl\": \"1.875rem\",\n },\n /** \u0422\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430: \u0441\u0435\u043C\u0435\u0439\u0441\u0442\u0432\u0430, \u043A\u0435\u0433\u043B\u044C, \u0438\u043D\u0442\u0435\u0440\u043B\u0438\u043D\u044C\u044F\u0436, \u0432\u0435\u0441, \u0442\u0440\u0435\u043A\u0438\u043D\u0433. */\n font: {\n /** \u0413\u0430\u0440\u043D\u0438\u0442\u0443\u0440\u044B: \u0431\u0430\u0437\u043E\u0432\u0430\u044F \u0438 \u043C\u043E\u043D\u043E\u0448\u0438\u0440\u0438\u043D\u043D\u0430\u044F. */\n family: {\n base: '\"Roboto Flex\", \"Roboto\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n mono: '\"Roboto Mono\", ui-monospace, SFMono-Regular, Menlo, monospace',\n },\n /**\n * \u041A\u0435\u0433\u043B\u044C: \u043E\u0441\u044C `3xs`\u2192`6xl` (+0.125rem), \u043F\u043B\u044E\u0441 **7xl\u20139xl** \u043F\u043E\u0434 [MD3 type scale](https://m3.material.io/styles/typography/type-scale-tokens)\n * (Display) \u0438 **labelMicro** (11px \u2014 Label Small).\n */\n size: {\n \"3xs\": \"0.625rem\",\n \"2xs\": \"0.75rem\",\n xs: \"0.875rem\",\n s: \"1rem\",\n m: \"1.125rem\",\n l: \"1.25rem\",\n xl: \"1.375rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.625rem\",\n \"4xl\": \"1.75rem\",\n \"5xl\": \"1.875rem\",\n \"6xl\": \"2rem\",\n \"7xl\": \"2.25rem\",\n \"8xl\": \"2.8125rem\",\n \"9xl\": \"3.5625rem\",\n labelMicro: \"0.6875rem\",\n },\n /** \u041C\u0435\u0436\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u043F\u043E\u0434 \u0448\u043A\u0430\u043B\u0443 `font.size.*`. */\n lineHeight: {\n \"3xs\": \"0.875rem\",\n \"2xs\": \"1rem\",\n xs: \"1.125rem\",\n s: \"1.25rem\",\n m: \"1.375rem\",\n l: \"1.5rem\",\n xl: \"1.625rem\",\n \"2xl\": \"1.75rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2rem\",\n \"5xl\": \"2.125rem\",\n \"6xl\": \"2.25rem\",\n \"7xl\": \"2.5rem\",\n \"8xl\": \"3.125rem\",\n \"9xl\": \"4rem\",\n labelMicro: \"1rem\",\n },\n /** \u041D\u0430\u0447\u0435\u0440\u0442\u0430\u043D\u0438\u044F (\u0447\u0438\u0441\u043B\u043E\u0432\u044B\u0435 \u0432\u0435\u0441\u0430 \u0448\u0440\u0438\u0444\u0442\u0430). */\n weight: {\n regular: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n /** \u041C\u0435\u0436\u0431\u0443\u043A\u0432\u0435\u043D\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B (em). */\n letterSpacing: {\n tighter: \"-0.02em\",\n tight: \"-0.01em\",\n normal: \"0\",\n wide: \"0.04em\",\n wider: \"0.06em\",\n },\n },\n /** \u0422\u0435\u043D\u0438: \u043E\u0441\u044C `xs`\u2192`6xl`, \u0443\u0441\u0438\u043B\u0435\u043D\u0438\u0435 \u0441 \u0440\u0430\u0437\u043C\u0435\u0440\u043E\u043C. */\n shadow: {\n xs: \"0 2px 4px rgba(15, 17, 21, 0.08)\",\n s: \"0 4px 8px rgba(15, 17, 21, 0.1)\",\n m: \"0 8px 16px rgba(15, 17, 21, 0.14)\",\n l: \"0 16px 32px rgba(15, 17, 21, 0.2)\",\n xl: \"0 24px 48px rgba(15, 17, 21, 0.24)\",\n \"2xl\": \"0 32px 64px rgba(15, 17, 21, 0.26)\",\n \"3xl\": \"0 40px 80px rgba(15, 17, 21, 0.28)\",\n \"4xl\": \"0 48px 96px rgba(15, 17, 21, 0.3)\",\n \"5xl\": \"0 56px 112px rgba(15, 17, 21, 0.32)\",\n \"6xl\": \"0 64px 128px rgba(15, 17, 21, 0.34)\",\n },\n /** \u0414\u0432\u0438\u0436\u0435\u043D\u0438\u0435: \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438 \u0438 \u043A\u0440\u0438\u0432\u044B\u0435 easing. */\n motion: {\n /** \u0414\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438 \u043F\u043E \u0441\u043C\u044B\u0441\u043B\u0443 (\u043D\u0435 \u043E\u0441\u044C \u0440\u0430\u0437\u043C\u0435\u0440\u043E\u0432). */\n duration: {\n fast: \"200ms\",\n medium: \"350ms\",\n slow: \"500ms\",\n },\n /** \u041A\u0440\u0438\u0432\u044B\u0435 \u0441\u0433\u043B\u0430\u0436\u0438\u0432\u0430\u043D\u0438\u044F. */\n easing: {\n standard: \"cubic-bezier(0.2, 0, 0, 1)\",\n },\n },\n /**\n * Z-index: \u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0440\u043E\u043B\u0438 \u0441\u043B\u043E\u0451\u0432 (\u043D\u0435 \u043E\u0441\u044C \u0440\u0430\u0437\u043C\u0435\u0440\u043E\u0432). \u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u044B \u0441 \u0437\u0430\u043F\u0430\u0441\u043E\u043C.\n *\n * \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430: base \u2192 sticky \u2192 popover \u2192 dropdown \u2192 tooltip.\n * \u0411\u043B\u043E\u043A\u0438\u0440\u0443\u044E\u0449\u0438\u0435 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438: drawer (\u043D\u0438\u0436\u0435) \u2192 modal (\u0432\u044B\u0448\u0435). \u041F\u043E\u0440\u0442\u0430\u043B\u044B \u043D\u0430 `body` \u0432\u043D\u0443\u0442\u0440\u0438 drawer/modal\n * \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u0443\u0440\u043E\u0432\u043D\u0438 (`*InDrawer`, `*InModal`, `*InDrawerInModal`), \u0441\u043C. `OverlayPortalLayerContext`.\n *\n * Drawer \u0432\u043D\u0443\u0442\u0440\u0438 modal: \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430 `drawerNestedShell` \u0432\u044B\u0448\u0435 `modal`; \u043F\u043E\u0440\u0442\u0430\u043B\u044B \u0432\u043D\u0443\u0442\u0440\u0438 \u2014 \u0435\u0449\u0451 \u0432\u044B\u0448\u0435.\n * \u0422\u043E\u0441\u0442\u044B \u2014 \u043F\u043E\u0432\u0435\u0440\u0445 \u0432\u0441\u0435\u0445 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u043B\u043E\u0451\u0432.\n */\n zIndex: {\n base: \"10\",\n sticky: \"100\",\n popover: \"1000\",\n dropdown: \"1200\",\n tooltip: \"1600\",\n /** `Drawer`, mobile fullscreen `Sidebar` \u2014 \u043D\u0438\u0436\u0435 \u043C\u043E\u0434\u0430\u043B\u043A\u0438. */\n drawer: \"2000\",\n /** `Modal` (\u043E\u0432\u0435\u0440\u043B\u0435\u0439 + \u0434\u0438\u0430\u043B\u043E\u0433), CommandMenu \u2014 \u043F\u043E\u0432\u0435\u0440\u0445 drawer. */\n modal: \"3000\",\n popoverInDrawer: \"2100\",\n dropdownInDrawer: \"2200\",\n tooltipInDrawer: \"2300\",\n popoverInModal: \"3100\",\n dropdownInModal: \"3200\",\n tooltipInModal: \"3300\",\n /** \u041E\u0432\u0435\u0440\u043B\u0435\u0439 \u0438 \u043F\u0430\u043D\u0435\u043B\u044C `Drawer`, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u0433\u043E \u043F\u043E\u0432\u0435\u0440\u0445 `Modal`. */\n drawerNestedShell: \"3400\",\n popoverInDrawerInModal: \"3500\",\n dropdownInDrawerInModal: \"3600\",\n tooltipInDrawerInModal: \"3700\",\n /** \u0412\u044B\u0448\u0435 \u043C\u043E\u0434\u0430\u043B\u043E\u043A \u0438 \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u043F\u043E\u0440\u0442\u0430\u043B\u043E\u0432 \u2014 \u043E\u0447\u0435\u0440\u0435\u0434\u044C \u0442\u043E\u0441\u0442\u043E\u0432. */\n toast: \"10000\",\n },\n} as const;\n", "import { primitiveTokens } from \"../../tokens/primitives\";\n\n/**\n * Fallback, \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 `document` (SSR) \u0438\u043B\u0438 `getComputedStyle` \u043D\u0435 \u0434\u0430\u043B \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 px\n * (\u0434\u043E\u043B\u0436\u0435\u043D \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u0442\u044C \u0441 \u0442\u0438\u043F\u0438\u0447\u043D\u044B\u043C `font-size` \u043D\u0430 `:root` \u0432 `globals`).\n */\nconst FALLBACK_ROOT_FONT_PX = 16;\n\n/**\n * \u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044B\u0439 `font-size` \u043A\u043E\u0440\u043D\u044F (`html`) \u0432 px \u2014 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0430 rem \u0438\u0437 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043E\u0432\n * \u0432 \u043F\u0438\u043A\u0441\u0435\u043B\u0438 floating UI / SVG \u0431\u0435\u0437 \u0436\u0451\u0441\u0442\u043A\u043E\u0439 \u043F\u0440\u0438\u0432\u044F\u0437\u043A\u0438 \u043A 16.\n */\nexport function getRootFontSizePx(): number {\n if (typeof document === \"undefined\") {\n return FALLBACK_ROOT_FONT_PX;\n }\n const raw = getComputedStyle(document.documentElement).fontSize;\n const parsed = Number.parseFloat(raw);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : FALLBACK_ROOT_FONT_PX;\n}\n\nexport function remToPx(rem: string, rootPx: number = getRootFontSizePx()): number {\n const n = Number.parseFloat(rem);\n return Number.isFinite(n) ? Math.round(n * rootPx) : 0;\n}\n\n/** \u0417\u0430\u0437\u043E\u0440 \u043F\u0430\u043D\u0435\u043B\u0438 \u043E\u0442 \u044F\u043A\u043E\u0440\u044F: `spaces.layout.s`. */\nexport function getFloatingPanelOffsetPx(): number {\n return remToPx(primitiveTokens.spaces.layout.s);\n}\n\n/** \u0417\u0430\u0437\u043E\u0440 listbox \u043E\u0442 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 Select: `spaces.layout.xs`. */\nexport function getFloatingSelectListboxOffsetPx(): number {\n return remToPx(primitiveTokens.spaces.layout.xs);\n}\n\n/** \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043E\u0442\u0441\u0442\u0443\u043F \u043E\u0442 \u043A\u0440\u0430\u044F \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430 \u043F\u0440\u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u0435 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 / max-height. */\nexport function getFloatingViewportPadPx(): number {\n return remToPx(primitiveTokens.spaces.layout.s);\n}\n", "/* \u2500\u2500\u2500 Select (composable) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Trigger \u2014 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0438\u0442\u043C \u043A\u0430\u043A \u0443 Input.wrapper: `inputPaddingX` + \u0442\u043E\u0442 \u0436\u0435 `control-*-gap` \u043C\u0435\u0436\u0434\u0443 \u0441\u043B\u043E\u0442\u0430\u043C\u0438. */\n\n.trigger {\n --select-trigger-pad-x: var(--prime-sys-size-control-m-inputPaddingX);\n --select-trigger-pad-y: var(--prime-sys-size-control-m-inputPaddingY);\n --select-trigger-gap: var(--prime-sys-size-control-m-gap);\n /* \u0421\u043B\u043E\u0442 \u043F\u043E\u0434 \u0448\u0435\u0432\u0440\u043E\u043D = \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u043A\u043E\u043D\u043A\u0438 \u044F\u0440\u0443\u0441\u0430 \u2014 \u0437\u0435\u0440\u043A\u0430\u043B\u0438\u0442 \u043E\u0442\u0441\u0442\u0443\u043F \u0442\u0435\u043A\u0441\u0442\u0430 \u043F\u0440\u0438 `TriggerIcon` \u0441\u043B\u0435\u0432\u0430. */\n --select-chevron-slot: var(--prime-sys-size-control-m-icon);\n\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--select-trigger-gap);\n width: 100%;\n min-width: 0;\n padding-inline: var(--select-trigger-pad-x);\n padding-block: var(--select-trigger-pad-y);\n border-radius: var(--prime-sys-size-control-m-radius);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-field-bg);\n color: var(--prime-sys-color-field-text);\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n font-family: inherit;\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n text-align: left;\n outline: none;\n transition:\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.trigger[data-size=\"s\"] {\n --select-trigger-pad-x: var(--prime-sys-size-control-s-inputPaddingX);\n --select-trigger-pad-y: var(--prime-sys-size-control-s-inputPaddingY);\n --select-trigger-gap: var(--prime-sys-size-control-s-gap);\n --select-chevron-slot: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-height);\n border-radius: var(--prime-sys-size-control-s-radius);\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.trigger[data-size=\"m\"] {\n --select-trigger-gap: var(--prime-sys-size-control-m-gap);\n --select-chevron-slot: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-size-control-m-radius);\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.trigger[data-size=\"l\"] {\n --select-trigger-pad-x: var(--prime-sys-size-control-l-inputPaddingX);\n --select-trigger-pad-y: var(--prime-sys-size-control-l-inputPaddingY);\n --select-trigger-gap: var(--prime-sys-size-control-l-gap);\n --select-chevron-slot: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-height);\n border-radius: var(--prime-sys-size-control-l-radius);\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.trigger[data-size=\"xl\"] {\n --select-trigger-pad-x: var(--prime-sys-size-control-xl-inputPaddingX);\n --select-trigger-pad-y: var(--prime-sys-size-control-xl-inputPaddingY);\n --select-trigger-gap: var(--prime-sys-size-control-xl-gap);\n --select-chevron-slot: var(--prime-sys-size-control-xl-icon);\n height: var(--prime-sys-size-control-xl-height);\n border-radius: var(--prime-sys-size-control-xl-radius);\n font-size: var(--prime-sys-size-control-xl-text);\n}\n\n.triggerMain {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n gap: var(--select-trigger-gap);\n min-width: 0;\n}\n\n.trigger:hover {\n border-color: var(--prime-sys-color-field-borderHover);\n /*\n * \u0412 dark `action-neutralBackgroundHover` \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u0435\u0442 \u0441 `surface-elevated` \u0443 Dropdown/\u043C\u0435\u043D\u044E \u2014\n * \u0445\u043E\u0432\u0435\u0440 \u043D\u0435\u043E\u0442\u043B\u0438\u0447\u0438\u043C \u043E\u0442 \u0444\u043E\u043D\u0430. \u0421\u043C\u0435\u0448\u0438\u0432\u0430\u043D\u0438\u0435 \u0441 `field-text` \u0434\u0430\u0451\u0442 \u0441\u0442\u0430\u0431\u0438\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442 \u0432 \u043E\u0431\u0435\u0438\u0445 \u0442\u0435\u043C\u0430\u0445.\n */\n background: color-mix(\n in srgb,\n var(--prime-sys-color-action-neutralBackgroundHover) 90%,\n var(--prime-sys-color-field-text) 10%\n );\n box-shadow: none;\n}\n\n.trigger:focus-visible {\n border-color: var(--prime-sys-color-field-borderFocus);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.trigger[data-has-error=\"true\"] {\n border-color: var(--prime-sys-color-field-borderError);\n}\n\n.trigger[data-has-error=\"true\"]:focus-visible {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.trigger:disabled {\n background: var(--prime-sys-color-surface-accentSoft);\n border-color: transparent;\n box-shadow: none;\n cursor: not-allowed;\n color: var(--prime-sys-color-content-disabled);\n}\n\n/* \u0421\u043B\u043E\u0442 \u0448\u0435\u0432\u0440\u043E\u043D\u0430 \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 \u0438\u043A\u043E\u043D\u043A\u0438 \u044F\u0440\u0443\u0441\u0430 \u2014 \u0433\u043B\u0438\u0444 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443, \u0434\u043E \u043A\u0440\u0430\u044F \u043F\u043E\u043B\u044F \u0442\u043E\u0442 \u0436\u0435 \u0448\u0430\u0433, \u0447\u0442\u043E \u0443 \u0442\u0435\u043A\u0441\u0442\u0430/\u0438\u043A\u043E\u043D\u043A\u0438. */\n.triggerChevronSlot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--select-chevron-slot);\n min-width: var(--select-chevron-slot);\n pointer-events: none;\n}\n\n.triggerChevron {\n display: block;\n flex-shrink: 0;\n width: var(--prime-sys-unit-0p45rem);\n height: var(--prime-sys-unit-0p45rem);\n border-right: var(--prime-sys-unit-1p5px) solid currentColor;\n border-bottom: var(--prime-sys-unit-1p5px) solid currentColor;\n transform: rotate(45deg) translateY(-10%);\n opacity: 0.6;\n transition:\n transform var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n opacity var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.trigger[data-open=\"true\"] .triggerChevron {\n transform: rotate(225deg) translateY(-10%);\n}\n\n.trigger:hover .triggerChevron,\n.trigger:focus-visible .triggerChevron {\n opacity: 0.9;\n}\n\n.trigger:disabled .triggerChevron {\n opacity: 0.3;\n}\n\n/* Trigger value / placeholder */\n\n.triggerValue {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.triggerValue[data-placeholder=\"true\"] {\n color: var(--prime-sys-color-field-placeholder);\n}\n\n/* Trigger custom icon slot */\n\n.triggerIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--prime-sys-color-content-muted);\n}\n\n.trigger[data-size=\"s\"] .triggerIcon {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.trigger[data-size=\"m\"] .triggerIcon {\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.trigger[data-size=\"l\"] .triggerIcon {\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n}\n\n.trigger[data-size=\"xl\"] .triggerIcon {\n width: var(--prime-sys-size-control-xl-icon);\n height: var(--prime-sys-size-control-xl-icon);\n}\n\n/* Native <select> \u2014 \u0442\u0435 \u0436\u0435 \u0442\u043E\u043A\u0435\u043D\u044B, \u0447\u0442\u043E \u0443 .trigger; appearance: none + \u0444\u043E\u043D\u043E\u0432\u044B\u0439 \u0448\u0435\u0432\u0440\u043E\u043D. */\n\n.nativeSelect {\n composes: trigger;\n appearance: none;\n width: 100%;\n cursor: pointer;\n padding-right: calc(var(--select-trigger-pad-x) + var(--select-chevron-slot));\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='currentColor' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--select-trigger-pad-x) center;\n background-size: var(--prime-sys-unit-0p45rem);\n}\n\n.nativeSelect:focus-visible {\n outline: none;\n}\n\n.triggerIcon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* \u2500\u2500\u2500 Content (dropdown) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.content {\n --select-item-min-height: var(--prime-sys-size-control-m-height);\n --select-item-text: var(--prime-sys-typography-control-s);\n --select-item-pad-x: var(--prime-sys-size-control-m-inputPaddingX);\n --select-item-icon-size: var(--prime-sys-size-control-m-icon);\n /* \u041E\u0434\u0438\u043D `gap` \u043D\u0430 \u0440\u044F\u0434\u0443 \u043F\u0443\u043D\u043A\u0442\u0430: \u043C\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043C\u0438 \u0441\u043B\u043E\u0442\u0430\u043C\u0438 (\u0438\u043A\u043E\u043D\u043A\u0438, \u0442\u0435\u043A\u0441\u0442, \u0441\u043B\u043E\u0442 \u0433\u0430\u043B\u043E\u0447\u043A\u0438). */\n --select-item-gap: var(--prime-sys-size-control-m-gap);\n --select-item-radius: var(--prime-sys-size-control-m-radius);\n\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n /* \u041A\u0430\u043A \u0443 Dropdown: \u0438\u043D\u0430\u0447\u0435 width:auto \u0443 fixed \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0434 \u0432\u044C\u044E\u043F\u043E\u0440\u0442, offsetWidth \u043E\u0433\u0440\u043E\u043C\u043D\u044B\u0439,\n * \u0438 clamp \u0432 usePosition \u0437\u0430\u0433\u043E\u043D\u044F\u0435\u0442 left \u043A var(--prime-sys-unit-8px) \u2014 \u0441\u043F\u0438\u0441\u043E\u043A \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u0432\u043B\u0435\u0432\u043E \u043E\u0442 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430. */\n width: max-content;\n max-width: min(var(--prime-sys-unit-28rem), 100vw);\n /* \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 ScrollContainer */\n /* \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043B\u0438\u043C\u0438\u0442 \u2014 inline maxHeight \u0438\u0437 usePosition; \u0437\u0430\u043F\u0430\u0441 \u043D\u0430 \u043F\u0435\u0440\u0432\u044B\u0439 \u043A\u0430\u0434\u0440 \u0434\u043E RAF. */\n max-height: min(85dvh, var(--prime-sys-unit-40rem));\n padding: var(--prime-sys-spacing-x1);\n border-radius: var(--prime-sys-shape-radius-l);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-elevated);\n box-shadow: var(--prime-sys-elevation-shadow-modal);\n outline: none;\n font-family: inherit;\n color: var(--prime-sys-color-content-primary);\n}\n\n.content[data-overlay-portal-layer=\"page\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdown);\n}\n\n.content[data-overlay-portal-layer=\"drawer\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInDrawer);\n}\n\n.content[data-overlay-portal-layer=\"modal\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInModal);\n}\n\n.content[data-overlay-portal-layer=\"drawerInModal\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInDrawerInModal);\n}\n\n.content[data-size=\"s\"] {\n --select-item-min-height: var(--prime-sys-size-control-s-height);\n --select-item-text: var(--prime-sys-typography-support-2xs);\n --select-item-pad-x: var(--prime-sys-size-control-s-inputPaddingX);\n --select-item-icon-size: var(--prime-sys-size-control-s-icon);\n --select-item-gap: var(--prime-sys-size-control-s-gap);\n --select-item-radius: var(--prime-sys-size-control-s-radius);\n}\n\n.content[data-size=\"m\"] {\n --select-item-min-height: var(--prime-sys-size-control-m-height);\n --select-item-text: var(--prime-sys-typography-control-s);\n --select-item-pad-x: var(--prime-sys-size-control-m-inputPaddingX);\n --select-item-icon-size: var(--prime-sys-size-control-m-icon);\n --select-item-gap: var(--prime-sys-size-control-m-gap);\n --select-item-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.content[data-size=\"l\"] {\n --select-item-min-height: var(--prime-sys-size-control-l-height);\n --select-item-text: var(--prime-sys-typography-control-m);\n --select-item-pad-x: var(--prime-sys-size-control-l-inputPaddingX);\n --select-item-icon-size: var(--prime-sys-size-control-l-icon);\n --select-item-gap: var(--prime-sys-size-control-l-gap);\n --select-item-radius: var(--prime-sys-size-control-l-radius);\n}\n\n.content[data-size=\"xl\"] {\n --select-item-min-height: var(--prime-sys-size-control-xl-height);\n --select-item-text: var(--prime-sys-typography-control-l);\n --select-item-pad-x: var(--prime-sys-size-control-xl-inputPaddingX);\n --select-item-icon-size: var(--prime-sys-size-control-xl-icon);\n --select-item-gap: var(--prime-sys-size-control-xl-gap);\n --select-item-radius: var(--prime-sys-size-control-xl-radius);\n}\n\n/* \u2500\u2500\u2500 Item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--select-item-gap);\n box-sizing: border-box;\n width: 100%;\n min-height: var(--select-item-min-height);\n padding-block: 0;\n padding-inline: var(--select-item-pad-x);\n border-radius: var(--select-item-radius);\n cursor: pointer;\n font-size: var(--select-item-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.2;\n color: var(--prime-sys-color-content-primary);\n text-align: start;\n transition: background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n outline: none;\n user-select: none;\n}\n\n.item:hover,\n.item[data-highlighted=\"true\"] {\n background: color-mix(\n in srgb,\n var(--prime-sys-color-action-neutralBackgroundHover) 90%,\n var(--prime-sys-color-field-text) 10%\n );\n}\n\n.item[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n cursor: not-allowed;\n}\n\n/* Item text area */\n\n.itemText {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u0421\u043B\u043E\u0442 \u0433\u0430\u043B\u043E\u0447\u043A\u0438 = \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u043A\u043E\u043D\u043A\u0438 \u044F\u0440\u0443\u0441\u0430: \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u0432\u043E\u0437\u0434\u0443\u0445 \u0442\u043E\u043B\u044C\u043A\u043E `padding-inline` \u0443 `.item`, \u043A\u0430\u043A \u0441\u043B\u0435\u0432\u0430 \u0443 `ItemIcon`. */\n.itemCheckSlot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--select-item-icon-size);\n min-width: var(--select-item-icon-size);\n}\n\n.itemCheck {\n display: block;\n flex-shrink: 0;\n box-sizing: border-box;\n width: var(--prime-sys-unit-0p4rem);\n height: var(--prime-sys-unit-0p72rem);\n border-right: var(--prime-sys-unit-2px) solid var(--prime-sys-color-content-accent);\n border-bottom: var(--prime-sys-unit-2px) solid var(--prime-sys-color-content-accent);\n transform: rotate(45deg) translateY(-15%);\n}\n\n/* Item icon slot */\n\n.itemIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--select-item-icon-size);\n height: var(--select-item-icon-size);\n line-height: 1;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.itemIcon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.item[data-disabled=\"true\"] .itemIcon {\n opacity: 0.55;\n}\n\n/* \u2500\u2500\u2500 Group \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.group {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n}\n\n.groupLabel {\n display: flex;\n align-items: center;\n padding-inline: var(--select-item-pad-x);\n padding-block: var(--prime-sys-spacing-x1);\n font-size: var(--prime-sys-typography-support-2xs);\n color: var(--prime-sys-color-content-muted);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n/* \u2500\u2500\u2500 Separator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.separator {\n flex-shrink: 0;\n align-self: stretch;\n margin: 0;\n border: none;\n border-top: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n}\n", "import type * as React from \"react\";\n\n/** \u041E\u043F\u0446\u0438\u0438 listbox: \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0435 \u043F\u0443\u043D\u043A\u0442\u044B (\u0431\u0435\u0437 `data-disabled`). */\nexport function queryEnabledSelectOptions(container: HTMLElement | null): HTMLElement[] {\n if (!container) return [];\n return Array.from(\n container.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled=\"true\"])'),\n );\n}\n\nexport type SelectListboxKeyboardContext = {\n items: HTMLElement[];\n highlightedValue: string | undefined;\n setHighlightedValue: (value: string | undefined) => void;\n onSelect: (value: string, label: string) => void;\n onClose: () => void;\n};\n\n/** \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u043B\u0430\u0432\u0438\u0448 \u0434\u043B\u044F `role=\"listbox\"` (\u0441\u0442\u0440\u0435\u043B\u043A\u0438, Home/End, Enter, Space, Escape). */\nexport function handleSelectListboxKeyDown(\n e: React.KeyboardEvent<HTMLDivElement>,\n ctx: SelectListboxKeyboardContext,\n): void {\n const { items, highlightedValue, setHighlightedValue, onSelect, onClose } = ctx;\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((i) => i.dataset.value === highlightedValue);\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n setHighlightedValue(items[next]?.dataset.value);\n items[next]?.scrollIntoView?.({ block: \"nearest\" });\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n setHighlightedValue(items[prev]?.dataset.value);\n items[prev]?.scrollIntoView?.({ block: \"nearest\" });\n break;\n }\n case \"Home\": {\n e.preventDefault();\n setHighlightedValue(items[0]?.dataset.value);\n items[0]?.scrollIntoView?.({ block: \"nearest\" });\n break;\n }\n case \"End\": {\n e.preventDefault();\n const last = items[items.length - 1];\n setHighlightedValue(last?.dataset.value);\n last?.scrollIntoView?.({ block: \"nearest\" });\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (highlightedValue) {\n const item = items.find((i) => i.dataset.value === highlightedValue);\n const label = item?.dataset.label ?? item?.textContent?.trim() ?? highlightedValue;\n onSelect(highlightedValue, label);\n }\n break;\n }\n case \"Escape\": {\n e.preventDefault();\n onClose();\n break;\n }\n default:\n break;\n }\n}\n", "/* \u2014\u2014 \u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u043B\u0430\u0439\u0434\u0435\u0440\u0430 \u043A\u0430\u043A \u0443 Slider (control-m) \u2014\u2014 */\n.slider[data-size=\"m\"] {\n --slider-root-gap: var(--prime-sys-spacing-x3);\n --slider-track-h: var(--prime-sys-spacing-xs);\n --slider-thumb-size: var(--prime-sys-size-control-m-icon);\n --slider-label-size: var(--prime-sys-size-control-m-text);\n}\n\n/* ---- Slider (hue / alpha) \u2014 \u0432\u043D\u0435\u0448\u043D\u0438\u0439 \u0432\u0438\u0434 \u043A\u0430\u043A \u0443 \u043A\u0438\u0442\u043E\u0432\u043E\u0433\u043E Slider ---- */\n.slider {\n display: flex;\n flex-direction: column;\n gap: var(--slider-root-gap);\n width: 100%;\n}\n\n.slider + .slider {\n margin-block-start: var(--prime-sys-spacing-x2);\n}\n\n.sliderHeader {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-x2);\n width: 100%;\n}\n\n.sliderLabel {\n font-size: var(--slider-label-size);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n}\n\n.sliderValue {\n font-size: var(--prime-sys-size-control-s-supportText);\n font-variant-numeric: tabular-nums;\n color: var(--prime-sys-color-content-muted);\n}\n\n.sliderTrack {\n box-sizing: border-box;\n width: 100%;\n height: var(--slider-track-h);\n border-radius: var(--prime-sys-shape-radius-round);\n outline: none;\n cursor: pointer;\n}\n\n.sliderTrack:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-spacing-xs);\n}\n\n.slider[data-disabled] .sliderTrack {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Thumb \u043D\u0430 \u0441\u043B\u0430\u0439\u0434\u0435\u0440\u0435: \u0442\u043E\u0442 \u0436\u0435 \u0432\u0438\u0434, \u0447\u0442\u043E \u0443 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 (.thumbArea) ---- */\n.thumb {\n z-index: 2;\n box-sizing: border-box;\n width: var(--slider-thumb-size);\n height: var(--slider-thumb-size);\n border-radius: var(--prime-sys-shape-radius-round);\n border: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-border-inverse);\n box-shadow:\n 0 0 0 var(--prime-sys-border-width-control) var(--prime-sys-color-border-strong),\n var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n transition: box-shadow var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.thumb[data-hovered]:not([data-disabled]) {\n box-shadow:\n 0 0 0 var(--prime-sys-border-width-control) var(--prime-sys-color-border-strong),\n var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.thumb[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* RAC \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u043E\u043B\u044C\u043A\u043E left + translate(-50%,-50%); \u0431\u0435\u0437 top \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C \u043D\u0435 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 \u0442\u0440\u0435\u043A\u0430 */\n.slider[data-orientation=\"horizontal\"] .thumb {\n top: 50%;\n}\n\n/* ---- \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0432\u044B\u0431\u043E\u0440\u0430: \u043C\u0430\u0440\u043A\u0435\u0440 \u0441 \u0431\u0435\u043B\u044B\u043C \u043A\u043E\u043B\u044C\u0446\u043E\u043C (\u043A\u0430\u043A \u0432 \u0440\u0435\u0444\u0435\u0440\u0435\u043D\u0441\u0435) ---- */\n.area {\n --area-thumb-size: var(--prime-sys-size-control-m-icon);\n box-sizing: border-box;\n width: 100%;\n min-height: var(--prime-sys-unit-14p5rem);\n border-radius: var(--prime-sys-size-control-m-radius);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background-clip: padding-box;\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n outline: none;\n}\n\n.area:focus-visible {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-spacing-xs);\n}\n\n.area[data-disabled] {\n opacity: 0.45;\n pointer-events: none;\n}\n\n.thumbArea {\n z-index: 2;\n box-sizing: border-box;\n width: var(--area-thumb-size);\n height: var(--area-thumb-size);\n border-radius: var(--prime-sys-shape-radius-round);\n border: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-border-inverse);\n box-shadow:\n 0 0 0 var(--prime-sys-border-width-control) var(--prime-sys-color-border-strong),\n var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n transition: box-shadow var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.thumbArea[data-hovered]:not([data-disabled]) {\n box-shadow:\n 0 0 0 var(--prime-sys-border-width-control) var(--prime-sys-color-border-strong),\n var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.thumbArea[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- \u0421\u0435\u043B\u0435\u043A\u0442\u043E\u0440 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 (\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 Select \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443) ---- */\n.formatSelectWrap {\n display: flex;\n width: 100%;\n min-width: 0;\n flex-direction: column;\n}\n\n/* ---- \u041F\u043E\u043B\u043E\u0441\u0430: \u043F\u0438\u043F\u0435\u0442\u043A\u0430 + \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u044B \u043A\u0430\u043D\u0430\u043B\u043E\u0432 ---- */\n.channelStrip {\n display: flex;\n align-items: stretch;\n width: 100%;\n min-height: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-size-control-m-radius);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-field-bg);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n overflow: hidden;\n}\n\n.channelStrip > * + * {\n border-inline-start: var(--prime-sys-border-width-control) solid\n var(--prime-sys-color-border-subtle);\n}\n\n.channelStripLead {\n display: flex;\n flex-shrink: 0;\n align-items: stretch;\n}\n\n.channelStrip .channelStripEyedropperBtn.channelStripEyedropperBtn {\n min-width: var(--prime-sys-size-control-m-height);\n width: var(--prime-sys-size-control-m-height);\n height: auto;\n min-height: 100%;\n padding: 0;\n border-radius: 0;\n border: none;\n box-shadow: none;\n}\n\n.channelStrip .channelStripEyedropperBtn.channelStripEyedropperBtn:hover:not(:disabled) {\n box-shadow: none;\n}\n\n.channelCell {\n display: flex;\n flex: 1 1 0;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-spacing-x1);\n min-width: 0;\n padding-inline: var(--prime-sys-spacing-x2);\n}\n\n.channelCellHex {\n flex: 1 1 auto;\n justify-content: flex-start;\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n}\n\n.channelInput {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n border: none;\n background: transparent;\n padding-block: var(--prime-sys-spacing-x2);\n font-size: var(--prime-sys-size-control-s-text);\n font-variant-numeric: tabular-nums;\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-field-text);\n text-align: center;\n outline: none;\n}\n\n.channelCellHex .channelInput {\n text-align: start;\n}\n\n.channelInput:focus-visible {\n outline: none;\n}\n\n.channelSuffix {\n flex-shrink: 0;\n font-size: var(--prime-sys-size-control-s-supportText);\n color: var(--prime-sys-color-content-muted);\n}\n\n/* ---- Swatches ---- */\n.swatchPicker {\n display: flex;\n flex-wrap: nowrap;\n gap: var(--prime-sys-spacing-x2);\n width: 100%;\n justify-content: flex-start;\n overflow-x: auto;\n padding-block-end: var(--prime-sys-spacing-x1);\n scrollbar-width: thin;\n}\n\n.swatchItem {\n flex-shrink: 0;\n cursor: pointer;\n padding: var(--prime-sys-spacing-x1);\n border-radius: var(--prime-sys-size-control-s-radius);\n outline: none;\n transition: background-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.swatchItem[data-hovered]:not([data-disabled]) {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.swatchItem[data-focus-visible] {\n outline: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-spacing-xs);\n}\n\n.triggerSwatch {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n overflow: hidden;\n box-sizing: border-box;\n width: var(--prime-sys-unit-1rem);\n height: var(--prime-sys-unit-1rem);\n border-radius: var(--prime-sys-shape-radius-s);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.triggerSwatchSvg {\n position: absolute;\n inset: 0;\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.swatch {\n box-sizing: border-box;\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n border-radius: var(--prime-sys-shape-radius-round);\n border: var(--prime-sys-border-width-focusRing) solid var(--prime-sys-color-border-inverse);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.swatchItem[data-selected] .swatch {\n box-shadow: 0 0 0 var(--prime-sys-border-width-focusRing)\n var(--prime-sys-color-action-primaryBackground);\n}\n\n/* ---- RAC ColorField (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E) ---- */\n.field :global(.react-aria-Group) {\n display: flex;\n align-items: center;\n min-height: var(--prime-sys-size-control-m-height);\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n padding-block: var(--prime-sys-size-control-m-inputPaddingY);\n border-radius: var(--prime-sys-size-control-m-radius);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-field-bg);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n transition:\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.field :global(.react-aria-Group):focus-within {\n border-color: var(--prime-sys-color-field-borderFocus);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.field :global(.react-aria-Input) {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n font-size: var(--prime-sys-size-control-m-text);\n font-variant-numeric: tabular-nums;\n color: var(--prime-sys-color-field-text);\n outline: none;\n}\n\n.field :global(.react-aria-Label) {\n margin-inline-end: var(--prime-sys-spacing-x2);\n font-size: var(--prime-sys-size-control-s-supportText);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-secondary);\n white-space: nowrap;\n}\n\n/* ---- \u041F\u0438\u043F\u0435\u0442\u043A\u0430: \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u0430\u044F \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0430\u044F \u043A\u043D\u043E\u043F\u043A\u0430 (\u0432\u043D\u0435 \u043F\u043E\u043B\u043E\u0441\u044B) ---- */\n.eyeDropperSquare {\n flex-shrink: 0;\n padding: 0;\n min-width: var(--prime-sys-size-control-m-height);\n}\n", "import * as React from \"react\";\n\nimport { Badge } from \"@/components/badge/Badge\";\nimport { Modal, type ModalPanelProps, type ModalRootProps } from \"@/components/modal/Modal\";\nimport modalShellStyles from \"@/components/modal/Modal.module.css\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport scrollContainerStyles from \"@/components/scroll-container/ScrollContainer.module.css\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport styles from \"./CommandMenu.module.css\";\n\n// \u2500\u2500\u2500 Filtering & item registry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ItemEntry = {\n id: string;\n order: number;\n value: string;\n keywords: string;\n disabled: boolean;\n groupId: string;\n onSelectRef: React.MutableRefObject<(() => void) | undefined>;\n};\n\nfunction normalize(s: string): string {\n return s.trim().toLowerCase();\n}\n\nfunction matchesQuery(entry: ItemEntry, query: string): boolean {\n if (!query) return true;\n const q = normalize(query);\n const hay = `${normalize(entry.value)} ${normalize(entry.keywords)}`;\n return hay.includes(q);\n}\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype CommandMenuContextValue = {\n search: string;\n setSearch: React.Dispatch<React.SetStateAction<string>>;\n listboxId: string;\n activeId: string | null;\n setActiveId: React.Dispatch<React.SetStateAction<string | null>>;\n registerItem: (\n id: string,\n patch: Omit<ItemEntry, \"id\" | \"order\" | \"onSelectRef\"> & {\n onSelectRef: ItemEntry[\"onSelectRef\"];\n },\n ) => () => void;\n visibleIds: string[];\n itemGet: (id: string) => ItemEntry | undefined;\n moveActive: (delta: number) => void;\n activateSelected: () => void;\n inputRef: React.RefObject<HTMLInputElement | null>;\n};\n\nconst [CommandMenuProvider, useCommandMenuContext] =\n createComponentContext<CommandMenuContextValue>(\"CommandMenu\");\n\nconst CommandMenuGroupContext = React.createContext<string>(\"\");\n\nfunction CommandMenuRootProvider({ children }: { children: React.ReactNode }) {\n const listboxId = React.useId();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const itemsRef = React.useRef<Map<string, ItemEntry>>(new Map());\n const orderSeqRef = React.useRef(0);\n const orderMapRef = React.useRef<Map<string, number>>(new Map());\n const [version, bump] = React.useReducer((n: number) => n + 1, 0);\n\n const [search, setSearch] = React.useState(\"\");\n const [activeId, setActiveId] = React.useState<string | null>(null);\n\n React.useLayoutEffect(() => {\n orderSeqRef.current = 0;\n orderMapRef.current.clear();\n }, []);\n\n React.useEffect(() => {\n setSearch(\"\");\n setActiveId(null);\n const id = requestAnimationFrame(() => inputRef.current?.focus());\n return () => cancelAnimationFrame(id);\n }, []);\n\n const registerItem = React.useCallback(\n (\n id: string,\n patch: Omit<ItemEntry, \"id\" | \"order\" | \"onSelectRef\"> & {\n onSelectRef: ItemEntry[\"onSelectRef\"];\n },\n ) => {\n let order = orderMapRef.current.get(id);\n if (order === undefined) {\n order = orderSeqRef.current++;\n orderMapRef.current.set(id, order);\n }\n itemsRef.current.set(id, { ...patch, id, order });\n bump();\n return () => {\n itemsRef.current.delete(id);\n bump();\n };\n },\n [],\n );\n\n const visibleIds = React.useMemo(() => {\n void version;\n const list = [...itemsRef.current.values()].sort((a, b) => a.order - b.order);\n return list\n .filter((e) => matchesQuery(e, search))\n .filter((e) => !e.disabled)\n .map((e) => e.id);\n }, [search, version]);\n\n const itemGet = React.useCallback((id: string) => itemsRef.current.get(id), []);\n\n React.useLayoutEffect(() => {\n setActiveId((prev) => {\n if (visibleIds.length === 0) return null;\n if (prev && visibleIds.includes(prev)) return prev;\n return visibleIds[0] ?? null;\n });\n }, [visibleIds]);\n\n const moveActive = React.useCallback(\n (delta: number) => {\n if (visibleIds.length === 0) return;\n setActiveId((prev) => {\n const idx = prev ? visibleIds.indexOf(prev) : -1;\n const next = idx < 0 ? 0 : (idx + delta + visibleIds.length) % visibleIds.length;\n return visibleIds[next] ?? null;\n });\n },\n [visibleIds],\n );\n\n const activateSelected = React.useCallback(() => {\n if (!activeId) return;\n itemsRef.current.get(activeId)?.onSelectRef.current?.();\n }, [activeId]);\n\n const value = React.useMemo(\n () => ({\n search,\n setSearch,\n listboxId,\n activeId,\n setActiveId,\n registerItem,\n visibleIds,\n itemGet,\n moveActive,\n activateSelected,\n inputRef,\n }),\n [search, listboxId, activeId, registerItem, visibleIds, itemGet, moveActive, activateSelected],\n );\n\n return <CommandMenuProvider value={value}>{children}</CommandMenuProvider>;\n}\n\n// \u2500\u2500\u2500 Dialog \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuDialogProps = Omit<ModalRootProps, \"children\"> &\n Pick<\n ModalPanelProps,\n \"children\" | \"className\" | \"overlayClassName\" | \"aria-labelledby\" | \"aria-describedby\"\n > & {\n /** \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0430\u043D\u0435\u043B\u0438 (\u0441\u043E\u0432\u043C\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u0441 `className` \u043F\u0430\u043D\u0435\u043B\u0438). */\n contentClassName?: string;\n };\n\nfunction CommandMenuDialog({\n children,\n overlayClassName,\n className,\n contentClassName,\n open,\n defaultOpen,\n onOpenChange,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n}: CommandMenuDialogProps) {\n return (\n <Modal.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n closeOnEscape={closeOnEscape}\n closeOnOverlayClick={closeOnOverlayClick}\n >\n <Modal.Panel\n aria-describedby={ariaDescribedBy}\n aria-labelledby={ariaLabelledBy}\n className={cx(styles.dialogContent, styles.root, contentClassName, className)}\n overlayClassName={cx(\n scrollContainerStyles.root,\n scrollContainerStyles.vertical,\n scrollContainerStyles.flexItem,\n scrollContainerStyles.touch,\n scrollContainerStyles.overscrollContain,\n styles.dialogOverlay,\n overlayClassName,\n )}\n >\n <CommandMenuRootProvider>{children}</CommandMenuRootProvider>\n </Modal.Panel>\n </Modal.Root>\n );\n}\n\nfunction CommandMenuDialogTitle({ className, ...rest }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h2 className={cx(modalShellStyles.title, className)} {...rest} />;\n}\n\nfunction CommandMenuDialogDescription({\n className,\n ...rest\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cx(modalShellStyles.description, className)} {...rest} />;\n}\n\n// \u2500\u2500\u2500 Input row + input \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuInputRowProps = React.HTMLAttributes<HTMLDivElement> & {\n leading?: React.ReactNode;\n trailing?: React.ReactNode;\n /** `compact` \u2014 \u043D\u0438\u0436\u0435 \u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u043E\u0438\u0441\u043A\u0430, `comfortable` \u2014 \u0432\u044B\u0448\u0435. */\n density?: \"compact\" | \"comfortable\";\n};\n\nfunction CommandMenuInputRow({\n leading,\n trailing,\n children,\n className,\n density = \"compact\",\n ...rest\n}: CommandMenuInputRowProps) {\n return (\n <div\n className={cx(\n styles.inputRow,\n density === \"comfortable\" && styles.inputRowComfortable,\n className,\n )}\n {...rest}\n >\n {leading}\n {children}\n {trailing}\n </div>\n );\n}\n\nexport type CommandMenuInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"type\"\n>;\n\nconst CommandMenuInput = React.forwardRef<HTMLInputElement, CommandMenuInputProps>(\n ({ className, onKeyDown, value: valueProp, onChange, ...rest }, forwardedRef) => {\n const {\n search,\n setSearch,\n listboxId,\n activeId,\n moveActive,\n activateSelected,\n inputRef,\n setActiveId,\n visibleIds,\n } = useCommandMenuContext();\n\n const isControlled = valueProp !== undefined;\n\n React.useEffect(() => {\n if (isControlled) {\n setSearch(valueProp !== undefined && valueProp !== null ? String(valueProp) : \"\");\n }\n }, [isControlled, valueProp, setSearch]);\n\n const setRefs = React.useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef, inputRef],\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n if (!isControlled) {\n setSearch(e.target.value);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n moveActive(1);\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n moveActive(-1);\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n if (visibleIds[0]) setActiveId(visibleIds[0]);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n const last = visibleIds[visibleIds.length - 1];\n if (last) setActiveId(last);\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n activateSelected();\n }\n };\n\n return (\n <input\n {...rest}\n ref={setRefs}\n type=\"search\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listboxId}\n aria-activedescendant={activeId ? `${activeId}-option` : undefined}\n className={cx(styles.input, className)}\n value={isControlled ? valueProp : search}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n );\n },\n);\n\nCommandMenuInput.displayName = \"CommandMenu.Input\";\n\n// \u2500\u2500\u2500 List \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuListProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst CommandMenuList = React.forwardRef<HTMLDivElement, CommandMenuListProps>(\n ({ className, children, ...rest }, ref) => {\n const { listboxId } = useCommandMenuContext();\n\n return (\n <ScrollContainer\n ref={ref}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable={false}\n className={cx(styles.list, className)}\n {...rest}\n >\n {children}\n </ScrollContainer>\n );\n },\n);\n\nCommandMenuList.displayName = \"CommandMenu.List\";\n\n// \u2500\u2500\u2500 Group \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuGroupProps = React.HTMLAttributes<HTMLDivElement> & {\n heading?: React.ReactNode;\n};\n\nfunction CommandMenuGroup({ heading, className, children, ...rest }: CommandMenuGroupProps) {\n const groupId = React.useId();\n const { visibleIds, itemGet } = useCommandMenuContext();\n\n const hasVisible = visibleIds.some((id) => itemGet(id)?.groupId === groupId);\n\n return (\n <CommandMenuGroupContext.Provider value={groupId}>\n <div className={cx(styles.group, className)} hidden={hasVisible ? undefined : true} {...rest}>\n {heading !== undefined && heading !== null ? (\n typeof heading === \"string\" ? (\n <div className={styles.groupHeading}>{heading}</div>\n ) : (\n <div className={styles.groupHeadingRich}>{heading}</div>\n )\n ) : null}\n {children}\n </div>\n </CommandMenuGroupContext.Provider>\n );\n}\n\n// \u2500\u2500\u2500 Item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuItemSize = \"s\" | \"m\";\n\nexport type CommandMenuItemProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\" | \"onSelect\"\n> & {\n /** \u0422\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438; \u043F\u0443\u0441\u0442\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u2014 \u043F\u0443\u043D\u043A\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0438\u0434\u0435\u043D \u043F\u0440\u0438 \u043B\u044E\u0431\u043E\u043C \u0437\u0430\u043F\u0440\u043E\u0441\u0435. */\n value: string;\n keywords?: string;\n size?: CommandMenuItemSize;\n onSelect?: () => void;\n};\n\nconst CommandMenuItem = React.forwardRef<HTMLButtonElement, CommandMenuItemProps>(\n (\n {\n className,\n value,\n keywords = \"\",\n disabled,\n size = \"s\",\n onSelect,\n onClick,\n onPointerMove,\n ...rest\n },\n forwardedRef,\n ) => {\n const id = React.useId();\n const optionId = `${id}-option`;\n const groupId = React.useContext(CommandMenuGroupContext);\n const { registerItem, activeId, setActiveId, visibleIds } = useCommandMenuContext();\n const onSelectRef = React.useRef(onSelect);\n\n React.useEffect(() => {\n onSelectRef.current = onSelect;\n }, [onSelect]);\n\n React.useLayoutEffect(() => {\n return registerItem(id, {\n value,\n keywords,\n disabled: Boolean(disabled),\n groupId,\n onSelectRef,\n });\n }, [id, value, keywords, disabled, groupId, registerItem]);\n\n const filteredIn = visibleIds.includes(id);\n const selected = activeId === id;\n const listRef = React.useRef<HTMLButtonElement>(null);\n\n const setRefs = React.useCallback(\n (node: HTMLButtonElement | null) => {\n listRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n\n React.useEffect(() => {\n if (selected && listRef.current) {\n listRef.current.scrollIntoView?.({ block: \"nearest\" });\n }\n }, [selected]);\n\n const handlePointerMove = (e: React.PointerEvent<HTMLButtonElement>) => {\n onPointerMove?.(e);\n if (e.defaultPrevented || disabled) return;\n if (filteredIn) setActiveId(id);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n if (!filteredIn) return;\n setActiveId(id);\n onSelectRef.current?.();\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n id={optionId}\n role=\"option\"\n tabIndex={-1}\n aria-selected={selected}\n hidden={filteredIn ? undefined : true}\n disabled={disabled}\n className={cx(styles.item, className)}\n {...toDataAttributes({\n size,\n selected: selected ? true : undefined,\n disabled: disabled ? true : undefined,\n })}\n onPointerMove={handlePointerMove}\n onClick={handleClick}\n {...rest}\n />\n );\n },\n);\n\nCommandMenuItem.displayName = \"CommandMenu.Item\";\n\n// \u2500\u2500\u2500 Item icon (polymorphic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuItemIconProps<T extends React.ElementType = \"span\"> = {\n as?: T;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"as\" | \"className\">;\n\nfunction CommandMenuItemIcon<T extends React.ElementType = \"span\">({\n as,\n className,\n ...rest\n}: CommandMenuItemIconProps<T>) {\n const Comp = as ?? \"span\";\n return <Comp className={cx(styles.itemIcon, className)} {...rest} />;\n}\n\n// \u2500\u2500\u2500 \u0421\u0435\u043A\u0446\u0438\u044F \u0442\u0435\u0433\u043E\u0432 \u043F\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u043F\u043E\u0438\u0441\u043A\u0430 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuTagSectionProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction CommandMenuTagSection({ className, ...rest }: CommandMenuTagSectionProps) {\n return <div className={cx(styles.tagSection, className)} {...rest} />;\n}\n\nexport type CommandMenuTagSectionLabelProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction CommandMenuTagSectionLabel({ className, ...rest }: CommandMenuTagSectionLabelProps) {\n return <div className={cx(styles.tagSectionLabel, className)} {...rest} />;\n}\n\nexport type CommandMenuTagRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction CommandMenuTagRow({ className, ...rest }: CommandMenuTagRowProps) {\n return <div className={cx(styles.tagRow, className)} {...rest} />;\n}\n\n// \u2500\u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type CommandMenuFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction CommandMenuFooter({ className, ...rest }: CommandMenuFooterProps) {\n return <div className={cx(styles.footer, className)} {...rest} />;\n}\n\nexport type CommandMenuFooterKeyBoxProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> & {\n /** \u041D\u0430 \u0444\u0443\u0442\u0435\u0440\u0435 \u0441 `footerMuted` \u2014 \u0431\u0435\u0439\u0434\u0436 `lighter`, \u0438\u043D\u0430\u0447\u0435 `stroke` (\u043A\u043E\u043D\u0442\u0443\u0440). */\n tone?: \"default\" | \"muted\";\n};\n\nconst CommandMenuFooterKeyBox = React.forwardRef<HTMLDivElement, CommandMenuFooterKeyBoxProps>(\n ({ className, children, tone = \"default\", ...rest }, ref) => {\n const variant = tone === \"muted\" ? \"lighter\" : \"stroke\";\n return (\n <Badge.Root\n ref={ref}\n variant={variant}\n color=\"gray\"\n size=\"s\"\n className={cx(styles.footerKeyBadge, className)}\n {...rest}\n >\n <Badge.Icon>{children}</Badge.Icon>\n </Badge.Root>\n );\n },\n);\n\nCommandMenuFooterKeyBox.displayName = \"CommandMenu.FooterKeyBox\";\n\n// \u2500\u2500\u2500 Namespace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const CommandMenu = {\n Dialog: CommandMenuDialog,\n DialogTitle: CommandMenuDialogTitle,\n DialogDescription: CommandMenuDialogDescription,\n InputRow: CommandMenuInputRow,\n Input: CommandMenuInput,\n List: CommandMenuList,\n Group: CommandMenuGroup,\n Item: CommandMenuItem,\n ItemIcon: CommandMenuItemIcon,\n TagSection: CommandMenuTagSection,\n TagSectionLabel: CommandMenuTagSectionLabel,\n TagRow: CommandMenuTagRow,\n Footer: CommandMenuFooter,\n FooterKeyBox: CommandMenuFooterKeyBox,\n};\n", "import * as React from \"react\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useFocusTrap } from \"@/hooks/useFocusTrap\";\nimport { useModalKeyboard } from \"@/hooks/useModalKeyboard\";\nimport { useScrollLock } from \"@/hooks/useScrollLock\";\nimport { Icon } from \"@/icons\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { mergeRefs } from \"@/internal/mergeRefs\";\nimport { OverlayPortalLayerProvider } from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\nimport type { ButtonSize } from \"@/internal/states\";\n\nimport styles from \"./Modal.module.css\";\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** \u0415\u0434\u0438\u043D\u044B\u0439 \u043C\u0430\u0441\u0448\u0442\u0430\u0431 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u0438 \u043A\u0430\u0441\u043A\u0430\u0434\u0430 `ControlSizeProvider` (\u043A\u043D\u043E\u043F\u043A\u0430 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0432 \u0448\u0430\u043F\u043A\u0435 \u0431\u0435\u0437 \u0441\u0432\u043E\u0435\u0433\u043E `size`). */\nconst MODAL_SHELL_SIZE = \"m\" as const satisfies ButtonSize;\n\ntype ModalContextValue = {\n open: boolean;\n onOpen: () => void;\n onClose: () => void;\n closeOnEscape: boolean;\n closeOnOverlayClick: boolean;\n confirmOnEnter: boolean;\n onEnterConfirm?: (event: KeyboardEvent) => void;\n primaryActionRef: React.MutableRefObject<HTMLElement | null>;\n};\n\nconst [ModalProvider, useModalContext] = createComponentContext<ModalContextValue>(\"Modal\");\n\n/** \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0441\u0432\u044F\u0437\u043A\u0430 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u2194 \u0448\u0430\u043F\u043A\u0438: id \u0434\u043B\u044F `h2`/`p` \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0434\u043B\u044F `aria-*` \u043D\u0430 `role=\"dialog\"`. */\ntype ModalContentShellContextValue = {\n titleId: string;\n descId: string;\n registerHeader: (state: { hasDescription: boolean } | null) => void;\n};\n\nconst ModalContentShellContext = React.createContext<ModalContentShellContextValue | null>(null);\n\nfunction useModalContentShell(): ModalContentShellContextValue {\n const value = React.useContext(ModalContentShellContext);\n if (value === null) {\n throw new Error(\n \"[prime-ui-kit] Modal header block must be used inside the dialog panel (internal).\",\n );\n }\n return value;\n}\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type ModalRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n closeOnEscape?: boolean;\n closeOnOverlayClick?: boolean;\n /**\n * \u0415\u0441\u043B\u0438 `true`, Enter \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442 `click()` \u043F\u043E \u043A\u043D\u043E\u043F\u043A\u0435 \u0438\u0437 `Modal.Footer` **`primary`** (\u0438\u043B\u0438 **`onEnterConfirm`**).\n */\n confirmOnEnter?: boolean;\n /**\n * \u0417\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u043E\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u043E Enter: \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043C\u0435\u0441\u0442\u043E \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E\u0433\u043E `click()` \u043F\u043E **`primary`**.\n * \u041F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438 \u043F\u043E\u0434\u0430\u0432\u0438\u0442\u044C \u043D\u0430\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u043F\u043E\u0434 \u0444\u043E\u043A\u0443\u0441\u043E\u043C \u0432\u044B\u0437\u043E\u0432\u0438\u0442\u0435 `event.preventDefault()`.\n */\n onEnterConfirm?: (event: KeyboardEvent) => void;\n children?: React.ReactNode;\n};\n\nfunction ModalRoot({\n open,\n defaultOpen = false,\n onOpenChange,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n confirmOnEnter = true,\n onEnterConfirm,\n children,\n}: ModalRootProps) {\n const [isOpen, setIsOpen] = useControllableState({\n value: open,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const primaryActionRef = React.useRef<HTMLElement | null>(null);\n\n const onOpen = React.useCallback(() => setIsOpen(true), [setIsOpen]);\n const onClose = React.useCallback(() => setIsOpen(false), [setIsOpen]);\n\n return (\n <ModalProvider\n value={{\n open: isOpen,\n onOpen,\n onClose,\n closeOnEscape,\n closeOnOverlayClick,\n confirmOnEnter,\n onEnterConfirm,\n primaryActionRef,\n }}\n >\n {children}\n </ModalProvider>\n );\n}\n\n// \u2500\u2500\u2500 Trigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type ModalTriggerProps = {\n children: React.ReactElement<{ onClick?: React.MouseEventHandler }>;\n};\n\nfunction ModalTrigger({ children }: ModalTriggerProps) {\n const { onOpen } = useModalContext();\n const child = React.Children.only(children);\n return React.cloneElement(child, {\n onClick: (event: React.MouseEvent) => {\n child.props.onClick?.(event);\n if (!event.defaultPrevented) {\n onOpen();\n }\n },\n });\n}\n\n// \u2500\u2500\u2500 Close \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type ModalCloseProps = {\n children: React.ReactElement<{\n onClick?: React.MouseEventHandler;\n className?: string;\n size?: ButtonSize;\n ref?: React.Ref<HTMLElement>;\n }>;\n};\n\nconst ModalClose = React.forwardRef<HTMLElement, ModalCloseProps>(function ModalClose(\n { children },\n forwardedRef,\n) {\n const { onClose } = useModalContext();\n const child = React.Children.only(children);\n const childRef = (child as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref;\n const mergedRef = mergeRefs(childRef, forwardedRef);\n\n return React.cloneElement(child, {\n ref: mergedRef,\n onClick: (event: React.MouseEvent) => {\n child.props.onClick?.(event);\n if (!event.defaultPrevented) {\n onClose();\n }\n },\n });\n});\n\n// \u2500\u2500\u2500 Footer (\u043F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0439 \u0441\u043B\u043E\u0442: secondary \u2192 extra \u2192 primary) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type ModalFooterProps = Omit<React.HTMLAttributes<HTMLElement>, \"children\"> & {\n /** \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 (Enter \u043F\u0440\u0438 `confirmOnEnter`); \u043E\u0434\u0438\u043D \u044D\u043B\u0435\u043C\u0435\u043D\u0442, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 `Button.Root`. */\n primary?: React.ReactElement<{\n ref?: React.Ref<HTMLElement>;\n onClick?: React.MouseEventHandler;\n className?: string;\n size?: ButtonSize;\n }>;\n /** \u041E\u0431\u044B\u0447\u043D\u043E \u043E\u0442\u043C\u0435\u043D\u0430 / \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u0435 (`Modal.Close` + \u043A\u043D\u043E\u043F\u043A\u0430). */\n secondary?: React.ReactNode;\n /** \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043A\u043D\u043E\u043F\u043A\u0438 \u043C\u0435\u0436\u0434\u0443 `secondary` \u0438 `primary` (\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043A\u043D\u043E\u043F\u043E\u043A \u2014 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442). */\n extra?: React.ReactNode;\n};\n\nfunction FooterPrimarySlot({\n children,\n}: {\n children: React.ReactElement<{\n ref?: React.Ref<HTMLElement>;\n onClick?: React.MouseEventHandler;\n className?: string;\n size?: ButtonSize;\n }>;\n}) {\n const { primaryActionRef } = useModalContext();\n const child = React.Children.only(children);\n const childRef = (child as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref;\n const mergedRef = mergeRefs(childRef, (node: HTMLElement | null) => {\n primaryActionRef.current = node;\n });\n\n return React.cloneElement(child, { ref: mergedRef });\n}\n\nfunction ModalFooter({ primary, secondary, extra, className, ...rest }: ModalFooterProps) {\n return (\n <footer className={cx(styles.footer, className)} data-prime-modal-footer=\"\" {...rest}>\n {secondary}\n {extra}\n {primary != null ? <FooterPrimarySlot>{primary}</FooterPrimarySlot> : null}\n </footer>\n );\n}\n\n// \u2500\u2500\u2500 Portal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalPortalProps = {\n children: React.ReactNode;\n container?: HTMLElement | null;\n};\n\nfunction ModalPortal({ children, container }: ModalPortalProps) {\n const { open } = useModalContext();\n if (!open) return null;\n return <Portal container={container}>{children}</Portal>;\n}\n\n// \u2500\u2500\u2500 Overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalOverlayProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction ModalOverlay({ className, onClick, children, ...rest }: ModalOverlayProps) {\n const { onClose, closeOnOverlayClick } = useModalContext();\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && closeOnOverlayClick && event.target === event.currentTarget) {\n onClose();\n }\n };\n\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: backdrop overlay; keyboard handled by useModalKeyboard in ModalContent\n <div\n role=\"presentation\"\n className={cx(styles.overlay, className)}\n onClick={handleClick}\n data-testid=\"modal-overlay\"\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n// \u2500\u2500\u2500 Layer (Portal + Overlay) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalLayerProps = ModalPortalProps & Omit<ModalOverlayProps, \"children\">;\n\nfunction ModalLayer({ children, container, ...overlayProps }: ModalLayerProps) {\n return (\n <ModalPortal container={container}>\n <ModalOverlay {...overlayProps}>{children}</ModalOverlay>\n </ModalPortal>\n );\n}\n\n// \u2500\u2500\u2500 Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalContentProps = React.HTMLAttributes<HTMLDivElement> & {\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n};\n\nfunction ModalContent({\n children,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledByProp,\n \"aria-describedby\": ariaDescribedByProp,\n ...rest\n}: ModalContentProps) {\n const { open, onClose, closeOnEscape, confirmOnEnter, onEnterConfirm, primaryActionRef } =\n useModalContext();\n\n const internalTitleId = React.useId();\n const internalDescId = React.useId();\n const titleId = ariaLabelledByProp ?? internalTitleId;\n const descId = ariaDescribedByProp ?? internalDescId;\n\n const [headerState, setHeaderState] = React.useState<{ hasDescription: boolean } | null>(null);\n const registerHeader = React.useCallback((state: { hasDescription: boolean } | null) => {\n setHeaderState(state);\n }, []);\n\n const shellValue = React.useMemo<ModalContentShellContextValue>(\n () => ({ titleId, descId, registerHeader }),\n [titleId, descId, registerHeader],\n );\n\n const ariaLabelledByResolved =\n ariaLabelledByProp ?? (ariaLabel ? undefined : headerState != null ? titleId : undefined);\n const ariaDescribedByResolved =\n ariaDescribedByProp ?? (headerState?.hasDescription ? descId : undefined);\n\n const trapRef = useFocusTrap<HTMLDivElement>({ enabled: open });\n\n useScrollLock(open);\n\n useModalKeyboard({\n open,\n trapRef,\n closeOnEscape,\n onClose,\n confirmOnEnter,\n onEnterConfirm,\n primaryRef: primaryActionRef,\n });\n\n React.useEffect(() => {\n if (!open) return;\n\n const container = trapRef.current;\n if (!container) return;\n\n let portalRoot: Element | null = container;\n while (portalRoot && portalRoot.parentElement !== document.body) {\n portalRoot = portalRoot.parentElement;\n }\n\n const siblings = Array.from(document.body.children).filter((el) => el !== portalRoot);\n const prev = siblings.map((el) => ({\n el: el as HTMLElement,\n inert: (el as HTMLElement).inert,\n ariaHidden: el.getAttribute(\"aria-hidden\"),\n }));\n\n for (const { el } of prev) {\n el.inert = true;\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n\n return () => {\n for (const { el, inert, ariaHidden } of prev) {\n el.inert = inert;\n if (ariaHidden === null) {\n el.removeAttribute(\"aria-hidden\");\n } else {\n el.setAttribute(\"aria-hidden\", ariaHidden);\n }\n }\n };\n }, [open, trapRef]);\n\n return (\n <ModalContentShellContext.Provider value={shellValue}>\n <div\n ref={trapRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledByResolved}\n aria-describedby={ariaDescribedByResolved}\n tabIndex={-1}\n className={cx(styles.content, className)}\n {...rest}\n >\n <OverlayPortalLayerProvider value=\"modal\">\n <ControlSizeProvider value={MODAL_SHELL_SIZE}>{children}</ControlSizeProvider>\n </OverlayPortalLayerProvider>\n </div>\n </ModalContentShellContext.Provider>\n );\n}\n\n// \u2500\u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalHeaderProps = Omit<React.HTMLAttributes<HTMLElement>, \"title\"> & {\n icon?: React.ReactNode;\n /** \u0422\u0435\u043A\u0441\u0442 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 (\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F \u043A\u0430\u043A `h2`). */\n title: React.ReactNode;\n /** \u041F\u043E\u0434\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C (\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F \u043A\u0430\u043A `p`). */\n description?: React.ReactNode;\n /** \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u043A\u043D\u043E\u043F\u043A\u0443 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0432 \u0448\u0430\u043F\u043A\u0435 (\u0438\u043A\u043E\u043D\u043A\u0430). */\n showClose?: boolean;\n /** \u041F\u043E\u0434\u043F\u0438\u0441\u044C \u0434\u043B\u044F \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0439 \u043A\u043D\u043E\u043F\u043A\u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F (`aria-label`). */\n closeAriaLabel?: string;\n};\n\nfunction ModalHeader({\n icon,\n title,\n description,\n showClose = true,\n closeAriaLabel = \"Close\",\n className,\n ...rest\n}: ModalHeaderProps) {\n const { onClose } = useModalContext();\n const { titleId, descId, registerHeader } = useModalContentShell();\n\n const hasDescription = description != null && description !== \"\";\n\n React.useLayoutEffect(() => {\n registerHeader({\n hasDescription,\n });\n return () => {\n registerHeader(null);\n };\n }, [hasDescription, registerHeader]);\n\n return (\n <header\n className={cx(styles.header, !hasDescription && styles.headerNoDescription, className)}\n {...rest}\n >\n {icon && <div className={styles.headerIcon}>{icon}</div>}\n <div className={styles.headText}>\n <h2 id={titleId} className={styles.title}>\n {title}\n </h2>\n {hasDescription ? (\n <p id={descId} className={styles.description}>\n {description}\n </p>\n ) : null}\n {showClose ? (\n <Button.Root\n type=\"button\"\n variant=\"neutral\"\n mode=\"ghost\"\n size={MODAL_SHELL_SIZE}\n aria-label={closeAriaLabel}\n className={styles.closeBtn}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n if (!event.defaultPrevented) {\n onClose();\n }\n }}\n >\n <Button.Icon>\n <Icon name=\"action.close\" tone=\"subtle\" />\n </Button.Icon>\n </Button.Root>\n ) : null}\n </div>\n </header>\n );\n}\n\n// \u2500\u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype ModalBodyProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction ModalBody({ children, className, ...rest }: ModalBodyProps) {\n return (\n <div className={cx(styles.body, className)} {...rest}>\n {children}\n </div>\n );\n}\n\n// \u2500\u2500\u2500 Panel (\u043F\u0443\u0431\u043B\u0438\u0447\u043D\u0430\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430: Layer + Content + \u0448\u0430\u043F\u043A\u0430/\u0442\u0435\u043B\u043E/\u043F\u043E\u0434\u0432\u0430\u043B) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type ModalPanelProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> & {\n /** \u0423\u0437\u0435\u043B \u0434\u043B\u044F `createPortal` (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `document.body`). */\n container?: HTMLElement | null;\n /** \u041A\u043B\u0430\u0441\u0441 \u043D\u0430 \u043F\u043E\u043B\u043D\u043E\u044D\u043A\u0440\u0430\u043D\u043D\u043E\u0439 \u043F\u043E\u0434\u043B\u043E\u0436\u043A\u0435. */\n overlayClassName?: string;\n /** \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A; \u0435\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D, \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F \u0448\u0430\u043F\u043A\u0430 \u0441 `h2` \u0438 \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E \u0442\u0435\u043B\u043E\u043C \u0441 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u043C. */\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n showClose?: boolean;\n closeAriaLabel?: string;\n /** \u041F\u0440\u0438 `title` \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0432 \u0437\u043E\u043D\u0443 \u0442\u0435\u043B\u0430; \u0431\u0435\u0437 `title` \u2014 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F \u0441\u0440\u0430\u0437\u0443 \u0432 \u043F\u0430\u043D\u0435\u043B\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 headless-\u0434\u0438\u0430\u043B\u043E\u0433). */\n children?: React.ReactNode;\n /** \u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u043E `Modal.Footer` \u0441\u043E \u0441\u043B\u043E\u0442\u0430\u043C\u0438 `secondary` / `extra` / `primary` \u0434\u043B\u044F \u044F\u0432\u043D\u043E\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043F\u043E Enter. */\n footer?: React.ReactNode;\n footerClassName?: string;\n bodyClassName?: string;\n bodyStyle?: React.CSSProperties;\n};\n\nfunction ModalPanel({\n container,\n overlayClassName,\n className,\n style,\n title,\n description,\n icon,\n showClose = true,\n closeAriaLabel = \"Close\",\n children,\n footer,\n footerClassName,\n bodyClassName,\n bodyStyle,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: ModalPanelProps) {\n const hasHeader = title != null && title !== \"\";\n\n const footerNode =\n footer != null ? (\n React.isValidElement(footer) && footer.type === ModalFooter ? (\n React.cloneElement(footer as React.ReactElement<ModalFooterProps>, {\n className: cx((footer.props as ModalFooterProps).className, footerClassName),\n })\n ) : (\n <footer className={cx(styles.footer, footerClassName)}>{footer}</footer>\n )\n ) : null;\n\n return (\n <ModalLayer className={overlayClassName} container={container}>\n <ModalContent\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n className={className}\n style={style}\n {...rest}\n >\n {hasHeader ? (\n <ModalHeader\n closeAriaLabel={closeAriaLabel}\n description={description}\n icon={icon}\n showClose={showClose}\n title={title}\n />\n ) : null}\n {children != null ? (\n hasHeader ? (\n <ModalBody className={bodyClassName} style={bodyStyle}>\n {children}\n </ModalBody>\n ) : (\n children\n )\n ) : null}\n {footerNode}\n </ModalContent>\n </ModalLayer>\n );\n}\n\n// \u2500\u2500\u2500 \u041F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0439 API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Modal = {\n Root: ModalRoot,\n Trigger: ModalTrigger,\n Close: ModalClose,\n Footer: ModalFooter,\n Panel: ModalPanel,\n};\n", "import * as React from \"react\";\n\nimport { useEscapeKey } from \"@/hooks/useEscapeKey\";\n\nfunction shouldBlockEnterConfirm(target: EventTarget | null): boolean {\n if (!target || !(target instanceof HTMLElement)) {\n return false;\n }\n const el = target;\n if (el.isContentEditable) {\n return true;\n }\n if (el.closest('[contenteditable=\"true\"]')) {\n return true;\n }\n const tag = el.tagName;\n if (tag === \"TEXTAREA\") {\n return true;\n }\n if (tag === \"SELECT\") {\n return true;\n }\n if (tag === \"INPUT\") {\n const { type } = el as HTMLInputElement;\n return (\n type === \"checkbox\" ||\n type === \"radio\" ||\n type === \"file\" ||\n type === \"button\" ||\n type === \"submit\" ||\n type === \"reset\"\n );\n }\n return false;\n}\n\nexport type UseModalKeyboardOptions = {\n open: boolean;\n trapRef: React.RefObject<HTMLElement | null>;\n closeOnEscape: boolean;\n onClose: () => void;\n confirmOnEnter: boolean;\n onEnterConfirm?: (event: KeyboardEvent) => void;\n /** \u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F (\u043A\u043D\u043E\u043F\u043A\u0430 \u0438\u0437 `Modal.Footer` `primary`). */\n primaryRef: React.RefObject<HTMLElement | null>;\n};\n\n/** Escape + Enter \u0434\u043B\u044F `role=\"dialog\"`: Escape \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442; Enter \u0438\u043C\u0438\u0442\u0438\u0440\u0443\u0435\u0442 `click()` \u043F\u043E `primaryRef`. */\nexport function useModalKeyboard({\n open,\n trapRef,\n closeOnEscape,\n onClose,\n confirmOnEnter,\n onEnterConfirm,\n primaryRef,\n}: UseModalKeyboardOptions) {\n useEscapeKey({ enabled: closeOnEscape && open, onEscape: onClose });\n\n React.useEffect(() => {\n if (!open || !confirmOnEnter) {\n return;\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Enter\" || event.repeat) {\n return;\n }\n\n const container = trapRef.current;\n if (!container) {\n return;\n }\n\n const active = document.activeElement;\n if (!active || !container.contains(active)) {\n return;\n }\n\n const header = container.querySelector(\"header\");\n if (header && event.target instanceof Node && header.contains(event.target)) {\n return;\n }\n\n if (shouldBlockEnterConfirm(event.target)) {\n return;\n }\n\n if (onEnterConfirm) {\n onEnterConfirm(event);\n return;\n }\n\n const primary = primaryRef.current;\n if (!primary) {\n return;\n }\n\n if (active === primary) {\n return;\n }\n\n event.preventDefault();\n primary.click();\n };\n\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => document.removeEventListener(\"keydown\", onKeyDown, true);\n }, [open, confirmOnEnter, onEnterConfirm, primaryRef, trapRef]);\n}\n", ".overlay {\n position: fixed;\n inset: 0;\n z-index: var(--prime-sys-elevation-zIndex-modal);\n background: var(--prime-sys-color-surface-overlay);\n backdrop-filter: blur(var(--prime-sys-unit-8px));\n display: grid;\n place-items: center;\n animation: fadeIn var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n padding-inline: var(--prime-sys-size-modal-overlayPaddingX);\n padding-block: var(--prime-sys-size-modal-overlayPaddingY);\n}\n\n.content {\n box-sizing: border-box;\n background: var(--prime-sys-color-surface-elevated);\n color: var(--prime-sys-color-content-primary);\n box-shadow: var(--prime-sys-elevation-shadow-modal);\n display: grid;\n outline: none;\n animation: scaleIn var(--prime-sys-motion-slow) var(--prime-sys-motion-standard);\n width: min(100%, var(--prime-sys-size-modal-maxWidth));\n border-radius: var(--prime-sys-size-modal-radius);\n padding-inline: var(--prime-sys-size-modal-paddingX);\n padding-block: var(--prime-sys-size-modal-paddingY);\n gap: var(--prime-sys-size-modal-contentGap);\n}\n\n.header,\n.body,\n.footer {\n width: 100%;\n}\n\n.header {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: var(--prime-sys-size-modal-headerGap);\n}\n\n/* \u0411\u0435\u0437 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u2014 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0438 \u0438\u043A\u043E\u043D\u043A\u0430 \u043F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 \u0441\u0442\u0440\u043E\u043A\u0438 \u0448\u0430\u043F\u043A\u0438. */\n.headerNoDescription {\n align-items: center;\n}\n\n.title {\n line-height: 1.2;\n font-weight: var(--prime-sys-typography-title-weight);\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.description {\n color: var(--prime-sys-color-content-secondary);\n font-size: var(--prime-sys-size-control-m-supportText);\n}\n\n.headText {\n display: grid;\n gap: var(--prime-sys-size-modal-titleGap);\n padding-right: var(--prime-sys-size-modal-headTextPaddingRight);\n}\n\n.headerIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--prime-sys-color-surface-raised);\n color: var(--prime-sys-color-content-secondary);\n flex: 0 0 auto;\n width: var(--prime-sys-size-modal-headerIconSize);\n height: var(--prime-sys-size-modal-headerIconSize);\n border-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.closeButton {\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.closeBtn {\n position: absolute;\n right: 0;\n top: 0;\n padding-inline: 0;\n gap: 0;\n width: var(--prime-sys-size-control-m-height);\n min-width: var(--prime-sys-size-control-m-height);\n height: var(--prime-sys-size-control-m-height);\n}\n\n.body,\n.footer {\n border-top: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n}\n\n.body {\n display: grid;\n padding-block: var(--prime-sys-size-modal-headerPaddingBottom);\n gap: var(--prime-sys-size-modal-bodyGap);\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes scaleIn {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.content[data-state=\"closed\"] {\n animation: none;\n}\n\n.overlay[data-state=\"closed\"] {\n animation: none;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n padding-top: var(--prime-sys-size-modal-footerPaddingTop);\n gap: var(--prime-sys-size-modal-footerGap);\n}\n\n.footer > * {\n flex: 1;\n min-width: fit-content;\n}\n\n.headerOnly {\n border-bottom: 0;\n padding-bottom: 0;\n}\n\n.bodyOnly {\n padding-top: 0;\n}\n\n.closeButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n", "/* \u041F\u0430\u043B\u0438\u0442\u0440\u0430 \u043A\u043E\u043C\u0430\u043D\u0434: \u043F\u0430\u043D\u0435\u043B\u044C \u0441\u0432\u0435\u0440\u0445\u0443 \u044D\u043A\u0440\u0430\u043D\u0430 */\n.dialogOverlay {\n /* \u041F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u0435\u043C Modal overlay (grid + place-items: center), \u0438\u043D\u0430\u0447\u0435 \u043F\u0430\u043D\u0435\u043B\u044C \u043D\u0435 \u0441\u0436\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430 (min-width: auto \u0443 grid-item). */\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n padding-top: var(--prime-sys-spacing-x5);\n padding-bottom: max(\n var(--prime-sys-size-control-m-buttonPaddingY),\n env(safe-area-inset-bottom, 0)\n );\n padding-left: max(var(--prime-sys-size-control-m-buttonPaddingX), env(safe-area-inset-left, 0));\n padding-right: max(var(--prime-sys-size-control-m-buttonPaddingX), env(safe-area-inset-right, 0));\n /* \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 ScrollContainer (\u043A\u043B\u0430\u0441\u0441\u044B \u0432 CommandMenuDialog overlayClassName) */\n}\n\n.dialogContent {\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n width: min(100%, var(--prime-sys-unit-45rem));\n max-height: min(88vh, var(--prime-sys-unit-44rem));\n padding: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n gap: 0;\n background: var(--prime-sys-color-surface-elevated);\n border-radius: var(--prime-sys-size-modal-radius);\n box-shadow: var(--prime-sys-elevation-shadow-modal);\n}\n\n/*\n * \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043A\u043B\u0430\u0441\u0441 .content \u0438\u0437 Modal.module.css (padding, gap, display: grid).\n * \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u0447\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u0448\u0435, \u0447\u0435\u043C \u0443 \u043E\u0434\u043D\u043E\u0433\u043E `.dialogContent`, \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043E \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u043E \u043F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u00AB\u0432\u0442\u043E\u0440\u0430\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430\u00BB\n * \u0441 \u043E\u0442\u0441\u0442\u0443\u043F\u043E\u043C ~var(--prime-sys-unit-16px). \u041A\u043E\u043C\u0431\u0438\u043D\u0438\u0440\u0443\u0435\u043C \u0441 role \u043D\u0430 \u0442\u043E\u043C \u0436\u0435 \u0443\u0437\u043B\u0435.\n */\n.dialogContent[role=\"dialog\"] {\n padding: 0;\n gap: 0;\n display: flex;\n flex-direction: column;\n /* \u041F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u0435\u043C width/border-radius \u0438\u0437 Modal `.content` (\u0442\u0430 \u0436\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u0447\u043D\u043E\u0441\u0442\u0438). */\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n width: min(100%, var(--prime-sys-unit-45rem));\n border-radius: var(--prime-sys-size-modal-radius);\n}\n\n/* \u0423\u0437\u043A\u0430\u044F \u043F\u0430\u043D\u0435\u043B\u044C (\u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0435 max-width) */\n.dialogContentNarrow {\n width: min(100%, var(--prime-sys-unit-39p5rem));\n max-width: 100%;\n}\n\n.dialogContent.dialogContentNarrow[role=\"dialog\"] {\n max-width: 100%;\n width: min(100%, var(--prime-sys-unit-39p5rem));\n}\n\n.dialogContentWide {\n width: min(100%, var(--prime-sys-unit-43p75rem));\n max-width: 100%;\n}\n\n.dialogContent.dialogContentWide[role=\"dialog\"] {\n max-width: 100%;\n width: min(100%, var(--prime-sys-unit-43p75rem));\n}\n\n/* \u041A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 */\n.dialogContent.dialogContentTight[role=\"dialog\"] {\n max-height: min(88vh, var(--prime-sys-unit-27p5rem));\n}\n\n@media (min-width: var(--prime-sys-unit-768px)) {\n .dialogContent.dialogContentTight[role=\"dialog\"] {\n height: var(--prime-sys-unit-27p5rem);\n max-height: min(88vh, var(--prime-sys-unit-27p5rem));\n }\n}\n\n/* Split: \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u043D\u0430 \u0448\u0438\u0440\u043E\u043A\u0438\u0445 \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430\u0445 */\n.dialogContent.dialogContentSplitMd[role=\"dialog\"] {\n overflow: hidden;\n}\n\n@media (min-width: var(--prime-sys-unit-768px)) {\n .dialogContent.dialogContentSplitMd[role=\"dialog\"] {\n height: var(--prime-sys-unit-27p5rem);\n max-height: min(88vh, var(--prime-sys-unit-27p5rem));\n }\n}\n\n.root {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n}\n\n.inputRow {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n box-sizing: border-box;\n width: 100%;\n min-height: var(--prime-sys-unit-3rem);\n padding-block: 0;\n padding-inline: var(--prime-sys-size-control-m-buttonPaddingX);\n background: var(--prime-sys-color-surface-elevated);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.inputRowComfortable {\n min-height: var(--prime-sys-unit-3p5rem);\n gap: var(--prime-sys-spacing-x3);\n}\n\n.inputIcon {\n flex-shrink: 0;\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n color: var(--prime-sys-color-content-muted);\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.inputRow:focus-within .inputIcon {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.input {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n color: var(--prime-sys-color-content-primary);\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n outline: none;\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.input::placeholder {\n color: var(--prime-sys-color-content-muted);\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.inputRow:hover .input::placeholder {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.list {\n flex: 1;\n min-height: 0;\n min-width: 0;\n /* \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 ScrollContainer */\n display: flex;\n flex-direction: column;\n}\n\n.group {\n position: relative;\n padding: var(--prime-sys-spacing-x2) var(--prime-sys-spacing-x2);\n}\n\n.groupFlush {\n padding: 0;\n}\n\n.groupHeading {\n font-size: var(--prime-sys-size-control-s-supportText);\n font-weight: var(--prime-sys-typography-weight-semibold);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--prime-sys-color-content-secondary);\n margin: 0 0 var(--prime-sys-spacing-x2);\n padding: var(--prime-sys-spacing-x2) var(--prime-sys-size-control-m-buttonPaddingX) 0;\n}\n\n/* \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0438\u0437 JSX (\u0438\u043A\u043E\u043D\u043A\u0438, \u0441\u0447\u0451\u0442\u0447\u0438\u043A\u0438) \u2014 \u0431\u0435\u0437 uppercase */\n.groupHeadingRich {\n margin: 0 0 var(--prime-sys-spacing-x2);\n padding: var(--prime-sys-spacing-x2) var(--prime-sys-size-control-m-buttonPaddingX) 0;\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-primary);\n font-weight: var(--prime-sys-typography-weight-regular);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.item {\n --cm-item-gap: var(--prime-sys-size-control-s-gap);\n --cm-item-radius: var(--prime-sys-size-control-s-radius);\n --cm-item-text: var(--prime-sys-size-control-s-text);\n --cm-item-icon: var(--prime-sys-size-control-s-icon);\n\n display: flex;\n align-items: center;\n gap: var(--cm-item-gap);\n border-radius: var(--cm-item-radius);\n background: transparent;\n color: var(--prime-sys-color-content-primary);\n font-size: var(--cm-item-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n cursor: pointer;\n border: none;\n width: 100%;\n text-align: left;\n font-family: inherit;\n padding-block: var(--prime-sys-spacing-x2);\n padding-inline: var(--prime-sys-size-control-s-buttonPaddingX);\n transition:\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.item[data-size=\"m\"] {\n --cm-item-gap: var(--prime-sys-size-control-m-gap);\n --cm-item-radius: var(--prime-sys-size-control-m-radius);\n --cm-item-text: var(--prime-sys-size-control-m-text);\n --cm-item-icon: var(--prime-sys-size-control-m-icon);\n\n padding-block: var(--prime-sys-spacing-x3);\n padding-inline: var(--prime-sys-size-control-m-buttonPaddingX);\n}\n\n.item:not([data-disabled=\"true\"]):hover {\n background: var(--prime-sys-color-surface-default);\n}\n\n.item[data-selected=\"true\"] {\n background: var(--prime-sys-color-surface-default);\n}\n\n.item[data-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.itemAlignStart {\n align-items: flex-start;\n}\n\n.itemIcon {\n flex-shrink: 0;\n width: var(--cm-item-icon);\n height: var(--cm-item-icon);\n color: var(--prime-sys-color-content-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--prime-sys-size-control-m-gap);\n min-height: var(--prime-sys-unit-3rem);\n padding: var(--prime-sys-spacing-x3) var(--prime-sys-size-control-m-buttonPaddingX);\n background: var(--prime-sys-color-surface-elevated);\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.footerDense {\n min-height: var(--prime-sys-unit-3p5rem);\n padding-block: var(--prime-sys-spacing-x3);\n}\n\n.footerMuted {\n background: var(--prime-sys-color-surface-default);\n}\n\n/* \u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u043A\u043B\u0430\u0432\u0438\u0448 \u0432 \u0444\u0443\u0442\u0435\u0440\u0435 \u2014 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u044B \u0447\u0435\u0440\u0435\u0437 Badge (\u0441\u043C. CommandMenuFooterKeyBox). */\n.footerKeyBadge {\n flex-shrink: 0;\n}\n\n.footerHint {\n font-size: var(--prime-sys-size-control-s-supportText);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.tagSection {\n flex-shrink: 0;\n padding: var(--prime-sys-spacing-x3) var(--prime-sys-size-control-m-buttonPaddingX);\n}\n\n.tagSectionLabel {\n margin: 0 0 var(--prime-sys-spacing-x3);\n font-size: var(--prime-sys-size-control-s-supportText);\n font-weight: var(--prime-sys-typography-weight-semibold);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.tagRow {\n display: flex;\n flex-wrap: wrap;\n gap: var(--prime-sys-spacing-x2);\n}\n\n/* \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u043F\u0440\u0430\u0432\u0430 \u0432 \u043F\u0443\u043D\u043A\u0442\u0435 \u2014 \u043F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 hover / \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0438 */\n.itemAction {\n opacity: 0;\n transition: opacity var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.item:hover .itemAction,\n.item:focus-visible .itemAction,\n.item[data-selected=\"true\"] .itemAction {\n opacity: 1;\n}\n", "import { ArrowDown, ArrowUp, ArrowUpDown } from \"lucide-react\";\nimport * as React from \"react\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport { DATA_TABLE_INFINITE_ROOT_MARGIN } from \"@/internal/runtimeUnits\";\nimport type { DataTableSize } from \"@/internal/states\";\n\nimport { Pagination } from \"../pagination/Pagination\";\nimport styles from \"./DataTable.module.css\";\n\nexport type { DataTableSize };\n\nexport type DataTableOrder = \"asc\" | \"desc\";\nexport type DataTableSortState = { columnId: string; order: DataTableOrder } | null;\nexport type DataTableCellAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableDividerStyle = \"standard\" | \"dashed\" | \"dotted\" | \"none\";\n\nexport type DataTableColumn<Row> = {\n id: string;\n header: React.ReactNode;\n accessor?: keyof Row | ((row: Row) => unknown);\n cell?: (row: Row) => React.ReactNode;\n sortable?: boolean;\n sortAccessor?: (row: Row) => unknown;\n sortComparator?: (a: Row, b: Row, order: DataTableOrder) => number;\n align?: DataTableCellAlign;\n width?: string;\n minWidth?: string;\n /** \u041E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0435 \u0448\u0438\u0440\u0438\u043D\u044B \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 `12rem` \u0438\u043B\u0438 `min(100%, 20rem)`). */\n maxWidth?: string;\n onHeaderClick?: (event: React.MouseEvent<HTMLTableCellElement>) => void;\n onCellClick?: (\n row: Row,\n event: React.MouseEvent<HTMLTableCellElement> | React.KeyboardEvent<HTMLTableCellElement>,\n ) => void;\n};\n\nexport type DataTableRootProps<Row> = {\n columns: DataTableColumn<Row>[];\n rows: Row[];\n size?: DataTableSize;\n className?: string;\n showHeader?: boolean;\n stickyHeader?: boolean;\n stickyFirstColumn?: boolean;\n getRowKey?: (row: Row, index: number) => React.Key;\n onRowClick?: (row: Row, index: number, event: React.MouseEvent<HTMLTableRowElement>) => void;\n loading?: boolean;\n loadingText?: React.ReactNode;\n emptyText?: React.ReactNode;\n dividerStyle?: DataTableDividerStyle;\n sort?: DataTableSortState;\n defaultSort?: DataTableSortState;\n onSortChange?: (sort: DataTableSortState) => void;\n page?: number;\n defaultPage?: number;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n showPagination?: boolean;\n siblingCount?: number;\n paginationSize?: DataTableSize;\n infiniteScroll?: boolean;\n initialVisibleRows?: number;\n infiniteBatchSize?: number;\n hasMore?: boolean;\n loadingMore?: boolean;\n onLoadMore?: () => void | Promise<void>;\n scrollHeight?: number | string;\n /**\n * \u0420\u0430\u0441\u0442\u044F\u043D\u0443\u0442\u044C `<table>` \u043D\u0430 100% \u0448\u0438\u0440\u0438\u043D\u044B \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430. \u041B\u0438\u0448\u043D\u044F\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0440\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u0432\u0438\u0436\u043A\u043E\u043C \u0442\u0430\u0431\u043B\u0438\u0446\u044B\n * (`table-layout: auto`) \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u2014 \u0441 \u043E\u043F\u043E\u0440\u043E\u0439 \u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0438 `width` / `minWidth` / `maxWidth` \u043A\u043E\u043B\u043E\u043D\u043E\u043A.\n * \u041F\u0440\u0438 `false` \u0448\u0438\u0440\u0438\u043D\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B \u043F\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u043C\u0443 (`width: max-content`).\n */\n fillWidth?: boolean;\n /** \u041F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 (\u043F\u043E\u043B\u0443\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u0430\u044F \u0441\u043C\u0435\u0441\u044C \u0441 \u0444\u043E\u043D\u043E\u043C \u0441\u0442\u0440\u043E\u043A\u0438). */\n highlightRowOnHover?: boolean;\n /** \u041F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u043F\u043E\u0434 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u043C (\u0448\u0430\u043F\u043A\u0430 + \u044F\u0447\u0435\u0439\u043A\u0438). */\n highlightColumnOnHover?: boolean;\n /** \u0427\u0435\u0440\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435 \u0444\u043E\u043D\u0430 \u0441\u0442\u0440\u043E\u043A (\u0437\u0435\u0431\u0440\u0430). */\n striped?: boolean;\n};\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction isDate(value: unknown): value is Date {\n return value instanceof Date;\n}\n\nfunction comparePrimitive(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return 1;\n if (b == null) return -1;\n\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n if (typeof a === \"boolean\" && typeof b === \"boolean\") return Number(a) - Number(b);\n if (isDate(a) && isDate(b)) return a.getTime() - b.getTime();\n\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n}\n\nfunction getColumnValue<Row>(row: Row, column: DataTableColumn<Row>): unknown {\n if (column.sortAccessor) return column.sortAccessor(row);\n\n if (typeof column.accessor === \"function\") return column.accessor(row);\n\n if (typeof column.accessor === \"string\") {\n const key = column.accessor as keyof Row;\n return row[key];\n }\n\n return undefined;\n}\n\nfunction renderColumnCell<Row>(row: Row, column: DataTableColumn<Row>): React.ReactNode {\n if (column.cell) return column.cell(row);\n const value = getColumnValue(row, column);\n if (value == null) return \"\u2014\";\n return String(value);\n}\n\nfunction nextOrder(current: DataTableSortState, columnId: string): DataTableSortState {\n if (!current || current.columnId !== columnId) return { columnId, order: \"asc\" };\n if (current.order === \"asc\") return { columnId, order: \"desc\" };\n return null;\n}\n\nfunction sortIndicator(sort: DataTableSortState, columnId: string): string {\n if (!sort || sort.columnId !== columnId) return \"none\";\n return sort.order;\n}\n\nfunction columnSizeStyle<Row>(column: DataTableColumn<Row>): React.CSSProperties | undefined {\n const { width, minWidth, maxWidth } = column;\n if (!width && !minWidth && !maxWidth) return undefined;\n return { width, minWidth, maxWidth };\n}\n\nfunction DataTableRoot<Row>({\n columns,\n rows,\n size = \"m\",\n className,\n showHeader = true,\n stickyHeader = false,\n stickyFirstColumn = false,\n getRowKey,\n onRowClick,\n loading = false,\n loadingText = \"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445\u2026\",\n emptyText = \"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445 \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F.\",\n dividerStyle = \"standard\",\n sort,\n defaultSort = null,\n onSortChange,\n page,\n defaultPage = 1,\n onPageChange,\n pageSize = 10,\n showPagination = true,\n siblingCount = 1,\n paginationSize,\n infiniteScroll = false,\n initialVisibleRows,\n infiniteBatchSize = 20,\n hasMore = false,\n loadingMore = false,\n onLoadMore,\n scrollHeight = 360,\n fillWidth = true,\n highlightRowOnHover = true,\n highlightColumnOnHover = false,\n striped = false,\n}: DataTableRootProps<Row>) {\n const [hoveredColumnId, setHoveredColumnId] = React.useState<string | null>(null);\n\n const clearHoveredColumn = React.useCallback(() => {\n setHoveredColumnId(null);\n }, []);\n\n const setHoveredColumn = React.useCallback(\n (columnId: string) => {\n if (highlightColumnOnHover) setHoveredColumnId(columnId);\n },\n [highlightColumnOnHover],\n );\n\n const [sortState, setSortState] = useControllableState<DataTableSortState>({\n value: sort,\n defaultValue: defaultSort,\n onChange: onSortChange,\n });\n\n const [pageState, setPageState] = useControllableState<number>({\n value: page,\n defaultValue: defaultPage,\n onChange: onPageChange,\n });\n\n const initialVisible = Math.max(1, initialVisibleRows ?? pageSize);\n const [visibleRowCount, setVisibleRowCount] = React.useState(initialVisible);\n const scrollRef = React.useRef<HTMLDivElement | null>(null);\n const sentinelRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport) return;\n\n viewport.style.maxHeight = infiniteScroll\n ? typeof scrollHeight === \"number\"\n ? `${scrollHeight}px`\n : scrollHeight\n : \"\";\n }, [infiniteScroll, scrollHeight]);\n\n const sortableColumns = React.useMemo(\n () => new Set(columns.filter((c) => c.sortable).map((c) => c.id)),\n [columns],\n );\n\n const sortedRows = React.useMemo(() => {\n if (!sortState || !sortableColumns.has(sortState.columnId)) return rows;\n\n const column = columns.find((item) => item.id === sortState.columnId);\n if (!column) return rows;\n\n const direction = sortState.order === \"asc\" ? 1 : -1;\n return rows\n .map((row, index) => ({ row, index }))\n .sort((a, b) => {\n const compared = column.sortComparator\n ? column.sortComparator(a.row, b.row, sortState.order)\n : comparePrimitive(getColumnValue(a.row, column), getColumnValue(b.row, column));\n\n if (compared === 0) return a.index - b.index;\n return compared * direction;\n })\n .map((item) => item.row);\n }, [columns, rows, sortState, sortableColumns]);\n\n const totalRows = sortedRows.length;\n const safePageSize = Math.max(1, pageSize);\n const totalPages = Math.max(1, Math.ceil(totalRows / safePageSize));\n const safePage = clamp(pageState, 1, totalPages);\n\n React.useEffect(() => {\n if (safePage !== pageState) setPageState(safePage);\n }, [pageState, safePage, setPageState]);\n\n React.useEffect(() => {\n if (infiniteScroll) {\n setVisibleRowCount(initialVisible);\n return;\n }\n setPageState(1);\n }, [infiniteScroll, initialVisible, setPageState]);\n\n React.useEffect(() => {\n if (!infiniteScroll) return;\n setVisibleRowCount((prev) => clamp(prev, initialVisible, Math.max(initialVisible, totalRows)));\n }, [infiniteScroll, initialVisible, totalRows]);\n\n const displayedRows = React.useMemo(() => {\n if (infiniteScroll) {\n return sortedRows.slice(0, visibleRowCount);\n }\n const from = (safePage - 1) * safePageSize;\n const to = from + safePageSize;\n return sortedRows.slice(from, to);\n }, [infiniteScroll, safePage, safePageSize, sortedRows, visibleRowCount]);\n\n const hasInternalMore = infiniteScroll && displayedRows.length < totalRows;\n const canRequestMore = infiniteScroll && Boolean(onLoadMore) && hasMore && !loadingMore;\n\n const handleReachEnd = React.useCallback(() => {\n if (!infiniteScroll) return;\n\n if (hasInternalMore) {\n setVisibleRowCount((prev) => Math.min(prev + Math.max(1, infiniteBatchSize), totalRows));\n return;\n }\n\n if (canRequestMore && onLoadMore) {\n void onLoadMore();\n }\n }, [canRequestMore, hasInternalMore, infiniteBatchSize, infiniteScroll, onLoadMore, totalRows]);\n\n React.useEffect(() => {\n if (!infiniteScroll) return;\n const root = scrollRef.current;\n const target = sentinelRef.current;\n if (!root || !target) return;\n\n if (typeof IntersectionObserver === \"undefined\") {\n const onScroll = () => {\n const nearBottom = root.scrollTop + root.clientHeight >= root.scrollHeight - 64;\n if (nearBottom) {\n handleReachEnd();\n }\n };\n root.addEventListener(\"scroll\", onScroll);\n return () => root.removeEventListener(\"scroll\", onScroll);\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const [entry] = entries;\n if (entry?.isIntersecting) {\n handleReachEnd();\n }\n },\n { root, rootMargin: DATA_TABLE_INFINITE_ROOT_MARGIN, threshold: 0.01 },\n );\n\n observer.observe(target);\n return () => observer.disconnect();\n }, [handleReachEnd, infiniteScroll]);\n\n const fromRow = totalRows === 0 ? 0 : infiniteScroll ? 1 : (safePage - 1) * safePageSize + 1;\n const toRow =\n totalRows === 0\n ? 0\n : infiniteScroll\n ? displayedRows.length\n : fromRow + displayedRows.length - 1;\n\n return (\n <ControlSizeProvider value={size}>\n <div\n className={cx(styles.root, className)}\n {...toDataAttributes({\n size,\n divider: dividerStyle,\n \"show-header\": showHeader,\n \"sticky-header\": stickyHeader,\n \"sticky-first-column\": stickyFirstColumn,\n \"table-width\": fillWidth ? \"fill\" : \"auto\",\n \"highlight-row\": highlightRowOnHover,\n \"highlight-column\": highlightColumnOnHover,\n striped,\n })}\n >\n <ScrollContainer\n ref={scrollRef}\n axis=\"both\"\n overscrollBehavior=\"auto\"\n className={styles.viewport}\n >\n <table\n className={styles.table}\n onMouseLeave={highlightColumnOnHover ? clearHoveredColumn : undefined}\n >\n {showHeader ? (\n <thead className={styles.head}>\n <tr className={styles.headRow}>\n {columns.map((column, columnIndex) => {\n const align = column.align ?? \"start\";\n const indicator = sortIndicator(sortState, column.id);\n const isSortable = Boolean(column.sortable);\n const isFirstColumn = columnIndex === 0;\n return (\n <th\n key={column.id}\n className={cx(\n styles.headCell,\n stickyFirstColumn && isFirstColumn && styles.firstColumnSticky,\n stickyHeader &&\n stickyFirstColumn &&\n isFirstColumn &&\n styles.cornerCellSticky,\n )}\n style={columnSizeStyle(column)}\n data-align={align}\n data-sortable={isSortable ? \"true\" : undefined}\n data-first-column={isFirstColumn ? \"true\" : undefined}\n data-column-id={column.id}\n data-column-hovered={\n highlightColumnOnHover && hoveredColumnId === column.id\n ? \"true\"\n : undefined\n }\n scope=\"col\"\n onMouseEnter={() => setHoveredColumn(column.id)}\n onClick={(event) => {\n column.onHeaderClick?.(event);\n if (!isSortable) return;\n const next = nextOrder(sortState, column.id);\n setSortState(next);\n setPageState(1);\n }}\n >\n {column.sortable ? (\n <span className={styles.sortButton}>\n <span className={styles.sortLabel}>{column.header}</span>\n <span className={styles.sortIcon} aria-hidden=\"true\">\n {indicator === \"asc\" ? (\n <ArrowUp className={styles.sortGlyph} strokeWidth={2} />\n ) : indicator === \"desc\" ? (\n <ArrowDown className={styles.sortGlyph} strokeWidth={2} />\n ) : (\n <ArrowUpDown className={styles.sortGlyph} strokeWidth={2} />\n )}\n </span>\n </span>\n ) : (\n <span className={styles.headLabel}>{column.header}</span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n ) : null}\n\n <tbody className={styles.body}>\n {loading && displayedRows.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className={styles.stateCell}>\n {loadingText}\n </td>\n </tr>\n ) : null}\n\n {!loading && displayedRows.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className={styles.stateCell}>\n {emptyText}\n </td>\n </tr>\n ) : null}\n\n {displayedRows.map((row, index) => (\n <tr\n key={getRowKey ? getRowKey(row, index) : index}\n className={styles.row}\n data-stripe={striped && index % 2 === 1 ? \"alt\" : undefined}\n onClick={(event) => onRowClick?.(row, index, event)}\n >\n {columns.map((column, columnIndex) => {\n const isFirstColumn = columnIndex === 0;\n const isCellClickable = Boolean(column.onCellClick);\n return (\n <td\n key={column.id}\n className={cx(\n styles.cell,\n stickyFirstColumn && isFirstColumn && styles.firstColumnSticky,\n )}\n style={columnSizeStyle(column)}\n data-align={column.align ?? \"start\"}\n data-first-column={isFirstColumn ? \"true\" : undefined}\n data-column-id={column.id}\n data-column-hovered={\n highlightColumnOnHover && hoveredColumnId === column.id\n ? \"true\"\n : undefined\n }\n onMouseEnter={() => setHoveredColumn(column.id)}\n onClick={(event) => column.onCellClick?.(row, event)}\n role={isCellClickable ? \"button\" : undefined}\n tabIndex={isCellClickable ? 0 : undefined}\n onKeyDown={\n isCellClickable\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n column.onCellClick?.(row, event);\n }\n }\n : undefined\n }\n >\n {renderColumnCell(row, column)}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n\n {infiniteScroll ? (\n <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" />\n ) : null}\n </ScrollContainer>\n\n <div className={styles.footer}>\n <p className={styles.meta}>\n \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E {fromRow}\u2013{toRow} \u0438\u0437 {totalRows}\n </p>\n\n {!infiniteScroll && showPagination && totalPages > 1 ? (\n <Pagination.Root\n page={safePage}\n totalPages={totalPages}\n onPageChange={setPageState}\n siblingCount={siblingCount}\n size={paginationSize ?? size}\n />\n ) : null}\n\n {infiniteScroll && (hasInternalMore || loadingMore || canRequestMore) ? (\n <p className={styles.meta}>\n {loadingMore ? \"\u0414\u043E\u0433\u0440\u0443\u0436\u0430\u0435\u043C \u0441\u0442\u0440\u043E\u043A\u0438\u2026\" : \"\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u0435 \u0432\u043D\u0438\u0437 \u0434\u043B\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438\"}\n </p>\n ) : null}\n </div>\n </div>\n </ControlSizeProvider>\n );\n}\n\nDataTableRoot.displayName = \"DataTableRoot\";\n\nexport const DataTable = {\n Root: DataTableRoot,\n};\n", "export const CSS_PX_SUFFIX = \"px\";\nexport const DATA_TABLE_INFINITE_ROOT_MARGIN = \"0px 0px 120px 0px\";\n", "import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Button } from \"@/components/button/Button\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { PaginationSize } from \"@/internal/states\";\n\nimport styles from \"./Pagination.module.css\";\n\nexport type { PaginationSize };\n\nfunction buildPageRange(page: number, total: number, siblings: number): Array<number | \"...\"> {\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n\n const left = Math.max(2, page - siblings);\n const right = Math.min(total - 1, page + siblings);\n\n const showLeftEllipsis = left > 2;\n const showRightEllipsis = right < total - 1;\n\n const pages: Array<number | \"...\"> = [1];\n if (showLeftEllipsis) pages.push(\"...\");\n for (let i = left; i <= right; i++) pages.push(i);\n if (showRightEllipsis) pages.push(\"...\");\n pages.push(total);\n\n return pages;\n}\n\nexport type PaginationRootProps = {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n /** \u0420\u0430\u0437\u043C\u0435\u0440 \u043A\u043D\u043E\u043F\u043E\u043A \u0441\u0442\u0440\u0430\u043D\u0438\u0446 \u0438 \u0441\u0442\u0440\u0435\u043B\u043E\u043A; \u043C\u043D\u043E\u0433\u043E\u0442\u043E\u0447\u0438\u0435 \u2014 \u0442\u043E\u0442 \u0436\u0435 \u044F\u0440\u0443\u0441 `--prime-sys-size-control-*`. */\n size?: PaginationSize;\n className?: string;\n};\n\nfunction PaginationRoot({\n page,\n totalPages,\n onPageChange,\n siblingCount = 1,\n size = \"m\",\n className,\n}: PaginationRootProps) {\n if (totalPages < 1) {\n return null;\n }\n\n const safePage = Math.min(Math.max(1, page), totalPages);\n const pages = buildPageRange(safePage, totalPages, siblingCount);\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={cx(styles.root, className)}\n {...toDataAttributes({ size })}\n >\n <span className={styles.control}>\n <Button.Root\n className={styles.pageButton}\n size={size}\n variant=\"neutral\"\n mode=\"ghost\"\n disabled={safePage <= 1}\n onClick={() => onPageChange(safePage - 1)}\n aria-label=\"Previous page\"\n >\n <Button.Icon>\n <ChevronLeft strokeWidth={2} />\n </Button.Icon>\n </Button.Root>\n </span>\n {pages.map((p, i) =>\n p === \"...\" ? (\n <span\n key={`ellipsis-after-${pages[i - 1]}-before-${pages[i + 1]}`}\n className={styles.control}\n >\n <span className={styles.ellipsis} aria-hidden=\"true\">\n \u2026\n </span>\n </span>\n ) : (\n <span key={p} className={styles.control}>\n <Button.Root\n className={styles.pageButton}\n size={size}\n variant={p === safePage ? \"primary\" : \"neutral\"}\n mode={p === safePage ? \"filled\" : \"ghost\"}\n onClick={() => onPageChange(p)}\n aria-current={p === safePage ? \"page\" : undefined}\n aria-label={`Page ${p}`}\n >\n {p}\n </Button.Root>\n </span>\n ),\n )}\n <span className={styles.control}>\n <Button.Root\n className={styles.pageButton}\n size={size}\n variant=\"neutral\"\n mode=\"ghost\"\n disabled={safePage >= totalPages}\n onClick={() => onPageChange(safePage + 1)}\n aria-label=\"Next page\"\n >\n <Button.Icon>\n <ChevronRight strokeWidth={2} />\n </Button.Icon>\n </Button.Root>\n </span>\n </nav>\n );\n}\n\nPaginationRoot.displayName = \"PaginationRoot\";\n\nexport const Pagination = { Root: PaginationRoot };\n", ".root {\n display: flex;\n align-items: center;\n gap: var(--prime-sys-size-control-s-gap);\n --pagination-ellipsis-box: var(--prime-sys-size-control-s-height);\n --pagination-ellipsis-text: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"s\"] {\n gap: var(--prime-sys-size-control-xs-gap);\n --pagination-ellipsis-box: var(--prime-sys-size-control-xs-height);\n --pagination-ellipsis-text: var(--prime-sys-size-control-xs-text);\n}\n\n.root[data-size=\"m\"] {\n gap: var(--prime-sys-size-control-s-gap);\n --pagination-ellipsis-box: var(--prime-sys-size-control-s-height);\n --pagination-ellipsis-text: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"l\"] {\n gap: var(--prime-sys-size-control-m-gap);\n --pagination-ellipsis-box: var(--prime-sys-size-control-m-height);\n --pagination-ellipsis-text: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"xl\"] {\n gap: var(--prime-sys-size-control-l-gap);\n --pagination-ellipsis-box: var(--prime-sys-size-control-l-height);\n --pagination-ellipsis-text: var(--prime-sys-size-control-l-text);\n}\n\n.root .pageButton[data-size=\"s\"] {\n --prime-icon-size: var(--prime-sys-size-control-xs-icon);\n --prime-button-font-size: var(--prime-sys-size-control-xs-text);\n height: var(--prime-sys-size-control-xs-height);\n min-width: var(--prime-sys-size-control-xs-height);\n border-radius: var(--prime-sys-size-control-xs-radius);\n gap: var(--prime-sys-size-control-xs-gap);\n padding-inline: var(--prime-sys-size-control-xs-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-xs-buttonPaddingY);\n}\n\n.root .pageButton[data-size=\"m\"] {\n --prime-icon-size: var(--prime-sys-size-control-s-icon);\n --prime-button-font-size: var(--prime-sys-size-control-s-text);\n height: var(--prime-sys-size-control-s-height);\n min-width: var(--prime-sys-size-control-s-height);\n border-radius: var(--prime-sys-size-control-s-radius);\n gap: var(--prime-sys-size-control-s-gap);\n padding-inline: var(--prime-sys-size-control-s-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-s-buttonPaddingY);\n}\n\n.root .pageButton[data-size=\"l\"] {\n --prime-icon-size: var(--prime-sys-size-control-m-icon);\n --prime-button-font-size: var(--prime-sys-size-control-m-text);\n height: var(--prime-sys-size-control-m-height);\n min-width: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-size-control-m-radius);\n gap: var(--prime-sys-size-control-m-gap);\n padding-inline: var(--prime-sys-size-control-m-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-m-buttonPaddingY);\n}\n\n.root .pageButton[data-size=\"xl\"] {\n --prime-icon-size: var(--prime-sys-size-control-l-icon);\n --prime-button-font-size: var(--prime-sys-size-control-l-text);\n height: var(--prime-sys-size-control-l-height);\n min-width: var(--prime-sys-size-control-l-height);\n border-radius: var(--prime-sys-size-control-l-radius);\n gap: var(--prime-sys-size-control-l-gap);\n padding-inline: var(--prime-sys-size-control-l-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-l-buttonPaddingY);\n}\n\n.control {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--pagination-ellipsis-box);\n min-width: var(--pagination-ellipsis-box);\n height: var(--pagination-ellipsis-box);\n color: var(--prime-sys-color-content-muted);\n font-size: var(--pagination-ellipsis-text);\n}\n", ".root {\n --dt-row-height: var(--prime-sys-size-control-m-height);\n --dt-cell-gap: var(--prime-sys-size-control-m-gap);\n --dt-cell-pad-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --dt-cell-pad-y: var(--prime-sys-size-control-m-buttonPaddingY);\n --dt-text: var(--prime-sys-size-control-m-text);\n\n display: grid;\n gap: var(--prime-sys-spacing-x3);\n width: 100%;\n --dt-head-bg: var(--prime-sys-color-dataTable-headBackground);\n --dt-row-bg: var(--prime-sys-color-dataTable-rowBackground);\n --dt-divider-color-vertical: var(--prime-sys-color-dataTable-dividerVertical);\n --dt-divider-color-horizontal: var(--prime-sys-color-dataTable-dividerHorizontal);\n --dt-divider-style: solid;\n --dt-divider-width: var(--prime-sys-unit-1px);\n --dt-sort-icon: var(--prime-sys-size-control-m-icon);\n --dt-z-sticky-first-column: 10;\n --dt-z-sticky-header: 20;\n --dt-z-sticky-header-first-column: 30;\n --dt-z-sticky-corner: 40;\n --dt-sticky-header-shadow: 0 var(--prime-sys-unit-1px) 0 0 var(--prime-sys-color-border-subtle);\n --dt-sticky-first-column-shadow:\n var(--prime-sys-unit-1px) 0 0 0 var(--prime-sys-color-border-subtle),\n 8px 0 16px -14px color-mix(in srgb, var(--prime-sys-color-content-primary) 42%, transparent);\n --dt-sticky-corner-shadow:\n var(--prime-sys-unit-1px) 0 0 0 var(--prime-sys-color-border-subtle),\n 0 var(--prime-sys-unit-1px) 0 0 var(--prime-sys-color-border-subtle),\n 8px 0 16px -14px color-mix(in srgb, var(--prime-sys-color-content-primary) 42%, transparent),\n 0 8px 16px -14px color-mix(in srgb, var(--prime-sys-color-content-primary) 42%, transparent);\n /* \u041F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0438: \u0441\u043C\u0435\u0441\u044C \u0441 \u0444\u043E\u043D\u043E\u043C \u0441\u0442\u0440\u043E\u043A\u0438/\u0448\u0430\u043F\u043A\u0438, \u0431\u0435\u0437 \u00AB\u0437\u0430\u043B\u0438\u0432\u043A\u0438\u00BB action-hover */\n --dt-row-hover-bg: color-mix(\n in srgb,\n var(--prime-sys-color-content-primary) 7%,\n var(--dt-row-bg)\n );\n --dt-column-hover-bg: color-mix(\n in srgb,\n var(--prime-sys-color-content-primary) 9%,\n var(--dt-row-bg)\n );\n --dt-column-hover-head-bg: color-mix(\n in srgb,\n var(--prime-sys-color-content-primary) 9%,\n var(--dt-head-bg)\n );\n --dt-row-striped-bg: color-mix(\n in srgb,\n var(--prime-sys-color-content-primary) 4.5%,\n var(--dt-row-bg)\n );\n}\n\n.root[data-size=\"s\"] {\n --dt-row-height: var(--prime-sys-size-control-s-height);\n --dt-cell-gap: var(--prime-sys-size-control-s-gap);\n --dt-cell-pad-x: var(--prime-sys-size-control-s-buttonPaddingX);\n --dt-cell-pad-y: var(--prime-sys-size-control-s-buttonPaddingY);\n --dt-text: var(--prime-sys-size-control-s-text);\n --dt-sort-icon: var(--prime-sys-size-control-s-icon);\n}\n\n.root[data-size=\"l\"] {\n --dt-row-height: var(--prime-sys-size-control-l-height);\n --dt-cell-gap: var(--prime-sys-size-control-l-gap);\n --dt-cell-pad-x: var(--prime-sys-size-control-l-buttonPaddingX);\n --dt-cell-pad-y: var(--prime-sys-size-control-l-buttonPaddingY);\n --dt-text: var(--prime-sys-size-control-l-text);\n --dt-sort-icon: var(--prime-sys-size-control-l-icon);\n}\n\n.root[data-size=\"xl\"] {\n --dt-row-height: var(--prime-sys-size-control-xl-height);\n --dt-cell-gap: var(--prime-sys-size-control-xl-gap);\n --dt-cell-pad-x: var(--prime-sys-size-control-xl-buttonPaddingX);\n --dt-cell-pad-y: var(--prime-sys-size-control-xl-buttonPaddingY);\n --dt-text: var(--prime-sys-size-control-xl-text);\n --dt-sort-icon: var(--prime-sys-size-control-xl-icon);\n}\n\n.viewport {\n width: 100%;\n /* \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 ScrollContainer */\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-sys-shape-radius-l);\n background: var(--dt-row-bg);\n isolation: isolate;\n}\n\n.table {\n /* \u0423\u0437\u043A\u0430\u044F \u0442\u0430\u0431\u043B\u0438\u0446\u0430 \u043F\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u043C\u0443 \u2014 data-table-width=\"auto\"; \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E fill \u2014 \u0441\u043C. [data-table-width=\"fill\"] */\n width: max-content;\n border-collapse: separate;\n border-spacing: 0;\n}\n\n.root[data-table-width=\"fill\"] .table {\n width: 100%;\n min-width: max-content;\n /* table-layout: auto (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E) \u2014 \u0434\u0432\u0438\u0436\u043E\u043A \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043D\u044B \u043F\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u043C\u0443 \u0438 min/max \u044F\u0447\u0435\u0435\u043A \u0438 \u0440\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043B\u0438\u0448\u043D\u044E\u044E \u0448\u0438\u0440\u0438\u043D\u0443 */\n}\n\n.head {\n background: var(--dt-head-bg);\n}\n\n.headRow {\n box-shadow: inset 0 var(--prime-sys-unit-neg-1px) 0 0 var(--prime-sys-color-border-subtle);\n}\n\n.headCell {\n height: var(--dt-row-height);\n padding: var(--dt-cell-pad-y) var(--dt-cell-pad-x);\n font-size: var(--dt-text);\n font-weight: var(--prime-sys-typography-weight-semibold);\n color: var(--prime-sys-color-content-primary);\n line-height: 1.25;\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.headCell[data-align=\"start\"] {\n text-align: left;\n}\n\n.headCell[data-align=\"center\"] {\n text-align: center;\n}\n\n.headCell[data-align=\"end\"] {\n text-align: right;\n}\n\n.headCell[data-sortable=\"true\"] {\n cursor: pointer;\n user-select: none;\n}\n\n.headCell + .headCell {\n border-inline-start: var(--dt-divider-width) var(--dt-divider-style)\n var(--dt-divider-color-vertical);\n}\n\n.root[data-sticky-header=\"true\"] .headCell {\n position: sticky;\n top: 0;\n z-index: var(--dt-z-sticky-header);\n background: var(--dt-head-bg);\n box-shadow: var(--dt-sticky-header-shadow);\n}\n\n.headLabel {\n display: inline-flex;\n align-items: center;\n}\n\n.sortButton {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--dt-cell-gap);\n width: 100%;\n min-height: 100%;\n padding: 0;\n color: inherit;\n pointer-events: none;\n}\n\n.sortLabel {\n line-height: 1.25;\n font-weight: inherit;\n}\n\n.sortIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--prime-sys-color-content-muted);\n width: var(--dt-sort-icon);\n height: var(--dt-sort-icon);\n flex-shrink: 0;\n}\n\n.sortGlyph {\n width: var(--dt-sort-icon);\n height: var(--dt-sort-icon);\n}\n\n.body {\n background: var(--dt-row-bg);\n}\n\n.row {\n background: var(--dt-row-bg);\n transition: background-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.cell {\n height: var(--dt-row-height);\n padding: var(--dt-cell-pad-y) var(--dt-cell-pad-x);\n font-size: var(--dt-text);\n line-height: 1.25;\n color: var(--prime-sys-color-content-primary);\n vertical-align: middle;\n}\n\n.cell[data-align=\"start\"] {\n text-align: left;\n}\n\n.cell[data-align=\"center\"] {\n text-align: center;\n}\n\n.cell[data-align=\"end\"] {\n text-align: right;\n}\n\n.cell + .cell {\n border-inline-start: var(--dt-divider-width) var(--dt-divider-style)\n var(--dt-divider-color-vertical);\n}\n\n.row + .row .cell {\n border-top: var(--dt-divider-width) var(--dt-divider-style) var(--dt-divider-color-horizontal);\n}\n\n.firstColumnSticky {\n position: sticky;\n left: 0;\n z-index: var(--dt-z-sticky-first-column);\n background: var(--dt-row-bg);\n box-shadow: var(--dt-sticky-first-column-shadow);\n}\n\n.headCell.firstColumnSticky {\n z-index: var(--dt-z-sticky-header-first-column);\n background: var(--dt-head-bg);\n}\n\n.cornerCellSticky {\n top: 0;\n left: 0;\n z-index: var(--dt-z-sticky-corner);\n box-shadow: var(--dt-sticky-corner-shadow);\n}\n\n/* \u041D\u0430\u0434\u0435\u0436\u043D\u044B\u0439 layering-\u043F\u0430\u0442\u0442\u0435\u0440\u043D \u0434\u043B\u044F sticky header + first column:\n body first column < header cells < corner 0x0 */\n.root[data-sticky-first-column=\"true\"] .body .cell[data-first-column=\"true\"] {\n z-index: var(--dt-z-sticky-first-column);\n}\n\n.root[data-sticky-header=\"true\"] .head .headCell {\n z-index: var(--dt-z-sticky-header);\n}\n\n.root[data-sticky-header=\"true\"][data-sticky-first-column=\"true\"]\n .head\n .headCell[data-first-column=\"true\"] {\n position: sticky;\n top: 0;\n left: 0;\n z-index: var(--dt-z-sticky-corner);\n}\n\n.root[data-highlight-row=\"true\"] .row:hover {\n background: var(--dt-row-hover-bg);\n}\n\n.root[data-highlight-row=\"true\"] .row:hover .cell {\n background: var(--dt-row-hover-bg);\n}\n\n.root[data-highlight-row=\"true\"] .row:hover .firstColumnSticky {\n background: var(--dt-row-hover-bg);\n}\n\n/* \u041A\u043E\u043B\u043E\u043D\u043A\u0430 \u043F\u043E\u0434 \u043A\u0443\u0440\u0441\u043E\u0440\u043E\u043C */\n.root[data-highlight-column=\"true\"] thead .headCell[data-column-hovered=\"true\"] {\n background: var(--dt-column-hover-head-bg);\n}\n\n.root[data-highlight-column=\"true\"] .cell[data-column-hovered=\"true\"] {\n background: var(--dt-column-hover-bg);\n}\n\n.root[data-highlight-column=\"true\"] .firstColumnSticky[data-column-hovered=\"true\"] {\n background: var(--dt-column-hover-bg);\n}\n\n/* \u0417\u0435\u0431\u0440\u0430 */\n.root[data-striped=\"true\"] .row[data-stripe=\"alt\"] {\n background: var(--dt-row-striped-bg);\n}\n\n.root[data-striped=\"true\"] .row[data-stripe=\"alt\"] .cell {\n background: var(--dt-row-striped-bg);\n}\n\n.root[data-striped=\"true\"] .row[data-stripe=\"alt\"] .firstColumnSticky {\n background: var(--dt-row-striped-bg);\n}\n\n.stateCell {\n padding: var(--prime-sys-spacing-x8) var(--prime-sys-spacing-x4);\n text-align: center;\n font-size: var(--dt-text);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.sentinel {\n height: var(--prime-sys-unit-2px);\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-x3);\n}\n\n.meta {\n margin: 0;\n font-size: var(--dt-text);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.root[data-divider=\"dashed\"] {\n --dt-divider-style: dashed;\n}\n\n.root[data-divider=\"dotted\"] {\n --dt-divider-style: dotted;\n}\n\n.root[data-divider=\"none\"] {\n --dt-divider-width: 0;\n}\n", "import { ChevronDown, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n type ChevronProps,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n getDefaultClassNames,\n useDayPicker,\n} from \"react-day-picker\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { ButtonGroup } from \"@/components/button-group/ButtonGroup\";\nimport { Input } from \"@/components/input/Input\";\nimport type { TypographyRootProps, TypographyVariant } from \"@/components/typography/Typography\";\nimport { Typography } from \"@/components/typography/Typography\";\nimport { type ResponsiveMonthsBreakpoints, useResponsiveMonths } from \"@/hooks/useResponsiveMonths\";\nimport { cx } from \"@/internal/cx\";\nimport type { InputSize } from \"@/internal/states\";\n\nimport \"react-day-picker/style.css\";\n\nimport styles from \"./Datepicker.module.css\";\n\nexport type { DateRange };\n\n/**\n * \u041F\u043E\u0440\u043E\u0433 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F 1 \u2192 2 \u043C\u0435\u0441\u044F\u0446\u0430.\n * Layout \u043D\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 size: \u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u043B\u0438\u044F\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0430 \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0443/\u043E\u0442\u0441\u0442\u0443\u043F\u044B/\u043A\u043D\u043E\u043F\u043A\u0438.\n */\nconst DEFAULT_RESPONSIVE: ResponsiveMonthsBreakpoints = { twoColumns: 500 };\n\nexport type DatepickerSize = InputSize;\n\nconst DatepickerSizeContext = React.createContext<DatepickerSize | undefined>(undefined);\nDatepickerSizeContext.displayName = \"DatepickerSizeContext\";\n\ntype DatepickerMonthContextValue = {\n requestedMonth: Date | undefined;\n requestMonth: (next: Date | undefined) => void;\n};\n\nconst DatepickerMonthContext = React.createContext<DatepickerMonthContextValue | undefined>(\n undefined,\n);\nDatepickerMonthContext.displayName = \"DatepickerMonthContext\";\n\n/**\n * \u041C\u0430\u043F\u043F\u0438\u043D\u0433 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u043F\u0438\u043A\u0435\u0440\u0430 \u2192 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 `variant` Typography \u0434\u043B\u044F `Datepicker.Value`.\n * \u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u043E \u0431\u043B\u0438\u0437\u043A\u043E \u043A \u043F\u0440\u0435\u0436\u043D\u0435\u0439 \u0448\u043A\u0430\u043B\u0435 caption/body-compact.\n */\nconst VALUE_TYPOGRAPHY_VARIANT_BY_PICKER_SIZE: Record<DatepickerSize, TypographyVariant> = {\n s: \"caption-micro\",\n m: \"body-compact\",\n l: \"body-small\",\n xl: \"body-default\",\n};\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, \"0\");\n}\n\n/** \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F `<input type=\"time\" />` \u0432 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E\u043C \u0432\u0440\u0435\u043C\u0435\u043D\u0438 */\nexport function formatTimeInputValue(date: Date | undefined): string {\n if (!date) {\n return \"\";\n }\n return `${pad2(date.getHours())}:${pad2(date.getMinutes())}`;\n}\n\n/** \u041F\u043E\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0447\u0430\u0441\u044B \u0438 \u043C\u0438\u043D\u0443\u0442\u044B \u0438\u0437 \u0441\u0442\u0440\u043E\u043A\u0438 `HH:mm` \u0432 \u0434\u0430\u0442\u0443 */\nexport function mergeTimeIntoDate(date: Date, timeHHmm: string): Date {\n const [h, m] = timeHHmm.split(\":\").map((x) => Number.parseInt(x, 10));\n const next = new Date(date);\n next.setHours(Number.isFinite(h) ? h : 0, Number.isFinite(m) ? m : 0, 0, 0);\n return next;\n}\n\nfunction DatepickerChevron({ orientation, className, size = 17 }: ChevronProps) {\n if (orientation === \"left\") {\n return <ChevronLeft aria-hidden className={className} size={size} strokeWidth={1.75} />;\n }\n if (orientation === \"right\") {\n return <ChevronRight aria-hidden className={className} size={size} strokeWidth={1.75} />;\n }\n return (\n <ChevronDown\n aria-hidden\n className={className}\n size={size}\n strokeWidth={1.75}\n style={orientation === \"up\" ? { transform: \"rotate(180deg)\" } : undefined}\n />\n );\n}\n\ntype DatepickerNavButtonProps = React.ComponentPropsWithoutRef<\"button\"> & {\n direction: \"prev\" | \"next\";\n size: DatepickerSize;\n};\n\nfunction DatepickerNavButton({ className, direction, size, ...rest }: DatepickerNavButtonProps) {\n return (\n <Button.Root\n {...rest}\n className={cx(styles.navButton, className)}\n mode=\"lighter\"\n size={size}\n variant=\"neutral\"\n >\n <Button.Icon>\n {direction === \"prev\" ? (\n <ChevronLeft aria-hidden strokeWidth={1.75} />\n ) : (\n <ChevronRight aria-hidden strokeWidth={1.75} />\n )}\n </Button.Icon>\n </Button.Root>\n );\n}\n\nDatepickerNavButton.displayName = \"DatepickerNavButton\";\n\ntype DatepickerMonthCaptionProps = Parameters<\n NonNullable<NonNullable<DayPickerProps[\"components\"]>[\"MonthCaption\"]>\n>[0];\n\nfunction DatepickerMonthCaption({\n className,\n children,\n displayIndex,\n ...rest\n}: DatepickerMonthCaptionProps) {\n const inheritedSize = React.useContext(DatepickerSizeContext);\n const size = inheritedSize ?? \"m\";\n const { dayPickerProps, goToMonth, previousMonth, nextMonth } = useDayPicker();\n\n const monthsCount = dayPickerProps.numberOfMonths ?? 1;\n const monthIndex = displayIndex ?? 0;\n const canGoPrev = monthIndex === 0 && previousMonth != null;\n const canGoNext = monthIndex === monthsCount - 1 && nextMonth != null;\n\n return (\n <div {...rest} className={cx(styles.monthCaption, className)}>\n {canGoPrev ? (\n <DatepickerNavButton\n aria-label=\"Go to the Previous Month\"\n direction=\"prev\"\n size={size}\n onClick={() => {\n if (previousMonth) {\n goToMonth(previousMonth);\n }\n }}\n />\n ) : (\n <span aria-hidden className={styles.monthCaptionSpacer} />\n )}\n <div className={styles.monthCaptionLabel}>{children}</div>\n {canGoNext ? (\n <DatepickerNavButton\n aria-label=\"Go to the Next Month\"\n direction=\"next\"\n size={size}\n onClick={() => {\n if (nextMonth) {\n goToMonth(nextMonth);\n }\n }}\n />\n ) : (\n <span aria-hidden className={styles.monthCaptionSpacer} />\n )}\n </div>\n );\n}\n\nDatepickerMonthCaption.displayName = \"DatepickerMonthCaption\";\n\nexport type DatepickerCalendarProps = DayPickerProps & {\n /**\n * \u041F\u043E\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044C `numberOfMonths` \u043F\u043E\u0434 \u0448\u0438\u0440\u0438\u043D\u0443 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430 (1 / 2 \u043A\u043E\u043B\u043E\u043D\u043A\u0438).\n * \u0415\u0441\u043B\u0438 `true`, \u043F\u0440\u043E\u043F `numberOfMonths` \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F.\n */\n responsiveMonths?: boolean;\n /** \u041F\u043E\u0440\u043E\u0433 \u0448\u0438\u0440\u0438\u043D\u044B \u0434\u043B\u044F 2 \u043A\u043E\u043B\u043E\u043D\u043E\u043A */\n responsiveBreakpoints?: ResponsiveMonthsBreakpoints;\n /** \u0420\u0430\u0437\u043C\u0435\u0440 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F: \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043A\u0435\u0433\u043B\u044C, \u044F\u0447\u0435\u0439\u043A\u0438 \u0438 \u043A\u043D\u043E\u043F\u043A\u0438 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 */\n size?: DatepickerSize;\n};\n\nfunction Calendar({\n responsiveMonths,\n responsiveBreakpoints,\n numberOfMonths: numberOfMonthsProp,\n classNames: userClassNames,\n components: userComponents,\n style,\n weekStartsOn,\n navLayout,\n month: monthProp,\n onMonthChange,\n size: sizeProp,\n ...rest\n}: DatepickerCalendarProps) {\n const inheritedSize = React.useContext(DatepickerSizeContext);\n const monthContext = React.useContext(DatepickerMonthContext);\n const size = sizeProp ?? inheritedSize ?? \"m\";\n const breakpoints = responsiveBreakpoints ?? DEFAULT_RESPONSIVE;\n\n /**\n * Callback-ref \u2192 state: \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043E \u0445\u0443\u043A \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0439 DOM-\u044D\u043B\u0435\u043C\u0435\u043D\u0442\n * \u0441\u0440\u0430\u0437\u0443 \u043F\u0440\u0438 \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438, \u0438 ResizeObserver \u043D\u0430\u0447\u043D\u0451\u0442 \u043D\u0430\u0431\u043B\u044E\u0434\u0435\u043D\u0438\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E.\n * useRef + useEffect([containerRef]) \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u043B: ref-\u043E\u0431\u044A\u0435\u043A\u0442 \u0441\u0442\u0430\u0431\u0438\u043B\u0435\u043D,\n * \u044D\u0444\u0444\u0435\u043A\u0442 \u043D\u0435 \u043F\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u043B\u0441\u044F, clientWidth \u043C\u043E\u0433 \u0431\u044B\u0442\u044C 0 \u0434\u043E \u043F\u0435\u0440\u0432\u043E\u0433\u043E paint.\n */\n const [containerEl, setContainerEl] = React.useState<HTMLElement | null>(null);\n const callbackRef = React.useCallback((node: HTMLDivElement | null) => {\n setContainerEl(node);\n }, []);\n\n const responsiveN = useResponsiveMonths(breakpoints, containerEl);\n const numberOfMonths = responsiveMonths === true ? responsiveN : (numberOfMonthsProp ?? 1);\n\n const [localMonth, setLocalMonth] = React.useState<Date | undefined>(() => {\n return monthProp ?? monthContext?.requestedMonth;\n });\n\n React.useEffect(() => {\n if (monthProp === undefined && monthContext?.requestedMonth) {\n setLocalMonth(monthContext.requestedMonth);\n }\n }, [monthContext?.requestedMonth, monthProp]);\n\n const dfn = getDefaultClassNames();\n const classNames = {\n ...dfn,\n ...userClassNames,\n root: cx(dfn.root, styles.pickerRoot, userClassNames?.root),\n months: cx(dfn.months, styles.months, userClassNames?.months),\n month: cx(dfn.month, styles.month, userClassNames?.month),\n nav: cx(dfn.nav, styles.nav, userClassNames?.nav),\n month_caption: cx(dfn.month_caption, styles.monthCaption, userClassNames?.month_caption),\n weekday: cx(dfn.weekday, styles.weekday, userClassNames?.weekday),\n };\n\n const mergedStyle: React.CSSProperties = style && typeof style === \"object\" ? { ...style } : {};\n\n const resolvedMonth = monthProp ?? localMonth;\n\n const handleMonthChange = React.useCallback(\n (next: Date) => {\n if (monthProp === undefined) {\n setLocalMonth(next);\n }\n monthContext?.requestMonth(next);\n onMonthChange?.(next);\n },\n [monthContext, monthProp, onMonthChange],\n );\n\n return (\n <div ref={callbackRef} className={styles.calendarViewport}>\n <DayPicker\n {...rest}\n classNames={classNames}\n components={{\n Chevron: DatepickerChevron,\n MonthCaption: DatepickerMonthCaption,\n ...userComponents,\n }}\n data-size={size}\n navLayout={navLayout ?? \"after\"}\n month={resolvedMonth}\n numberOfMonths={numberOfMonths}\n onMonthChange={handleMonthChange}\n style={mergedStyle}\n weekStartsOn={weekStartsOn ?? 1}\n />\n </div>\n );\n}\n\nCalendar.displayName = \"Datepicker.Calendar\";\n\nexport type DatepickerShellProps = {\n children: React.ReactNode;\n className?: string;\n presets?: React.ReactNode;\n /** \u0420\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0439 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438 \u0434\u0430\u0442\u043F\u0438\u043A\u0435\u0440\u0430 */\n size?: DatepickerSize;\n};\n\nfunction Shell({ children, className, presets, size = \"m\" }: DatepickerShellProps) {\n const has = presets != null;\n const [requestedMonth, requestMonth] = React.useState<Date | undefined>();\n return (\n <DatepickerSizeContext.Provider value={size}>\n <DatepickerMonthContext.Provider value={{ requestedMonth, requestMonth }}>\n <div\n className={cx(styles.shell, className)}\n data-layout={has ? \"with-presets\" : undefined}\n data-size={size}\n >\n {children}\n {has && <div className={styles.presetsRow}>{presets}</div>}\n </div>\n </DatepickerMonthContext.Provider>\n </DatepickerSizeContext.Provider>\n );\n}\n\nShell.displayName = \"Datepicker.Shell\";\n\nexport type DatepickerPresetSingle = { label: string; date: Date | undefined };\nexport type DatepickerPresetRange = { label: string; range: DateRange | undefined };\n\nexport type DatepickerPresetsProps = {\n className?: string;\n title?: string;\n size?: DatepickerSize;\n} & (\n | {\n mode: \"single\";\n presets: DatepickerPresetSingle[];\n onSelect: (date: Date | undefined) => void;\n }\n | {\n mode: \"range\";\n presets: DatepickerPresetRange[];\n onSelect: (range: DateRange | undefined) => void;\n }\n);\n\nfunction Presets(props: DatepickerPresetsProps) {\n const inheritedSize = React.useContext(DatepickerSizeContext);\n const monthContext = React.useContext(DatepickerMonthContext);\n const { className, size: sizeProp } = props;\n const size = sizeProp ?? inheritedSize ?? \"m\";\n return (\n <div className={cx(styles.presetsBlock, className)} data-size={size}>\n <ButtonGroup.Root className={styles.presetsGroup} size={size}>\n {props.mode === \"single\"\n ? props.presets.map((p) => (\n <ButtonGroup.Item\n key={p.label}\n type=\"button\"\n onClick={() => {\n monthContext?.requestMonth(p.date);\n props.onSelect(p.date);\n }}\n >\n {p.label}\n </ButtonGroup.Item>\n ))\n : props.presets.map((p) => (\n <ButtonGroup.Item\n key={p.label}\n type=\"button\"\n onClick={() => {\n monthContext?.requestMonth(p.range?.from);\n props.onSelect(p.range);\n }}\n >\n {p.label}\n </ButtonGroup.Item>\n ))}\n </ButtonGroup.Root>\n </div>\n );\n}\n\nPresets.displayName = \"Datepicker.Presets\";\n\nexport type DatepickerTimeSingleProps = {\n mode?: \"single\";\n size?: DatepickerSize;\n value: Date | undefined;\n onChange: (next: Date) => void;\n labels?: { time?: string };\n};\n\nexport type DatepickerTimeRangeProps = {\n mode: \"range\";\n size?: DatepickerSize;\n from: Date | undefined;\n to: Date | undefined;\n onFromChange: (next: Date) => void;\n onToChange: (next: Date) => void;\n labels?: { from?: string; to?: string };\n};\n\nexport type DatepickerTimeProps = DatepickerTimeSingleProps | DatepickerTimeRangeProps;\n\nfunction Time(props: DatepickerTimeProps) {\n const baseId = React.useId();\n const inheritedSize = React.useContext(DatepickerSizeContext);\n\n if (props.mode === \"range\") {\n const { from, to, onFromChange, onToChange, labels, size: sizeProp } = props;\n const size = sizeProp ?? inheritedSize ?? \"m\";\n const fromT = formatTimeInputValue(from);\n const toT = formatTimeInputValue(to);\n return (\n <div className={styles.timeSection} data-size={size}>\n <div className={styles.timeRow}>\n <div className={styles.timeField}>\n <Input.Root\n className={styles.timeInputRoot}\n id={`${baseId}-from`}\n label={labels?.from ?? \"\u041D\u0430\u0447\u0430\u043B\u043E\"}\n size={size}\n >\n <Input.Wrapper>\n <Input.Field\n className={styles.timeInputField}\n disabled={!from}\n type=\"time\"\n value={fromT}\n onChange={(e) => {\n if (from) {\n onFromChange(mergeTimeIntoDate(from, e.target.value));\n }\n }}\n />\n </Input.Wrapper>\n </Input.Root>\n </div>\n <div className={styles.timeField}>\n <Input.Root\n className={styles.timeInputRoot}\n id={`${baseId}-to`}\n label={labels?.to ?? \"\u041A\u043E\u043D\u0435\u0446\"}\n size={size}\n >\n <Input.Wrapper>\n <Input.Field\n className={styles.timeInputField}\n disabled={!to}\n type=\"time\"\n value={toT}\n onChange={(e) => {\n if (to) {\n onToChange(mergeTimeIntoDate(to, e.target.value));\n }\n }}\n />\n </Input.Wrapper>\n </Input.Root>\n </div>\n </div>\n </div>\n );\n }\n\n const { value, onChange, labels, size: sizeProp } = props;\n const size = sizeProp ?? inheritedSize ?? \"m\";\n const t = formatTimeInputValue(value);\n return (\n <div className={styles.timeSection} data-size={size}>\n <div className={styles.timeRow}>\n <div className={styles.timeField}>\n <Input.Root\n className={styles.timeInputRoot}\n id={`${baseId}-t`}\n label={labels?.time ?? \"\u0412\u0440\u0435\u043C\u044F\"}\n size={size}\n >\n <Input.Wrapper>\n <Input.Field\n className={styles.timeInputField}\n disabled={!value}\n type=\"time\"\n value={t}\n onChange={(e) => {\n if (value) {\n onChange(mergeTimeIntoDate(value, e.target.value));\n }\n }}\n />\n </Input.Wrapper>\n </Input.Root>\n </div>\n </div>\n </div>\n );\n}\n\nTime.displayName = \"Datepicker.Time\";\n\nexport type DatepickerValueProps = Omit<TypographyRootProps, \"variant\"> & {\n size?: DatepickerSize;\n};\n\nfunction Value({ className, size: sizeProp, tone = \"muted\", ...rest }: DatepickerValueProps) {\n const inheritedSize = React.useContext(DatepickerSizeContext);\n const size = sizeProp ?? inheritedSize ?? \"m\";\n return (\n <Typography.Root\n {...rest}\n className={cx(styles.valueText, className)}\n variant={VALUE_TYPOGRAPHY_VARIANT_BY_PICKER_SIZE[size]}\n tone={tone}\n />\n );\n}\n\nValue.displayName = \"Datepicker.Value\";\n\nexport const Datepicker = {\n Calendar,\n Shell,\n Presets,\n Time,\n Value,\n};\n", "import * as React from \"react\";\n\nexport type ResponsiveMonthsBreakpoints = {\n /** \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0434\u043B\u044F \u0434\u0432\u0443\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043C\u0435\u0441\u044F\u0446\u0435\u0432 */\n twoColumns: number;\n};\n\nconst DEFAULT_BREAKPOINTS: ResponsiveMonthsBreakpoints = {\n twoColumns: 520,\n};\n\n/**\n * \u0427\u0438\u0441\u043B\u043E \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (1 \u0438\u043B\u0438 2) \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 DOM-\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430.\n *\n * \u041F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 `HTMLElement | null` \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E (\u043D\u0435 RefObject), \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E\n * \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043D\u0430 \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 callback-ref + state \u0432 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0435-\u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0435:\n *\n * ```tsx\n * const [el, setEl] = useState<HTMLElement | null>(null);\n * const months = useResponsiveMonths(breakpoints, el);\n * // <div ref={setEl}>...</div>\n * ```\n */\nexport function useResponsiveMonths(\n breakpoints: ResponsiveMonthsBreakpoints = DEFAULT_BREAKPOINTS,\n container: HTMLElement | null = null,\n): 1 | 2 {\n const { twoColumns } = breakpoints;\n const [count, setCount] = React.useState<1 | 2>(1);\n\n React.useEffect(() => {\n if (!container) return;\n\n let rafId: number | null = null;\n\n const syncByWidth = (width: number) => {\n setCount(width >= twoColumns ? 2 : 1);\n };\n\n const measure = () => {\n // getBoundingClientRect \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 CSS-\u0442\u0440\u0430\u043D\u0441\u0444\u043E\u0440\u043C\u044B \u0438 \u0431\u043E\u043B\u0435\u0435 \u043D\u0430\u0434\u0451\u0436\u0435\u043D \u0447\u0435\u043C clientWidth\n const width =\n container.getBoundingClientRect().width || container.offsetWidth || container.clientWidth;\n\n if (width > 0) {\n syncByWidth(width);\n } else {\n // \u042D\u043B\u0435\u043C\u0435\u043D\u0442 \u0435\u0449\u0451 \u043D\u0435 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u0430\u043D \u2014 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u043A\u0430\u0434\u0440\u0435\n rafId = requestAnimationFrame(measure);\n }\n };\n\n // \u041F\u0435\u0440\u0432\u043E\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0435 \u0438\u0437\u043C\u0435\u0440\u0435\u043D\u0438\u0435\n measure();\n\n if (typeof ResizeObserver === \"undefined\")\n return () => {\n if (rafId !== null) cancelAnimationFrame(rafId);\n };\n\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n // contentRect.width \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C 0 \u043F\u0440\u0438 \u0441\u043A\u0440\u044B\u0442\u043E\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435; fallback \u043D\u0430 BoundingRect\n const w =\n entry.contentRect.width || (entry.target as HTMLElement).getBoundingClientRect().width;\n syncByWidth(w);\n });\n\n ro.observe(container);\n\n return () => {\n if (rafId !== null) cancelAnimationFrame(rafId);\n ro.disconnect();\n };\n }, [container, twoColumns]);\n\n return count;\n}\n", "/* \u0414\u043E\u043F\u043E\u043B\u043D\u044F\u0435\u0442 react-day-picker/style.css \u0438 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0442\u043F\u0438\u043A\u0435\u0440 \u0441 Prime tokens */\n\n/* \u2500\u2500\u2500 \u041A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u0431\u043B\u043E\u043A \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.pickerRoot {\n --dp-control-height: var(--prime-sys-size-control-m-height);\n --dp-control-icon: var(--prime-sys-size-control-m-icon);\n --dp-control-gap: var(--prime-sys-size-control-m-gap);\n --dp-control-text: var(--prime-sys-size-control-m-text);\n --dp-support-text: var(--prime-sys-size-control-m-supportText);\n --dp-shell-gap: var(--prime-sys-spacing-x4);\n --dp-month-gap: var(--prime-sys-spacing-x4);\n --dp-header-pad-x: var(--prime-sys-spacing-x2);\n --dp-header-gap: var(--prime-sys-spacing-x2);\n --dp-nav-control-height: var(--prime-sys-size-control-s-height);\n\n --rdp-accent-color: var(--prime-sys-color-action-primaryBackground);\n --rdp-accent-background-color: var(--prime-sys-color-surface-accentSoft);\n --rdp-day-height: var(--dp-control-height);\n --rdp-day-width: var(--dp-control-height);\n --rdp-day_button-height: var(--dp-control-height);\n --rdp-day_button-width: var(--dp-control-height);\n --rdp-day_button-border-radius: var(--prime-sys-size-control-m-radius);\n --rdp-months-gap: var(--dp-month-gap);\n --rdp-nav_button-height: var(--dp-control-height);\n --rdp-nav_button-width: var(--dp-control-height);\n --rdp-nav-height: var(--dp-control-height);\n --rdp-weekday-padding: var(--prime-sys-spacing-x1) 0;\n --rdp-range_start-color: var(--prime-sys-color-content-inverse);\n --rdp-range_end-color: var(--prime-sys-color-content-inverse);\n\n box-sizing: border-box;\n position: relative;\n width: 100%;\n max-width: 100%;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n font-family: inherit;\n font-size: var(--dp-control-text);\n color: var(--prime-sys-color-content-primary);\n}\n\n.pickerRoot[data-size=\"s\"] {\n --dp-control-height: var(--prime-sys-size-control-s-height);\n --dp-control-icon: var(--prime-sys-size-control-s-icon);\n --dp-control-gap: var(--prime-sys-size-control-s-gap);\n --dp-control-text: var(--prime-sys-size-control-s-text);\n --dp-support-text: var(--prime-sys-size-control-s-supportText);\n --rdp-day_button-border-radius: var(--prime-sys-size-control-s-radius);\n --dp-shell-gap: var(--prime-sys-spacing-x3);\n --dp-month-gap: var(--prime-sys-spacing-x3);\n --dp-header-pad-x: var(--prime-sys-spacing-x2);\n --dp-nav-control-height: var(--prime-sys-size-control-xs-height);\n}\n\n.pickerRoot[data-size=\"l\"] {\n --dp-control-height: var(--prime-sys-size-control-l-height);\n --dp-control-icon: var(--prime-sys-size-control-l-icon);\n --dp-control-gap: var(--prime-sys-size-control-l-gap);\n --dp-control-text: var(--prime-sys-size-control-l-text);\n --dp-support-text: var(--prime-sys-size-control-l-supportText);\n --rdp-day_button-border-radius: var(--prime-sys-size-control-l-radius);\n --dp-shell-gap: var(--prime-sys-spacing-x5);\n --dp-month-gap: var(--prime-sys-spacing-x5);\n --dp-header-pad-x: var(--prime-sys-spacing-x3);\n --dp-nav-control-height: var(--prime-sys-size-control-m-height);\n}\n\n.pickerRoot[data-size=\"xl\"] {\n --dp-control-height: var(--prime-sys-size-control-xl-height);\n --dp-control-icon: var(--prime-sys-size-control-xl-icon);\n --dp-control-gap: var(--prime-sys-size-control-xl-gap);\n --dp-control-text: var(--prime-sys-size-control-xl-text);\n --dp-support-text: var(--prime-sys-size-control-xl-supportText);\n --rdp-day_button-border-radius: var(--prime-sys-size-control-xl-radius);\n --dp-shell-gap: var(--prime-sys-spacing-x6);\n --dp-month-gap: var(--prime-sys-spacing-x6);\n --dp-header-pad-x: var(--prime-sys-spacing-x3);\n --dp-nav-control-height: var(--prime-sys-size-control-l-height);\n}\n\n/* \u2500\u2500\u2500 Day-button: transitions, hover, today, selected \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.pickerRoot :global(.rdp-day_button) {\n transition:\n background-color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n font-size: var(--dp-control-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.pickerRoot :global(.rdp-day_button:hover:not([disabled]):not([aria-selected=\"true\"])) {\n background-color: var(--prime-sys-color-action-primarySoftBackground);\n color: var(--prime-sys-color-action-primarySoftForeground);\n}\n\n/* \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0434\u0430\u0442\u0430: \u0430\u043A\u0446\u0435\u043D\u0442\u043D\u044B\u0439 \u0446\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u0430 */\n.pickerRoot :global(.rdp-today:not(.rdp-selected):not(.rdp-range_middle) .rdp-day_button) {\n color: var(--prime-sys-color-action-primaryBackground);\n font-weight: var(--prime-sys-typography-weight-semibold);\n}\n\n/* \u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430 (single + range_start + range_end) \u2014 \u0435\u0434\u0438\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C: \u0437\u0430\u043B\u0438\u0442\u044B\u0439 \u0444\u043E\u043D */\n.pickerRoot :global(.rdp-day_button[aria-selected=\"true\"]) {\n background-color: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n/* \u0421\u0440\u0435\u0434\u0438\u043D\u0430 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430 \u043F\u0435\u0440\u0435\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u043B\u0438\u0442\u044B\u0439 \u0444\u043E\u043D \u0432\u044B\u0448\u0435 */\n.pickerRoot :global(.rdp-range_middle) {\n background-color: var(--prime-sys-color-action-primarySoftBackground);\n}\n\n.pickerRoot :global(.rdp-range_middle .rdp-day_button) {\n background-color: transparent;\n color: var(--prime-sys-color-action-primarySoftForeground);\n font-weight: var(--prime-sys-typography-weight-semibold);\n box-shadow: none;\n}\n\n.pickerRoot :global(.rdp-day_button:focus-visible) {\n outline: none;\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n/* \u2500\u2500\u2500 \u0421\u0435\u0442\u043A\u0430 \u043C\u0435\u0441\u044F\u0446\u0435\u0432 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.months {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n max-width: none;\n gap: var(--dp-month-gap);\n}\n\n.month {\n /* \u0421\u0435\u043C\u044C \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u0434\u043D\u0435\u0439 + table-layout:fixed \u2014 \u0441\u0442\u0430\u0431\u0438\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u043F\u0440\u0438 \u0441\u043C\u0435\u043D\u0435 \u043C\u0435\u0441\u044F\u0446\u0430 (\u043F\u043E\u0434\u043F\u0438\u0441\u044C, \u0441\u0442\u0440\u043E\u043A\u0438) \u0438 \u0431\u0435\u0437 \u043B\u0438\u0448\u043D\u0435\u0433\u043E \u043F\u0435\u0440\u0435\u0441\u0447\u0451\u0442\u0430 max-content \u0443 \u043F\u043E\u043F\u043E\u0432\u0435\u0440\u0430 */\n --dp-month-grid-min-width: calc(7 * var(--rdp-day_button-width));\n min-width: min(100%, max(var(--dp-month-grid-min-width), var(--prime-sys-unit-15rem)));\n flex: 1 1 var(--dp-month-grid-min-width);\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x2);\n}\n\n/* react-day-picker \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 <table> \u0431\u0435\u0437 \u044F\u0432\u043D\u043E\u0439 \u0448\u0438\u0440\u0438\u043D\u044B */\n.pickerRoot :global(.rdp-month_grid) {\n width: 100%;\n table-layout: fixed;\n}\n\n/* \u2500\u2500\u2500 \u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F (prev/next) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.nav {\n display: none;\n}\n\n.navButton {\n flex: 0 0 auto;\n}\n\n.pickerRoot[data-size=\"s\"] .navButton {\n --prime-icon-size: var(--prime-sys-size-control-xs-icon);\n --prime-button-font-size: var(--prime-sys-size-control-xs-text);\n height: var(--prime-sys-size-control-xs-height);\n min-width: var(--prime-sys-size-control-xs-height);\n border-radius: var(--prime-sys-size-control-xs-radius);\n gap: var(--prime-sys-size-control-xs-gap);\n padding-inline: var(--prime-sys-size-control-xs-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-xs-buttonPaddingY);\n}\n\n.pickerRoot[data-size=\"m\"] .navButton {\n --prime-icon-size: var(--prime-sys-size-control-s-icon);\n --prime-button-font-size: var(--prime-sys-size-control-s-text);\n height: var(--prime-sys-size-control-s-height);\n min-width: var(--prime-sys-size-control-s-height);\n border-radius: var(--prime-sys-size-control-s-radius);\n gap: var(--prime-sys-size-control-s-gap);\n padding-inline: var(--prime-sys-size-control-s-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-s-buttonPaddingY);\n}\n\n.pickerRoot[data-size=\"l\"] .navButton {\n --prime-icon-size: var(--prime-sys-size-control-m-icon);\n --prime-button-font-size: var(--prime-sys-size-control-m-text);\n height: var(--prime-sys-size-control-m-height);\n min-width: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-size-control-m-radius);\n gap: var(--prime-sys-size-control-m-gap);\n padding-inline: var(--prime-sys-size-control-m-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-m-buttonPaddingY);\n}\n\n.pickerRoot[data-size=\"xl\"] .navButton {\n --prime-icon-size: var(--prime-sys-size-control-l-icon);\n --prime-button-font-size: var(--prime-sys-size-control-l-text);\n height: var(--prime-sys-size-control-l-height);\n min-width: var(--prime-sys-size-control-l-height);\n border-radius: var(--prime-sys-size-control-l-radius);\n gap: var(--prime-sys-size-control-l-gap);\n padding-inline: var(--prime-sys-size-control-l-buttonPaddingX);\n padding-block: var(--prime-sys-size-control-l-buttonPaddingY);\n}\n\n.monthCaption {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--dp-header-gap);\n width: 100%;\n min-height: 0;\n height: auto;\n margin-bottom: 0;\n padding: var(--dp-header-pad-x);\n border-radius: var(--prime-sys-shape-radius-m);\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n box-sizing: border-box;\n font-size: var(--dp-control-text);\n font-weight: var(--prime-sys-typography-weight-semibold);\n text-align: center;\n}\n\n.monthCaptionLabel {\n flex: 1 1 auto;\n min-width: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* \u0422\u0435\u043A\u0441\u0442 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043C\u0435\u0441\u044F\u0446\u0430 \u0432\u043D\u0443\u0442\u0440\u0438 \u043E\u0431\u0449\u0435\u0439 pill-\u0448\u0430\u043F\u043A\u0438 */\n.monthCaptionLabel :global(.rdp-caption_label) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 100%;\n padding: 0;\n text-align: center;\n}\n\n.monthCaptionSpacer {\n width: var(--dp-nav-control-height);\n height: var(--dp-nav-control-height);\n flex: 0 0 var(--dp-nav-control-height);\n}\n\n.weekday {\n font-size: var(--dp-support-text);\n color: var(--prime-sys-color-content-secondary);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n/* \u2500\u2500\u2500 Shell \u2014 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0430-\u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.shell {\n --dp-shell-gap: var(--prime-sys-spacing-x4);\n --dp-support-text: var(--prime-sys-size-control-m-supportText);\n\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x3);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n}\n\n.shell[data-size=\"s\"] {\n --dp-shell-gap: var(--prime-sys-spacing-x3);\n --dp-support-text: var(--prime-sys-size-control-s-supportText);\n gap: var(--prime-sys-spacing-x2);\n}\n\n.shell[data-size=\"l\"] {\n --dp-shell-gap: var(--prime-sys-spacing-x5);\n --dp-support-text: var(--prime-sys-size-control-l-supportText);\n gap: var(--prime-sys-spacing-x4);\n}\n\n.shell[data-size=\"xl\"] {\n --dp-shell-gap: var(--prime-sys-spacing-x6);\n --dp-support-text: var(--prime-sys-size-control-xl-supportText);\n gap: var(--prime-sys-spacing-x5);\n}\n\n/* \u2500\u2500\u2500 .presetsRow \u2014 \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u0440\u0435\u0441\u0435\u0442\u043E\u0432 \u0441\u043D\u0438\u0437\u0443 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.presetsRow {\n width: 100%;\n overflow: hidden;\n border-top: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-raised);\n}\n\n/* \u2500\u2500\u2500 .presetsBlock \u2014 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0439 \u0441\u043A\u0440\u043E\u043B\u043B-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0441 \u043A\u043D\u043E\u043F\u043A\u0430\u043C\u0438 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.presetsBlock {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--prime-sys-spacing-x3);\n padding: var(--prime-sys-spacing-x3) var(--dp-shell-gap);\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n box-sizing: border-box;\n}\n\n.presetsBlock[data-size=\"s\"] {\n gap: var(--prime-sys-spacing-x2);\n padding: var(--prime-sys-spacing-x2) var(--dp-shell-gap);\n}\n\n.presetsBlock[data-size=\"l\"] {\n gap: var(--prime-sys-spacing-x3);\n padding: var(--prime-sys-spacing-x3) var(--dp-shell-gap);\n}\n\n.presetsBlock[data-size=\"xl\"] {\n gap: var(--prime-sys-spacing-x4);\n padding: var(--prime-sys-spacing-x4) var(--dp-shell-gap);\n}\n\n.presetsGroup {\n flex-shrink: 0;\n flex-grow: 0;\n}\n\n/* \u2500\u2500\u2500 Time section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.timeSection {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x2);\n padding-top: var(--prime-sys-spacing-x3);\n border-top: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n}\n\n.timeSection[data-size=\"s\"] {\n padding-top: var(--prime-sys-spacing-x2);\n}\n\n.timeSection[data-size=\"l\"] {\n padding-top: var(--prime-sys-spacing-x4);\n}\n\n.timeSection[data-size=\"xl\"] {\n padding-top: var(--prime-sys-spacing-x5);\n}\n\n.timeRow {\n display: flex;\n flex-wrap: wrap;\n gap: var(--prime-sys-spacing-x3);\n}\n\n.timeField {\n flex: 1 1 min(100%, var(--prime-sys-unit-11rem));\n min-width: 0;\n}\n\n.timeInputRoot {\n width: 100%;\n}\n\n.timeInputField {\n font-variant-numeric: tabular-nums;\n}\n\n/* \u2500\u2500\u2500 Value text \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.valueText {\n font-variant-numeric: tabular-nums;\n}\n\n/* \u2500\u2500\u2500 Viewport-\u043E\u0431\u0451\u0440\u0442\u043A\u0430 Calendar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.calendarViewport {\n min-width: 0;\n width: 100%;\n}\n", "import * as React from \"react\";\n\nimport type { DigitInputSize } from \"@/internal/states\";\n\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { cx } from \"../../internal/cx\";\n\nimport styles from \"./DigitInput.module.css\";\n\nexport type { DigitInputSize };\n\nexport type DigitInputRootProps = {\n length?: number;\n size?: DigitInputSize;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n hasError?: boolean;\n onComplete?: (value: string) => void;\n className?: string;\n};\n\nfunction normalizeDigits(raw: string, len: number) {\n return raw.replace(/\\D/g, \"\").slice(0, len);\n}\n\nfunction toCells(value: string, len: number): string[] {\n const digits = normalizeDigits(value, len);\n const cells: string[] = [];\n for (let i = 0; i < len; i++) {\n cells.push(digits[i] ?? \"\");\n }\n return cells;\n}\n\nfunction createSlotKeys(len: number) {\n return Array.from({ length: len }, () => crypto.randomUUID());\n}\n\nfunction DigitInputRoot({\n length: lengthProp = 4,\n size = \"m\",\n value: valueProp,\n defaultValue = \"\",\n onChange,\n disabled,\n hasError,\n onComplete,\n className,\n}: DigitInputRootProps) {\n const length = lengthProp;\n const slotKeysRef = React.useRef<string[] | null>(null);\n if (!slotKeysRef.current || slotKeysRef.current.length !== length) {\n slotKeysRef.current = createSlotKeys(length);\n }\n const slotKeys = slotKeysRef.current;\n const defaultNormalized = normalizeDigits(defaultValue, length);\n const [value, setValue] = useControllableState({\n value: valueProp !== undefined ? normalizeDigits(valueProp, length) : undefined,\n defaultValue: defaultNormalized,\n onChange,\n });\n\n const prevLenRef = React.useRef(0);\n\n React.useEffect(() => {\n prevLenRef.current = normalizeDigits(value, length).length;\n }, [length, value]);\n\n const commit = React.useCallback(\n (nextRaw: string) => {\n const next = normalizeDigits(nextRaw, length);\n const prevLen = prevLenRef.current;\n setValue(next);\n prevLenRef.current = next.length;\n if (next.length === length && prevLen < length) {\n onComplete?.(next);\n }\n },\n [length, onComplete, setValue],\n );\n\n const cells = toCells(value, length);\n const inputRefs = React.useRef<Array<HTMLInputElement | null>>([]);\n\n const setInputRef = React.useCallback((el: HTMLInputElement | null, index: number) => {\n inputRefs.current[index] = el;\n }, []);\n\n const focusAt = React.useCallback((index: number) => {\n const el = inputRefs.current[index];\n if (el) {\n queueMicrotask(() => el.focus());\n }\n }, []);\n\n const handleChangeAt = (index: number, nextChar: string) => {\n const nextCells = [...cells];\n nextCells[index] = nextChar;\n commit(nextCells.join(\"\"));\n if (nextChar && index < length - 1) {\n focusAt(index + 1);\n }\n };\n\n const handlePaste = (startIndex: number, pasted: string) => {\n const digits = normalizeDigits(pasted, length);\n if (digits.length === 0) {\n return;\n }\n const nextCells = [...cells];\n let writeIndex = startIndex;\n for (const d of digits) {\n if (writeIndex >= length) {\n break;\n }\n nextCells[writeIndex] = d;\n writeIndex++;\n }\n commit(nextCells.join(\"\"));\n const focusIndex = Math.min(startIndex + digits.length, length - 1);\n focusAt(focusIndex);\n };\n\n return (\n <fieldset\n aria-label=\"Digit input\"\n className={cx(styles.root, className)}\n data-size={size}\n data-has-error={hasError ? \"true\" : \"false\"}\n data-disabled={disabled ? \"true\" : \"false\"}\n >\n {cells.map((cell, index) => (\n <input\n key={slotKeys[index]}\n ref={(el) => setInputRef(el, index)}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n maxLength={1}\n disabled={disabled}\n className={styles.cell}\n data-size={size}\n value={cell}\n aria-label={`Digit ${index + 1} of ${length}`}\n onChange={(e) => {\n if (disabled) {\n return;\n }\n const raw = e.target.value;\n const digitsOnly = normalizeDigits(raw, 1);\n const nextChar = digitsOnly.slice(-1) ?? \"\";\n handleChangeAt(index, nextChar);\n }}\n onKeyDown={(e) => {\n if (disabled) {\n return;\n }\n if (e.key === \"Backspace\" && !cells[index] && index > 0) {\n e.preventDefault();\n focusAt(index - 1);\n }\n }}\n onPaste={(e) => {\n if (disabled) {\n return;\n }\n e.preventDefault();\n handlePaste(index, e.clipboardData.getData(\"text\"));\n }}\n />\n ))}\n </fieldset>\n );\n}\n\nDigitInputRoot.displayName = \"DigitInputRoot\";\n\nexport const DigitInput = { Root: DigitInputRoot };\n", ".root {\n display: flex;\n justify-content: center;\n gap: var(--prime-digit-gap);\n border: none;\n margin: 0;\n padding: 0;\n min-width: 0;\n}\n\n.root[data-size=\"s\"] {\n --prime-digit-cell-size: var(--prime-sys-size-control-s-height);\n --prime-digit-cell-radius: var(--prime-sys-size-control-s-radius);\n --prime-digit-cell-text: var(--prime-sys-size-control-s-text);\n --prime-digit-gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"m\"] {\n --prime-digit-cell-size: var(--prime-sys-size-control-m-height);\n --prime-digit-cell-radius: var(--prime-sys-size-control-m-radius);\n --prime-digit-cell-text: var(--prime-sys-size-control-m-text);\n --prime-digit-gap: var(--prime-sys-size-control-m-gap);\n}\n\n.root[data-size=\"l\"] {\n --prime-digit-cell-size: var(--prime-sys-size-control-l-height);\n --prime-digit-cell-radius: var(--prime-sys-size-control-l-radius);\n --prime-digit-cell-text: var(--prime-sys-size-control-l-text);\n --prime-digit-gap: var(--prime-sys-size-control-l-gap);\n}\n\n.root[data-size=\"xl\"] {\n --prime-digit-cell-size: var(--prime-sys-size-control-xl-height);\n --prime-digit-cell-radius: var(--prime-sys-size-control-xl-radius);\n --prime-digit-cell-text: var(--prime-sys-size-control-xl-text);\n --prime-digit-gap: var(--prime-sys-size-control-xl-gap);\n}\n\n.root[data-disabled=\"true\"] {\n cursor: not-allowed;\n}\n\n.cell {\n box-sizing: border-box;\n width: var(--prime-digit-cell-size);\n min-width: 0;\n height: var(--prime-digit-cell-size);\n text-align: center;\n font-size: var(--prime-digit-cell-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n border-radius: var(--prime-digit-cell-radius);\n background: var(--prime-sys-color-field-bg);\n color: var(--prime-sys-color-field-text);\n outline: none;\n transition:\n border-color var(--prime-sys-motion-medium),\n box-shadow var(--prime-sys-motion-medium);\n}\n\n.cell:focus {\n border-color: var(--prime-sys-color-field-borderFocus);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.root[data-has-error=\"true\"] .cell {\n border-color: var(--prime-sys-color-field-borderError);\n}\n\n.root[data-disabled=\"true\"] .cell {\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-disabled);\n cursor: not-allowed;\n}\n", "import * as React from \"react\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { useEscapeKey } from \"@/hooks/useEscapeKey\";\nimport { useFocusTrap } from \"@/hooks/useFocusTrap\";\nimport { useScrollLock } from \"@/hooks/useScrollLock\";\nimport { Icon } from \"@/icons\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport {\n OverlayPortalLayerProvider,\n useOverlayPortalLayer,\n} from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\n\nimport styles from \"./Drawer.module.css\";\n\nconst DRAWER_CLOSE_ANIMATION_MS = 220;\n\nexport type DrawerSide = \"left\" | \"right\";\n\nexport type DrawerProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n side?: DrawerSide;\n className?: string;\n overlayClassName?: string;\n};\n\nexport function Drawer({\n open,\n onOpenChange,\n title,\n description,\n icon,\n children,\n footer,\n side = \"right\",\n className,\n overlayClassName,\n}: DrawerProps) {\n const [isMounted, setIsMounted] = React.useState(open);\n const [isClosing, setIsClosing] = React.useState(false);\n\n React.useEffect(() => {\n if (open) {\n setIsMounted(true);\n setIsClosing(false);\n return;\n }\n\n if (!isMounted) {\n return;\n }\n\n setIsClosing(true);\n const timeoutId = window.setTimeout(() => {\n setIsMounted(false);\n setIsClosing(false);\n }, DRAWER_CLOSE_ANIMATION_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [open, isMounted]);\n\n const state = open && !isClosing ? \"open\" : \"closing\";\n const parentLayer = useOverlayPortalLayer();\n const nestedInModal = parentLayer === \"modal\";\n const portalLayer = nestedInModal ? \"drawerInModal\" : \"drawer\";\n\n const trapRef = useFocusTrap<HTMLDivElement>({ enabled: open });\n useScrollLock(open);\n useEscapeKey({ enabled: open, onEscape: () => onOpenChange(false) });\n\n React.useEffect(() => {\n if (!open) return;\n\n const container = trapRef.current;\n if (!container) return;\n\n let portalRoot: Element | null = container;\n while (portalRoot && portalRoot.parentElement !== document.body) {\n portalRoot = portalRoot.parentElement;\n }\n\n const siblings = Array.from(document.body.children).filter((el) => el !== portalRoot);\n const prev = siblings.map((el) => ({\n el: el as HTMLElement,\n inert: (el as HTMLElement).inert,\n ariaHidden: el.getAttribute(\"aria-hidden\"),\n }));\n\n for (const { el } of prev) {\n el.inert = true;\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n\n return () => {\n for (const { el, inert, ariaHidden } of prev) {\n el.inert = inert;\n if (ariaHidden === null) {\n el.removeAttribute(\"aria-hidden\");\n } else {\n el.setAttribute(\"aria-hidden\", ariaHidden);\n }\n }\n };\n }, [open, trapRef]);\n\n const generatedId = React.useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n const hasDescription = description != null && description !== \"\";\n\n const handleOverlayClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget && open) {\n onOpenChange(false);\n }\n };\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <Portal>\n {/* biome-ignore lint/a11y/noStaticElementInteractions: backdrop overlay; keyboard dismiss is handled separately */}\n <div\n role=\"presentation\"\n className={cx(styles.overlay, overlayClassName)}\n data-testid=\"drawer-overlay\"\n onClick={handleOverlayClick}\n {...toDataAttributes({ state })}\n data-nested-in-modal={nestedInModal ? \"true\" : undefined}\n />\n\n <div\n ref={trapRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={hasDescription ? descriptionId : undefined}\n tabIndex={-1}\n className={cx(styles.panel, className)}\n data-nested-in-modal={nestedInModal ? \"true\" : undefined}\n {...toDataAttributes({ side, state })}\n >\n <OverlayPortalLayerProvider value={portalLayer}>\n <header className={styles.header}>\n <div className={styles.headerMain}>\n {icon ? <span className={styles.icon}>{icon}</span> : null}\n <div className={styles.titleBlock}>\n <h2 id={titleId} className={styles.title}>\n {title}\n </h2>\n {hasDescription ? (\n <p id={descriptionId} className={styles.description}>\n {description}\n </p>\n ) : null}\n </div>\n </div>\n\n <Button.Root\n type=\"button\"\n variant=\"neutral\"\n mode=\"ghost\"\n className={styles.closeButton}\n aria-label=\"Close drawer\"\n onClick={() => onOpenChange(false)}\n >\n <Button.Icon>\n <Icon name=\"action.close\" tone=\"subtle\" />\n </Button.Icon>\n </Button.Root>\n </header>\n\n <ScrollContainer className={styles.body}>{children}</ScrollContainer>\n\n {footer ? <footer className={styles.footer}>{footer}</footer> : null}\n </OverlayPortalLayerProvider>\n </div>\n </Portal>\n );\n}\n", ".overlay {\n position: fixed;\n inset: 0;\n z-index: var(--prime-sys-elevation-zIndex-drawer);\n background: var(--prime-sys-color-surface-overlay);\n backdrop-filter: blur(var(--prime-sys-unit-8px));\n}\n\n.overlay[data-nested-in-modal=\"true\"] {\n z-index: var(--prime-sys-elevation-zIndex-drawerNestedShell);\n}\n\n.overlay[data-state=\"open\"] {\n animation: drawerFadeIn var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.overlay[data-state=\"closing\"] {\n animation: drawerFadeOut var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.panel {\n position: fixed;\n top: 0;\n bottom: 0;\n width: min(28rem, 90vw);\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n z-index: var(--prime-sys-elevation-zIndex-drawer);\n background: color-mix(in srgb, var(--prime-sys-color-surface-elevated) 94%, transparent);\n color: var(--prime-sys-color-content-primary);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n box-shadow: var(--prime-sys-elevation-shadow-modal);\n outline: none;\n}\n\n.panel[data-nested-in-modal=\"true\"] {\n z-index: var(--prime-sys-elevation-zIndex-drawerNestedShell);\n}\n\n.panel[data-side=\"right\"] {\n right: 0;\n border-radius: var(--prime-sys-shape-radius-l) 0 0 var(--prime-sys-shape-radius-l);\n}\n\n.panel[data-side=\"left\"] {\n left: 0;\n border-radius: 0 var(--prime-sys-shape-radius-l) var(--prime-sys-shape-radius-l) 0;\n}\n\n.panel[data-state=\"open\"][data-side=\"right\"] {\n animation: drawerSlideInFromRight var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.panel[data-state=\"closing\"][data-side=\"right\"] {\n animation: drawerSlideOutToRight var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.panel[data-state=\"open\"][data-side=\"left\"] {\n animation: drawerSlideInFromLeft var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.panel[data-state=\"closing\"][data-side=\"left\"] {\n animation: drawerSlideOutToLeft var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-x3);\n padding-inline: var(--prime-sys-spacing-x5);\n padding-block: var(--prime-sys-spacing-x5);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n flex-shrink: 0;\n}\n\n.headerMain {\n display: flex;\n align-items: flex-start;\n gap: var(--prime-sys-spacing-x3);\n min-width: 0;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--prime-sys-size-control-m-height);\n height: var(--prime-sys-size-control-m-height);\n border-radius: var(--prime-sys-shape-radius-m);\n background: var(--prime-sys-color-surface-raised);\n color: var(--prime-sys-color-content-secondary);\n flex-shrink: 0;\n}\n\n.titleBlock {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x1);\n min-width: 0;\n}\n\n.title {\n margin: 0;\n font-size: var(--prime-sys-size-control-m-text);\n font-weight: var(--prime-sys-typography-title-weight);\n line-height: 1.2;\n color: var(--prime-sys-color-content-primary);\n}\n\n.description {\n margin: 0;\n color: var(--prime-sys-color-content-secondary);\n font-size: var(--prime-sys-size-control-s-text);\n line-height: 1.4;\n}\n\n.closeButton {\n flex-shrink: 0;\n}\n\n.body {\n flex: 1;\n min-height: 0;\n padding-inline: var(--prime-sys-spacing-x5);\n padding-block: var(--prime-sys-spacing-x5);\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--prime-sys-spacing-x3);\n padding-inline: var(--prime-sys-spacing-x5);\n padding-block: var(--prime-sys-spacing-x4);\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n flex-shrink: 0;\n}\n\n@keyframes drawerFadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes drawerFadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes drawerSlideInFromRight {\n from {\n transform: translateX(100%);\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes drawerSlideOutToRight {\n from {\n transform: translateX(0);\n }\n\n to {\n transform: translateX(100%);\n }\n}\n\n@keyframes drawerSlideInFromLeft {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes drawerSlideOutToLeft {\n from {\n transform: translateX(0);\n }\n\n to {\n transform: translateX(-100%);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .overlay,\n .panel {\n animation: none;\n }\n}\n", "import * as React from \"react\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useEscapeKey } from \"@/hooks/useEscapeKey\";\nimport { useFocusTrap } from \"@/hooks/useFocusTrap\";\nimport { isPortaledSelectListboxOwnedByContainer, useOutsideClick } from \"@/hooks/useOutsideClick\";\nimport type { PositionAlign, PositionSide } from \"@/hooks/usePosition\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { remToPx } from \"@/internal/layoutPxFromPrimitives\";\nimport { mergeRefs } from \"@/internal/mergeRefs\";\nimport { useOverlayPortalLayer } from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\nimport type { DropdownSize } from \"@/internal/states\";\nimport { primitiveTokens } from \"../../../tokens/primitives\";\n\nimport styles from \"./Dropdown.module.css\";\nimport { handleMenuNavigationKeyDown } from \"./menuKeyboard\";\nimport { useDropdownPosition } from \"./useDropdownPosition\";\n\nexport type { DropdownSize };\n\nconst DropdownContentSizeContext = React.createContext<DropdownSize>(\"m\");\n\nfunction useDropdownContentSize(): DropdownSize {\n return React.useContext(DropdownContentSizeContext);\n}\n\nfunction dropdownItemIconPx(menuSize: DropdownSize): number {\n return remToPx(primitiveTokens.icon[menuSize]);\n}\n\ntype Ctx = {\n isOpen: boolean;\n onClose: () => void;\n onToggle: () => void;\n triggerId: string;\n menuId: string;\n triggerRef: React.RefObject<HTMLElement | null>;\n};\n\nconst [DropdownProvider, useDropdownContext] = createComponentContext<Ctx>(\"Dropdown\");\n\nexport type DropdownRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n};\n\nfunction DropdownRoot({ open, defaultOpen = false, onOpenChange, children }: DropdownRootProps) {\n const [isOpen, setIsOpen] = useControllableState({\n value: open,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n const id = React.useId();\n const triggerId = `${id}-trigger`;\n const menuId = `${id}-menu`;\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const onClose = React.useCallback(() => setIsOpen(false), [setIsOpen]);\n const onToggle = React.useCallback(() => setIsOpen((v) => !v), [setIsOpen]);\n\n const value = React.useMemo(\n () => ({ isOpen, onClose, onToggle, triggerId, menuId, triggerRef }),\n [isOpen, onClose, onToggle, triggerId, menuId],\n );\n\n return <DropdownProvider value={value}>{children}</DropdownProvider>;\n}\nDropdownRoot.displayName = \"DropdownRoot\";\n\nexport type DropdownTriggerProps = {\n children: React.ReactElement;\n asChild?: boolean;\n};\n\nfunction DropdownTrigger({ children, asChild: _asChild = true }: DropdownTriggerProps) {\n void _asChild;\n const { isOpen, onToggle, triggerId, menuId, triggerRef } = useDropdownContext();\n const toggleRef = React.useRef(onToggle);\n toggleRef.current = onToggle;\n\n const setNode = React.useCallback(\n (el: HTMLElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = el;\n },\n [triggerRef],\n );\n\n // biome-ignore lint/suspicious/noExplicitAny: cloneElement \u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u044B\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\n const child = children as React.ReactElement<any>;\n const childRef =\n (child.props as { ref?: React.Ref<HTMLElement | null> }).ref ??\n (child as unknown as { ref?: React.Ref<HTMLElement | null> }).ref;\n const mergedRef = React.useMemo(() => mergeRefs(childRef, setNode), [childRef, setNode]);\n const userClick = child.props?.onClick as React.MouseEventHandler<HTMLElement> | undefined;\n\n return React.cloneElement(child, {\n ref: mergedRef,\n id: triggerId,\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": \"menu\",\n \"aria-controls\": menuId,\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n userClick?.(e);\n toggleRef.current();\n },\n });\n}\nDropdownTrigger.displayName = \"DropdownTrigger\";\n\nexport type DropdownContentProps = {\n align?: PositionAlign;\n side?: PositionSide;\n sameMinWidthAsTrigger?: boolean;\n size?: DropdownSize;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction DropdownContent({\n align = \"start\",\n side = \"bottom\",\n sameMinWidthAsTrigger = false,\n size = \"m\",\n children,\n className,\n}: DropdownContentProps) {\n const { isOpen, onClose, triggerRef, menuId, triggerId } = useDropdownContext();\n const overlayPortalLayer = useOverlayPortalLayer();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n const layout = useDropdownPosition({\n open: isOpen,\n triggerRef,\n contentRef,\n side,\n align,\n sameMinWidthAsTrigger,\n });\n\n const trapRef = useFocusTrap<HTMLDivElement>({ enabled: isOpen, restoreFocus: true });\n const ref = React.useMemo(() => mergeRefs(contentRef, trapRef), [trapRef]);\n\n useEscapeKey({ enabled: isOpen, onEscape: onClose });\n useOutsideClick({\n refs: [triggerRef, contentRef],\n enabled: isOpen,\n onOutsideClick: onClose,\n shouldSuppressOutsideClick: (target) =>\n isPortaledSelectListboxOwnedByContainer(target, contentRef.current),\n });\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <DropdownContentSizeContext.Provider value={size}>\n <ControlSizeProvider value={size}>\n <ScrollContainer\n ref={ref}\n id={menuId}\n role=\"menu\"\n aria-labelledby={triggerId}\n data-react-aria-top-layer=\"true\"\n data-overlay-portal-layer={overlayPortalLayer}\n data-side={layout?.resolvedSide ?? side}\n data-size={size}\n className={cx(styles.content, className)}\n style={layout?.style}\n onKeyDown={(e) => handleMenuNavigationKeyDown(e, e.currentTarget)}\n >\n {children}\n </ScrollContainer>\n </ControlSizeProvider>\n </DropdownContentSizeContext.Provider>\n </Portal>\n );\n}\nDropdownContent.displayName = \"DropdownContent\";\n\nexport type DropdownItemProps = {\n onSelect?: () => void;\n disabled?: boolean;\n destructive?: boolean;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction DropdownItem({ onSelect, disabled, destructive, children, className }: DropdownItemProps) {\n const { onClose } = useDropdownContext();\n\n const activate = () => {\n if (disabled) return;\n onSelect?.();\n onClose();\n };\n\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n className={cx(styles.item, className)}\n data-disabled={disabled ? \"true\" : undefined}\n data-destructive={destructive ? \"true\" : undefined}\n onClick={activate}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) {\n e.preventDefault();\n activate();\n }\n }}\n >\n {children}\n </button>\n );\n}\nDropdownItem.displayName = \"DropdownItem\";\n\nexport type DropdownItemIconProps = {\n as?: React.ElementType;\n className?: string;\n children?: React.ReactNode;\n} & Record<string, unknown>;\n\nconst DropdownItemIcon = React.forwardRef<HTMLElement, DropdownItemIconProps>(\n ({ as: As = \"span\", className, children, \"aria-hidden\": ariaHidden, ...rest }, ref) => {\n const menuSize = useDropdownContentSize();\n const { size: explicitSize, ...iconRest } = rest as Record<string, unknown> & { size?: number };\n const iconSize = typeof explicitSize === \"number\" ? explicitSize : dropdownItemIconPx(menuSize);\n const Comp = As as React.ElementType;\n return (\n <Comp\n ref={ref}\n className={cx(styles.itemIcon, className as string | undefined)}\n {...iconRest}\n size={iconSize}\n aria-hidden={ariaHidden ?? true}\n >\n {children}\n </Comp>\n );\n },\n);\nDropdownItemIcon.displayName = \"DropdownItemIcon\";\n\nexport type DropdownGroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownGroup({ className, ...rest }: DropdownGroupProps) {\n // biome-ignore lint/a11y/useSemanticElements: role=\"group\" \u0432\u043D\u0443\u0442\u0440\u0438 role=\"menu\"\n return <div role=\"group\" className={cx(styles.group, className)} {...rest} />;\n}\nDropdownGroup.displayName = \"DropdownGroup\";\n\nexport type DropdownGroupLabelProps = { children: React.ReactNode; className?: string };\n\nfunction DropdownGroupLabel({ children, className }: DropdownGroupLabelProps) {\n return <div className={cx(styles.groupLabel, className)}>{children}</div>;\n}\nDropdownGroupLabel.displayName = \"DropdownGroupLabel\";\n\nexport type DropdownSeparatorProps = { className?: string };\n\nfunction DropdownSeparator({ className }: DropdownSeparatorProps) {\n return <hr className={cx(styles.separator, className)} />;\n}\nDropdownSeparator.displayName = \"DropdownSeparator\";\n\nexport type DropdownBlockProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownBlock({ className, ...rest }: DropdownBlockProps) {\n return <div className={cx(styles.block, className)} {...rest} />;\n}\nDropdownBlock.displayName = \"DropdownBlock\";\n\nexport type DropdownHeaderProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownHeader({ className, ...rest }: DropdownHeaderProps) {\n return <div className={cx(styles.header, className)} {...rest} />;\n}\nDropdownHeader.displayName = \"DropdownHeader\";\n\nexport type DropdownHeaderRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownHeaderRow({ className, ...rest }: DropdownHeaderRowProps) {\n return <div className={cx(styles.headerRow, className)} {...rest} />;\n}\nDropdownHeaderRow.displayName = \"DropdownHeaderRow\";\n\nexport type DropdownHeaderLeadingProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownHeaderLeading({ className, ...rest }: DropdownHeaderLeadingProps) {\n return <div className={cx(styles.headerLeading, className)} {...rest} />;\n}\nDropdownHeaderLeading.displayName = \"DropdownHeaderLeading\";\n\nexport type DropdownHeaderMainProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownHeaderMain({ className, ...rest }: DropdownHeaderMainProps) {\n return <div className={cx(styles.headerMain, className)} {...rest} />;\n}\nDropdownHeaderMain.displayName = \"DropdownHeaderMain\";\n\nexport type DropdownHeaderTitleProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction DropdownHeaderTitle({ className, ...rest }: DropdownHeaderTitleProps) {\n return <div className={cx(styles.headerTitle, className)} {...rest} />;\n}\nDropdownHeaderTitle.displayName = \"DropdownHeaderTitle\";\n\nexport type DropdownHeaderDescriptionProps = React.HTMLAttributes<HTMLDivElement> & {\n truncate?: boolean;\n};\n\nfunction DropdownHeaderDescription({\n className,\n truncate,\n ...rest\n}: DropdownHeaderDescriptionProps) {\n return (\n <div\n className={cx(\n styles.headerDescription,\n truncate ? styles.headerDescriptionTruncate : undefined,\n className,\n )}\n {...rest}\n />\n );\n}\nDropdownHeaderDescription.displayName = \"DropdownHeaderDescription\";\n\nexport type DropdownHeaderTrailingProps = React.HTMLAttributes<HTMLDivElement> & {\n alignSelf?: \"start\" | \"center\";\n};\n\nfunction DropdownHeaderTrailing({\n className,\n alignSelf = \"start\",\n ...rest\n}: DropdownHeaderTrailingProps) {\n return (\n <div\n data-trailing-align={alignSelf === \"center\" ? \"center\" : undefined}\n className={cx(styles.headerTrailing, className)}\n {...rest}\n />\n );\n}\nDropdownHeaderTrailing.displayName = \"DropdownHeaderTrailing\";\n\nexport const Dropdown = {\n Root: DropdownRoot,\n Trigger: DropdownTrigger,\n Content: DropdownContent,\n Block: DropdownBlock,\n Header: DropdownHeader,\n HeaderRow: DropdownHeaderRow,\n HeaderLeading: DropdownHeaderLeading,\n HeaderMain: DropdownHeaderMain,\n HeaderTitle: DropdownHeaderTitle,\n HeaderDescription: DropdownHeaderDescription,\n HeaderTrailing: DropdownHeaderTrailing,\n Item: DropdownItem,\n ItemIcon: DropdownItemIcon,\n Group: DropdownGroup,\n GroupLabel: DropdownGroupLabel,\n Separator: DropdownSeparator,\n};\n", ".content {\n --dropdown-separator-mix: 40%;\n --dd-pad: var(--prime-sys-spacing-x3);\n --dd-min-w: var(--prime-sys-unit-11rem);\n --dd-item-gap: var(--prime-sys-size-control-m-gap);\n --dd-item-height: var(--prime-sys-size-control-m-height);\n --dd-item-pad-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-m-radius);\n --dd-item-text: var(--prime-sys-size-control-m-text);\n --dd-icon-size: var(--prime-sys-size-control-m-icon);\n --dd-group-label-font: var(--prime-sys-size-control-s-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x2);\n --dd-group-label-px: var(--prime-sys-spacing-x3);\n --dd-group-label-pb: var(--prime-sys-spacing-x1);\n --dd-header-gap: var(--prime-sys-spacing-x3);\n --dd-header-pad-inline: var(--prime-sys-spacing-x2);\n --dd-header-pad-block: var(--prime-sys-spacing-x3);\n --dd-header-desc-font: var(--prime-sys-size-control-s-supportText);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x2);\n /* \u041A\u0430\u043A \u0443 Popover `.popoverScroll`: \u0442\u0435 \u0436\u0435 \u043F\u043E\u043B\u044F \u0438 \u043C\u0430\u0441\u0448\u0442\u0430\u0431 `--dd-pad` \u043F\u043E `data-size`. */\n --po-inset-extra: 0px;\n\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n position: fixed;\n width: max-content;\n max-width: min(var(--prime-sys-unit-20rem), 100vw);\n margin: 0;\n background: var(--prime-sys-color-surface-elevated);\n border: none;\n border-radius: var(--prime-sys-shape-radius-l);\n box-shadow: var(--prime-sys-elevation-shadow-surface), var(--prime-sys-elevation-shadow-modal);\n padding: calc(var(--dd-pad) + var(--po-inset-extra));\n min-width: var(--dd-min-w);\n /* max-height \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044F \u0438\u0437 JS \u043F\u043E \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u043C\u0443 \u043C\u0435\u0441\u0442\u0443 \u0432\u043E \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0435; \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 ScrollContainer */\n transform-origin: top center;\n}\n\n.content[data-overlay-portal-layer=\"page\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdown);\n}\n\n.content[data-overlay-portal-layer=\"drawer\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInDrawer);\n}\n\n.content[data-overlay-portal-layer=\"modal\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInModal);\n}\n\n.content[data-overlay-portal-layer=\"drawerInModal\"] {\n z-index: var(--prime-sys-elevation-zIndex-dropdownInDrawerInModal);\n}\n\n.content[data-size=\"s\"] {\n --dd-pad: calc((var(--prime-sys-spacing-x2) + var(--prime-sys-spacing-x3)) / 2);\n --dd-min-w: var(--prime-sys-unit-9p5rem);\n --dd-item-gap: var(--prime-sys-size-control-s-gap);\n --dd-item-height: var(--prime-sys-size-control-s-height);\n --dd-item-pad-x: var(--prime-sys-size-control-s-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-s-radius);\n --dd-item-text: var(--prime-sys-size-control-s-text);\n --dd-icon-size: var(--prime-sys-size-control-s-icon);\n --dd-group-label-font: var(--prime-sys-size-control-s-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x1);\n --dd-group-label-px: var(--prime-sys-spacing-x2);\n --dd-group-label-pb: var(--prime-sys-spacing-x1);\n --dd-header-gap: var(--prime-sys-spacing-x2);\n --dd-header-pad-inline: var(--prime-sys-spacing-x2);\n --dd-header-pad-block: var(--prime-sys-spacing-x3);\n}\n\n.content[data-size=\"l\"] {\n --dd-pad: var(--prime-sys-spacing-x4);\n --dd-min-w: var(--prime-sys-unit-12p5rem);\n --dd-item-gap: var(--prime-sys-size-control-l-gap);\n --dd-item-height: var(--prime-sys-size-control-l-height);\n --dd-item-pad-x: var(--prime-sys-size-control-l-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-l-radius);\n --dd-item-text: var(--prime-sys-size-control-l-text);\n --dd-icon-size: var(--prime-sys-size-control-l-icon);\n --dd-group-label-font: var(--prime-sys-size-control-l-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x2);\n --dd-group-label-px: var(--prime-sys-spacing-x4);\n --dd-group-label-pb: var(--prime-sys-spacing-x2);\n --dd-header-desc-font: var(--prime-sys-size-control-m-supportText);\n --dd-header-pad-inline: var(--prime-sys-spacing-x3);\n --dd-header-pad-block: var(--prime-sys-spacing-x4);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x3);\n}\n\n.content[data-size=\"xl\"] {\n --dd-pad: var(--prime-sys-spacing-x5);\n --dd-min-w: var(--prime-sys-unit-14rem);\n --dd-item-gap: var(--prime-sys-size-control-xl-gap);\n --dd-item-height: var(--prime-sys-size-control-xl-height);\n --dd-item-pad-x: var(--prime-sys-size-control-xl-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-xl-radius);\n --dd-item-text: var(--prime-sys-size-control-xl-text);\n --dd-icon-size: var(--prime-sys-size-control-xl-icon);\n --dd-group-label-font: var(--prime-sys-size-control-xl-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x3);\n --dd-group-label-px: var(--prime-sys-spacing-x4);\n --dd-group-label-pb: var(--prime-sys-spacing-x2);\n --dd-header-gap: var(--prime-sys-spacing-x3);\n --dd-header-desc-font: var(--prime-sys-size-control-xl-supportText);\n --dd-header-pad-inline: var(--prime-sys-spacing-x3);\n --dd-header-pad-block: var(--prime-sys-spacing-x4);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x3);\n}\n\n/* \u0422\u0451\u043C\u043D\u0430\u044F \u0442\u0435\u043C\u0430: \u043C\u0435\u0436\u0434\u0443 \u00AB\u0441\u0435\u0440\u044B\u043C\u00BB elevated (800) \u0438 \u043F\u043E\u0447\u0442\u0438 \u0447\u0451\u0440\u043D\u044B\u043C canvas (950) \u2014 surface (900) */\n:global([data-theme=\"dark\"]) .content {\n background: var(--prime-sys-color-surface-raised);\n}\n\n.block {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n}\n\n.block > * + * {\n margin-top: var(--dd-pad);\n}\n\n.header {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n width: 100%;\n}\n\n.header > * + * {\n margin-top: var(--prime-sys-spacing-x1);\n}\n\n.headerRow {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n padding: var(--dd-header-pad-block) var(--dd-header-pad-inline);\n}\n\n.headerRow > * + * {\n margin-inline-start: var(--dd-header-gap);\n}\n\n.headerLeading {\n flex-shrink: 0;\n}\n\n.headerTrailing {\n flex-shrink: 0;\n align-self: flex-start;\n}\n\n.headerTrailing[data-trailing-align=\"center\"] {\n align-self: center;\n}\n\n.headerMain {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.headerMain > * + * {\n margin-top: var(--prime-sys-spacing-x1);\n}\n\n.headerTitle {\n font-size: var(--dd-item-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.25;\n color: var(--prime-sys-color-content-primary);\n}\n\n.headerDescription {\n font-size: var(--dd-header-desc-font);\n line-height: 1.25;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.headerDescriptionTruncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.content[data-side=\"bottom\"] {\n animation: dropdownInBottom var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.content[data-side=\"top\"] {\n transform-origin: bottom center;\n animation: dropdownInTop var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n@keyframes dropdownInBottom {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(calc(-1 * var(--prime-sys-unit-4px)));\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes dropdownInTop {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(var(--prime-sys-unit-4px));\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n.item {\n display: flex;\n align-items: center;\n min-height: var(--dd-item-height);\n padding-block: 0;\n padding-inline: var(--dd-item-pad-x);\n border-radius: var(--dd-item-radius);\n font-size: var(--dd-item-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1;\n color: var(--prime-sys-color-content-primary);\n cursor: pointer;\n border: none;\n background: none;\n width: 100%;\n text-align: left;\n box-sizing: border-box;\n transition: background var(--prime-sys-motion-fast);\n}\n\n.item:hover,\n.item:focus-visible {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n outline: none;\n}\n\n.item[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n cursor: not-allowed;\n}\n\n.item[data-destructive=\"true\"] {\n color: var(--prime-sys-color-content-danger);\n}\n\n.itemIcon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--dd-icon-size);\n height: var(--dd-icon-size);\n margin-inline-end: var(--dd-item-gap);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.item[data-destructive=\"true\"] .itemIcon {\n color: var(--prime-sys-color-content-danger);\n}\n\n.group {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.group > * + * {\n margin-top: var(--prime-sys-spacing-x1);\n}\n\n.group > .item + .item {\n margin-top: 0;\n}\n\n.groupLabel {\n padding: var(--dd-group-label-pt) var(--dd-group-label-px) var(--dd-group-label-pb);\n font-size: var(--dd-group-label-font);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.2;\n color: var(--prime-sys-color-content-muted);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n}\n\n.separator {\n flex: 0 0 auto;\n align-self: stretch;\n box-sizing: border-box;\n min-width: 0;\n display: block;\n width: 100%;\n height: var(--prime-sys-unit-1px);\n margin: 0;\n padding: 0;\n border: none;\n background-color: color-mix(\n in srgb,\n var(--prime-sys-color-border-subtle) var(--dropdown-separator-mix),\n var(--prime-sys-color-surface-elevated)\n );\n}\n\n/* \u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0448\u0430\u0433 \u043C\u0435\u0436\u0434\u0443 \u043F\u0440\u044F\u043C\u044B\u043C\u0438 \u0434\u0435\u0442\u044C\u043C\u0438 \u2014 \u043A\u0430\u043A `gap` \u0443 Popover (`--po-inset-gap` = `--dd-pad`); \u043F\u0430\u0440\u044B \u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u043C\u0435\u043D\u044E \u0441\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0438\u0436\u0435. */\n.content > * + * {\n margin-top: var(--dd-pad);\n}\n\n.content > .item + .item {\n margin-top: 0;\n}\n\n.content > .separator + * {\n margin-top: 0;\n}\n\n.content > .item + .separator,\n.content > .group + .separator {\n margin-top: var(--dd-separator-stack-pad);\n margin-bottom: var(--dd-separator-stack-pad);\n}\n\n.content > .block + .block {\n margin-top: var(--dd-pad);\n}\n\n.content > .block + .separator {\n margin-top: var(--dd-separator-stack-pad);\n margin-bottom: var(--dd-separator-stack-pad);\n}\n\n:global([data-theme=\"dark\"]) .content .separator {\n background-color: color-mix(\n in srgb,\n var(--prime-sys-color-border-subtle) var(--dropdown-separator-mix),\n var(--prime-sys-color-surface-raised)\n );\n}\n", "import type * as React from \"react\";\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"]:not([data-disabled=\"true\"])';\n\nexport function queryEnabledMenuItems(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR));\n}\n\nexport function handleMenuNavigationKeyDown(\n e: React.KeyboardEvent<HTMLElement>,\n container: HTMLElement,\n): void {\n const items = queryEnabledMenuItems(container);\n if (items.length === 0) return;\n\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n items[next]?.focus();\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n items[prev]?.focus();\n break;\n }\n case \"Home\": {\n e.preventDefault();\n items[0]?.focus();\n break;\n }\n case \"End\": {\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n }\n default:\n break;\n }\n}\n", "import * as React from \"react\";\n\nimport type { PositionAlign, PositionSide } from \"@/hooks/usePosition\";\nimport { computeFloatingPosition } from \"@/hooks/usePosition\";\nimport { getScrollContainers } from \"@/internal/scrollAncestors\";\n\nimport {\n getDropdownMaxHeightForAnchorSide,\n getDropdownPanelOffsetPx,\n getDropdownViewportPadPx,\n} from \"./dropdownGeometry\";\n\nexport type DropdownLayout = {\n style: React.CSSProperties;\n resolvedSide: PositionSide;\n};\n\ntype Params = {\n open: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n contentRef: React.RefObject<HTMLDivElement | null>;\n side: PositionSide;\n align: PositionAlign;\n sameMinWidthAsTrigger: boolean;\n};\n\nfunction layoutEqual(a: DropdownLayout, b: DropdownLayout): boolean {\n return (\n a.resolvedSide === b.resolvedSide &&\n a.style.top === b.style.top &&\n a.style.left === b.style.left &&\n a.style.maxHeight === b.style.maxHeight &&\n a.style.minWidth === b.style.minWidth\n );\n}\n\n/** \u041F\u043E\u0437\u0438\u0446\u0438\u044F + max-height \u043E\u0434\u043D\u0438\u043C \u043F\u0440\u043E\u0445\u043E\u0434\u043E\u043C; resize / scroll-\u043F\u0440\u0435\u0434\u043A\u0438 / ResizeObserver / visualViewport. */\nexport function useDropdownPosition({\n open,\n triggerRef,\n contentRef,\n side,\n align,\n sameMinWidthAsTrigger,\n}: Params): DropdownLayout | null {\n const [layout, setLayout] = React.useState<DropdownLayout | null>(null);\n\n const commit = React.useCallback(() => {\n const trigger = triggerRef.current;\n const panel = contentRef.current;\n if (!trigger || !panel) return;\n\n const anchorRect = trigger.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const panelOffset = getDropdownPanelOffsetPx();\n const viewportPad = getDropdownViewportPadPx();\n const pos = computeFloatingPosition(anchorRect, panel.offsetWidth, panel.offsetHeight, vw, vh, {\n preferredSide: side,\n align,\n offset: panelOffset,\n viewportPad,\n flip: true,\n matchTriggerMinWidth: sameMinWidthAsTrigger,\n });\n\n const next: DropdownLayout = {\n resolvedSide: pos.resolvedSide,\n style: {\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n maxHeight: getDropdownMaxHeightForAnchorSide(\n anchorRect,\n pos.resolvedSide,\n vh,\n panelOffset,\n viewportPad,\n ),\n ...(pos.minWidth !== undefined ? { minWidth: pos.minWidth } : {}),\n },\n };\n\n setLayout((prev) => (prev && layoutEqual(prev, next) ? prev : next));\n }, [triggerRef, contentRef, side, align, sameMinWidthAsTrigger]);\n\n React.useLayoutEffect(() => {\n if (!open) {\n setLayout(null);\n return;\n }\n\n let rafCoalesce = 0;\n const schedule = () => {\n cancelAnimationFrame(rafCoalesce);\n rafCoalesce = requestAnimationFrame(commit);\n };\n\n commit();\n const rafFollowUp = requestAnimationFrame(commit);\n\n window.addEventListener(\"resize\", schedule);\n const scrollTargets = getScrollContainers(triggerRef.current);\n for (const t of scrollTargets) {\n t.addEventListener(\"scroll\", schedule, { passive: true });\n }\n const vv = window.visualViewport;\n vv?.addEventListener(\"resize\", schedule);\n\n const panel = contentRef.current;\n const ro = panel ? new ResizeObserver(schedule) : null;\n if (panel && ro) ro.observe(panel);\n\n return () => {\n cancelAnimationFrame(rafFollowUp);\n cancelAnimationFrame(rafCoalesce);\n window.removeEventListener(\"resize\", schedule);\n for (const t of scrollTargets) {\n t.removeEventListener(\"scroll\", schedule);\n }\n vv?.removeEventListener(\"resize\", schedule);\n ro?.disconnect();\n };\n }, [open, commit, triggerRef, contentRef]);\n\n return layout;\n}\n", "const SCROLLABLE = /^(auto|scroll|overlay)$/;\n\n/** window, \u043F\u0440\u043E\u043A\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u0435\u0434\u043A\u0438 \u044F\u043A\u043E\u0440\u044F \u0438 visualViewport \u2014 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0441\u0447\u0451\u0442\u0430 fixed \u043F\u0440\u0438 scroll. */\nexport function getScrollContainers(\n node: Element | null,\n): Array<Element | Window | VisualViewport> {\n const out: Array<Element | Window | VisualViewport> = [window];\n if (!node || typeof window === \"undefined\") return out;\n\n for (let el: Element | null = node.parentElement; el; el = el.parentElement) {\n const { overflowX, overflowY } = window.getComputedStyle(el);\n if (SCROLLABLE.test(overflowY) || SCROLLABLE.test(overflowX)) {\n out.push(el);\n }\n }\n\n if (window.visualViewport) out.push(window.visualViewport);\n return out;\n}\n", "import type { PositionSide } from \"@/hooks/usePosition\";\nimport {\n getFloatingPanelOffsetPx,\n getFloatingViewportPadPx,\n} from \"@/internal/layoutPxFromPrimitives\";\n\nexport const DROPDOWN_MIN_MAX_HEIGHT = 120;\n\n/**\n * \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u043F\u043E \u044F\u043A\u043E\u0440\u044E \u0438 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 (\u0434\u043E commit layout \u043F\u0430\u043D\u0435\u043B\u0438).\n * `panelOffsetPx` / `viewportPadPx` \u0434\u043E\u043B\u0436\u043D\u044B \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u0442\u044C \u0441 \u0432\u044B\u0437\u043E\u0432\u043E\u043C `computeFloatingPosition`.\n */\nexport function getDropdownMaxHeightForAnchorSide(\n anchor: DOMRectReadOnly,\n side: PositionSide,\n viewportHeight: number,\n panelOffsetPx: number,\n viewportPadPx: number,\n): number {\n const raw =\n side === \"bottom\"\n ? viewportHeight - anchor.bottom - panelOffsetPx - viewportPadPx\n : anchor.top - panelOffsetPx - viewportPadPx;\n return Math.floor(Math.max(DROPDOWN_MIN_MAX_HEIGHT, raw));\n}\n\nexport function getDropdownPanelOffsetPx(): number {\n return getFloatingPanelOffsetPx();\n}\n\nexport function getDropdownViewportPadPx(): number {\n return getFloatingViewportPadPx();\n}\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { EmptyPageSize } from \"@/internal/states\";\n\nimport styles from \"./EmptyPage.module.css\";\n\nexport type { EmptyPageSize };\n\nexport type EmptyPageLayout = \"default\" | \"fill\";\n\nexport type EmptyPageRootProps = {\n /** \u0412\u044B\u0441\u043E\u0442\u0430 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043E\u0432, \u043A\u0435\u0433\u043B\u044C \u0438 \u043E\u0442\u0441\u0442\u0443\u043F\u044B; \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `m`. */\n size?: EmptyPageSize;\n /**\n * `fill` \u2014 \u0431\u043B\u043E\u043A \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E \u0432\u044B\u0441\u043E\u0442\u0435 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F \u0438 \u0446\u0435\u043D\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 (\u043F\u0443\u0441\u0442\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0432\u043D\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u044B, \u0441\u043A\u0440\u043E\u043B\u043B\u0430, \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438).\n * `default` \u2014 \u043A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u044B\u0439 \u0431\u043B\u043E\u043A \u043F\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u043C\u0443.\n */\n layout?: EmptyPageLayout;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst EmptyPageRoot = React.forwardRef<HTMLDivElement, EmptyPageRootProps>(function EmptyPageRoot(\n { size = \"m\", layout = \"default\", className, children, ...rest },\n forwardedRef,\n) {\n return (\n <div\n ref={forwardedRef}\n className={cx(styles.root, className)}\n {...rest}\n {...toDataAttributes({\n size,\n layout: layout === \"fill\" ? \"fill\" : undefined,\n })}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </div>\n );\n});\nEmptyPageRoot.displayName = \"EmptyPage.Root\";\n\nexport type EmptyPageIconProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction EmptyPageIcon({ className, children, ...rest }: EmptyPageIconProps) {\n return (\n <div className={cx(styles.iconWrap, className)} {...rest}>\n {children}\n </div>\n );\n}\nEmptyPageIcon.displayName = \"EmptyPage.Icon\";\n\nexport type EmptyPageTitleProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLHeadingElement>;\n\nconst EmptyPageTitle = React.forwardRef<HTMLHeadingElement, EmptyPageTitleProps>(\n function EmptyPageTitle({ className, children, ...rest }, forwardedRef) {\n return (\n <h2 ref={forwardedRef} className={cx(styles.title, className)} {...rest}>\n {children}\n </h2>\n );\n },\n);\nEmptyPageTitle.displayName = \"EmptyPage.Title\";\n\nexport type EmptyPageDescriptionProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLParagraphElement>;\n\nconst EmptyPageDescription = React.forwardRef<HTMLParagraphElement, EmptyPageDescriptionProps>(\n function EmptyPageDescription({ className, children, ...rest }, forwardedRef) {\n return (\n <p ref={forwardedRef} className={cx(styles.description, className)} {...rest}>\n {children}\n </p>\n );\n },\n);\nEmptyPageDescription.displayName = \"EmptyPage.Description\";\n\nexport type EmptyPageActionsProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction EmptyPageActions({ className, children, ...rest }: EmptyPageActionsProps) {\n return (\n <div className={cx(styles.actions, className)} {...rest}>\n {children}\n </div>\n );\n}\nEmptyPageActions.displayName = \"EmptyPage.Actions\";\n\nexport const EmptyPage = {\n Root: EmptyPageRoot,\n Icon: EmptyPageIcon,\n Title: EmptyPageTitle,\n Description: EmptyPageDescription,\n Actions: EmptyPageActions,\n};\n", ".root {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n text-align: center;\n}\n\n.root[data-layout=\"fill\"] {\n flex: 1 1 auto;\n align-self: stretch;\n min-height: 0;\n}\n\n/* \u041A\u0430\u043A \u0443 \u0438\u043A\u043E\u043D\u043A\u0438 \u0432 \u0448\u0430\u043F\u043A\u0435 Modal (`headerIcon`): \u043F\u043E\u0434\u043B\u043E\u0436\u043A\u0430 + `currentColor` \u043D\u0430 \u0433\u043B\u0438\u0444\u0435; \u043A\u0440\u0430\u0441\u043D\u044B\u0439 \u2014 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u043A\u0430 status-error. */\n.iconWrap {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n background: var(--prime-sys-color-status-error-background);\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.iconWrap svg {\n display: block;\n flex-shrink: 0;\n}\n\n.title {\n margin: 0;\n max-width: min(100%, var(--prime-sys-unit-40rem));\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.25;\n color: var(--prime-sys-color-content-primary);\n}\n\n.description {\n margin: 0;\n max-width: min(100%, var(--prime-sys-unit-40rem));\n line-height: 1.45;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n}\n\n/* size s */\n.root[data-size=\"s\"] {\n gap: var(--prime-sys-size-control-s-gap);\n padding-block: var(--prime-sys-spacing-xl);\n padding-inline: var(--prime-sys-spacing-m);\n}\n\n.root[data-size=\"s\"] .iconWrap {\n width: calc(var(--prime-sys-size-control-s-icon) * 2 + var(--prime-sys-spacing-m));\n height: calc(var(--prime-sys-size-control-s-icon) * 2 + var(--prime-sys-spacing-m));\n border-radius: var(--prime-sys-size-control-s-radius);\n}\n\n.root[data-size=\"s\"] .iconWrap svg {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.root[data-size=\"s\"] .title {\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"s\"] .description {\n font-size: var(--prime-sys-size-control-s-supportText);\n}\n\n.root[data-size=\"s\"] .actions {\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n/* size m */\n.root[data-size=\"m\"] {\n gap: var(--prime-sys-size-control-m-gap);\n padding-block: var(--prime-sys-spacing-2xl);\n padding-inline: var(--prime-sys-spacing-l);\n}\n\n.root[data-size=\"m\"] .iconWrap {\n width: calc(var(--prime-sys-size-control-m-icon) * 2 + var(--prime-sys-spacing-m));\n height: calc(var(--prime-sys-size-control-m-icon) * 2 + var(--prime-sys-spacing-m));\n border-radius: var(--prime-sys-size-control-m-radius);\n}\n\n.root[data-size=\"m\"] .iconWrap svg {\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.root[data-size=\"m\"] .title {\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"m\"] .description {\n font-size: var(--prime-sys-size-control-m-supportText);\n}\n\n.root[data-size=\"m\"] .actions {\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n/* size l */\n.root[data-size=\"l\"] {\n gap: var(--prime-sys-size-control-l-gap);\n padding-block: var(--prime-sys-spacing-3xl);\n padding-inline: var(--prime-sys-spacing-xl);\n}\n\n.root[data-size=\"l\"] .iconWrap {\n width: calc(var(--prime-sys-size-control-l-icon) * 2 + var(--prime-sys-spacing-m));\n height: calc(var(--prime-sys-size-control-l-icon) * 2 + var(--prime-sys-spacing-m));\n border-radius: var(--prime-sys-size-control-l-radius);\n}\n\n.root[data-size=\"l\"] .iconWrap svg {\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n}\n\n.root[data-size=\"l\"] .title {\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"l\"] .description {\n font-size: var(--prime-sys-size-control-l-supportText);\n}\n\n.root[data-size=\"l\"] .actions {\n gap: var(--prime-sys-size-control-l-gap);\n}\n\n/* size xl */\n.root[data-size=\"xl\"] {\n gap: var(--prime-sys-size-control-xl-gap);\n padding-block: var(--prime-sys-spacing-4xl);\n padding-inline: var(--prime-sys-spacing-2xl);\n}\n\n.root[data-size=\"xl\"] .iconWrap {\n width: calc(var(--prime-sys-size-control-xl-icon) * 2 + var(--prime-sys-spacing-l));\n height: calc(var(--prime-sys-size-control-xl-icon) * 2 + var(--prime-sys-spacing-l));\n border-radius: var(--prime-sys-size-control-xl-radius);\n}\n\n.root[data-size=\"xl\"] .iconWrap svg {\n width: var(--prime-sys-size-control-xl-icon);\n height: var(--prime-sys-size-control-xl-icon);\n}\n\n.root[data-size=\"xl\"] .title {\n font-size: var(--prime-sys-size-control-xl-text);\n}\n\n.root[data-size=\"xl\"] .description {\n font-size: var(--prime-sys-size-control-xl-supportText);\n}\n\n.root[data-size=\"xl\"] .actions {\n gap: var(--prime-sys-size-control-xl-gap);\n}\n", "import { Code2, Eye, Monitor, Smartphone, Tablet } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { CodeBlock } from \"@/components/code-block/CodeBlock\";\nimport { SegmentedControl } from \"@/components/segmented-control/SegmentedControl\";\nimport { Icon } from \"@/icons\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\n\nimport styles from \"./ExampleFrame.module.css\";\n\ntype Pane = \"preview\" | \"code\";\nexport type ExampleFrameViewport = \"desktop\" | \"tablet\" | \"mobile\";\ntype ColorScheme = \"light\" | \"dark\";\n\n/** \u0420\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E \u043F\u0440\u0435\u0432\u044C\u044E \u2014 \u0447\u0442\u043E\u0431\u044B \u0432 \u0441\u043D\u0438\u043F\u043F\u0435\u0442\u0430\u0445 \u043D\u0435 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u0432 div.stack/row. */\nexport type ExampleFramePreviewLayout =\n | \"default\"\n | \"stack\"\n | \"stack-center\"\n | \"stack-narrow\"\n | \"dense-stack\"\n | \"row\"\n | \"row-start\"\n | \"row-wrap\";\n\ntype ExampleFrameContextValue = {\n code: string;\n language: string;\n pane: Pane;\n setPane: (p: Pane) => void;\n viewport: ExampleFrameViewport;\n setViewport: (v: ExampleFrameViewport) => void;\n colorScheme: ColorScheme;\n setColorScheme: (s: ColorScheme) => void;\n showThemeToggle: boolean;\n onCopy?: () => void;\n};\n\nconst [ExampleFrameProvider, useExampleFrameContext] =\n createComponentContext<ExampleFrameContextValue>(\"ExampleFrame\");\n\nexport type ExampleFrameRootProps = {\n /** \u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0432\u043A\u043B\u0430\u0434\u043A\u0438 \u00AB\u041A\u043E\u0434\u00BB \u0438 \u0434\u043B\u044F \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (\u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0432\u043A\u043B\u0430\u0434\u043A\u0438). */\n code: string;\n /** \u0417\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u043F\u043E\u0434 \u0431\u0443\u0434\u0443\u0449\u0443\u044E \u043C\u0443\u043B\u044C\u0442\u0438\u044F\u0437\u044B\u0447\u043D\u043E\u0441\u0442\u044C; \u0441\u0435\u0439\u0447\u0430\u0441 \u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 TS/TSX (`CodeBlock`). */\n language?: string;\n children?: React.ReactNode;\n className?: string;\n /** \u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u043C\u0430\u044F \u0446\u0432\u0435\u0442\u043E\u0432\u0430\u044F \u0441\u0445\u0435\u043C\u0430 \u043F\u0440\u0435\u0432\u044C\u044E (light/dark). */\n colorScheme?: ColorScheme;\n defaultColorScheme?: ColorScheme;\n onColorSchemeChange?: (scheme: ColorScheme) => void;\n /** \u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u043C\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u043F\u0440\u0435\u0432\u044C\u044E (desktop / tablet / mobile). */\n viewport?: ExampleFrameViewport;\n defaultViewport?: ExampleFrameViewport;\n onViewportChange?: (v: ExampleFrameViewport) => void;\n /** \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043B\u0438 \u043A\u043D\u043E\u043F\u043A\u0443 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F light/dark \u0432 \u0442\u0443\u043B\u0431\u0430\u0440\u0435. */\n showThemeToggle?: boolean;\n /** \u0412\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u0443\u0441\u043F\u0435\u0448\u043D\u043E\u0433\u043E \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F `code` \u0432 \u0431\u0443\u0444\u0435\u0440. */\n onCopy?: () => void;\n /**\n * \u041A\u0430\u043A \u0432\u044B\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0434\u0435\u0442\u0435\u0439 \u0432\u043D\u0443\u0442\u0440\u0438 \u043F\u0440\u0435\u0432\u044C\u044E. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 (\u043E\u0434\u0438\u043D \u0431\u043B\u043E\u043A).\n * \u0414\u043B\u044F \u0441\u043F\u0438\u0441\u043A\u043E\u0432 \u0438\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 `stack` / `stack-center` / `row`.\n */\n previewLayout?: ExampleFramePreviewLayout;\n /**\n * \u0421\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u044F \u0441 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u043C \u0431\u0440\u0435\u043D\u0434-\u043F\u0440\u0435\u0441\u0435\u0442\u043E\u043C (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 playground: `data-theme-preset` \u043D\u0430 `html`).\n * \u0415\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D \u0442\u043E\u043B\u044C\u043A\u043E `data-theme` \u0431\u0435\u0437 \u043F\u0440\u0435\u0441\u0435\u0442\u0430, \u043D\u0430 \u0443\u0437\u043B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u00AB\u0433\u043E\u043B\u044B\u0439\u00BB dark/light \u0438\u0437 theme-*.css \u2014\n * \u0431\u0435\u0437 \u043E\u0432\u0435\u0440\u043B\u0435\u0435\u0432 `[data-theme][data-theme-preset]` \u0438\u0437 playground, \u0446\u0432\u0435\u0442\u0430 \u043F\u0440\u0435\u0432\u044C\u044E \u0440\u0430\u0441\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0441 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u043E\u0439.\n */\n themePreset?: string;\n};\n\nfunction ExampleFrameRoot({\n code,\n language = \"tsx\",\n children,\n className,\n colorScheme: colorSchemeProp,\n defaultColorScheme = \"light\",\n onColorSchemeChange,\n viewport: viewportProp,\n defaultViewport = \"tablet\",\n onViewportChange,\n showThemeToggle = true,\n onCopy,\n previewLayout = \"default\",\n themePreset,\n}: ExampleFrameRootProps) {\n const [pane, setPane] = React.useState<Pane>(\"preview\");\n const [uncontrolledViewport, setUncontrolledViewport] =\n React.useState<ExampleFrameViewport>(defaultViewport);\n const [uncontrolledScheme, setUncontrolledScheme] =\n React.useState<ColorScheme>(defaultColorScheme);\n\n const isSchemeControlled = colorSchemeProp !== undefined;\n const colorScheme = isSchemeControlled ? colorSchemeProp : uncontrolledScheme;\n\n const isViewportControlled = viewportProp !== undefined;\n const viewport = isViewportControlled ? viewportProp : uncontrolledViewport;\n\n const setColorScheme = React.useCallback(\n (next: ColorScheme) => {\n if (!isSchemeControlled) {\n setUncontrolledScheme(next);\n }\n onColorSchemeChange?.(next);\n },\n [isSchemeControlled, onColorSchemeChange],\n );\n\n const setViewport = React.useCallback(\n (next: ExampleFrameViewport) => {\n if (!isViewportControlled) {\n setUncontrolledViewport(next);\n }\n onViewportChange?.(next);\n },\n [isViewportControlled, onViewportChange],\n );\n\n const ctxValue = React.useMemo<ExampleFrameContextValue>(\n () => ({\n code,\n language,\n pane,\n setPane,\n viewport,\n setViewport,\n colorScheme,\n setColorScheme,\n showThemeToggle,\n onCopy,\n }),\n [\n code,\n language,\n pane,\n viewport,\n setViewport,\n colorScheme,\n setColorScheme,\n showThemeToggle,\n onCopy,\n ],\n );\n\n let previewChildren: React.ReactNode = null;\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === ExampleFrameStage) {\n previewChildren = (child.props as { children?: React.ReactNode }).children ?? null;\n }\n });\n if (previewChildren === null) {\n previewChildren = children;\n }\n\n return (\n <ExampleFrameProvider value={ctxValue}>\n <div className={cx(styles.root, className)}>\n <ExampleFrameToolbar />\n {pane === \"preview\" ? (\n <div className={styles.previewShell}>\n <div className={styles.previewViewport} data-viewport={viewport}>\n <div\n className={styles.previewInner}\n data-preview-layout={previewLayout}\n data-theme={colorScheme}\n {...(themePreset != null && themePreset !== \"\"\n ? { \"data-theme-preset\": themePreset }\n : {})}\n >\n {previewChildren}\n </div>\n </div>\n </div>\n ) : (\n <ExampleFrameCodePane themePreset={themePreset} />\n )}\n </div>\n </ExampleFrameProvider>\n );\n}\n\nExampleFrameRoot.displayName = \"ExampleFrame.Root\";\n\nfunction ExampleFrameToolbar() {\n const ctx = useExampleFrameContext();\n const [copyState, setCopyState] = React.useState<\"idle\" | \"copied\" | \"error\">(\"idle\");\n\n const handleCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(ctx.code);\n setCopyState(\"copied\");\n ctx.onCopy?.();\n window.setTimeout(() => setCopyState(\"idle\"), 2000);\n } catch {\n setCopyState(\"error\");\n window.setTimeout(() => setCopyState(\"idle\"), 2000);\n }\n }, [ctx]);\n\n const toggleScheme = () => {\n ctx.setColorScheme(ctx.colorScheme === \"light\" ? \"dark\" : \"light\");\n };\n\n const copyLabel =\n copyState === \"copied\" ? \"\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E\" : copyState === \"error\" ? \"\u041E\u0448\u0438\u0431\u043A\u0430\" : \"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u0434\";\n\n return (\n <div className={styles.toolbar}>\n <div className={styles.toolbarLine1}>\n <SegmentedControl.Root\n className={styles.toolbarPaneSegment}\n value={ctx.pane}\n onValueChange={(v) => ctx.setPane(v as Pane)}\n size=\"s\"\n >\n <SegmentedControl.Item value=\"preview\">\n <SegmentedControl.Icon>\n <Eye size={14} strokeWidth={2} aria-hidden />\n </SegmentedControl.Icon>\n Preview\n </SegmentedControl.Item>\n <SegmentedControl.Item value=\"code\">\n <SegmentedControl.Icon>\n <Code2 size={14} strokeWidth={2} aria-hidden />\n </SegmentedControl.Icon>\n Code\n </SegmentedControl.Item>\n </SegmentedControl.Root>\n <div className={styles.toolbarLine1End}>\n {ctx.showThemeToggle ? (\n <Button.Root\n type=\"button\"\n variant=\"neutral\"\n mode=\"lighter\"\n size=\"s\"\n onClick={toggleScheme}\n aria-label={\n ctx.colorScheme === \"light\" ? \"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0442\u0451\u043C\u043D\u0443\u044E \u0442\u0435\u043C\u0443\" : \"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0432\u0435\u0442\u043B\u0443\u044E \u0442\u0435\u043C\u0443\"\n }\n >\n <Button.Icon>\n {ctx.colorScheme === \"light\" ? (\n <Icon name=\"theme.dark\" size=\"s\" tone=\"subtle\" />\n ) : (\n <Icon name=\"theme.light\" size=\"s\" tone=\"subtle\" />\n )}\n </Button.Icon>\n </Button.Root>\n ) : null}\n <Button.Root\n type=\"button\"\n variant=\"neutral\"\n mode=\"lighter\"\n size=\"s\"\n onClick={handleCopy}\n aria-label={copyLabel}\n >\n <Button.Icon>\n <Icon name=\"action.copy\" size=\"s\" tone=\"subtle\" />\n </Button.Icon>\n </Button.Root>\n </div>\n </div>\n {ctx.pane === \"preview\" ? (\n <SegmentedControl.Root\n className={styles.toolbarViewportSegment}\n value={ctx.viewport}\n onValueChange={(v) => ctx.setViewport(v as ExampleFrameViewport)}\n size=\"s\"\n >\n <SegmentedControl.Item value=\"desktop\">\n <SegmentedControl.Icon>\n <Monitor size={14} strokeWidth={2} aria-hidden />\n </SegmentedControl.Icon>\n Desktop\n </SegmentedControl.Item>\n <SegmentedControl.Item value=\"tablet\">\n <SegmentedControl.Icon>\n <Tablet size={14} strokeWidth={2} aria-hidden />\n </SegmentedControl.Icon>\n Tablet\n </SegmentedControl.Item>\n <SegmentedControl.Item value=\"mobile\">\n <SegmentedControl.Icon>\n <Smartphone size={14} strokeWidth={2} aria-hidden />\n </SegmentedControl.Icon>\n Mobile\n </SegmentedControl.Item>\n </SegmentedControl.Root>\n ) : null}\n </div>\n );\n}\n\nExampleFrameToolbar.displayName = \"ExampleFrame.Toolbar\";\n\nfunction ExampleFrameCodePane({ themePreset }: { themePreset?: string }) {\n const ctx = useExampleFrameContext();\n const trimmed = ctx.code.trimEnd();\n const presetProps =\n themePreset != null && themePreset !== \"\" ? { \"data-theme-preset\": themePreset } : {};\n\n return (\n <div className={styles.codePane} data-theme={ctx.colorScheme} {...presetProps}>\n <CodeBlock.Root code={trimmed} colorScheme={ctx.colorScheme} />\n </div>\n );\n}\n\nExampleFrameCodePane.displayName = \"ExampleFrame.CodePane\";\n\nexport type ExampleFrameStageProps = {\n children: React.ReactNode;\n};\n\nfunction ExampleFrameStage({ children }: ExampleFrameStageProps) {\n return <>{children}</>;\n}\n\nExampleFrameStage.displayName = \"ExampleFrame.Stage\";\n\nexport const ExampleFrame = {\n Root: ExampleFrameRoot,\n Stage: ExampleFrameStage,\n};\n", "import * as React from \"react\";\n\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { CSS_PX_SUFFIX } from \"@/internal/runtimeUnits\";\nimport type { InputSize } from \"@/internal/states\";\n\nimport styles from \"./SegmentedControl.module.css\";\n\n/**\n * \u0420\u0435\u0437\u043E\u043B\u0432\u0438\u0442 \u0434\u043B\u0438\u043D\u0443 \u0432 px \u0434\u043B\u044F `width: <expression>` (\u0442\u043E\u043A\u0435\u043D\u044B/calc \u043D\u0430 \u043A\u043E\u0440\u043D\u0435).\n * block \u2014 \u043E\u0442\u0441\u0442\u0443\u043F \u043F\u0438\u043B\u044E\u043B\u0438 \u0441\u0432\u0435\u0440\u0445\u0443/\u0441\u043D\u0438\u0437\u0443 \u043E\u0442 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430; inline \u2014 \u0441\u043B\u0435\u0432\u0430/\u0441\u043F\u0440\u0430\u0432\u0430 (fallback = block).\n */\nfunction readCssWidthPx(root: HTMLElement, widthExpression: string): number {\n const doc = root.ownerDocument;\n const win = doc.defaultView;\n if (!win) return 0;\n\n const probe = doc.createElement(\"div\");\n probe.setAttribute(\"aria-hidden\", \"true\");\n probe.style.cssText = `position:absolute;visibility:hidden;pointer-events:none;left:0;top:0;width:${widthExpression};height:0;margin:0;padding:0;border:0;box-sizing:content-box`;\n\n root.appendChild(probe);\n const px = probe.offsetWidth;\n root.removeChild(probe);\n return Number.isFinite(px) ? px : 0;\n}\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype SegmentedControlContextValue = {\n value: string;\n onSelect: (value: string) => void;\n rootDisabled: boolean;\n};\n\nconst [SegmentedControlProvider, useSegmentedControlContext] =\n createComponentContext<SegmentedControlContextValue>(\"SegmentedControl\");\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SegmentedControlRootProps = {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n size?: InputSize;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction SegmentedControlRoot({\n value,\n defaultValue = \"\",\n onValueChange,\n disabled = false,\n size = \"m\",\n children,\n className,\n}: SegmentedControlRootProps) {\n const [selectedValue, setSelectedValue] = useControllableState<string>({\n value,\n defaultValue,\n onChange: onValueChange,\n });\n\n const [indicator, setIndicator] = React.useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n const [animate, setAnimate] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const indicatorRef = React.useRef<HTMLDivElement>(null);\n\n const onSelect = React.useCallback(\n (nextValue: string) => {\n setAnimate(true);\n setSelectedValue(nextValue);\n },\n [setSelectedValue],\n );\n\n React.useLayoutEffect(() => {\n const root = containerRef.current;\n if (!root) return;\n\n const update = () => {\n const active = root.querySelector<HTMLElement>('[role=\"radio\"][aria-checked=\"true\"]');\n if (!active) {\n setIndicator({ left: 0, top: 0, width: 0, height: 0 });\n return;\n }\n\n const insetBlock = readCssWidthPx(root, \"var(--prime-seg-indicator-inset-block)\");\n const insetInline = readCssWidthPx(\n root,\n \"var(--prime-seg-indicator-inset-inline, var(--prime-seg-indicator-inset-block))\",\n );\n const left = active.offsetLeft + insetInline;\n const top = active.offsetTop + insetBlock;\n const width = Math.max(2, active.offsetWidth - 2 * insetInline);\n const height = Math.max(2, active.offsetHeight - 2 * insetBlock);\n setIndicator({ left, top, width, height });\n };\n\n update();\n\n const mo = new MutationObserver(update);\n mo.observe(root, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"aria-checked\", \"data-disabled\"],\n });\n\n let ro: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n ro = new ResizeObserver(update);\n ro.observe(root);\n }\n\n return () => {\n mo.disconnect();\n ro?.disconnect();\n };\n }, []);\n\n React.useEffect(() => {\n if (!animate) return;\n const id = window.setTimeout(() => setAnimate(false), 320);\n return () => window.clearTimeout(id);\n }, [animate]);\n\n React.useLayoutEffect(() => {\n const indicatorEl = indicatorRef.current;\n if (!indicatorEl) return;\n\n indicatorEl.style.transform = `translate3d(${indicator.left}px, ${indicator.top}px, 0)`;\n indicatorEl.style.width = indicator.width > 0 ? `${indicator.width}${CSS_PX_SUFFIX}` : \"0\";\n indicatorEl.style.height = indicator.height > 0 ? `${indicator.height}${CSS_PX_SUFFIX}` : \"0\";\n }, [indicator.height, indicator.left, indicator.top, indicator.width]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key !== \"ArrowRight\" && e.key !== \"ArrowLeft\") return;\n e.preventDefault();\n\n const container = e.currentTarget;\n const items = Array.from(\n container.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([data-disabled=\"true\"])'),\n );\n if (!items.length) return;\n\n const activeEl = document.activeElement as HTMLButtonElement;\n const idx = items.indexOf(activeEl);\n\n if (idx === -1) {\n const target = e.key === \"ArrowRight\" ? items[0] : items[items.length - 1];\n target?.focus();\n const tv = target?.dataset.value;\n if (tv) onSelect(tv);\n return;\n }\n\n const next =\n e.key === \"ArrowRight\" ? (idx + 1) % items.length : (idx - 1 + items.length) % items.length;\n\n const nextItem = items[next];\n nextItem?.focus();\n const nextValue = nextItem?.dataset.value;\n if (nextValue) onSelect(nextValue);\n };\n\n const hasSelection = selectedValue !== \"\";\n\n return (\n <SegmentedControlProvider value={{ value: selectedValue, onSelect, rootDisabled: disabled }}>\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled || undefined}\n tabIndex={!disabled && !hasSelection ? 0 : -1}\n className={cx(styles.root, className)}\n onKeyDown={handleKeyDown}\n data-disabled={disabled ? \"true\" : undefined}\n data-size={size}\n data-animate={animate ? \"true\" : undefined}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n\n <div ref={indicatorRef} className={styles.indicator} aria-hidden=\"true\" />\n </div>\n </SegmentedControlProvider>\n );\n}\n\nSegmentedControlRoot.displayName = \"SegmentedControl.Root\";\n\n// \u2500\u2500\u2500 Item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SegmentedControlItemProps = {\n value: string;\n disabled?: boolean;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction SegmentedControlItem({\n value,\n disabled = false,\n children,\n className,\n}: SegmentedControlItemProps) {\n const ctx = useSegmentedControlContext();\n const isChecked = ctx.value === value;\n const isDisabled = ctx.rootDisabled || disabled;\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: compound component intentionally uses role=\"radio\" with roving tabindex\n <button\n role=\"radio\"\n type=\"button\"\n aria-checked={isChecked}\n aria-disabled={isDisabled || undefined}\n data-disabled={isDisabled ? \"true\" : undefined}\n data-value={value}\n tabIndex={isChecked && !isDisabled ? 0 : -1}\n disabled={isDisabled}\n className={cx(styles.item, className)}\n onClick={() => {\n if (!isDisabled) ctx.onSelect(value);\n }}\n >\n {children}\n </button>\n );\n}\n\nSegmentedControlItem.displayName = \"SegmentedControl.Item\";\n\n// \u2500\u2500\u2500 Icon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SegmentedControlIconProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nfunction SegmentedControlIcon({ children, className, ...rest }: SegmentedControlIconProps) {\n return (\n <span className={cx(styles.icon, className)} aria-hidden=\"true\" {...rest}>\n {children}\n </span>\n );\n}\n\nSegmentedControlIcon.displayName = \"SegmentedControl.Icon\";\n\n// \u2500\u2500\u2500 Export \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const SegmentedControl = {\n Root: SegmentedControlRoot,\n Item: SegmentedControlItem,\n Icon: SegmentedControlIcon,\n};\n", ".root {\n /* isolate creates a new stacking context so z-index on items works correctly */\n isolation: isolate;\n position: relative;\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n justify-content: start;\n gap: var(--prime-seg-gap);\n width: fit-content;\n max-width: 100%;\n box-sizing: border-box;\n padding: var(--prime-seg-pad);\n background: var(--prime-sys-color-surface-accentSoft);\n border-radius: var(--prime-seg-radius);\n}\n\n/* \u041F\u0438\u043B\u044E\u043B\u044F: \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u044F\u0440\u0443\u0441 \u043D\u0430 \u0441\u0442\u0443\u043F\u0435\u043D\u044C \u043D\u0438\u0436\u0435 \u043D\u043E\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430. */\n.root[data-size=\"s\"] {\n --prime-seg-height: var(--prime-sys-size-control-xs-height);\n --prime-seg-radius: var(--prime-sys-size-control-xs-radius);\n --prime-seg-pad: var(--prime-sys-unit-0p125rem);\n --prime-seg-gap: var(--prime-sys-size-control-xs-gap);\n --prime-seg-text: var(--prime-sys-size-control-xs-text);\n --prime-seg-item-pad-x: var(--prime-sys-size-control-xs-buttonPaddingX);\n --prime-seg-item-pad-y: var(--prime-sys-size-control-xs-buttonPaddingY);\n --prime-seg-indicator-inset-block: var(--prime-sys-unit-0p125rem);\n --prime-seg-indicator-radius: var(--prime-sys-size-control-xs-radius);\n}\n\n.root[data-size=\"m\"] {\n --prime-seg-gap: var(--prime-sys-size-control-s-gap);\n --prime-seg-height: var(--prime-sys-size-control-s-height);\n --prime-seg-text: var(--prime-sys-size-control-s-text);\n --prime-seg-radius: var(--prime-sys-size-control-s-radius);\n --prime-seg-pad: var(--prime-sys-unit-0p1875rem);\n --prime-seg-item-pad-x: var(--prime-sys-spacing-x3);\n --prime-seg-item-pad-y: var(--prime-sys-spacing-x3);\n --prime-seg-indicator-inset-block: var(--prime-sys-unit-0p125rem);\n}\n\n.root[data-size=\"l\"] {\n --prime-seg-gap: var(--prime-sys-size-control-m-gap);\n --prime-seg-height: var(--prime-sys-size-control-m-height);\n --prime-seg-text: var(--prime-sys-size-control-m-text);\n --prime-seg-radius: var(--prime-sys-size-control-m-radius);\n --prime-seg-pad: var(--prime-sys-unit-0p3125rem);\n --prime-seg-item-pad-x: var(--prime-sys-unit-1p25rem);\n --prime-seg-item-pad-y: var(--prime-sys-unit-1p25rem);\n --prime-seg-indicator-inset-block: var(--prime-sys-unit-0p15rem);\n}\n\n.root[data-size=\"xl\"] {\n --prime-seg-gap: var(--prime-sys-size-control-l-gap);\n --prime-seg-height: var(--prime-sys-size-control-l-height);\n --prime-seg-text: var(--prime-sys-size-control-l-text);\n --prime-seg-radius: var(--prime-sys-size-control-l-radius);\n --prime-seg-pad: var(--prime-sys-unit-0p35rem);\n --prime-seg-item-pad-x: var(--prime-sys-unit-1p75rem);\n --prime-seg-item-pad-y: var(--prime-sys-unit-1p75rem);\n --prime-seg-indicator-inset-block: var(--prime-sys-unit-0p175rem);\n}\n\n/* \u2500\u2500\u2500 Item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.item {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--prime-seg-gap);\n padding-inline: var(--prime-seg-item-pad-x);\n padding-block: var(--prime-seg-item-pad-y);\n height: var(--prime-seg-height);\n font-size: var(--prime-seg-text);\n font-family: inherit;\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-muted);\n background: transparent;\n border: none;\n border-radius: var(--prime-seg-radius);\n cursor: pointer;\n transition:\n color var(--prime-sys-motion-fast),\n background-color var(--prime-sys-motion-fast),\n box-shadow var(--prime-sys-motion-fast);\n white-space: nowrap;\n user-select: none;\n}\n\n.item[aria-checked=\"true\"] {\n color: var(--prime-sys-color-content-primary);\n}\n\n.item:not([data-disabled=\"true\"]):not([aria-checked=\"true\"]):hover {\n color: var(--prime-sys-color-content-secondary);\n}\n\n.item:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n/* \u0422\u0451\u043C\u043D\u0430\u044F \u0442\u0435\u043C\u0430: \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u2014 text-disabled, hover \u2014 muted. */\n[data-theme=\"dark\"] .item:not([aria-checked=\"true\"]):not([data-disabled=\"true\"]) {\n color: var(--prime-sys-color-content-disabled);\n}\n\n[data-theme=\"dark\"] .item:not([data-disabled=\"true\"]):not([aria-checked=\"true\"]):hover {\n color: var(--prime-sys-color-content-muted);\n}\n\n.item[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n/* \u2500\u2500\u2500 Icon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.root[data-size=\"s\"] .icon :global(svg) {\n width: var(--prime-sys-size-control-xs-icon);\n height: var(--prime-sys-size-control-xs-icon);\n}\n\n/* \u2500\u2500\u2500 Floating indicator (geometry from TS + inset-block / inset-inline) \u2500 */\n\n/*\n * \u041F\u0438\u043B\u044E\u043B\u044F \u0441\u0432\u0435\u0442\u043B\u0435\u0435/\u0432\u044B\u0448\u0435 \u0442\u0440\u0435\u043A\u0430: elevated \u043F\u043E\u0432\u0435\u0440\u0445 accentSoft (light) / default (dark),\n * \u0438\u043D\u0430\u0447\u0435 \u0432 light \u0442\u0440\u0435\u043A \u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u0441\u043B\u0438\u0432\u0430\u043B\u0438\u0441\u044C (\u043E\u0431\u0430 gray.100).\n */\n.indicator {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 0;\n border-radius: var(--prime-seg-indicator-radius, var(--prime-seg-radius));\n background: var(--prime-sys-color-surface-elevated);\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-subtle);\n transition: none;\n pointer-events: none;\n}\n\n/* \u0422\u0451\u043C\u043D\u0430\u044F \u0442\u0435\u043C\u0430: \u0442\u0440\u0435\u043A \u2014 surface-default; \u043F\u0438\u043B\u044E\u043B\u044F \u2014 elevated + \u0442\u043E\u043D\u043A\u0430\u044F \u043E\u0431\u0432\u043E\u0434\u043A\u0430 \u0434\u043B\u044F \u043E\u0442\u0440\u044B\u0432\u0430 \u043E\u0442 \u0440\u0435\u043B\u044C\u0441\u0430. */\n:root[data-theme=\"dark\"] .root,\n[data-theme=\"dark\"] .root {\n background: var(--prime-sys-color-surface-default);\n}\n\n.root[data-animate=\"true\"] .indicator {\n transition:\n transform var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n width var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n height var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n", ".root {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-sys-shape-radius-4xl);\n background: var(--prime-sys-color-surface-elevated);\n overflow: hidden;\n text-align: start;\n /* \u0418\u043D\u0430\u0447\u0435 \u0434\u043B\u0438\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u043A\u043E\u0434\u0430 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u044E\u0442 \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443 \u0438 \u0432\u044B\u043B\u0435\u0437\u0430\u044E\u0442 \u0437\u0430 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F playground. */\n min-width: 0;\n max-width: 100%;\n}\n\n/* \u0421\u0436\u0430\u0442\u0438\u0435 \u0438 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u043F\u0430\u043D\u0435\u043B\u0435\u0439 \u043F\u0440\u0435\u0432\u044C\u044E/\u043A\u043E\u0434\u0430 \u0432 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 flex */\n.root > * {\n min-width: 0;\n}\n\n/*\n * \u0422\u0443\u043B\u0431\u0430\u0440: \u043E\u0434\u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0430, \u043F\u043E\u043A\u0430 \u043F\u043E\u043C\u0435\u0449\u0430\u0435\u0442\u0441\u044F; \u043F\u0440\u0438 \u043D\u0435\u0445\u0432\u0430\u0442\u043A\u0435 \u043C\u0435\u0441\u0442\u0430 \u2014 \u043F\u0435\u0440\u0435\u043D\u043E\u0441 (flex-wrap).\n * \u041F\u0435\u0440\u0432\u0430\u044F \u0433\u0440\u0443\u043F\u043F\u0430 \u2014 \u043F\u043E \u0448\u0438\u0440\u0438\u043D\u0435 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430; \u0441\u0435\u0433\u043C\u0435\u043D\u0442 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u043F\u0440\u0438\u0436\u0430\u0442 \u0432\u043F\u0440\u0430\u0432\u043E (margin-left: auto)\n * \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043E\u0441\u0442\u0430\u0442\u043E\u043A \u0441\u0442\u0440\u043E\u043A\u0438 (flex-grow). \u041D\u0430 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0435 \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0430 \u2014 \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n * \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443 (\u0435\u0434\u0438\u043D\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 flex-grow \u043D\u0430 \u043B\u0438\u043D\u0438\u0438).\n * \u0411\u0435\u0437 \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 @media/@container: \u0442\u043E\u043B\u044C\u043A\u043E intrinsic wrap.\n */\n.toolbar {\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n row-gap: var(--prime-sys-spacing-x3);\n column-gap: var(--prime-sys-spacing-x3);\n padding: var(--prime-sys-spacing-x3) var(--prime-sys-spacing-x4);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-raised);\n min-width: 0;\n container-type: inline-size;\n}\n\n.toolbarLine1 {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n flex: 0 1 auto;\n min-width: 0;\n gap: var(--prime-sys-spacing-x2);\n}\n\n.toolbarLine1End {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.toolbarPaneSegment {\n flex: 0 1 auto;\n min-width: 0;\n width: fit-content;\n max-width: 100%;\n}\n\n.toolbarViewportSegment {\n flex: 0 1 auto;\n min-width: 0;\n margin-left: auto;\n width: fit-content;\n}\n\n/* \u041F\u0435\u0440\u0435\u0431\u0438\u0442\u044C min-width: max-content \u0443 SegmentedControl.root, \u0438\u043D\u0430\u0447\u0435 \u043F\u0435\u0440\u0435\u043D\u043E\u0441 \u043D\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 */\n.toolbar .toolbarPaneSegment,\n.toolbar .toolbarViewportSegment {\n min-width: 0;\n}\n\n@container (max-width: 44rem) {\n .toolbarLine1 {\n flex: 1 1 100%;\n width: 100%;\n }\n\n .toolbarPaneSegment {\n flex: 1 1 auto;\n width: 100%;\n }\n\n .toolbarViewportSegment {\n flex: 1 1 100%;\n width: 100%;\n margin-left: 0;\n }\n\n .toolbarPaneSegment :global([role=\"radio\"]),\n .toolbarViewportSegment :global([role=\"radio\"]) {\n min-width: 0;\n }\n}\n\n.previewShell {\n padding: var(--prime-sys-spacing-x4);\n background: var(--prime-sys-color-surface-default);\n}\n\n.previewViewport {\n margin-inline: auto;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n transition: max-width var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.previewViewport[data-viewport=\"desktop\"] {\n max-width: none;\n}\n\n.previewViewport[data-viewport=\"tablet\"] {\n max-width: var(--prime-sys-unit-48rem);\n}\n\n.previewViewport[data-viewport=\"mobile\"] {\n max-width: var(--prime-sys-unit-24p375rem);\n}\n\n/* \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u043F\u0440\u0435\u0432\u044C\u044E \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443 \u0432\u044C\u044E\u043F\u043E\u0440\u0442\u0430; \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u2014 \u0447\u0435\u0440\u0435\u0437 flex + data-preview-layout */\n.previewInner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n min-height: var(--prime-sys-unit-10rem);\n padding: var(--prime-sys-spacing-x4);\n border-radius: var(--prime-sys-shape-radius-l);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n background: transparent;\n /* \u041E\u0431\u0440\u0435\u0437\u043A\u0430 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0448\u0438\u0440\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 (\u0448\u0438\u0440\u043E\u043A\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u044B \u043A\u043D\u043E\u043F\u043E\u043A, \u0442\u0430\u0431\u043B\u0438\u0446\u044B \u0431\u0435\u0437 \u0441\u0432\u043E\u0435\u0439 \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0438). */\n overflow: hidden;\n}\n\n/*\n * \u0411\u0435\u0437 align-self: center \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043F\u043E\u043B\u0443\u0447\u0430\u044E\u0442 stretch \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u0440\u0438 width: fit-content \u0443 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043E\u0432\n * \u0431\u043B\u043E\u043A \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u043E \u00AB\u043F\u0440\u0438\u043B\u0438\u043F\u0430\u0435\u0442\u00BB \u043A \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u043C\u0443 start.\n */\n.previewInner > * {\n align-self: center;\n margin-inline: auto;\n min-width: 0;\n max-width: 100%;\n}\n\n/* fullWidth \u0432 \u043F\u0440\u0435\u0432\u044C\u044E: \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0435\u043C \u043F\u0440\u044F\u043C\u043E\u0433\u043E \u0440\u0435\u0431\u0451\u043D\u043A\u0430, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043E fullWidth */\n.previewInner > *:global(:has([data-full-width=\"true\"])) {\n align-self: stretch;\n width: 100%;\n margin-inline: 0;\n}\n\n/* \u0420\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0430 \u043F\u0440\u0435\u0432\u044C\u044E: \u0431\u0435\u0437 \u043B\u0438\u0448\u043D\u0438\u0445 \u043E\u0431\u0451\u0440\u0442\u043E\u043A \u0432 \u0441\u043D\u0438\u043F\u043F\u0435\u0442\u0430\u0445 (\u043A\u043E\u043B\u043E\u043D\u043A\u0430 / \u0440\u044F\u0434). */\n.previewInner[data-preview-layout=\"stack\"] {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-spacing-x4);\n}\n\n.previewInner[data-preview-layout=\"stack\"]:global(:has([data-full-width=\"true\"])),\n.previewInner[data-preview-layout=\"stack-narrow\"]:global(:has([data-full-width=\"true\"])),\n.previewInner[data-preview-layout=\"stack\"]:global(:has(.examplePreviewBleed)),\n.previewInner[data-preview-layout=\"stack-narrow\"]:global(:has(.examplePreviewBleed)) {\n width: 100%;\n align-items: stretch;\n margin-inline: 0;\n}\n\n.previewInner[data-preview-layout=\"stack-center\"] {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-spacing-x3);\n}\n\n.previewInner[data-preview-layout=\"row\"] {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-spacing-x3);\n padding-block: clamp(var(--prime-sys-unit-1p5rem), 4vh, var(--prime-sys-unit-3rem));\n}\n\n.previewInner[data-preview-layout=\"row-start\"] {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: flex-start;\n gap: var(--prime-sys-spacing-x3);\n padding-block: clamp(var(--prime-sys-unit-1rem), 3vh, var(--prime-sys-unit-2rem));\n}\n\n.previewInner[data-preview-layout=\"row-wrap\"] {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: center;\n gap: var(--prime-sys-spacing-x2);\n}\n\n.previewInner[data-preview-layout=\"stack-narrow\"] {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--prime-sys-spacing-x3);\n box-sizing: border-box;\n max-width: min(100%, var(--prime-sys-unit-28rem));\n margin-inline: auto;\n}\n\n.previewInner[data-preview-layout=\"dense-stack\"] {\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--prime-sys-unit-0p35rem);\n box-sizing: border-box;\n max-height: var(--prime-sys-unit-22rem);\n width: 100%;\n overflow: auto;\n padding-right: var(--prime-sys-unit-0p25rem);\n}\n\n.previewInner[data-preview-layout=\"stack\"] > *:global(:has([data-full-width=\"true\"])),\n.previewInner[data-preview-layout=\"stack-narrow\"] > *:global(:has([data-full-width=\"true\"])),\n.previewInner[data-preview-layout=\"stack\"] > *:global(:has(.examplePreviewBleed)),\n.previewInner[data-preview-layout=\"stack-narrow\"] > *:global(:has(.examplePreviewBleed)),\n.previewInner[data-preview-layout=\"stack\"] > *:global(:has(table)),\n.previewInner[data-preview-layout=\"stack-narrow\"] > *:global(:has(table)) {\n width: 100%;\n max-width: none;\n align-self: stretch;\n}\n\n.previewInner[data-preview-layout=\"stack-narrow\"] > * {\n max-width: 100%;\n}\n\n.previewInner[data-preview-layout=\"stack\"] > *,\n.previewInner[data-preview-layout=\"stack-narrow\"] > * {\n flex: 0 1 auto;\n min-width: 0;\n max-width: 100%;\n}\n\n.previewInner[data-theme=\"dark\"] {\n background: transparent;\n border-color: var(--prime-sys-color-border-subtle);\n}\n\n/*\n * \u0412\u043A\u043B\u0430\u0434\u043A\u0430 \u00AB\u041A\u043E\u0434\u00BB: \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0434\u043B\u044F `CodeBlock` (\u043F\u043E\u0434\u0441\u0432\u0435\u0442\u043A\u0430 TS/TSX \u0431\u0435\u0437 Shiki).\n */\n.codePane {\n box-sizing: border-box;\n margin: 0;\n padding: var(--prime-sys-spacing-x4);\n background: var(--prime-sys-color-surface-default);\n min-width: 0;\n max-width: 100%;\n max-height: min(var(--prime-sys-unit-32rem), 70vh);\n overflow-x: auto;\n overflow-y: auto;\n font-size: var(--prime-sys-typography-sizeScale-xs);\n line-height: 1.55;\n color: var(--prime-sys-color-content-primary);\n}\n", "import * as React from \"react\";\n\nimport { Hint } from \"@/components/hint/Hint\";\nimport { ProgressBar } from \"@/components/progress-bar/ProgressBar\";\nimport { useMergedRefs } from \"@/hooks/useMergedRefs\";\nimport { Icon } from \"@/icons\";\nimport { ControlSizeProvider, useOptionalControlSize } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { FileUploadSize, HintSize } from \"@/internal/states\";\n\nimport styles from \"./FileUpload.module.css\";\n\nexport type { FileUploadSize };\n\nexport type FileUploadFormatBadgeColor =\n | \"gray\"\n | \"red\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"purple\"\n | \"sky\"\n | \"yellow\";\n\nexport type FileUploadItemVariant = \"default\" | \"error\";\n\n/** `dashed` \u2014 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u0430\u044F \u0437\u043E\u043D\u0430; `solid` \u2014 \u043A\u0430\u043A \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0430\u0445 Align (\u0441\u043F\u043B\u043E\u0448\u043D\u0430\u044F \u043E\u0431\u0432\u043E\u0434\u043A\u0430, \u0444\u043E\u043D canvas \u2192 elevated \u043F\u0440\u0438 hover). */\nexport type FileUploadAppearance = \"dashed\" | \"solid\";\n\n// \u2500\u2500\u2500 Drop zone slots (\u043A\u0430\u043A AlignUI FileUpload.Icon / Title / Button) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type FileUploadIconProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction FileUploadIcon({ className, children, ...rest }: FileUploadIconProps) {\n return (\n <span className={cx(styles.iconWrap, className)} aria-hidden {...rest}>\n {children}\n </span>\n );\n}\nFileUploadIcon.displayName = \"FileUpload.Icon\";\n\nexport type FileUploadTitleProps = React.HTMLAttributes<HTMLParagraphElement> & {\n /** `muted` \u2014 \u043A\u0430\u043A `text-sub-600` \u0432 Align (\u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0435). */\n tone?: \"default\" | \"muted\";\n};\n\nfunction FileUploadTitle({ className, children, tone = \"default\", ...rest }: FileUploadTitleProps) {\n return (\n <p className={cx(styles.title, tone === \"muted\" && styles.titleMuted, className)} {...rest}>\n {children}\n </p>\n );\n}\nFileUploadTitle.displayName = \"FileUpload.Title\";\n\nexport type FileUploadHintProps = React.HTMLAttributes<HTMLParagraphElement>;\n\nfunction FileUploadHint({ className, children, ...rest }: FileUploadHintProps) {\n const controlSize = useOptionalControlSize() ?? \"m\";\n return (\n <Hint.Root size={controlSize as HintSize} className={className} {...rest}>\n {children}\n </Hint.Root>\n );\n}\nFileUploadHint.displayName = \"FileUpload.Hint\";\n\nexport type FileUploadBrowseLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction FileUploadBrowseLabel({ className, children, ...rest }: FileUploadBrowseLabelProps) {\n return (\n <span className={cx(styles.browse, className)} {...rest}>\n {children}\n </span>\n );\n}\nFileUploadBrowseLabel.displayName = \"FileUpload.BrowseLabel\";\n\n/** \u041A\u043D\u043E\u043F\u043A\u0430 \u00ABbrowse\u00BB \u0432\u043D\u0443\u0442\u0440\u0438 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 (primary + underline, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 picker \u043F\u043E \u043A\u043B\u0438\u043A\u0443 \u0441\u0430\u043C\u0430 \u043F\u043E \u0441\u0435\u0431\u0435 \u2014 \u043D\u0430\u0432\u0435\u0441\u044C\u0442\u0435 `onClick`). */\nexport type FileUploadBrowseLinkProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst FileUploadBrowseLink = React.forwardRef<HTMLButtonElement, FileUploadBrowseLinkProps>(\n ({ className, type = \"button\", onClick, ...rest }, ref) => (\n <button\n ref={ref}\n type={type}\n className={cx(styles.browseLink, className)}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClick?.(e);\n }}\n {...rest}\n />\n ),\n);\nFileUploadBrowseLink.displayName = \"FileUpload.BrowseLink\";\n\n/** \u041E\u0431\u0451\u0440\u0442\u043A\u0430 \u0434\u043B\u044F \u043C\u043E\u0434\u0430\u043B\u043E\u043A: `pointer-events: none` + \u043A\u043E\u043B\u043E\u043D\u043A\u0430; \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043A\u043D\u043E\u043F\u043A\u0438/\u0441\u0441\u044B\u043B\u043A\u0438 \u0441 `pointer-events: auto`. */\nexport type FileUploadDropBodyProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadDropBody({ className, children, ...rest }: FileUploadDropBodyProps) {\n return (\n <div className={cx(styles.dropBody, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadDropBody.displayName = \"FileUpload.DropBody\";\n\n/** \u0420\u044F\u0434 \u0447\u0438\u043F\u043E\u0432 \u00ABMy Device / Dropbox\u00BB \u2014 `pointer-events: auto`. */\nexport type FileUploadActionsRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadActionsRow({ className, children, ...rest }: FileUploadActionsRowProps) {\n return (\n <div className={cx(styles.actionsRow, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadActionsRow.displayName = \"FileUpload.ActionsRow\";\n\n/** \u041A\u043D\u043E\u043F\u043A\u0430-\u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0432\u043D\u0443\u0442\u0440\u0438 `Root` \u2014 \u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u0435 \u043A `label`, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043B\u043E\u0432\u044B\u0439 \u0434\u0438\u0430\u043B\u043E\u0433. */\nexport type FileUploadChipProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst FileUploadChip = React.forwardRef<HTMLButtonElement, FileUploadChipProps>(\n ({ className, type = \"button\", onClick, ...rest }, ref) => (\n <button\n ref={ref}\n type={type}\n className={cx(styles.chip, className)}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClick?.(e);\n }}\n {...rest}\n />\n ),\n);\nFileUploadChip.displayName = \"FileUpload.Chip\";\n\nexport type FileUploadChipLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction FileUploadChipLabel({ className, children, ...rest }: FileUploadChipLabelProps) {\n return (\n <span className={cx(styles.chipLabel, className)} {...rest}>\n {children}\n </span>\n );\n}\nFileUploadChipLabel.displayName = \"FileUpload.ChipLabel\";\n\n// \u2500\u2500\u2500 File row (\u0431\u043B\u043E\u043A\u0438 01 / \u0441\u043F\u0438\u0441\u043A\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type FileUploadFormatBadgeProps = {\n format: string;\n color?: FileUploadFormatBadgeColor;\n className?: string;\n};\n\nfunction FileUploadFormatBadge({ format, color = \"gray\", className }: FileUploadFormatBadgeProps) {\n const label = format.trim().slice(0, 8).toUpperCase();\n return (\n <span\n className={cx(styles.formatBadge, className)}\n {...toDataAttributes({ color })}\n aria-hidden\n >\n {label}\n </span>\n );\n}\nFileUploadFormatBadge.displayName = \"FileUpload.FormatBadge\";\n\nexport type FileUploadItemProps = React.HTMLAttributes<HTMLDivElement> & {\n variant?: FileUploadItemVariant;\n /** \u0422\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430, \u043E\u0442\u0441\u0442\u0443\u043F\u044B, \u0431\u0435\u0439\u0434\u0436 \u0444\u043E\u0440\u043C\u0430\u0442\u0430, \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0438 \u0438\u043A\u043E\u043D\u043A\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u2014 \u0438\u0437 \u0442\u043E\u0433\u043E \u0436\u0435 \u044F\u0440\u0443\u0441\u0430, \u0447\u0442\u043E \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044B. */\n size?: FileUploadSize;\n};\n\nfunction FileUploadItem({\n className,\n variant = \"default\",\n size = \"m\",\n ...rest\n}: FileUploadItemProps) {\n return (\n <div\n className={cx(styles.item, className)}\n {...toDataAttributes({ variant, size })}\n {...rest}\n />\n );\n}\nFileUploadItem.displayName = \"FileUpload.Item\";\n\nexport type FileUploadItemRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemRow({ className, children, ...rest }: FileUploadItemRowProps) {\n return (\n <div className={cx(styles.itemRow, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemRow.displayName = \"FileUpload.ItemRow\";\n\nexport type FileUploadItemMainProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemMain({ className, children, ...rest }: FileUploadItemMainProps) {\n return (\n <div className={cx(styles.itemMain, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemMain.displayName = \"FileUpload.ItemMain\";\n\n/** \u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0441\u0442\u0435\u043A \u0432\u043D\u0443\u0442\u0440\u0438 `ItemMain` (\u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u043E\u0448\u0438\u0431\u043A\u0438: \u0442\u0435\u043A\u0441\u0442 + \u00ABTry again\u00BB). */\nexport type FileUploadItemStackProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemStack({ className, children, ...rest }: FileUploadItemStackProps) {\n return (\n <div className={cx(styles.itemStack, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemStack.displayName = \"FileUpload.ItemStack\";\n\n/** \u0413\u0440\u0443\u043F\u043F\u0430 \u0438\u043C\u0435\u043D\u0438 \u0444\u0430\u0439\u043B\u0430 + \u043C\u0435\u0442\u0430-\u0441\u0442\u0440\u043E\u043A\u0438 (`space-y-1`). */\nexport type FileUploadItemTextGroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemTextGroup({ className, children, ...rest }: FileUploadItemTextGroupProps) {\n return (\n <div className={cx(styles.itemTextGroup, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemTextGroup.displayName = \"FileUpload.ItemTextGroup\";\n\nexport type FileUploadItemTryAgainProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst FileUploadItemTryAgain = React.forwardRef<HTMLButtonElement, FileUploadItemTryAgainProps>(\n ({ className, type = \"button\", ...rest }, ref) => (\n <button ref={ref} type={type} className={cx(styles.itemTryAgain, className)} {...rest} />\n ),\n);\nFileUploadItemTryAgain.displayName = \"FileUpload.ItemTryAgain\";\n\nexport type FileUploadItemNameProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemName({ className, children, ...rest }: FileUploadItemNameProps) {\n return (\n <div className={cx(styles.itemName, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemName.displayName = \"FileUpload.ItemName\";\n\nexport type FileUploadItemMetaProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemMeta({ className, children, ...rest }: FileUploadItemMetaProps) {\n return (\n <div className={cx(styles.itemMeta, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemMeta.displayName = \"FileUpload.ItemMeta\";\n\nexport type FileUploadItemMetaSepProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction FileUploadItemMetaSep({ className, ...rest }: FileUploadItemMetaSepProps) {\n return (\n <span className={cx(styles.itemMetaSep, className)} aria-hidden {...rest}>\n {\"\\u2219\"}\n </span>\n );\n}\nFileUploadItemMetaSep.displayName = \"FileUpload.ItemMetaSep\";\n\nexport type FileUploadItemActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemActions({ className, children, ...rest }: FileUploadItemActionsProps) {\n return (\n <div className={cx(styles.itemActions, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemActions.displayName = \"FileUpload.ItemActions\";\n\nexport type FileUploadItemFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FileUploadItemFooter({ className, children, ...rest }: FileUploadItemFooterProps) {\n return (\n <div className={cx(styles.itemFooter, className)} {...rest}>\n {children}\n </div>\n );\n}\nFileUploadItemFooter.displayName = \"FileUpload.ItemFooter\";\n\nexport type FileUploadItemProgressProps = {\n value?: number;\n max?: number;\n className?: string;\n children?: React.ReactNode;\n};\n\nfunction FileUploadItemProgress({ value, max, className, children }: FileUploadItemProgressProps) {\n return (\n <div className={cx(styles.itemProgress, className)}>\n {children ?? (value !== undefined ? <ProgressBar.Root value={value} max={max} /> : null)}\n </div>\n );\n}\nFileUploadItemProgress.displayName = \"FileUpload.ItemProgress\";\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type FileUploadRootProps = Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"children\"> & {\n size?: FileUploadSize;\n appearance?: FileUploadAppearance;\n /** \u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u043A\u0440\u044B\u0442\u043E\u043C\u0443 input (\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 \u043A\u043B\u0438\u043A \u0438\u0437 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u0438 \u0442.\u043F.). */\n inputRef?: React.Ref<HTMLInputElement>;\n accept?: string;\n multiple?: boolean;\n /** \u0411\u043B\u043E\u043A\u0438\u0440\u0443\u0435\u0442 \u0432\u044B\u0431\u043E\u0440 \u0444\u0430\u0439\u043B\u043E\u0432 \u0438 drag-and-drop. */\n disabled?: boolean;\n onFilesChange?: (files: File[]) => void;\n children?: React.ReactNode;\n};\n\nconst FileUploadRoot = React.forwardRef<HTMLLabelElement, FileUploadRootProps>(\n (\n {\n size = \"m\",\n appearance = \"dashed\",\n inputRef: inputRefProp,\n accept,\n multiple,\n disabled,\n onFilesChange,\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n const [isDragOver, setIsDragOver] = React.useState(false);\n const mergeInputRef = useMergedRefs(inputRefProp);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const list = e.target.files;\n const files = list ? Array.from(list) : [];\n onFilesChange?.(files);\n e.target.value = \"\";\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLLabelElement>) => {\n const related = e.relatedTarget as Node | null;\n if (!related || !e.currentTarget.contains(related)) {\n setIsDragOver(false);\n }\n };\n\n const handleDrop = (e: React.DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n if (!disabled) {\n const files = Array.from(e.dataTransfer.files);\n onFilesChange?.(files);\n }\n };\n\n const defaultBody = (\n <div className={styles.inner}>\n <FileUploadIcon>\n <Icon name=\"action.upload\" size={size} tone=\"subtle\" />\n </FileUploadIcon>\n <div className={styles.copy}>\n <FileUploadTitle>{\"Choose a file or drag & drop it here.\"}</FileUploadTitle>\n <FileUploadHint>JPEG, PNG, PDF, MP4 up to 50 MB.</FileUploadHint>\n </div>\n <FileUploadBrowseLabel>Browse file</FileUploadBrowseLabel>\n </div>\n );\n\n return (\n <label\n ref={ref}\n {...rest}\n className={cx(styles.root, className)}\n {...toDataAttributes({ size, appearance })}\n data-dragover={isDragOver ? true : undefined}\n data-disabled={disabled ? true : undefined}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <input\n ref={mergeInputRef}\n type=\"file\"\n className={styles.input}\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n />\n <ControlSizeProvider value={size}>{children ?? defaultBody}</ControlSizeProvider>\n </label>\n );\n },\n);\n\nFileUploadRoot.displayName = \"FileUploadRoot\";\n\nexport const FileUpload = {\n Root: FileUploadRoot,\n Icon: FileUploadIcon,\n Title: FileUploadTitle,\n Hint: FileUploadHint,\n BrowseLabel: FileUploadBrowseLabel,\n BrowseLink: FileUploadBrowseLink,\n DropBody: FileUploadDropBody,\n ActionsRow: FileUploadActionsRow,\n Chip: FileUploadChip,\n ChipLabel: FileUploadChipLabel,\n FormatBadge: FileUploadFormatBadge,\n Item: FileUploadItem,\n ItemRow: FileUploadItemRow,\n ItemMain: FileUploadItemMain,\n ItemStack: FileUploadItemStack,\n ItemTextGroup: FileUploadItemTextGroup,\n ItemTryAgain: FileUploadItemTryAgain,\n ItemName: FileUploadItemName,\n ItemMeta: FileUploadItemMeta,\n ItemMetaSep: FileUploadItemMetaSep,\n ItemActions: FileUploadItemActions,\n ItemFooter: FileUploadItemFooter,\n ItemProgress: FileUploadItemProgress,\n};\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { ProgressBarSize } from \"@/internal/states\";\n\nimport styles from \"./ProgressBar.module.css\";\n\nexport type { ProgressBarSize };\n\nexport type ProgressBarRootProps = {\n value: number;\n max?: number;\n label?: string;\n size?: ProgressBarSize;\n className?: string;\n};\n\nfunction clampProgress(value: number, max: number): number {\n return Math.min(max, Math.max(value, 0));\n}\n\nconst ProgressBarRoot = React.forwardRef<HTMLProgressElement, ProgressBarRootProps>(\n ({ value, max = 100, label, size = \"m\", className }, ref) => {\n const safeMax = max > 0 ? max : 100;\n const safeValue = clampProgress(value, safeMax);\n const labelId = React.useId();\n\n return (\n <div className={cx(styles.root, className)} {...toDataAttributes({ size })}>\n {label ? (\n <span className={styles.label} id={labelId}>\n {label}\n </span>\n ) : null}\n <progress\n ref={ref}\n value={safeValue}\n max={safeMax}\n aria-labelledby={label ? labelId : undefined}\n className={styles.track}\n />\n </div>\n );\n },\n);\n\nProgressBarRoot.displayName = \"ProgressBarRoot\";\n\nexport const ProgressBar = { Root: ProgressBarRoot };\n", "/* \u0412\u044B\u0441\u043E\u0442\u0430 \u0442\u0440\u0435\u043A\u0430 \u2014 \u0434\u043E\u043B\u044F control-height \u0442\u043E\u0433\u043E \u0436\u0435 \u044F\u0440\u0443\u0441\u0430, \u043A\u0430\u043A \u0443 Slider. */\n.root {\n display: flex;\n flex-direction: column;\n gap: var(--progress-root-gap);\n width: 100%;\n}\n\n.root[data-size=\"s\"] {\n --progress-root-gap: var(--prime-sys-size-control-s-gap);\n --progress-track-h: var(--prime-sys-spacing-xs);\n --progress-label-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"m\"] {\n --progress-root-gap: var(--prime-sys-size-control-m-gap);\n --progress-track-h: var(--prime-sys-spacing-xs);\n --progress-label-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"l\"] {\n --progress-root-gap: var(--prime-sys-size-control-l-gap);\n --progress-track-h: var(--prime-sys-spacing-s);\n --progress-label-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] {\n --progress-root-gap: var(--prime-sys-size-control-xl-gap);\n --progress-track-h: var(--prime-sys-spacing-s);\n --progress-label-size: var(--prime-sys-size-control-xl-text);\n}\n\n.label {\n font-size: var(--progress-label-size);\n color: var(--prime-sys-color-content-primary);\n}\n\n.track {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: var(--progress-track-h);\n border: 0;\n background: var(--prime-sys-color-surface-accentSoft);\n border-radius: var(--prime-sys-shape-radius-round);\n overflow: hidden;\n}\n\n.track::-webkit-progress-bar {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.track::-webkit-progress-value {\n background: var(--prime-sys-color-action-primaryBackground);\n border-radius: var(--prime-sys-shape-radius-round);\n transition: width var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.track::-moz-progress-bar {\n background: var(--prime-sys-color-action-primaryBackground);\n border-radius: var(--prime-sys-shape-radius-round);\n transition: width var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n", ".root {\n /* \u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 m (\u044F\u0440\u043B\u044B\u043A \u0432\u0441\u0435\u0433\u0434\u0430 \u0441 data-size \u0438\u0437 TS) */\n --fu-pad: var(--prime-sys-spacing-x6);\n --fu-stack: var(--prime-sys-spacing-x4);\n --fu-copy-gap: var(--prime-sys-size-control-m-gap);\n --fu-title: var(--prime-sys-size-control-m-text);\n --fu-chip-h: var(--prime-sys-size-control-m-height);\n --fu-chip-px: var(--prime-sys-size-control-m-buttonPaddingX);\n --fu-chip-py: var(--prime-sys-size-control-m-buttonPaddingY);\n --fu-chip-radius: var(--prime-sys-size-control-m-radius);\n --fu-chip-font: var(--prime-sys-size-control-m-supportText);\n --fu-surface-radius: var(--prime-sys-shape-radius-l);\n --fu-maxw: var(--prime-sys-unit-22rem);\n\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n box-sizing: border-box;\n padding: var(--fu-pad);\n border: var(--prime-sys-border-width-control) dashed var(--prime-sys-color-border-subtle);\n border-radius: var(--fu-surface-radius);\n background: var(--prime-sys-color-surface-elevated);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n text-align: center;\n transition:\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.root[data-size=\"s\"] {\n --fu-pad: var(--prime-sys-spacing-x5);\n --fu-stack: var(--prime-sys-spacing-x3);\n --fu-copy-gap: var(--prime-sys-size-control-s-gap);\n --fu-title: var(--prime-sys-size-control-s-text);\n --fu-chip-h: var(--prime-sys-size-control-s-height);\n --fu-chip-px: var(--prime-sys-size-control-s-buttonPaddingX);\n --fu-chip-py: var(--prime-sys-size-control-s-buttonPaddingY);\n --fu-chip-radius: var(--prime-sys-size-control-s-radius);\n --fu-chip-font: var(--prime-sys-size-control-s-supportText);\n --fu-surface-radius: var(--prime-sys-shape-radius-m);\n --fu-maxw: var(--prime-sys-unit-18rem);\n}\n\n.root[data-size=\"l\"] {\n --fu-pad: var(--prime-sys-spacing-x8);\n --fu-stack: var(--prime-sys-spacing-x5);\n --fu-copy-gap: var(--prime-sys-size-control-l-gap);\n --fu-title: var(--prime-sys-size-control-l-text);\n --fu-chip-h: var(--prime-sys-size-control-l-height);\n --fu-chip-px: var(--prime-sys-size-control-l-buttonPaddingX);\n --fu-chip-py: var(--prime-sys-size-control-l-buttonPaddingY);\n --fu-chip-radius: var(--prime-sys-size-control-l-radius);\n --fu-chip-font: var(--prime-sys-size-control-l-supportText);\n --fu-surface-radius: var(--prime-sys-shape-radius-4xl);\n --fu-maxw: var(--prime-sys-unit-26rem);\n}\n\n.root[data-size=\"xl\"] {\n --fu-pad: var(--prime-sys-spacing-x10);\n --fu-stack: var(--prime-sys-spacing-x5);\n --fu-copy-gap: var(--prime-sys-size-control-xl-gap);\n --fu-title: var(--prime-sys-size-control-xl-text);\n --fu-chip-h: var(--prime-sys-size-control-xl-height);\n --fu-chip-px: var(--prime-sys-size-control-xl-buttonPaddingX);\n --fu-chip-py: var(--prime-sys-size-control-xl-buttonPaddingY);\n --fu-chip-radius: var(--prime-sys-size-control-xl-radius);\n --fu-chip-font: var(--prime-sys-size-control-xl-supportText);\n --fu-surface-radius: var(--prime-sys-shape-radius-4xl);\n --fu-maxw: var(--prime-sys-unit-28rem);\n}\n\n.root:hover:not([data-disabled=\"true\"]) {\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n border-color: var(--prime-sys-color-border-subtle);\n box-shadow: none;\n}\n\n.root[data-dragover=\"true\"]:not([data-disabled=\"true\"]) {\n border-color: var(--prime-sys-color-border-accent);\n background: var(--prime-sys-color-surface-accentSoft);\n box-shadow: none;\n}\n\n.root:focus-within:not([data-disabled=\"true\"]) {\n border-color: var(--prime-sys-color-content-primary);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.root[data-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n/* \u041C\u043E\u0434\u0430\u043B\u043A\u0438 Align: \u0441\u043F\u043B\u043E\u0448\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430, \u0444\u043E\u043D \u043A\u0430\u043A \u0443 \u043F\u043E\u043B\u044F, hover \u00AB\u0441\u0432\u0435\u0442\u043B\u0435\u0435\u00BB */\n.root[data-appearance=\"solid\"] {\n border-style: solid;\n border-color: var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-surface-default);\n box-shadow: none;\n}\n\n.root[data-appearance=\"solid\"]:hover:not([data-disabled=\"true\"]) {\n background: var(--prime-sys-color-surface-elevated);\n border-color: var(--prime-sys-color-border-subtle);\n box-shadow: none;\n}\n\n.root[data-appearance=\"solid\"][data-dragover=\"true\"]:not([data-disabled=\"true\"]) {\n border-color: var(--prime-sys-color-border-accent);\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.root[data-appearance=\"solid\"]:focus-within:not([data-disabled=\"true\"]) {\n border-color: var(--prime-sys-color-content-primary);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.input {\n position: absolute;\n width: var(--prime-sys-unit-1px);\n height: var(--prime-sys-unit-1px);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--fu-stack);\n max-width: var(--fu-maxw);\n}\n\n.iconWrap {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--prime-sys-color-content-muted);\n}\n\n.copy {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--fu-copy-gap);\n}\n\n.title {\n margin: 0;\n font-size: var(--fu-title);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-primary);\n letter-spacing: var(--prime-sys-typography-tracking-normal);\n}\n\n.titleMuted {\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* \u0427\u0438\u043F \u00ABBrowse\u00BB \u2014 \u0442\u0430 \u0436\u0435 \u044F\u0440\u0443\u0441\u043D\u043E\u0441\u0442\u044C, \u0447\u0442\u043E \u043A\u043E\u043D\u0442\u0440\u043E\u043B \u0434\u0430\u043D\u043D\u043E\u0433\u043E size */\n.browse {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-height: var(--fu-chip-h);\n padding-inline: var(--fu-chip-px);\n padding-block: var(--fu-chip-py);\n border-radius: var(--fu-chip-radius);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n background: var(--prime-sys-color-field-bg);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n font-size: var(--fu-chip-font);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1.2;\n color: var(--prime-sys-color-content-secondary);\n pointer-events: none;\n user-select: none;\n}\n\n.root[data-disabled=\"true\"] .browse {\n background: var(--prime-sys-color-surface-accentSoft);\n border-color: transparent;\n box-shadow: none;\n}\n\n.browseLink {\n display: inline;\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n cursor: pointer;\n pointer-events: auto;\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-action-primaryBackground);\n text-decoration: underline;\n text-underline-offset: var(--prime-sys-unit-2px);\n}\n\n.browseLink:hover {\n color: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n.browseLink:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n border-radius: var(--prime-sys-shape-radius-s);\n}\n\n/* \u2500\u2500\u2500 \u041C\u043E\u0434\u0430\u043B\u043A\u0438: \u0442\u0435\u043B\u043E \u0431\u0435\u0437 pointer-events, \u0438\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432 \u0432\u043D\u0443\u0442\u0440\u0438 \u0441 pointer-events: auto \u2500 */\n.dropBody {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--fu-stack, var(--prime-sys-spacing-x5));\n width: 100%;\n text-align: center;\n pointer-events: none;\n}\n\n.actionsRow {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--prime-sys-spacing-x3);\n pointer-events: auto;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n box-sizing: border-box;\n min-height: var(--fu-chip-h, var(--prime-sys-unit-2p5rem));\n padding: var(--prime-sys-unit-0p375rem) var(--prime-sys-unit-1rem) var(--prime-sys-unit-0p375rem)\n var(--prime-sys-unit-0p375rem);\n margin: 0;\n border: none;\n border-radius: var(--prime-sys-shape-radius-round);\n background: transparent;\n box-shadow: none;\n cursor: pointer;\n font: inherit;\n color: inherit;\n transition:\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.chip:hover {\n background: var(--prime-sys-color-surface-accentSoft);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.chip:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.chipLabel {\n font-size: var(--fu-chip-font, var(--prime-sys-size-control-m-text));\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* \u2500\u2500\u2500 \u041A\u0430\u0440\u0442\u043E\u0447\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 (\u0441\u043F\u0438\u0441\u043A\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438) \u2014 ring inset \u043A\u0430\u043A Align `ring-1 ring-inset` \u2500 */\n.item {\n --fu-item-pad-block: var(--prime-sys-spacing-x4);\n --fu-item-pad-inline: var(--prime-sys-spacing-x4);\n --fu-item-pad-inline-start: var(--fu-item-pad-inline);\n --fu-item-col-gap: var(--prime-sys-spacing-x4);\n --fu-item-row-gap: var(--prime-sys-spacing-x3);\n --fu-item-main-gap: var(--prime-sys-spacing-x1);\n --fu-item-text-group-gap: var(--prime-sys-spacing-x1);\n --fu-item-stack-gap: var(--prime-sys-spacing-x2);\n --fu-item-name-font: var(--prime-sys-size-control-m-text);\n --fu-item-meta-font: var(--prime-sys-typography-support-2xs);\n --fu-item-badge: var(--prime-sys-unit-2p5rem);\n --fu-item-badge-radius: var(--prime-sys-shape-radius-m);\n --fu-item-progress-h: var(--prime-sys-unit-0p5rem);\n --fu-item-status-icon: var(--prime-sys-size-control-m-icon);\n --fu-item-radius: var(--prime-sys-shape-radius-4xl);\n --fu-item-maxw: var(--prime-sys-unit-25rem);\n\n display: flex;\n flex-direction: column;\n gap: var(--fu-item-col-gap);\n box-sizing: border-box;\n width: 100%;\n max-width: var(--fu-item-maxw);\n padding-block: var(--fu-item-pad-block);\n padding-inline: var(--fu-item-pad-inline);\n padding-inline-start: var(--fu-item-pad-inline-start);\n border: none;\n border-radius: var(--fu-item-radius);\n background: var(--prime-sys-color-surface-elevated);\n box-shadow: inset 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-subtle);\n}\n\n.item[data-size=\"s\"] {\n --fu-item-pad-block: var(--prime-sys-spacing-x3);\n --fu-item-pad-inline: var(--prime-sys-spacing-x3);\n --fu-item-pad-inline-start: var(--fu-item-pad-inline);\n --fu-item-col-gap: var(--prime-sys-spacing-x3);\n --fu-item-row-gap: var(--prime-sys-spacing-x2);\n --fu-item-main-gap: var(--prime-sys-spacing-x1);\n --fu-item-text-group-gap: var(--prime-sys-spacing-x1);\n --fu-item-stack-gap: var(--prime-sys-spacing-x2);\n --fu-item-name-font: var(--prime-sys-size-control-s-text);\n --fu-item-meta-font: var(--prime-sys-size-control-s-supportText);\n --fu-item-badge: var(--prime-sys-unit-2rem);\n --fu-item-badge-radius: var(--prime-sys-shape-radius-s);\n --fu-item-progress-h: var(--prime-sys-unit-0p375rem);\n --fu-item-status-icon: var(--prime-sys-size-control-s-icon);\n --fu-item-radius: var(--prime-sys-shape-radius-l);\n --fu-item-maxw: var(--prime-sys-unit-22rem);\n}\n\n.item[data-size=\"l\"] {\n --fu-item-pad-block: var(--prime-sys-spacing-x4);\n --fu-item-pad-inline: var(--prime-sys-spacing-x4);\n --fu-item-pad-inline-start: var(--fu-item-pad-inline);\n --fu-item-col-gap: var(--prime-sys-spacing-x4);\n --fu-item-row-gap: var(--prime-sys-spacing-x2);\n --fu-item-main-gap: var(--prime-sys-spacing-x1);\n --fu-item-text-group-gap: var(--prime-sys-spacing-x1);\n --fu-item-stack-gap: var(--prime-sys-spacing-x2);\n --fu-item-name-font: var(--prime-sys-size-control-l-text);\n --fu-item-meta-font: var(--prime-sys-size-control-l-supportText);\n --fu-item-badge: var(--prime-sys-unit-2p75rem);\n --fu-item-badge-radius: var(--prime-sys-shape-radius-m);\n --fu-item-progress-h: var(--prime-sys-unit-0p5rem);\n --fu-item-status-icon: var(--prime-sys-size-control-l-icon);\n --fu-item-radius: var(--prime-sys-shape-radius-4xl);\n --fu-item-maxw: var(--prime-sys-unit-28rem);\n}\n\n.item[data-size=\"xl\"] {\n --fu-item-pad-block: var(--prime-sys-spacing-x5);\n --fu-item-pad-inline: var(--prime-sys-spacing-x5);\n --fu-item-pad-inline-start: var(--fu-item-pad-inline);\n --fu-item-col-gap: var(--prime-sys-spacing-x4);\n --fu-item-row-gap: var(--prime-sys-spacing-x3);\n --fu-item-main-gap: var(--prime-sys-spacing-x1);\n --fu-item-text-group-gap: var(--prime-sys-spacing-x1);\n --fu-item-stack-gap: var(--prime-sys-spacing-x2);\n --fu-item-name-font: var(--prime-sys-size-control-xl-text);\n --fu-item-meta-font: var(--prime-sys-size-control-xl-supportText);\n --fu-item-badge: var(--prime-sys-unit-3rem);\n --fu-item-badge-radius: var(--prime-sys-shape-radius-l);\n --fu-item-progress-h: var(--prime-sys-unit-0p5625rem);\n --fu-item-status-icon: var(--prime-sys-size-control-xl-icon);\n --fu-item-radius: var(--prime-sys-shape-radius-4xl);\n --fu-item-maxw: var(--prime-sys-unit-30rem);\n}\n\n.item[data-variant=\"error\"] {\n box-shadow: inset 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-danger);\n}\n\n.itemRow {\n display: flex;\n align-items: flex-start;\n gap: var(--fu-item-row-gap);\n}\n\n.itemMain {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--fu-item-main-gap);\n}\n\n.itemName {\n font-size: var(--fu-item-name-font);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-primary);\n}\n\n.itemNameRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--prime-sys-spacing-x2);\n width: 100%;\n}\n\n.itemInlineStatus {\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x1);\n flex-shrink: 0;\n font-size: var(--fu-item-meta-font);\n line-height: var(--prime-sys-typography-body-lineHeight);\n}\n\n.itemInlineStatus strong {\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.itemMeta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--prime-sys-spacing-x1);\n font-size: var(--fu-item-meta-font);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.itemMeta strong {\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n}\n\n.itemMetaSep {\n color: var(--prime-sys-color-content-secondary);\n user-select: none;\n}\n\n.itemStack {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--fu-item-stack-gap);\n flex: 1;\n min-width: 0;\n}\n\n.itemTextGroup {\n display: flex;\n flex-direction: column;\n gap: var(--fu-item-text-group-gap);\n width: 100%;\n min-width: 0;\n}\n\n.itemTryAgain {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n cursor: pointer;\n font-size: var(--fu-item-meta-font);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n text-decoration: underline;\n text-underline-offset: var(--prime-sys-unit-2px);\n color: var(--prime-sys-color-content-danger);\n}\n\n.itemTryAgain:hover {\n color: var(--prime-sys-color-action-errorBackgroundHover);\n}\n\n.itemTryAgain:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n border-radius: var(--prime-sys-shape-radius-s);\n}\n\n.itemActions {\n display: flex;\n flex-shrink: 0;\n align-items: flex-start;\n}\n\n.itemFooter {\n width: 100%;\n}\n\n.itemProgress {\n width: 100%;\n}\n\n.itemProgress > * {\n height: var(--fu-item-progress-h, var(--prime-sys-unit-0p5rem));\n}\n\n.formatBadge {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--fu-item-badge, var(--prime-sys-unit-2p5rem));\n height: var(--fu-item-badge, var(--prime-sys-unit-2p5rem));\n min-width: var(--fu-item-badge, var(--prime-sys-unit-2p5rem));\n padding-inline: 0;\n border-radius: var(--fu-item-badge-radius, var(--prime-sys-shape-radius-m));\n font-size: var(--fu-item-meta-font, var(--prime-sys-typography-support-2xs));\n font-weight: var(--prime-sys-typography-weight-semibold);\n line-height: 1;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n}\n\n.formatBadge[data-color=\"gray\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.formatBadge[data-color=\"red\"] {\n background: var(--prime-sys-color-status-error-background);\n color: var(--prime-sys-color-status-error-foreground);\n}\n\n.formatBadge[data-color=\"blue\"] {\n background: var(--prime-sys-color-status-information-background);\n color: var(--prime-sys-color-status-information-foreground);\n}\n\n.formatBadge[data-color=\"green\"] {\n background: var(--prime-sys-color-status-success-background);\n color: var(--prime-sys-color-status-success-foreground);\n}\n\n.formatBadge[data-color=\"orange\"] {\n background: var(--prime-sys-color-status-warning-background);\n color: var(--prime-sys-color-status-warning-foreground);\n}\n\n.formatBadge[data-color=\"purple\"] {\n background: var(--prime-sys-color-status-feature-background);\n color: var(--prime-sys-color-status-feature-foreground);\n}\n\n.formatBadge[data-color=\"sky\"] {\n background: var(--prime-sys-color-status-verified-background);\n color: var(--prime-sys-color-status-verified-foreground);\n}\n\n.formatBadge[data-color=\"yellow\"] {\n background: var(--prime-sys-color-status-away-background);\n color: var(--prime-sys-color-status-away-foreground);\n}\n\n/* \u0418\u043A\u043E\u043D\u043A\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0432 \u043C\u0435\u0442\u0430-\u0441\u0442\u0440\u043E\u043A\u0435 \u2014 \u0440\u0430\u0437\u043C\u0435\u0440 \u0441 `Item` (`data-size`) */\n.itemStatusIcon {\n flex-shrink: 0;\n width: var(--fu-item-status-icon);\n height: var(--fu-item-status-icon);\n}\n\n.itemStatusIcon svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n/* \u0414\u043B\u044F \u0438\u043A\u043E\u043D\u043A\u0438 \u00AB\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u00BB \u0432 \u043C\u0435\u0442\u0430-\u0441\u0442\u0440\u043E\u043A\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u0430 */\n.statusIconSpin {\n animation: fileUploadSpin 0.8s linear infinite;\n}\n\n@keyframes fileUploadSpin {\n to {\n transform: rotate(360deg);\n }\n}\n", "import * as React from \"react\";\nimport {\n ControlSizeProvider,\n controlSurfaceToInputSize,\n useOptionalControlSize,\n} from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { KbdSize } from \"@/internal/states\";\n\nimport styles from \"./Kbd.module.css\";\n\nexport type KbdRootProps = Omit<React.HTMLAttributes<HTMLElement>, \"size\"> & {\n children: React.ReactNode;\n className?: string;\n size?: KbdSize;\n};\n\nconst KbdRoot = React.forwardRef<HTMLElement, KbdRootProps>(\n ({ children, className, size: sizeProp, ...rest }, ref) => {\n const controlSurface = useOptionalControlSize();\n const size =\n sizeProp ?? (controlSurface !== undefined ? controlSurfaceToInputSize(controlSurface) : \"m\");\n\n return (\n <kbd\n ref={ref}\n className={cx(styles.root, className)}\n {...rest}\n {...toDataAttributes({ size })}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </kbd>\n );\n },\n);\n\nKbdRoot.displayName = \"Kbd.Root\";\n\nexport const Kbd = { Root: KbdRoot };\n", ".root {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: var(--prime-sys-size-control-xs-text);\n line-height: var(--prime-sys-typography-lineHeightScale-3xs);\n font-family: var(--prime-sys-typography-family-base);\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n background: var(--prime-sys-color-surface-raised);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-border-subtle);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n white-space: nowrap;\n box-sizing: border-box;\n}\n\n.root > * {\n font-size: inherit;\n line-height: inherit;\n}\n\n/* \u041D\u043E\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0439 size \u043A\u0430\u043A \u0443 \u0438\u043D\u043F\u0443\u0442\u0430; \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u043E \u043D\u0430 \u0441\u0442\u0443\u043F\u0435\u043D\u044C \u043D\u0438\u0436\u0435 \u043A\u043D\u043E\u043F\u043A\u0438 \u0442\u043E\u0433\u043E \u0436\u0435 \u0438\u043C\u0435\u043D\u0438 (`size.control.*`). */\n.root[data-size=\"s\"] {\n --prime-icon-size: var(--prime-sys-size-control-xs-icon);\n height: var(--prime-sys-size-kbd-height);\n min-width: var(--prime-sys-size-kbd-height);\n padding-inline: var(--prime-sys-size-kbd-paddingX);\n padding-block: var(--prime-sys-size-kbd-paddingY);\n font-size: var(--prime-sys-size-kbd-text);\n line-height: var(--prime-sys-typography-lineHeightScale-3xs);\n border-radius: var(--prime-sys-size-kbd-radius);\n gap: var(--prime-sys-size-control-xs-gap);\n}\n\n.root[data-size=\"m\"] {\n --prime-icon-size: var(--prime-sys-size-control-xs-icon);\n height: var(--prime-sys-size-control-xs-height);\n min-width: var(--prime-sys-size-control-xs-height);\n padding-inline: var(--prime-sys-size-control-xs-inputPaddingX);\n padding-block: var(--prime-sys-size-control-xs-inputPaddingY);\n font-size: var(--prime-sys-size-control-xs-text);\n line-height: var(--prime-sys-typography-lineHeightScale-3xs);\n border-radius: var(--prime-sys-size-control-xs-radius);\n gap: var(--prime-sys-size-control-xs-gap);\n}\n\n.root[data-size=\"l\"] {\n --prime-icon-size: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-height);\n min-width: var(--prime-sys-size-control-s-height);\n padding-inline: var(--prime-sys-size-control-s-inputPaddingX);\n padding-block: var(--prime-sys-size-control-s-inputPaddingY);\n font-size: var(--prime-sys-size-control-s-text);\n line-height: var(--prime-sys-typography-lineHeightScale-2xs);\n border-radius: var(--prime-sys-size-control-s-radius);\n gap: var(--prime-sys-size-control-s-gap);\n}\n\n.root[data-size=\"xl\"] {\n --prime-icon-size: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-height);\n min-width: var(--prime-sys-size-control-m-height);\n padding-inline: var(--prime-sys-size-control-m-inputPaddingX);\n padding-block: var(--prime-sys-size-control-m-inputPaddingY);\n font-size: var(--prime-sys-size-control-m-text);\n line-height: var(--prime-sys-typography-lineHeightScale-xs);\n border-radius: var(--prime-sys-size-control-m-radius);\n gap: var(--prime-sys-size-control-m-gap);\n}\n\n.root :where(svg) {\n width: var(--prime-icon-size);\n height: var(--prime-icon-size);\n flex-shrink: 0;\n}\n", "import { AlertTriangle, CheckCircle2, Info, X, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/button/Button\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { InputSize } from \"@/internal/states\";\n\nimport styles from \"./Notification.module.css\";\n\n// \u2500\u2500\u2500 useCountdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// \u0425\u0443\u043A \u0436\u0438\u0432\u0451\u0442 \u0437\u0434\u0435\u0441\u044C, \u0447\u0442\u043E\u0431\u044B \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440\u0430 \u043D\u0435 \u043F\u043E\u0434\u043D\u0438\u043C\u0430\u043B\u0438\u0441\u044C \u0434\u043E motion.li.\n\nexport function useCountdown(\n item: NotificationRecord,\n paused: boolean,\n onExpire: (id: string) => void,\n): number {\n const [progress, setProgress] = React.useState(1);\n const remainingRef = React.useRef(item.duration);\n const lastTsRef = React.useRef<number | null>(null);\n const pausedRef = React.useRef(paused);\n const onExpireRef = React.useRef(onExpire);\n\n pausedRef.current = paused;\n onExpireRef.current = onExpire;\n\n React.useEffect(() => {\n if (item.persistent || item.duration <= 0) return;\n\n remainingRef.current = item.duration;\n lastTsRef.current = null;\n setProgress(1);\n\n let frame: number;\n let cancelled = false;\n\n const tick = (now: number) => {\n if (cancelled) return;\n if (lastTsRef.current !== null && !pausedRef.current) {\n const delta = now - lastTsRef.current;\n remainingRef.current = Math.max(0, remainingRef.current - delta);\n setProgress(remainingRef.current / item.duration);\n if (remainingRef.current <= 0) {\n onExpireRef.current(item.id);\n return;\n }\n }\n lastTsRef.current = now;\n frame = requestAnimationFrame(tick);\n };\n\n frame = requestAnimationFrame(tick);\n return () => {\n cancelled = true;\n cancelAnimationFrame(frame);\n };\n }, [item.id, item.duration, item.persistent]);\n\n return progress;\n}\n\nexport type NotificationType = \"success\" | \"error\" | \"warning\" | \"info\";\nexport type NotificationSize = \"s\" | \"m\" | \"l\";\nexport type NotificationPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport type NotificationAction = {\n label: string;\n onClick: () => void;\n};\n\nexport type NotificationOptions = {\n type: NotificationType;\n title: string;\n description?: string;\n size?: NotificationSize;\n position?: NotificationPosition;\n duration?: number;\n persistent?: boolean;\n icon?: React.ReactNode;\n badge?: string | number;\n closable?: boolean;\n action?: NotificationAction;\n};\n\nexport type NotificationRecord = NotificationOptions & {\n id: string;\n position: NotificationPosition;\n size: NotificationSize;\n duration: number;\n persistent: boolean;\n closable: boolean;\n createdAt: number;\n};\n\ntype NotificationCardProps = {\n item: NotificationRecord;\n className?: string;\n paused: boolean;\n onDismiss: (id: string) => void;\n stackDepth?: number;\n stackExpanded?: boolean;\n};\n\nconst actionButtonSize: Record<NotificationSize, InputSize> = {\n s: \"s\",\n m: \"s\",\n l: \"m\",\n};\n\nconst defaultIconByType: Record<NotificationType, React.ComponentType<{ className?: string }>> = {\n success: CheckCircle2,\n error: XCircle,\n warning: AlertTriangle,\n info: Info,\n};\n\nexport function NotificationCard({\n item,\n className,\n paused,\n onDismiss,\n stackDepth = 0,\n stackExpanded = false,\n}: NotificationCardProps) {\n const progress = useCountdown(item, paused, onDismiss);\n const DefaultIcon = defaultIconByType[item.type];\n const liveRole = item.type === \"error\" || item.type === \"warning\" ? \"alert\" : \"status\";\n\n return (\n <article\n className={cx(styles.card, className)}\n role={liveRole}\n aria-live={liveRole === \"alert\" ? \"assertive\" : \"polite\"}\n {...toDataAttributes({\n type: item.type,\n size: item.size,\n persistent: item.persistent,\n stackDepth,\n stackExpanded,\n })}\n >\n <div className={styles.iconWrap} aria-hidden=\"true\">\n {item.icon ?? <DefaultIcon className={styles.icon} />}\n </div>\n <div className={styles.content}>\n <header className={styles.header}>\n <p className={styles.title}>{item.title}</p>\n {item.badge !== undefined ? <span className={styles.badge}>{item.badge}</span> : null}\n </header>\n {item.description ? <p className={styles.description}>{item.description}</p> : null}\n {item.action ? (\n <div className={styles.actionRow}>\n <Button.Root\n type=\"button\"\n size={actionButtonSize[item.size]}\n variant=\"neutral\"\n mode=\"stroke\"\n onClick={item.action.onClick}\n >\n {item.action.label}\n </Button.Root>\n </div>\n ) : null}\n </div>\n {item.closable ? (\n <button\n type=\"button\"\n className={styles.closeButton}\n aria-label=\"Dismiss notification\"\n onClick={() => onDismiss(item.id)}\n >\n <X aria-hidden=\"true\" />\n </button>\n ) : null}\n {!item.persistent ? (\n <div className={styles.progressTrack} aria-hidden=\"true\">\n <span className={styles.progressValue} style={{ transform: `scaleX(${progress})` }} />\n </div>\n ) : null}\n </article>\n );\n}\n", ".viewport {\n position: fixed;\n z-index: var(--prime-sys-elevation-zIndex-toast);\n inset: 0;\n pointer-events: none;\n}\n\n.zone {\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--prime-sys-spacing-x3);\n width: min(100vw - var(--prime-sys-spacing-x8), var(--prime-sys-unit-26rem));\n pointer-events: none;\n}\n\n.top {\n top: var(--prime-sys-spacing-x5);\n}\n\n.bottom {\n bottom: var(--prime-sys-spacing-x5);\n flex-direction: column-reverse;\n}\n\n.left {\n left: var(--prime-sys-spacing-x5);\n}\n\n.center {\n left: 50%;\n transform: translateX(-50%);\n}\n\n.right {\n right: var(--prime-sys-spacing-x5);\n}\n\n.stack {\n position: relative;\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0;\n pointer-events: auto;\n}\n\n.item {\n position: relative;\n width: 100%;\n}\n\n.item + .item {\n margin-top: var(--prime-sys-spacing-x2);\n}\n\n.stack[data-expanded=\"false\"] .item {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n margin-top: 0;\n}\n\n.stack[data-expanded=\"false\"] .item[data-stack-index=\"0\"] {\n position: relative;\n}\n\n/* Bottom zone: \u0441\u0442\u0435\u043A \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u0432\u0435\u0440\u0445, \u043D\u043E\u0432\u0430\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0430 \u0432\u043D\u0438\u0437\u0443 */\n.bottom .stack {\n display: flex;\n flex-direction: column-reverse;\n gap: var(--prime-sys-spacing-x2);\n}\n\n.bottom .stack .item + .item {\n margin-top: 0;\n}\n\n/* Bottom collapsed: \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u044B\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u043F\u0440\u0438\u0431\u0438\u0442\u044B \u043A \u043D\u0438\u0437\u0443 (\u0433\u0434\u0435 item[0]) */\n.bottom .stack[data-expanded=\"false\"] .item {\n top: auto;\n bottom: 0;\n}\n\n/* Padding \u0434\u043B\u044F \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u0438 peek-\u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A (fan-\u044D\u0444\u0444\u0435\u043A\u0442) */\n.top .stack[data-expanded=\"false\"][data-stacked=\"true\"] {\n padding-bottom: 14px;\n}\n\n.bottom .stack[data-expanded=\"false\"][data-stacked=\"true\"] {\n padding-top: 14px;\n}\n\n.card {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: flex-start;\n gap: var(--prime-sys-spacing-x2);\n width: 100%;\n box-sizing: border-box;\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-radius: var(--prime-sys-shape-radius-l);\n background: var(--prime-sys-color-surface-raised);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n overflow: hidden;\n}\n\n.card[data-stack-expanded=\"false\"][data-stack-depth=\"0\"] {\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 var(--prime-sys-unit-2px) var(--prime-sys-unit-6px)\n color-mix(in srgb, var(--prime-sys-color-content-primary) 10%, transparent);\n}\n\n.card[data-stack-expanded=\"false\"][data-stack-depth=\"1\"],\n.card[data-stack-expanded=\"false\"][data-stack-depth=\"2\"],\n.card[data-stack-expanded=\"false\"][data-stack-depth=\"3\"],\n.card[data-stack-expanded=\"false\"][data-stack-depth=\"4\"] {\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 var(--prime-sys-unit-1px) var(--prime-sys-unit-3px)\n color-mix(in srgb, var(--prime-sys-color-content-primary) 7%, transparent);\n}\n\n.card[data-size=\"s\"] {\n padding: var(--prime-sys-spacing-x2);\n}\n\n.card[data-size=\"m\"] {\n padding: var(--prime-sys-spacing-x3);\n}\n\n.card[data-size=\"l\"] {\n padding: var(--prime-sys-spacing-x4);\n}\n\n.card[data-type=\"success\"] {\n --notification-accent: var(--prime-sys-color-status-success-backgroundEmphasis);\n --notification-background-soft: var(--prime-sys-color-status-success-background);\n}\n\n.card[data-type=\"error\"] {\n --notification-accent: var(--prime-sys-color-status-error-backgroundEmphasis);\n --notification-background-soft: var(--prime-sys-color-status-error-background);\n}\n\n.card[data-type=\"warning\"] {\n --notification-accent: var(--prime-sys-color-status-warning-backgroundEmphasis);\n --notification-background-soft: var(--prime-sys-color-status-warning-background);\n}\n\n.card[data-type=\"info\"] {\n --notification-accent: var(--prime-sys-color-status-information-backgroundEmphasis);\n --notification-background-soft: var(--prime-sys-color-status-information-background);\n}\n\n.iconWrap {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--notification-accent);\n background: var(--notification-background-soft);\n border-radius: var(--prime-sys-shape-radius-m);\n}\n\n.card[data-size=\"s\"] .iconWrap {\n width: var(--prime-sys-size-control-s-height);\n height: var(--prime-sys-size-control-s-height);\n}\n\n.card[data-size=\"m\"] .iconWrap {\n width: var(--prime-sys-size-control-m-height);\n height: var(--prime-sys-size-control-m-height);\n}\n\n.card[data-size=\"l\"] .iconWrap {\n width: var(--prime-sys-size-control-l-height);\n height: var(--prime-sys-size-control-l-height);\n}\n\n.icon {\n width: var(--prime-sys-size-control-m-icon);\n height: var(--prime-sys-size-control-m-icon);\n}\n\n.card[data-size=\"s\"] .icon {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.card[data-size=\"l\"] .icon {\n width: var(--prime-sys-size-control-l-icon);\n height: var(--prime-sys-size-control-l-icon);\n}\n\n.content {\n min-width: 0;\n display: grid;\n gap: var(--prime-sys-spacing-x1);\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n min-width: 0;\n}\n\n.title {\n margin: 0;\n color: var(--prime-sys-color-content-primary);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.card[data-size=\"s\"] .title {\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.card[data-size=\"m\"] .title {\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.card[data-size=\"l\"] .title {\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n min-height: var(--prime-sys-size-badge-s-height);\n padding-inline: var(--prime-sys-size-badge-s-paddingX);\n border-radius: var(--prime-sys-size-badge-s-radius);\n background: var(--notification-background-soft);\n color: var(--notification-accent);\n font-size: var(--prime-sys-size-badge-s-text);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.card[data-size=\"s\"] .description {\n font-size: var(--prime-sys-size-control-s-supportText);\n}\n\n.card[data-size=\"m\"] .description {\n font-size: var(--prime-sys-size-control-m-supportText);\n}\n\n.card[data-size=\"l\"] .description {\n font-size: var(--prime-sys-size-control-l-supportText);\n}\n\n.actionRow {\n margin-top: var(--prime-sys-spacing-x1);\n display: flex;\n align-items: center;\n gap: var(--prime-sys-spacing-x2);\n}\n\n.closeButton {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--prime-sys-size-control-s-height);\n height: var(--prime-sys-size-control-s-height);\n border: none;\n border-radius: var(--prime-sys-size-control-s-radius);\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n cursor: pointer;\n}\n\n.closeButton:hover {\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-primary);\n}\n\n.closeButton svg {\n width: var(--prime-sys-size-control-s-icon);\n height: var(--prime-sys-size-control-s-icon);\n}\n\n.closeButton:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-border-focus);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.progressTrack {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--prime-sys-unit-2px);\n background: color-mix(in srgb, var(--notification-accent) 18%, transparent);\n}\n\n.progressValue {\n display: block;\n width: 100%;\n height: 100%;\n transform-origin: left center;\n background: var(--notification-accent);\n}\n\n.card[data-persistent=\"true\"] {\n border-color: color-mix(\n in srgb,\n var(--notification-accent) 50%,\n var(--prime-sys-color-border-subtle)\n );\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 0 var(--prime-sys-spacing-x2) color-mix(in srgb, var(--notification-accent) 30%, transparent);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .card[data-persistent=\"true\"] {\n animation: notification-glow 2s ease-in-out infinite;\n }\n}\n\n@keyframes notification-glow {\n 0%,\n 100% {\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 0 var(--prime-sys-spacing-x2)\n color-mix(in srgb, var(--notification-accent) 25%, transparent);\n }\n\n 50% {\n box-shadow:\n var(--prime-sys-elevation-shadow-surface),\n 0 0 var(--prime-sys-spacing-x4)\n color-mix(in srgb, var(--notification-accent) 42%, transparent);\n }\n}\n\n@media (max-width: 48rem) {\n .zone {\n width: min(100vw - var(--prime-sys-spacing-x6), var(--prime-sys-unit-24rem));\n }\n\n .top {\n top: var(--prime-sys-spacing-x3);\n }\n\n .bottom {\n bottom: var(--prime-sys-spacing-x3);\n }\n\n .left {\n left: var(--prime-sys-spacing-x3);\n }\n\n .right {\n right: var(--prime-sys-spacing-x3);\n }\n}\n", "import { AnimatePresence, LayoutGroup, motion } from \"framer-motion\";\nimport * as React from \"react\";\n\nimport { Portal } from \"@/internal/Portal\";\nimport { primitiveTokens } from \"../../../tokens/primitives\";\n\nimport {\n NotificationCard,\n type NotificationOptions,\n type NotificationPosition,\n type NotificationRecord,\n type NotificationType,\n} from \"./Notification\";\nimport styles from \"./Notification.module.css\";\n\n// \u2500\u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type NotificationProviderProps = {\n children: React.ReactNode;\n position?: NotificationPosition;\n max?: number;\n};\n\ntype StoreValue = {\n items: NotificationRecord[];\n notify: (options: NotificationOptions) => string;\n dismiss: (id: string) => void;\n dismissAll: () => void;\n};\n\n// dismissing \u2014 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u0444\u043B\u0430\u0433; \u043D\u0435 \u043F\u043E\u043F\u0430\u0434\u0430\u0435\u0442 \u0432 \u043F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0439 StoreValue.items\ntype NotificationEntry = NotificationRecord & { dismissing?: true };\n\n// \u2500\u2500\u2500 Constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst DEFAULT_DURATION = 5000;\nconst PEEK_VISIBLE = 3;\nconst PEEK_PX = 8;\n\n// \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0438\u0437 design-token: primitiveTokens.motion.*\n// Framer-motion \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 duration \u0432 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445 \u0438 ease \u043A\u0430\u043A \u043C\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043B\nfunction _msToS(ms: string): number {\n return Number.parseFloat(ms) / 1000;\n}\nfunction _parseBezier(s: string): [number, number, number, number] {\n const m = s.match(/cubic-bezier\\(([^)]+)\\)/);\n const p = m ? m[1].split(\",\").map(Number.parseFloat) : [0.2, 0, 0, 1];\n return [p[0], p[1], p[2], p[3]] as [number, number, number, number];\n}\n\nconst EASE = _parseBezier(primitiveTokens.motion.easing.standard);\nconst DUR_SLOW = _msToS(primitiveTokens.motion.duration.slow); // 500ms \u2192 0.5s\nconst DUR_MEDIUM = _msToS(primitiveTokens.motion.duration.medium); // 350ms \u2192 0.35s\nconst DUR_FAST = _msToS(primitiveTokens.motion.duration.fast); // 200ms \u2192 0.2s\nconst TWEEN_SLOW = { type: \"tween\", duration: DUR_SLOW, ease: EASE } as const;\n\n// DISMISS_CLEANUP_MS: \u0447\u0443\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 exit-\u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438 (medium = 350ms)\nconst DISMISS_CLEANUP_MS = Math.round(DUR_MEDIUM * 1000) + 100;\nconst POSITIONS: readonly NotificationPosition[] = [\n \"top-left\",\n \"top-center\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-center\",\n \"bottom-right\",\n];\nconst TYPES: readonly NotificationType[] = [\"success\", \"error\", \"warning\", \"info\"];\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst StoreContext = React.createContext<StoreValue | null>(null);\n\nfunction newId(): string {\n return (\n globalThis.crypto?.randomUUID?.() ?? `ntf-${Date.now()}-${Math.random().toString(16).slice(2)}`\n );\n}\n\nfunction isTop(position: NotificationPosition): boolean {\n return position.startsWith(\"top\");\n}\n\n// \u2500\u2500\u2500 NotificationStack \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction NotificationStack({\n position,\n items,\n onDismiss,\n}: {\n position: NotificationPosition;\n items: NotificationEntry[];\n onDismiss: (id: string) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n const collapseTimerRef = React.useRef<number | null>(null);\n const top = isTop(position);\n\n const handleHover = React.useCallback((hovered: boolean) => {\n if (collapseTimerRef.current !== null) {\n clearTimeout(collapseTimerRef.current);\n collapseTimerRef.current = null;\n }\n if (hovered) {\n setExpanded(true);\n } else {\n collapseTimerRef.current = window.setTimeout(() => setExpanded(false), 100);\n }\n }, []);\n\n React.useEffect(\n () => () => {\n if (collapseTimerRef.current !== null) clearTimeout(collapseTimerRef.current);\n },\n [],\n );\n\n // \u0422\u043E\u043B\u044C\u043A\u043E \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 (\u043D\u0435 dismissing) \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044E\u0442 \u0432 \u0432\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u043E\u043C \u0440\u0430\u0441\u0447\u0451\u0442\u0435\n const visible = items.filter((n) => !n.dismissing);\n\n return (\n <motion.ol\n layout\n className={styles.stack}\n aria-label={`Notifications at ${position}`}\n data-expanded={String(expanded)}\n data-stacked={visible.length > 1 ? \"true\" : undefined}\n transition={{ layout: TWEEN_SLOW }}\n onMouseEnter={() => handleHover(true)}\n onMouseLeave={() => handleHover(false)}\n >\n <AnimatePresence>\n {visible.map((item, index) => (\n <NotificationStackItem\n key={item.id}\n item={item}\n index={index}\n expanded={expanded}\n paused={expanded}\n top={top}\n hidden={!expanded && index >= PEEK_VISIBLE}\n onDismiss={onDismiss}\n />\n ))}\n </AnimatePresence>\n </motion.ol>\n );\n}\n\n// React.memo: \u043D\u0435 \u043F\u0435\u0440\u0435\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0432\u0430\u0435\u043C, \u043F\u043E\u043A\u0430 props \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0438\u0441\u044C.\n// \u042D\u0442\u043E \u043A\u0440\u0438\u0442\u0438\u0447\u043D\u043E \u2014 \u0431\u0435\u0437 \u043C\u0435\u043C\u043E \u043A\u0430\u0436\u0434\u044B\u0439 setProgress \u0432 NotificationCard (60fps) \u043F\u043E\u0434\u043D\u0438\u043C\u0430\u043B\u0441\u044F \u0431\u044B\n// \u0434\u043E motion.li layout \u0438 \u0437\u0430\u0441\u044B\u043F\u0430\u043B LayoutGroup \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\u043C\u0438.\nconst NotificationStackItem = React.memo(function NotificationStackItem({\n item,\n index,\n expanded,\n paused,\n top,\n hidden,\n onDismiss,\n}: {\n item: NotificationRecord;\n index: number;\n expanded: boolean;\n paused: boolean;\n top: boolean;\n hidden: boolean;\n onDismiss: (id: string) => void;\n}) {\n const scale = expanded ? 1 : Math.max(1 - index * 0.04, 0.88);\n const opacity = expanded ? 1 : index === 0 ? 1 : index === 1 ? 0.7 : 0.45;\n const y = expanded ? 0 : (top ? 1 : -1) * index * PEEK_PX;\n\n const rotateEnter = top ? -45 : 45;\n const rotateExit = top ? 25 : -25;\n\n // layoutDependency: layout \u0438\u0437\u043C\u0435\u0440\u044F\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u0445 \u043F\u043E\u0437\u0438\u0446\u0438\u0438/\u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F,\n // \u0430 \u043D\u0435 \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440\u0435 \u043E\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0445 \u043F\u0440\u0438\u0447\u0438\u043D.\n const layoutDep = `${item.id}-${index}-${String(expanded)}-${String(hidden)}`;\n\n return (\n <motion.li\n className={styles.item}\n data-stack-index={index}\n layout\n layoutDependency={layoutDep}\n initial={{ opacity: 0, y: top ? -16 : 16, rotateX: rotateEnter, transformPerspective: 700 }}\n animate={{\n opacity: hidden ? 0 : opacity,\n y,\n scale,\n rotateX: 0,\n transformPerspective: 700,\n zIndex: 100 - index,\n }}\n exit={{\n opacity: 0,\n rotateX: rotateExit,\n transformPerspective: 700,\n transition: {\n opacity: { type: \"tween\", duration: DUR_MEDIUM, ease: EASE },\n rotateX: { type: \"tween\", duration: DUR_MEDIUM, ease: EASE },\n },\n }}\n transition={{\n opacity: { type: \"tween\", duration: DUR_FAST, ease: EASE },\n y: TWEEN_SLOW,\n scale: TWEEN_SLOW,\n rotateX: TWEEN_SLOW,\n layout: TWEEN_SLOW,\n }}\n style={{\n transformOrigin: top ? \"top center\" : \"bottom center\",\n pointerEvents: hidden ? \"none\" : \"auto\",\n }}\n >\n <NotificationCard\n item={item}\n paused={paused}\n onDismiss={onDismiss}\n stackDepth={index}\n stackExpanded={expanded}\n />\n </motion.li>\n );\n});\n\n// \u2500\u2500\u2500 NotificationToaster \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 entries \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E \u043E\u0442 \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u2014 \u0432\u043A\u043B\u044E\u0447\u0430\u044F dismissing-\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B,\n// \u0447\u0442\u043E\u0431\u044B \u0441\u0442\u0435\u043A \u043E\u0441\u0442\u0430\u0432\u0430\u043B\u0441\u044F \u0441\u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u043C \u0432\u043E \u0432\u0440\u0435\u043C\u044F exit-\u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438.\n\nfunction NotificationToaster({\n entries,\n onDismiss,\n}: {\n entries: NotificationEntry[];\n onDismiss: (id: string) => void;\n}) {\n const grouped = React.useMemo(() => {\n const map = new Map<NotificationPosition, Map<NotificationType, NotificationEntry[]>>();\n for (const entry of entries) {\n if (!map.has(entry.position)) map.set(entry.position, new Map());\n const byType = map.get(entry.position);\n if (!byType) continue;\n if (!byType.has(entry.type)) byType.set(entry.type, []);\n byType.get(entry.type)?.push(entry);\n }\n for (const byType of map.values()) {\n for (const list of byType.values()) {\n list.sort((a, b) => b.createdAt - a.createdAt);\n }\n }\n return map;\n }, [entries]);\n\n return (\n <Portal>\n <div className={styles.viewport}>\n {POSITIONS.map((pos) => {\n const byType = grouped.get(pos);\n if (!byType?.size) return null;\n\n const [vertical, horizontal] = pos.split(\"-\") as [\n \"top\" | \"bottom\",\n \"left\" | \"center\" | \"right\",\n ];\n\n const stacks = TYPES.map((type) => ({ type, items: byType.get(type) ?? [] })).filter(\n (s) => s.items.length > 0,\n );\n\n return (\n <section\n key={pos}\n className={`${styles.zone} ${styles[vertical]} ${styles[horizontal]}`}\n >\n <LayoutGroup id={`zone-${pos}`}>\n {stacks.map((s) => (\n <NotificationStack\n key={s.type}\n position={pos}\n items={s.items}\n onDismiss={onDismiss}\n />\n ))}\n </LayoutGroup>\n </section>\n );\n })}\n </div>\n </Portal>\n );\n}\n\n// \u2500\u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function NotificationProvider({\n children,\n position = \"top-right\",\n max = 5,\n}: NotificationProviderProps) {\n const [entries, setEntries] = React.useState<NotificationEntry[]>([]);\n\n const dismiss = React.useCallback((id: string) => {\n // \u0424\u0430\u0437\u0430 1: \u043F\u043E\u043C\u0435\u0447\u0430\u0435\u043C \u043A\u0430\u043A dismissing \u2192 AnimatePresence \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 exit-\u0430\u043D\u0438\u043C\u0430\u0446\u0438\u044E\n setEntries((prev) => prev.map((n) => (n.id === id ? { ...n, dismissing: true } : n)));\n // \u0424\u0430\u0437\u0430 2: \u0443\u0434\u0430\u043B\u044F\u0435\u043C \u0438\u0437 \u0441\u0442\u0435\u0439\u0442\u0430 \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438\n window.setTimeout(() => {\n setEntries((prev) => prev.filter((n) => n.id !== id));\n }, DISMISS_CLEANUP_MS);\n }, []);\n\n const dismissAll = React.useCallback(() => {\n setEntries((prev) => prev.map((n) => ({ ...n, dismissing: true as const })));\n window.setTimeout(() => setEntries([]), DISMISS_CLEANUP_MS);\n }, []);\n\n const notify = React.useCallback(\n (options: NotificationOptions): string => {\n const id = newId();\n const record: NotificationEntry = {\n ...options,\n id,\n size: options.size ?? \"m\",\n position: options.position ?? position,\n duration: options.duration ?? DEFAULT_DURATION,\n persistent: options.persistent ?? false,\n closable: options.closable ?? true,\n createdAt: Date.now(),\n };\n\n setEntries((prev) => {\n const sameStack = prev.filter(\n (n) => n.position === record.position && n.type === record.type && !n.dismissing,\n );\n const otherStacks = prev.filter(\n (n) => n.position !== record.position || n.type !== record.type,\n );\n return [...otherStacks, ...[record, ...sameStack].slice(0, max)];\n });\n\n return id;\n },\n [position, max],\n );\n\n // \u041F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0439 items \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 dismissing-\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\n const publicItems = React.useMemo(() => entries.filter((n) => !n.dismissing), [entries]);\n\n const value = React.useMemo(\n () => ({ items: publicItems, notify, dismiss, dismissAll }),\n [publicItems, notify, dismiss, dismissAll],\n );\n\n return (\n <StoreContext.Provider value={value}>\n {children}\n <NotificationToaster entries={entries} onDismiss={dismiss} />\n </StoreContext.Provider>\n );\n}\n\nexport function useNotifications(): Pick<StoreValue, \"notify\" | \"dismiss\" | \"dismissAll\"> {\n const ctx = React.useContext(StoreContext);\n if (!ctx) throw new Error(\"useNotifications must be used within NotificationProvider\");\n return { notify: ctx.notify, dismiss: ctx.dismiss, dismissAll: ctx.dismissAll };\n}\n\nexport function useNotificationStore(): StoreValue {\n const ctx = React.useContext(StoreContext);\n if (!ctx) throw new Error(\"useNotificationStore must be used within NotificationProvider\");\n return ctx;\n}\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./PageContent.module.css\";\n\n/** \u041E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0435 \u0448\u0438\u0440\u0438\u043D\u044B \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0431\u043B\u043E\u043A\u0430 \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 `main`. */\nexport type PageContentMaxWidth = \"full\" | \"readable\" | \"wide\";\n\nexport type PageContentRootProps = {\n maxWidth?: PageContentMaxWidth;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst PageContentRoot = React.forwardRef<HTMLDivElement, PageContentRootProps>(\n function PageContentRoot({ maxWidth = \"full\", className, children, ...rest }, forwardedRef) {\n return (\n <div\n ref={forwardedRef}\n className={cx(styles.root, className)}\n {...rest}\n {...toDataAttributes({\n \"max-width\": maxWidth === \"full\" ? undefined : maxWidth,\n })}\n >\n {children}\n </div>\n );\n },\n);\nPageContentRoot.displayName = \"PageContent.Root\";\n\nexport type PageContentSectionProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst PageContentSection = React.forwardRef<HTMLElement, PageContentSectionProps>(\n function PageContentSection({ className, children, ...rest }, forwardedRef) {\n return (\n <section ref={forwardedRef} className={cx(styles.section, className)} {...rest}>\n {children}\n </section>\n );\n },\n);\nPageContentSection.displayName = \"PageContent.Section\";\n\nexport type PageContentHeaderProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction PageContentHeader({ className, children, ...rest }: PageContentHeaderProps) {\n return (\n <div className={cx(styles.header, className)} {...rest}>\n {children}\n </div>\n );\n}\nPageContentHeader.displayName = \"PageContent.Header\";\n\nexport type PageContentTitleProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLHeadingElement>;\n\nconst PageContentTitle = React.forwardRef<HTMLHeadingElement, PageContentTitleProps>(\n function PageContentTitle({ className, children, ...rest }, forwardedRef) {\n return (\n <h1 ref={forwardedRef} className={cx(styles.title, className)} {...rest}>\n {children}\n </h1>\n );\n },\n);\nPageContentTitle.displayName = \"PageContent.Title\";\n\nexport type PageContentDescriptionMeasure = \"readable\" | \"full\";\n\nexport type PageContentDescriptionProps = {\n /** `readable` \u2014 max ~65ch; `full` \u2014 use full width of the parent (e.g. inside an already padded `main`). */\n measure?: PageContentDescriptionMeasure;\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLParagraphElement>;\n\nconst PageContentDescription = React.forwardRef<HTMLParagraphElement, PageContentDescriptionProps>(\n function PageContentDescription(\n { className, children, measure = \"readable\", ...rest },\n forwardedRef,\n ) {\n return (\n <p\n ref={forwardedRef}\n className={cx(styles.description, className)}\n {...rest}\n {...toDataAttributes({\n measure: measure === \"full\" ? \"full\" : undefined,\n })}\n >\n {children}\n </p>\n );\n },\n);\nPageContentDescription.displayName = \"PageContent.Description\";\n\nexport type PageContentBodyProps = {\n className?: string;\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction PageContentBody({ className, children, ...rest }: PageContentBodyProps) {\n return (\n <div className={cx(styles.body, className)} {...rest}>\n {children}\n </div>\n );\n}\nPageContentBody.displayName = \"PageContent.Body\";\n\nexport const PageContent = {\n Root: PageContentRoot,\n Section: PageContentSection,\n Header: PageContentHeader,\n Title: PageContentTitle,\n Description: PageContentDescription,\n Body: PageContentBody,\n};\n", "/* Semantic page region inside a padded main (e.g. AppShell); no outer padding \u2014 shell provides it. */\n.section {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n/* \u0412\u043D\u0435\u0448\u043D\u0438\u0435 \u043F\u043E\u043B\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0434\u0430\u0451\u0442 `AppShell.Main` (\u0432 \u0441\u043E\u0441\u0442\u0430\u0432\u0435 `AppShell.Template`); \u0437\u0434\u0435\u0441\u044C \u0442\u043E\u043B\u044C\u043A\u043E max-width \u0438 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0441\u0435\u0442\u043A\u0430. */\n.root {\n box-sizing: border-box;\n width: 100%;\n margin: 0 auto;\n padding: 0;\n}\n\n.root[data-max-width=\"readable\"] {\n max-width: var(--prime-sys-unit-48rem);\n}\n\n.root[data-max-width=\"wide\"] {\n max-width: var(--prime-sys-unit-72rem);\n}\n\n.header:last-child {\n margin-bottom: 0;\n}\n\n.header {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-x3);\n margin-bottom: var(--prime-sys-spacing-5xl);\n}\n\n.title {\n margin: 0;\n color: var(--prime-sys-color-content-primary);\n font-size: var(--prime-sys-typography-sizeScale-3xl);\n line-height: var(--prime-sys-typography-lineHeightScale-3xl);\n font-weight: var(--prime-sys-typography-weight-semibold);\n letter-spacing: var(--prime-sys-typography-tracking-tight);\n text-wrap: balance;\n}\n\n.description {\n margin: 0;\n max-width: 65ch;\n color: var(--prime-sys-color-content-secondary);\n font-size: var(--prime-sys-typography-sizeScale-s);\n line-height: var(--prime-sys-typography-lineHeightScale-s);\n font-weight: var(--prime-sys-typography-weight-regular);\n}\n\n/* When the content column is already inset by a parent, avoid a second measure column. */\n.description[data-measure=\"full\"] {\n max-width: none;\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: var(--prime-sys-spacing-5xl);\n min-width: 0;\n}\n", "import * as React from \"react\";\nimport { ScrollContainer } from \"@/components/scroll-container/ScrollContainer\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useEscapeKey } from \"@/hooks/useEscapeKey\";\nimport { useFocusTrap } from \"@/hooks/useFocusTrap\";\nimport { isPortaledSelectListboxOwnedByContainer, useOutsideClick } from \"@/hooks/useOutsideClick\";\nimport type { PositionAlign, PositionSide } from \"@/hooks/usePosition\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { mergeRefs } from \"@/internal/mergeRefs\";\nimport { useOverlayPortalLayer } from \"@/internal/OverlayPortalLayerContext\";\nimport { Portal } from \"@/internal/Portal\";\nimport type { DropdownSize } from \"@/internal/states\";\n\nimport styles from \"./Popover.module.css\";\nimport { usePopoverPosition } from \"./usePopoverPosition\";\n\nexport type PopoverSize = DropdownSize;\n\ntype Ctx = {\n isOpen: boolean;\n onClose: () => void;\n onToggle: () => void;\n triggerId: string;\n contentId: string;\n triggerRef: React.RefObject<HTMLElement | null>;\n};\n\nconst [PopoverProvider, usePopoverContext] = createComponentContext<Ctx>(\"Popover\");\n\nexport type PopoverRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n};\n\nfunction PopoverRoot({ open, defaultOpen = false, onOpenChange, children }: PopoverRootProps) {\n const [isOpen, setIsOpen] = useControllableState({\n value: open,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n const id = React.useId();\n const triggerId = `${id}-trigger`;\n const contentId = `${id}-content`;\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const onClose = React.useCallback(() => setIsOpen(false), [setIsOpen]);\n const onToggle = React.useCallback(() => setIsOpen((v) => !v), [setIsOpen]);\n\n const value = React.useMemo(\n () => ({ isOpen, onClose, onToggle, triggerId, contentId, triggerRef }),\n [isOpen, onClose, onToggle, triggerId, contentId],\n );\n\n return <PopoverProvider value={value}>{children}</PopoverProvider>;\n}\nPopoverRoot.displayName = \"PopoverRoot\";\n\nexport type PopoverTriggerProps = {\n children: React.ReactElement;\n asChild?: boolean;\n};\n\nfunction PopoverTrigger({ children, asChild: _asChild = true }: PopoverTriggerProps) {\n void _asChild;\n const { isOpen, onToggle, triggerId, contentId, triggerRef } = usePopoverContext();\n const toggleRef = React.useRef(onToggle);\n toggleRef.current = onToggle;\n\n const setNode = React.useCallback(\n (el: HTMLElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = el;\n },\n [triggerRef],\n );\n\n // biome-ignore lint/suspicious/noExplicitAny: cloneElement \u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u044B\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\n const child = children as React.ReactElement<any>;\n const childRef =\n (child.props as { ref?: React.Ref<HTMLElement | null> }).ref ??\n (child as unknown as { ref?: React.Ref<HTMLElement | null> }).ref;\n const mergedRef = React.useMemo(() => mergeRefs(childRef, setNode), [childRef, setNode]);\n const userClick = child.props?.onClick as React.MouseEventHandler<HTMLElement> | undefined;\n\n return React.cloneElement(child, {\n ref: mergedRef,\n id: triggerId,\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": \"dialog\",\n \"aria-controls\": contentId,\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n userClick?.(e);\n toggleRef.current();\n },\n });\n}\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nexport type PopoverInsetPadding = \"none\" | \"x1\" | \"x2\" | \"x3\";\nexport type PopoverInsetGap = \"none\" | \"pad\" | \"x2\" | \"x3\" | \"x4\";\n\nexport type PopoverContentProps = {\n align?: PositionAlign;\n side?: PositionSide;\n sameMinWidthAsTrigger?: boolean;\n size?: PopoverSize;\n trapFocus?: boolean;\n /** \u0414\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043A \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043F\u043E\u043B\u044F\u043C \u043A\u0430\u043A \u0443 Dropdown (`padding` = `--dd-pad` + inset). */\n insetPadding?: PopoverInsetPadding;\n /** \u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0437\u0430\u0437\u043E\u0440 \u043C\u0435\u0436\u0434\u0443 \u043F\u0440\u044F\u043C\u044B\u043C\u0438 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u043C\u0438 \u0431\u043B\u043E\u043A\u0430\u043C\u0438; `pad` = \u043A\u0430\u043A \u0443 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u043F\u043E\u043B\u0435\u0439 (`--dd-pad`). */\n insetGap?: PopoverInsetGap;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction PopoverContent({\n align = \"start\",\n side = \"bottom\",\n sameMinWidthAsTrigger = false,\n size = \"m\",\n trapFocus = false,\n insetPadding = \"none\",\n insetGap = \"pad\",\n children,\n className,\n}: PopoverContentProps) {\n const { isOpen, onClose, triggerRef, contentId, triggerId } = usePopoverContext();\n const overlayPortalLayer = useOverlayPortalLayer();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n const layout = usePopoverPosition({\n open: isOpen,\n triggerRef,\n contentRef,\n side,\n align,\n sameMinWidthAsTrigger,\n });\n\n const trapRef = useFocusTrap<HTMLDivElement>({\n enabled: isOpen && trapFocus,\n restoreFocus: true,\n });\n const ref = React.useMemo(() => mergeRefs(contentRef, trapRef), [trapRef]);\n\n useEscapeKey({ enabled: isOpen, onEscape: onClose });\n useOutsideClick({\n refs: [triggerRef, contentRef],\n enabled: isOpen,\n onOutsideClick: onClose,\n shouldSuppressOutsideClick: (target) =>\n isPortaledSelectListboxOwnedByContainer(target, contentRef.current),\n });\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <ControlSizeProvider value={size}>\n <ScrollContainer\n ref={ref}\n id={contentId}\n role=\"dialog\"\n aria-modal={false}\n aria-labelledby={triggerId}\n data-react-aria-top-layer=\"true\"\n data-overlay-portal-layer={overlayPortalLayer}\n data-side={layout?.resolvedSide ?? side}\n data-size={size}\n data-inset-padding={insetPadding}\n data-inset-gap={insetGap}\n className={cx(styles.popoverScroll, className)}\n style={layout?.style}\n >\n {children}\n </ScrollContainer>\n </ControlSizeProvider>\n </Portal>\n );\n}\nPopoverContent.displayName = \"PopoverContent\";\n\nexport const Popover = {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n};\n", "/* \u041A\u0430\u043A \u0443 Dropdown `.content`: \u043E\u0434\u0438\u043D ScrollContainer \u2014 \u0444\u043E\u043D, \u0441\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435, \u0442\u0435\u043D\u0438, padding, \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 (\u0431\u0435\u0437 \u0432\u0442\u043E\u0440\u043E\u0433\u043E \u0441\u043B\u043E\u044F \u043F\u043E\u0434 \u00AB\u0445\u0440\u043E\u043C\u00BB). */\n.popoverScroll {\n --dropdown-separator-mix: 40%;\n --dd-pad: var(--prime-sys-spacing-x3);\n --dd-min-w: var(--prime-sys-unit-11rem);\n --dd-item-gap: var(--prime-sys-size-control-m-gap);\n --dd-item-height: var(--prime-sys-size-control-m-height);\n --dd-item-pad-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-m-radius);\n --dd-item-text: var(--prime-sys-size-control-m-text);\n --dd-icon-size: var(--prime-sys-size-control-m-icon);\n --dd-group-label-font: var(--prime-sys-size-control-s-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x2);\n --dd-group-label-px: var(--prime-sys-spacing-x3);\n --dd-group-label-pb: var(--prime-sys-spacing-x1);\n --dd-header-gap: var(--prime-sys-spacing-x3);\n --dd-header-pad-inline: var(--prime-sys-spacing-x2);\n --dd-header-pad-block: var(--prime-sys-spacing-x3);\n --dd-header-desc-font: var(--prime-sys-size-control-s-supportText);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x2);\n --po-inset-extra: 0px;\n --po-inset-gap: var(--dd-pad);\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n position: fixed;\n width: max-content;\n max-width: min(var(--prime-sys-unit-20rem), 100vw);\n background: var(--prime-sys-color-surface-elevated);\n border: none;\n border-radius: var(--prime-sys-shape-radius-l);\n box-shadow: var(--prime-sys-elevation-shadow-surface), var(--prime-sys-elevation-shadow-modal);\n padding: calc(var(--dd-pad) + var(--po-inset-extra));\n min-width: var(--dd-min-w);\n box-sizing: border-box;\n margin: 0;\n transform-origin: top center;\n gap: var(--po-inset-gap);\n font-size: var(--dd-item-text);\n line-height: 1.25;\n color: var(--prime-sys-color-content-primary);\n}\n\n.popoverScroll[data-overlay-portal-layer=\"page\"] {\n z-index: var(--prime-sys-elevation-zIndex-popover);\n}\n\n.popoverScroll[data-overlay-portal-layer=\"drawer\"] {\n z-index: var(--prime-sys-elevation-zIndex-popoverInDrawer);\n}\n\n.popoverScroll[data-overlay-portal-layer=\"modal\"] {\n z-index: var(--prime-sys-elevation-zIndex-popoverInModal);\n}\n\n.popoverScroll[data-overlay-portal-layer=\"drawerInModal\"] {\n z-index: var(--prime-sys-elevation-zIndex-popoverInDrawerInModal);\n}\n\n.popoverScroll[data-size=\"s\"] {\n --dd-pad: calc((var(--prime-sys-spacing-x2) + var(--prime-sys-spacing-x3)) / 2);\n --dd-min-w: var(--prime-sys-unit-9p5rem);\n --dd-item-gap: var(--prime-sys-size-control-s-gap);\n --dd-item-height: var(--prime-sys-size-control-s-height);\n --dd-item-pad-x: var(--prime-sys-size-control-s-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-s-radius);\n --dd-item-text: var(--prime-sys-size-control-s-text);\n --dd-icon-size: var(--prime-sys-size-control-s-icon);\n --dd-group-label-font: var(--prime-sys-size-control-s-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x1);\n --dd-group-label-px: var(--prime-sys-spacing-x2);\n --dd-group-label-pb: var(--prime-sys-spacing-x1);\n --dd-header-gap: var(--prime-sys-spacing-x2);\n --dd-header-pad-inline: var(--prime-sys-spacing-x2);\n --dd-header-pad-block: var(--prime-sys-spacing-x3);\n}\n\n.popoverScroll[data-size=\"l\"] {\n --dd-pad: var(--prime-sys-spacing-x4);\n --dd-min-w: var(--prime-sys-unit-12p5rem);\n --dd-item-gap: var(--prime-sys-size-control-l-gap);\n --dd-item-height: var(--prime-sys-size-control-l-height);\n --dd-item-pad-x: var(--prime-sys-size-control-l-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-l-radius);\n --dd-item-text: var(--prime-sys-size-control-l-text);\n --dd-icon-size: var(--prime-sys-size-control-l-icon);\n --dd-group-label-font: var(--prime-sys-size-control-l-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x2);\n --dd-group-label-px: var(--prime-sys-spacing-x4);\n --dd-group-label-pb: var(--prime-sys-spacing-x2);\n --dd-header-desc-font: var(--prime-sys-size-control-m-supportText);\n --dd-header-pad-inline: var(--prime-sys-spacing-x3);\n --dd-header-pad-block: var(--prime-sys-spacing-x4);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x3);\n}\n\n.popoverScroll[data-size=\"xl\"] {\n --dd-pad: var(--prime-sys-spacing-x5);\n --dd-min-w: var(--prime-sys-unit-14rem);\n --dd-item-gap: var(--prime-sys-size-control-xl-gap);\n --dd-item-height: var(--prime-sys-size-control-xl-height);\n --dd-item-pad-x: var(--prime-sys-size-control-xl-buttonPaddingX);\n --dd-item-radius: var(--prime-sys-size-control-xl-radius);\n --dd-item-text: var(--prime-sys-size-control-xl-text);\n --dd-icon-size: var(--prime-sys-size-control-xl-icon);\n --dd-group-label-font: var(--prime-sys-size-control-xl-supportText);\n --dd-group-label-pt: var(--prime-sys-spacing-x3);\n --dd-group-label-px: var(--prime-sys-spacing-x4);\n --dd-group-label-pb: var(--prime-sys-spacing-x2);\n --dd-header-gap: var(--prime-sys-spacing-x3);\n --dd-header-desc-font: var(--prime-sys-size-control-xl-supportText);\n --dd-header-pad-inline: var(--prime-sys-spacing-x3);\n --dd-header-pad-block: var(--prime-sys-spacing-x4);\n --dd-separator-stack-pad: var(--prime-sys-spacing-x3);\n}\n\n.popoverScroll[data-inset-padding=\"none\"] {\n --po-inset-extra: 0px;\n}\n\n.popoverScroll[data-inset-padding=\"x1\"] {\n --po-inset-extra: var(--prime-sys-spacing-x1);\n}\n\n.popoverScroll[data-inset-padding=\"x2\"] {\n --po-inset-extra: var(--prime-sys-spacing-x2);\n}\n\n.popoverScroll[data-inset-padding=\"x3\"] {\n --po-inset-extra: var(--prime-sys-spacing-x3);\n}\n\n.popoverScroll[data-inset-gap=\"none\"] {\n --po-inset-gap: 0;\n}\n\n.popoverScroll[data-inset-gap=\"x2\"] {\n --po-inset-gap: var(--prime-sys-spacing-x2);\n}\n\n.popoverScroll[data-inset-gap=\"x3\"] {\n --po-inset-gap: var(--prime-sys-spacing-x3);\n}\n\n.popoverScroll[data-inset-gap=\"x4\"] {\n --po-inset-gap: var(--prime-sys-spacing-x4);\n}\n\n:global([data-theme=\"dark\"]) .popoverScroll {\n background: var(--prime-sys-color-surface-raised);\n}\n\n.popoverScroll[data-side=\"bottom\"] {\n animation: popoverInBottom var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.popoverScroll[data-side=\"top\"] {\n transform-origin: bottom center;\n animation: popoverInTop var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n@keyframes popoverInBottom {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(calc(-1 * var(--prime-sys-unit-4px)));\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes popoverInTop {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(var(--prime-sys-unit-4px));\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .popoverScroll[data-side=\"bottom\"],\n .popoverScroll[data-side=\"top\"] {\n animation: none;\n }\n}\n", "import * as React from \"react\";\n\nimport type { PositionAlign, PositionSide } from \"@/hooks/usePosition\";\nimport { computeFloatingPosition } from \"@/hooks/usePosition\";\nimport { getScrollContainers } from \"@/internal/scrollAncestors\";\n\nimport {\n getPopoverMaxHeightForAnchorSide,\n getPopoverPanelOffsetPx,\n getPopoverViewportPadPx,\n} from \"./popoverGeometry\";\n\nexport type PopoverLayout = {\n style: React.CSSProperties;\n resolvedSide: PositionSide;\n};\n\ntype Params = {\n open: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n contentRef: React.RefObject<HTMLDivElement | null>;\n side: PositionSide;\n align: PositionAlign;\n sameMinWidthAsTrigger: boolean;\n};\n\nfunction layoutEqual(a: PopoverLayout, b: PopoverLayout): boolean {\n return (\n a.resolvedSide === b.resolvedSide &&\n a.style.top === b.style.top &&\n a.style.left === b.style.left &&\n a.style.maxHeight === b.style.maxHeight &&\n a.style.minWidth === b.style.minWidth &&\n a.style.width === b.style.width &&\n a.style.boxSizing === b.style.boxSizing\n );\n}\n\n/** \u041F\u043E\u0437\u0438\u0446\u0438\u044F + max-height \u043E\u0434\u043D\u0438\u043C \u043F\u0440\u043E\u0445\u043E\u0434\u043E\u043C; resize / scroll-\u043F\u0440\u0435\u0434\u043A\u0438 / ResizeObserver / visualViewport. */\nexport function usePopoverPosition({\n open,\n triggerRef,\n contentRef,\n side,\n align,\n sameMinWidthAsTrigger,\n}: Params): PopoverLayout | null {\n const [layout, setLayout] = React.useState<PopoverLayout | null>(null);\n\n const commit = React.useCallback(() => {\n const trigger = triggerRef.current;\n const panel = contentRef.current;\n if (!trigger || !panel) return;\n\n const anchorRect = trigger.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const panelOffset = getPopoverPanelOffsetPx();\n const viewportPad = getPopoverViewportPadPx();\n const pos = computeFloatingPosition(anchorRect, panel.offsetWidth, panel.offsetHeight, vw, vh, {\n preferredSide: side,\n align,\n offset: panelOffset,\n viewportPad,\n flip: true,\n matchTriggerMinWidth: sameMinWidthAsTrigger,\n });\n\n const anchorW = Math.round(anchorRect.width);\n const matchTriggerBox =\n sameMinWidthAsTrigger && anchorW > 0\n ? { width: anchorW, minWidth: anchorW, boxSizing: \"border-box\" as const }\n : pos.minWidth !== undefined\n ? { minWidth: pos.minWidth }\n : {};\n\n const next: PopoverLayout = {\n resolvedSide: pos.resolvedSide,\n style: {\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n maxHeight: getPopoverMaxHeightForAnchorSide(\n anchorRect,\n pos.resolvedSide,\n vh,\n panelOffset,\n viewportPad,\n ),\n ...matchTriggerBox,\n },\n };\n\n setLayout((prev) => (prev && layoutEqual(prev, next) ? prev : next));\n }, [triggerRef, contentRef, side, align, sameMinWidthAsTrigger]);\n\n React.useLayoutEffect(() => {\n if (!open) {\n setLayout(null);\n return;\n }\n\n let rafCoalesce = 0;\n const schedule = () => {\n cancelAnimationFrame(rafCoalesce);\n rafCoalesce = requestAnimationFrame(commit);\n };\n\n commit();\n const rafFollowUp = requestAnimationFrame(commit);\n\n window.addEventListener(\"resize\", schedule);\n const scrollTargets = getScrollContainers(triggerRef.current);\n for (const t of scrollTargets) {\n t.addEventListener(\"scroll\", schedule, { passive: true });\n }\n const vv = window.visualViewport;\n vv?.addEventListener(\"resize\", schedule);\n\n const panel = contentRef.current;\n const ro = panel ? new ResizeObserver(schedule) : null;\n if (panel && ro) ro.observe(panel);\n\n return () => {\n cancelAnimationFrame(rafFollowUp);\n cancelAnimationFrame(rafCoalesce);\n window.removeEventListener(\"resize\", schedule);\n for (const t of scrollTargets) {\n t.removeEventListener(\"scroll\", schedule);\n }\n vv?.removeEventListener(\"resize\", schedule);\n ro?.disconnect();\n };\n }, [open, commit, triggerRef, contentRef]);\n\n return layout;\n}\n", "import type { PositionSide } from \"@/hooks/usePosition\";\nimport {\n getFloatingPanelOffsetPx,\n getFloatingViewportPadPx,\n} from \"@/internal/layoutPxFromPrimitives\";\n\nexport const POPOVER_MIN_MAX_HEIGHT = 120;\n\nexport function getPopoverMaxHeightForAnchorSide(\n anchor: DOMRectReadOnly,\n side: PositionSide,\n viewportHeight: number,\n panelOffsetPx: number,\n viewportPadPx: number,\n): number {\n const raw =\n side === \"bottom\"\n ? viewportHeight - anchor.bottom - panelOffsetPx - viewportPadPx\n : anchor.top - panelOffsetPx - viewportPadPx;\n return Math.floor(Math.max(POPOVER_MIN_MAX_HEIGHT, raw));\n}\n\nexport function getPopoverPanelOffsetPx(): number {\n return getFloatingPanelOffsetPx();\n}\n\nexport function getPopoverViewportPadPx(): number {\n return getFloatingViewportPadPx();\n}\n", "import * as React from \"react\";\nimport { cx } from \"@/internal/cx\";\nimport { remToPx } from \"@/internal/layoutPxFromPrimitives\";\nimport { primitiveTokens } from \"../../../tokens/primitives\";\n\nimport styles from \"./ProgressCircle.module.css\";\n\nconst pc = primitiveTokens.progressCircle;\n\nexport type ProgressCircleSize = keyof typeof pc;\n\nexport type ProgressCircleRootProps = {\n value: number;\n max?: number;\n size?: ProgressCircleSize;\n label?: string;\n children?: React.ReactNode;\n className?: string;\n};\n\nfunction clampProgress(value: number, max: number): number {\n return Math.min(max, Math.max(value, 0));\n}\n\nconst ProgressCircleRoot = React.forwardRef<HTMLDivElement, ProgressCircleRootProps>(\n ({ value, max = 100, size = \"m\", label, children, className }, ref) => {\n const safeMax = max > 0 ? max : 100;\n const safeValue = clampProgress(value, safeMax);\n const tier = pc[size];\n const sizeVal = remToPx(tier.diameter);\n const strokeWidth = Number.parseInt(tier.strokeWidth, 10);\n const radius = (sizeVal - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - safeValue / safeMax);\n const center = sizeVal / 2;\n const innerSize = sizeVal - strokeWidth * 2;\n\n return (\n <div\n ref={ref}\n className={cx(styles.root, className)}\n data-size={size}\n style={\n {\n \"--progress-circle-inner-size\": `${innerSize}px`,\n } as React.CSSProperties\n }\n >\n <svg\n width={sizeVal}\n height={sizeVal}\n viewBox={`0 0 ${sizeVal} ${sizeVal}`}\n role=\"progressbar\"\n aria-valuenow={safeValue}\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-label={label}\n >\n <circle\n cx={center}\n cy={center}\n r={radius}\n className={styles.track}\n fill=\"none\"\n strokeWidth={strokeWidth}\n />\n <circle\n cx={center}\n cy={center}\n r={radius}\n className={styles.fill}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${center} ${center})`}\n />\n </svg>\n {children ? <div className={styles.inner}>{children}</div> : null}\n </div>\n );\n },\n);\n\nProgressCircleRoot.displayName = \"ProgressCircleRoot\";\n\nexport const ProgressCircle = { Root: ProgressCircleRoot };\n", ".root {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.track {\n stroke: var(--prime-sys-color-surface-accentSoft);\n}\n\n.fill {\n stroke: var(--prime-sys-color-action-primaryBackground);\n stroke-linecap: round;\n transition: stroke-dashoffset var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.inner {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: var(--prime-sys-typography-weight-medium);\n color: var(--prime-sys-color-content-primary);\n width: var(--progress-circle-inner-size);\n height: var(--progress-circle-inner-size);\n padding: var(--prime-sys-spacing-xs);\n box-sizing: border-box;\n}\n\n.root[data-size=\"s\"] .inner {\n font-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"m\"] .inner {\n font-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"l\"] .inner {\n font-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] .inner {\n font-size: var(--prime-sys-size-control-xl-text);\n}\n", "import * as React from \"react\";\nimport { Hint } from \"@/components/hint/Hint\";\nimport { Label } from \"@/components/label/Label\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { HintSize, LabelSize, RadioSize, RadioVariant } from \"@/internal/states\";\n\nimport styles from \"./Radio.module.css\";\n\ntype RadioContextValue = {\n inputId: string;\n hintId: string;\n errorId: string;\n size: RadioSize;\n inputRef: React.Ref<HTMLInputElement>;\n invalid: boolean;\n disabled: boolean;\n describedBy: string | undefined;\n restInputPropsRef: React.MutableRefObject<React.InputHTMLAttributes<HTMLInputElement>>;\n registerHint: () => void;\n unregisterHint: () => void;\n registerError: () => void;\n unregisterError: () => void;\n};\n\nconst [RadioProvider, useRadioContext] = createComponentContext<RadioContextValue>(\"Radio\");\n\nexport type RadioRootProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> & {\n variant?: RadioVariant;\n size?: RadioSize;\n};\n\nconst RadioRoot = React.forwardRef<HTMLInputElement, RadioRootProps>(\n (\n {\n id,\n variant = \"default\",\n size = \"m\",\n disabled,\n className,\n \"aria-describedby\": ariaDescribedBy,\n children,\n ...inputRest\n },\n ref,\n ) => {\n const rawId = React.useId();\n const inputId = id ?? rawId;\n const hintId = `${inputId}-hint`;\n const errorId = `${inputId}-error`;\n\n const [hasHint, setHasHint] = React.useState(false);\n const [hasError, setHasError] = React.useState(false);\n\n const invalid = variant === \"error\" || hasError;\n\n const restInputPropsRef = React.useRef<React.InputHTMLAttributes<HTMLInputElement>>(inputRest);\n restInputPropsRef.current = inputRest;\n\n const parts = [\n ariaDescribedBy,\n hasHint ? hintId : undefined,\n hasError ? errorId : undefined,\n ].filter(Boolean);\n const describedBy = parts.length > 0 ? parts.join(\" \") : undefined;\n\n const registerHint = React.useCallback(() => setHasHint(true), []);\n const unregisterHint = React.useCallback(() => setHasHint(false), []);\n const registerError = React.useCallback(() => setHasError(true), []);\n const unregisterError = React.useCallback(() => setHasError(false), []);\n\n const ctxValue = React.useMemo(\n () => ({\n inputId,\n hintId,\n errorId,\n size,\n inputRef: ref,\n invalid,\n disabled: Boolean(disabled),\n describedBy,\n restInputPropsRef,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n }),\n [\n inputId,\n hintId,\n errorId,\n size,\n ref,\n invalid,\n disabled,\n describedBy,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n ],\n );\n\n return (\n <RadioProvider value={ctxValue}>\n <ControlSizeProvider value={size}>\n <div\n className={cx(styles.field, className)}\n {...toDataAttributes({\n size,\n variant,\n disabled: Boolean(disabled),\n invalid,\n })}\n >\n {children}\n </div>\n </ControlSizeProvider>\n </RadioProvider>\n );\n },\n);\n\nRadioRoot.displayName = \"RadioRoot\";\n\n// \u2500\u2500\u2500 Label \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type RadioLabelProps = {\n children?: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLLabelElement>, \"htmlFor\" | \"size\">;\n\nconst RadioLabel = React.forwardRef<HTMLLabelElement, RadioLabelProps>(function RadioLabel(\n { children, className, ...rest },\n ref,\n) {\n const { inputId, inputRef, invalid, disabled, describedBy, restInputPropsRef, size } =\n useRadioContext();\n\n const filterId = React.useId();\n const svgFilterId = `es-radio-${filterId.replace(/:/g, \"\")}`;\n\n return (\n <Label.Root\n ref={ref}\n htmlFor={inputId}\n size={size as LabelSize}\n disabled={disabled}\n className={cx(styles.labelRow, className)}\n {...rest}\n >\n <span className={styles.controlCell}>\n <input\n ref={inputRef}\n id={inputId}\n type=\"radio\"\n className={styles.input}\n disabled={disabled}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy || undefined}\n {...restInputPropsRef.current}\n />\n <svg viewBox=\"0 0 18 18\" className={styles.svg} aria-hidden=\"true\">\n <defs>\n <filter id={svgFilterId}>\n <feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"0.5\" floodOpacity=\"0.10\" />\n </filter>\n </defs>\n <circle\n cx=\"9\"\n cy=\"9\"\n r=\"8\"\n className={styles.outerCircle}\n filter={`url(#${svgFilterId})`}\n />\n <circle cx=\"9\" cy=\"9\" r=\"4\" className={styles.innerCircle} />\n </svg>\n </span>\n {children !== undefined && children !== null ? (\n <span className={styles.text}>{children}</span>\n ) : null}\n </Label.Root>\n );\n});\n\nRadioLabel.displayName = \"RadioLabel\";\n\n// \u2500\u2500\u2500 Hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type RadioHintProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction RadioHint({ children, className, ...rest }: RadioHintProps) {\n const { hintId, registerHint, unregisterHint, size, disabled } = useRadioContext();\n\n React.useLayoutEffect(() => {\n registerHint();\n return () => {\n unregisterHint();\n };\n }, [registerHint, unregisterHint]);\n\n return (\n <Hint.Root\n id={hintId}\n size={size as HintSize}\n variant={disabled ? \"disabled\" : \"default\"}\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nRadioHint.displayName = \"RadioHint\";\n\n// \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type RadioErrorProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction RadioError({ children, className, ...rest }: RadioErrorProps) {\n const { errorId, registerError, unregisterError, size } = useRadioContext();\n\n React.useLayoutEffect(() => {\n registerError();\n return () => {\n unregisterError();\n };\n }, [registerError, unregisterError]);\n\n return (\n <Hint.Root\n id={errorId}\n size={size as HintSize}\n variant=\"error\"\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nRadioError.displayName = \"RadioError\";\n\n// \u2500\u2500\u2500 Namespace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Radio = {\n Root: RadioRoot,\n Label: RadioLabel,\n Hint: RadioHint,\n Error: RadioError,\n};\n", ".field {\n --prime-choice-control-size: var(--prime-sys-size-choice-m-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-m-inputPaddingX);\n --prime-choice-hint-offset: calc(var(--prime-choice-control-size) + var(--prime-choice-col-gap));\n --prime-choice-stack-gap: var(--prime-sys-size-control-m-gap);\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-choice-stack-gap);\n}\n\n.field[data-size=\"s\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-s-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-s-inputPaddingX);\n}\n\n.field[data-size=\"l\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-l-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-l-inputPaddingX);\n}\n\n.field[data-size=\"xl\"] {\n --prime-choice-control-size: var(--prime-sys-size-choice-xl-control);\n --prime-choice-col-gap: var(--prime-sys-size-control-xl-inputPaddingX);\n}\n\n.field .labelRow {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0;\n row-gap: 0;\n column-gap: var(--prime-choice-col-gap);\n align-items: center;\n width: 100%;\n cursor: pointer;\n}\n\n.controlCell {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--prime-choice-control-size);\n height: var(--prime-choice-control-size);\n}\n\n.input {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n.svg {\n width: var(--prime-choice-control-size);\n height: var(--prime-choice-control-size);\n flex-shrink: 0;\n display: inline-flex;\n transition: box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.outerCircle {\n fill: var(--prime-sys-color-surface-raised);\n stroke: var(--prime-sys-color-field-border);\n stroke-width: 1;\n transition:\n fill var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n stroke var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.innerCircle {\n fill: var(--prime-sys-color-action-primaryBackground);\n transform-origin: center;\n transform: scale(0);\n opacity: 0;\n transition:\n transform var(--prime-sys-motion-fast) var(--prime-sys-motion-standard),\n opacity var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.controlCell .input:checked + .svg .outerCircle {\n stroke: var(--prime-sys-color-action-primaryBackground);\n}\n\n.controlCell .input:checked + .svg .innerCircle {\n transform: scale(1);\n opacity: 1;\n}\n\n.labelRow:hover .svg .outerCircle {\n stroke: var(--prime-sys-color-field-borderHover);\n fill: var(--prime-sys-color-action-neutralBackgroundHover);\n}\n\n.labelRow:hover .controlCell .input:checked + .svg .outerCircle {\n stroke: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n.controlCell .input:focus-visible + .svg {\n border-radius: var(--prime-sys-shape-radius-round);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.controlCell .input:focus-visible + .svg .outerCircle {\n stroke: var(--prime-sys-color-field-borderFocus);\n}\n\n.field[data-invalid=\"true\"] .svg .outerCircle {\n stroke: var(--prime-sys-color-field-borderError);\n}\n\n.field[data-invalid=\"true\"] .svg .innerCircle {\n fill: var(--prime-sys-color-border-danger);\n}\n\n.field[data-disabled=\"true\"] .labelRow {\n cursor: not-allowed;\n}\n\n.field[data-disabled=\"true\"] .svg .outerCircle {\n filter: none;\n stroke: var(--prime-sys-color-border-subtle);\n fill: var(--prime-sys-color-surface-accentSoft);\n}\n\n.text {\n line-height: var(--prime-sys-typography-body-lineHeight);\n min-width: 0;\n}\n\n.hintSlot {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n padding-inline-start: var(--prime-choice-hint-offset);\n justify-content: flex-start;\n}\n", "import * as React from \"react\";\n\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { ProgressBarSize } from \"@/internal/states\";\n\nimport styles from \"./SegmentedProgressBar.module.css\";\n\nexport type { ProgressBarSize };\n\nexport type SegmentedProgressSegmentTone = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\nexport type SegmentedProgressSegment = {\n /** Non-negative weight; segments are sized proportionally to the sum of all weights. */\n value: number;\n label?: string;\n tone?: SegmentedProgressSegmentTone;\n};\n\nexport type SegmentedProgressBarRootProps = {\n segments: SegmentedProgressSegment[];\n label?: string;\n size?: ProgressBarSize;\n /** Visual gap between segments; `hairline` draws a 1px separator using the track background. */\n segmentGap?: \"none\" | \"hairline\";\n className?: string;\n};\n\nfunction clampNonNegative(n: number): number {\n return Number.isFinite(n) && n > 0 ? n : 0;\n}\n\nfunction buildDistributionDescription(segments: SegmentedProgressSegment[], total: number): string {\n if (segments.length === 0) {\n return \"No segments\";\n }\n if (total <= 0) {\n return \"All segments empty\";\n }\n const parts = segments.map((s) => {\n const pct = Math.round((clampNonNegative(s.value) / total) * 100);\n return s.label ? `${s.label}: ${pct}%` : `${pct}%`;\n });\n return parts.join(\", \");\n}\n\nconst SegmentedProgressBarRoot = React.forwardRef<HTMLDivElement, SegmentedProgressBarRootProps>(\n ({ segments, label, size = \"m\", segmentGap = \"none\", className }, ref) => {\n const labelId = React.useId();\n const descriptionId = React.useId();\n const safe = React.useMemo(\n () => segments.map((s) => ({ ...s, value: clampNonNegative(s.value) })),\n [segments],\n );\n const total = React.useMemo(() => safe.reduce((acc, s) => acc + s.value, 0), [safe]);\n\n const distributionText = buildDistributionDescription(safe, total);\n\n const trackA11y = label\n ? { \"aria-labelledby\": labelId, \"aria-describedby\": descriptionId }\n : { \"aria-label\": distributionText };\n\n return (\n <div\n className={cx(styles.root, className)}\n {...toDataAttributes({ size, \"segment-gap\": segmentGap })}\n >\n {label ? (\n <span className={styles.label} id={labelId}>\n {label}\n </span>\n ) : null}\n {label ? (\n <span id={descriptionId} className={styles.visuallyHidden}>\n {distributionText}\n </span>\n ) : null}\n {/* biome-ignore lint/a11y/useSemanticElements: distribution track is not a form fieldset; role=\"group\" matches WAI-ARIA grouping */}\n <div ref={ref} className={styles.track} role=\"group\" {...trackA11y}>\n {total > 0\n ? safe.map((seg, i) => {\n /* flex-grow \u043F\u043E \u0432\u0435\u0441\u0443 \u2014 \u043D\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F % \u0448\u0438\u0440\u0438\u043D\u044B \u043F\u0440\u0438 shrink-to-fit \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u0435 (playground stack). */\n return (\n <div\n // biome-ignore lint/suspicious/noArrayIndexKey: segments are presentational bars in source order; no reorder/dnd\n key={i}\n className={styles.segment}\n style={{ flex: `${seg.value} 1 0%` }}\n {...toDataAttributes({ tone: seg.tone ?? \"primary\" })}\n title={seg.label}\n />\n );\n })\n : null}\n </div>\n </div>\n );\n },\n);\n\nSegmentedProgressBarRoot.displayName = \"SegmentedProgressBarRoot\";\n\nexport const SegmentedProgressBar = { Root: SegmentedProgressBarRoot };\n", "/* \u0412\u044B\u0441\u043E\u0442\u0430 \u0442\u0440\u0435\u043A\u0430 \u2014 \u043A\u0430\u043A \u0443 ProgressBar (Slider control-height). */\n.root {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: var(--seg-progress-root-gap);\n width: 100%;\n}\n\n.root[data-size=\"s\"] {\n --seg-progress-root-gap: var(--prime-sys-size-control-s-gap);\n --seg-progress-track-h: var(--prime-sys-spacing-xs);\n --seg-progress-label-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"m\"] {\n --seg-progress-root-gap: var(--prime-sys-size-control-m-gap);\n --seg-progress-track-h: var(--prime-sys-spacing-xs);\n --seg-progress-label-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"l\"] {\n --seg-progress-root-gap: var(--prime-sys-size-control-l-gap);\n --seg-progress-track-h: var(--prime-sys-spacing-s);\n --seg-progress-label-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] {\n --seg-progress-root-gap: var(--prime-sys-size-control-xl-gap);\n --seg-progress-track-h: var(--prime-sys-spacing-s);\n --seg-progress-label-size: var(--prime-sys-size-control-xl-text);\n}\n\n.label {\n font-size: var(--seg-progress-label-size);\n color: var(--prime-sys-color-content-primary);\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.track {\n display: flex;\n flex-direction: row;\n width: 100%;\n min-height: var(--seg-progress-track-h);\n border-radius: var(--prime-sys-shape-radius-round);\n overflow: hidden;\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.root[data-segment-gap=\"hairline\"] .track {\n gap: 1px;\n background: var(--prime-sys-color-border-subtle);\n}\n\n.root[data-segment-gap=\"none\"] .track {\n gap: 0;\n}\n\n/* \u0421\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0443 \u0442\u0440\u0435\u043A\u0430 (overflow: hidden) \u2014 \u043D\u0435 \u0443 \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430, \u0438\u043D\u0430\u0447\u0435 \u00AB\u043A\u0430\u043F\u0441\u0443\u043B\u044B\u00BB \u0438 \u0437\u0430\u0437\u043E\u0440\u044B. */\n.segment {\n box-sizing: border-box;\n min-width: 0;\n height: var(--seg-progress-track-h);\n border-radius: 0;\n transition:\n flex-grow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.segment[data-tone=\"primary\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n}\n\n.segment[data-tone=\"success\"] {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n}\n\n.segment[data-tone=\"warning\"] {\n background: var(--prime-sys-color-status-warning-backgroundEmphasis);\n}\n\n.segment[data-tone=\"danger\"] {\n background: var(--prime-sys-color-action-errorBackground);\n}\n\n.segment[data-tone=\"neutral\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n}\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { SliderSize } from \"@/internal/states\";\n\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { cx } from \"../../internal/cx\";\n\nimport styles from \"./Slider.module.css\";\n\nexport type { SliderSize };\n\nexport type SliderRootProps = {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n onChange?: (value: number) => void;\n label?: string;\n size?: SliderSize;\n className?: string;\n \"aria-label\"?: string;\n};\n\nfunction clamp(n: number, min: number, max: number) {\n return Math.min(max, Math.max(min, n));\n}\n\nfunction SliderRoot({\n value: valueProp,\n defaultValue,\n min: minProp,\n max: maxProp,\n step: stepProp,\n disabled,\n onChange,\n label,\n size = \"m\",\n className,\n \"aria-label\": ariaLabel,\n}: SliderRootProps) {\n const min = minProp ?? 0;\n const max = maxProp ?? 100;\n const step = stepProp ?? 1;\n const initialDefault = defaultValue ?? min;\n const [value, setValue] = useControllableState({\n value: valueProp,\n defaultValue: clamp(initialDefault, min, max),\n onChange,\n });\n\n const id = React.useId();\n const safeValue = clamp(value, min, max);\n\n const applyValueFromInput = (el: HTMLInputElement) => {\n const next = Number.parseFloat(el.value);\n if (Number.isNaN(next)) {\n return;\n }\n setValue(next);\n };\n\n const handleRangeChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n applyValueFromInput(e.currentTarget);\n };\n\n const handleRangeInput = (e: React.FormEvent<HTMLInputElement>) => {\n applyValueFromInput(e.currentTarget);\n };\n\n return (\n <div className={cx(styles.root, className)} {...toDataAttributes({ size })}>\n <ControlSizeProvider value={size}>\n {label ? (\n <label className={styles.label} htmlFor={id}>\n {label}\n </label>\n ) : null}\n <input\n id={label ? id : undefined}\n type=\"range\"\n className={styles.track}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n value={safeValue}\n onChange={handleRangeChange}\n onInput={handleRangeInput}\n aria-label={ariaLabel}\n />\n </ControlSizeProvider>\n </div>\n );\n}\n\nSliderRoot.displayName = \"SliderRoot\";\n\nexport const Slider = { Root: SliderRoot };\n", "/* \u0412\u044B\u0441\u043E\u0442\u0430 \u0442\u0440\u0435\u043A\u0430 \u0438 \u0431\u0435\u0433\u0443\u043D\u043A\u0430 \u2014 \u0434\u043E\u043B\u044F control-height \u0442\u043E\u0433\u043E \u0436\u0435 \u044F\u0440\u0443\u0441\u0430, \u0447\u0442\u043E\u0431\u044B \u043C\u0430\u0441\u0448\u0442\u0430\u0431 \u0448\u0451\u043B \u0441 \u0442\u043E\u043A\u0435\u043D\u0430\u043C\u0438. */\n.root {\n display: flex;\n flex-direction: column;\n gap: var(--slider-root-gap);\n width: 100%;\n}\n\n.root[data-size=\"s\"] {\n --slider-root-gap: var(--prime-sys-size-control-s-gap);\n --slider-track-h: var(--prime-sys-spacing-xs);\n --slider-thumb-size: var(--prime-sys-size-control-s-icon);\n --slider-label-size: var(--prime-sys-size-control-s-text);\n}\n\n.root[data-size=\"m\"] {\n --slider-root-gap: var(--prime-sys-size-control-m-gap);\n --slider-track-h: var(--prime-sys-spacing-xs);\n --slider-thumb-size: var(--prime-sys-size-control-m-icon);\n --slider-label-size: var(--prime-sys-size-control-m-text);\n}\n\n.root[data-size=\"l\"] {\n --slider-root-gap: var(--prime-sys-size-control-l-gap);\n --slider-track-h: var(--prime-sys-spacing-s);\n --slider-thumb-size: var(--prime-sys-size-control-l-icon);\n --slider-label-size: var(--prime-sys-size-control-l-text);\n}\n\n.root[data-size=\"xl\"] {\n --slider-root-gap: var(--prime-sys-size-control-xl-gap);\n --slider-track-h: var(--prime-sys-spacing-s);\n --slider-thumb-size: var(--prime-sys-size-control-xl-icon);\n --slider-label-size: var(--prime-sys-size-control-xl-text);\n}\n\n.track {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: var(--slider-track-h);\n border-radius: var(--prime-sys-shape-radius-round);\n outline: none;\n cursor: pointer;\n background: var(--prime-sys-color-surface-accentSoft);\n accent-color: var(--prime-sys-color-action-primaryBackground);\n}\n\n.track::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: var(--slider-thumb-size);\n height: var(--slider-thumb-size);\n border-radius: var(--prime-sys-shape-radius-round);\n background: var(--prime-sys-color-surface-elevated);\n border: var(--prime-sys-border-width-focusRing) solid\n var(--prime-sys-color-action-primaryBackground);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n transition: box-shadow var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.track:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.track::-webkit-slider-thumb:hover {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.track:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.track::-moz-range-thumb {\n width: var(--slider-thumb-size);\n height: var(--slider-thumb-size);\n border-radius: var(--prime-sys-shape-radius-round);\n background: var(--prime-sys-color-surface-elevated);\n border: var(--prime-sys-border-width-focusRing) solid\n var(--prime-sys-color-action-primaryBackground);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n cursor: pointer;\n transition: box-shadow var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.track::-moz-range-track {\n height: var(--slider-track-h);\n border-radius: var(--prime-sys-shape-radius-round);\n background: var(--prime-sys-color-surface-accentSoft);\n}\n\n.label {\n font-size: var(--slider-label-size);\n color: var(--prime-sys-color-content-primary);\n}\n", "import * as React from \"react\";\n\nimport { IconChevronRight } from \"@/icons\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport type { StepperSize } from \"@/internal/states\";\nimport alignStyles from \"./StepperAlign.module.css\";\nimport {\n StepperAlignCheckIcon,\n StepperAlignItemProvider,\n type StepperAlignItemState,\n useStepperAlignItemState,\n} from \"./stepperAlignContext\";\n\nexport type HorizontalStepperRootProps = React.HTMLAttributes<HTMLDivElement> & {\n size?: StepperSize;\n};\n\nfunction HorizontalStepperRoot({\n className,\n size = \"m\",\n children,\n ...rest\n}: HorizontalStepperRootProps) {\n return (\n <ControlSizeProvider value={size}>\n <div className={cx(alignStyles.hRoot, className)} data-size={size} {...rest}>\n {children}\n </div>\n </ControlSizeProvider>\n );\n}\n\nHorizontalStepperRoot.displayName = \"HorizontalStepper.Root\";\n\nexport type HorizontalStepperSeparatorIconProps<\n T extends React.ElementType = typeof IconChevronRight,\n> = {\n as?: T;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"as\" | \"className\">;\n\nfunction HorizontalStepperSeparatorIcon<T extends React.ElementType = typeof IconChevronRight>({\n as,\n className,\n ...rest\n}: HorizontalStepperSeparatorIconProps<T>) {\n const Component = (as ?? IconChevronRight) as React.ElementType;\n\n return (\n <span className={alignStyles.hSeparator} aria-hidden=\"true\">\n <Component className={cx(alignStyles.hSeparatorIcon, className)} strokeWidth={2} {...rest} />\n </span>\n );\n}\n\nHorizontalStepperSeparatorIcon.displayName = \"HorizontalStepper.SeparatorIcon\";\n\nexport type HorizontalStepperItemProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\"\n> & {\n state?: StepperAlignItemState;\n type?: \"button\" | \"submit\" | \"reset\";\n};\n\nconst HorizontalStepperItem = React.forwardRef<HTMLButtonElement, HorizontalStepperItemProps>(\n function HorizontalStepperItem(\n { state = \"default\", className, type = \"button\", children, ...rest },\n ref,\n ) {\n return (\n <StepperAlignItemProvider value={{ state }}>\n <button\n ref={ref}\n type={type}\n className={cx(alignStyles.hItem, className)}\n data-state={state}\n {...rest}\n >\n {children}\n </button>\n </StepperAlignItemProvider>\n );\n },\n);\n\nHorizontalStepperItem.displayName = \"HorizontalStepper.Item\";\n\nexport type HorizontalStepperItemIndicatorProps = React.HTMLAttributes<HTMLDivElement> & {\n state?: StepperAlignItemState;\n};\n\nfunction HorizontalStepperItemIndicator({\n state: stateProp,\n className,\n children,\n ...rest\n}: HorizontalStepperItemIndicatorProps) {\n const { state: ctxState } = useStepperAlignItemState();\n const state = stateProp ?? ctxState;\n\n if (state === \"completed\") {\n return (\n <div className={cx(alignStyles.hIndicator, className)} data-state={state} {...rest}>\n <StepperAlignCheckIcon className={alignStyles.hCheck} />\n </div>\n );\n }\n\n return (\n <div className={cx(alignStyles.hIndicator, className)} data-state={state} {...rest}>\n {children}\n </div>\n );\n}\n\nHorizontalStepperItemIndicator.displayName = \"HorizontalStepper.ItemIndicator\";\n\nexport const HorizontalStepper = {\n Root: HorizontalStepperRoot,\n SeparatorIcon: HorizontalStepperSeparatorIcon,\n Item: HorizontalStepperItem,\n ItemIndicator: HorizontalStepperItemIndicator,\n};\n", "/* HorizontalStepper / VerticalStepper: \u043A\u0440\u0443\u0433 \u043E\u0442 \u0432\u044B\u0441\u043E\u0442\u044B \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430 data-size; \u0433\u0435\u043F\u044B \u0438 \u043F\u0430\u0434\u0434\u0438\u043D\u0433\u0438 \u0440\u0430\u0441\u0442\u0443\u0442 \u0441 \u0442\u0438\u0440\u043E\u043C. */\n\n.hRoot,\n.vRoot {\n --st-ctrl-h: var(--prime-sys-size-control-m-height);\n --st-ctrl-icon: var(--prime-sys-size-control-m-icon);\n --st-text: var(--prime-sys-size-control-m-text);\n --st-support: var(--prime-sys-size-control-m-supportText);\n --st-ind-num: var(--prime-sys-typography-support-2xs);\n --st-radius: var(--prime-sys-size-control-m-radius);\n /* \u0414\u043E\u043B\u044F \u0432\u044B\u0441\u043E\u0442\u044B \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430 \u2014 \u0437\u0430\u043C\u0435\u0442\u043D\u044B\u0439 \u0448\u0430\u0433 s/m/l/xl; \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u00AB\u043C\u0435\u043B\u043A\u0430\u044F\u00BB vs \u043F\u0430\u0434\u0434\u0438\u043D\u0433\u0438 */\n --st-circle: var(--prime-sys-unit-1p65rem);\n --st-stepper-chevron: var(--st-ctrl-icon);\n --st-stepper-check: var(--prime-sys-unit-0p86rem);\n /* m: \u0437\u0430\u0437\u043E\u0440 \u043A\u0440\u0443\u0433\u2013\u0442\u0435\u043A\u0441\u0442; \u0432 \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438 \u0448\u0438\u0440\u0435 (\u0441\u0435\u0442\u043A\u0430 3 \u043A\u043E\u043B\u043E\u043D\u043A\u0438) */\n --st-h-gap: var(--prime-sys-spacing-x3);\n --st-v-gap: var(--prime-sys-spacing-x4);\n --st-v-pad: var(--prime-sys-spacing-x2);\n --st-root-h-gap: var(--prime-sys-spacing-x4);\n --st-root-v-gap: var(--prime-sys-spacing-x2);\n}\n\n.hRoot[data-size=\"s\"],\n.vRoot[data-size=\"s\"] {\n --st-ctrl-h: var(--prime-sys-size-control-s-height);\n --st-ctrl-icon: var(--prime-sys-size-control-s-icon);\n --st-text: var(--prime-sys-size-control-s-text);\n --st-support: var(--prime-sys-size-control-s-supportText);\n --st-ind-num: var(--prime-sys-typography-support-2xs);\n --st-radius: var(--prime-sys-size-control-s-radius);\n --st-circle: var(--prime-sys-unit-1p32rem);\n --st-stepper-check: var(--prime-sys-unit-0p69rem);\n --st-h-gap: var(--prime-sys-spacing-x3);\n --st-v-gap: var(--prime-sys-spacing-x3);\n --st-v-pad: var(--prime-sys-spacing-x2);\n --st-root-h-gap: var(--prime-sys-spacing-x3);\n --st-root-v-gap: var(--prime-sys-spacing-x2);\n}\n\n.hRoot[data-size=\"l\"],\n.vRoot[data-size=\"l\"] {\n --st-ctrl-h: var(--prime-sys-size-control-l-height);\n --st-ctrl-icon: var(--prime-sys-size-control-l-icon);\n --st-text: var(--prime-sys-size-control-l-text);\n --st-support: var(--prime-sys-size-control-l-supportText);\n --st-ind-num: var(--prime-sys-typography-support-xs);\n --st-radius: var(--prime-sys-size-control-l-radius);\n --st-circle: var(--prime-sys-unit-1p98rem);\n --st-stepper-check: var(--prime-sys-unit-1p03rem);\n --st-h-gap: var(--prime-sys-spacing-x4);\n --st-v-gap: var(--prime-sys-spacing-x5);\n --st-v-pad: var(--prime-sys-spacing-x3);\n --st-root-h-gap: var(--prime-sys-spacing-x5);\n --st-root-v-gap: var(--prime-sys-spacing-x3);\n}\n\n.hRoot[data-size=\"xl\"],\n.vRoot[data-size=\"xl\"] {\n --st-ctrl-h: var(--prime-sys-size-control-xl-height);\n --st-ctrl-icon: var(--prime-sys-size-control-xl-icon);\n --st-text: var(--prime-sys-size-control-xl-text);\n --st-support: var(--prime-sys-size-control-xl-supportText);\n --st-ind-num: var(--prime-sys-typography-support-xs);\n --st-radius: var(--prime-sys-size-control-xl-radius);\n --st-circle: var(--prime-sys-unit-2p31rem);\n --st-stepper-check: var(--prime-sys-unit-1p2rem);\n --st-h-gap: var(--prime-sys-spacing-x5);\n --st-v-gap: var(--prime-sys-spacing-x6);\n --st-v-pad: var(--prime-sys-spacing-x4);\n --st-root-h-gap: var(--prime-sys-spacing-x6);\n --st-root-v-gap: var(--prime-sys-spacing-x4);\n}\n\n/* \u2500\u2500\u2500 Horizontal \u2500\u2500\u2500 */\n\n.hRoot {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--st-root-h-gap);\n}\n\n.hItem {\n appearance: none;\n border: none;\n margin: 0;\n padding: 0;\n font: inherit;\n cursor: pointer;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--st-h-gap);\n font-size: var(--st-text);\n font-weight: var(--prime-sys-typography-weight-regular);\n line-height: var(--prime-sys-typography-body-lineHeight);\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n transition: color 0.15s ease;\n}\n\n.hItem[data-state=\"active\"],\n.hItem[data-state=\"completed\"] {\n color: var(--prime-sys-color-content-primary);\n}\n\n.hItem:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-action-primaryBackground);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.hItem:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.hIndicator {\n display: flex;\n width: var(--st-circle);\n height: var(--st-circle);\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n border-radius: var(--prime-sys-shape-radius-round);\n font-size: var(--st-ind-num);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1;\n}\n\n.hIndicator[data-state=\"default\"] {\n background: var(--prime-sys-color-surface-elevated);\n color: var(--prime-sys-color-content-secondary);\n box-shadow: inset 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-subtle);\n}\n\n.hIndicator[data-state=\"active\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.hIndicator[data-state=\"completed\"] {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n color: var(--prime-sys-color-surface-elevated);\n}\n\n.hCheck {\n width: var(--st-stepper-check);\n height: var(--st-stepper-check);\n}\n\n.hSeparator {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--prime-sys-color-content-secondary);\n opacity: 0.7;\n}\n\n.hSeparatorIcon {\n width: var(--st-stepper-chevron);\n height: var(--st-stepper-chevron);\n flex-shrink: 0;\n}\n\n/* \u2500\u2500\u2500 Vertical \u2500\u2500\u2500 */\n\n.vRoot {\n display: flex;\n flex-direction: column;\n gap: var(--st-root-v-gap);\n width: 100%;\n}\n\n.vItem {\n appearance: none;\n border: none;\n margin: 0;\n font: inherit;\n cursor: pointer;\n box-sizing: border-box;\n display: grid;\n width: 100%;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--st-v-gap);\n padding: var(--st-v-pad);\n border-radius: var(--st-radius);\n text-align: start;\n font-size: var(--st-text);\n font-weight: var(--prime-sys-typography-weight-regular);\n line-height: var(--prime-sys-typography-body-lineHeight);\n transition:\n background-color 0.15s ease,\n color 0.15s ease,\n box-shadow 0.15s ease;\n}\n\n.vItem[data-state=\"completed\"],\n.vItem[data-state=\"default\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-secondary);\n}\n\n.vItem[data-state=\"active\"] {\n background: var(--prime-sys-color-surface-elevated);\n color: var(--prime-sys-color-content-primary);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.vItem:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-action-primaryBackground);\n outline-offset: var(--prime-sys-unit-2px);\n}\n\n.vItem:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.vIndicator {\n display: flex;\n width: var(--st-circle);\n height: var(--st-circle);\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n border-radius: var(--prime-sys-shape-radius-round);\n font-size: var(--st-ind-num);\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: 1;\n}\n\n.vIndicator[data-state=\"completed\"] {\n background: var(--prime-sys-color-status-success-backgroundEmphasis);\n color: var(--prime-sys-color-surface-elevated);\n}\n\n.vIndicator[data-state=\"active\"] {\n background: var(--prime-sys-color-action-primaryBackground);\n color: var(--prime-sys-color-action-primaryForeground);\n}\n\n.vIndicator[data-state=\"default\"] {\n background: var(--prime-sys-color-surface-elevated);\n color: var(--prime-sys-color-content-secondary);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n}\n\n.vCheck {\n width: var(--st-stepper-check);\n height: var(--st-stepper-check);\n}\n\n.vArrow {\n flex-shrink: 0;\n width: var(--st-stepper-chevron);\n height: var(--st-stepper-chevron);\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* \u0412\u044B\u0441\u043E\u043A\u043E\u0443\u0440\u043E\u0432\u043D\u0435\u0432\u044B\u0439 Stepper: \u0441\u0442\u0430\u0442\u0443\u0441 error (\u0434\u043E\u043F. \u0441\u0442\u0438\u043B\u044C \u043F\u043E\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043E\u0432\u044B\u0445 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0439) */\n.hItem[data-legacy-status=\"error\"],\n.vItem[data-legacy-status=\"error\"] {\n background: var(--prime-sys-color-surface-dangerSoft);\n color: var(--prime-sys-color-content-primary);\n}\n\n.hItem[data-legacy-status=\"error\"] {\n background: transparent;\n color: var(--prime-sys-color-content-danger);\n}\n\n.hIndicator[data-legacy-status=\"error\"] {\n background: var(--prime-sys-color-surface-dangerSoft);\n color: var(--prime-sys-color-content-danger);\n box-shadow: inset 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-danger);\n}\n\n.vIndicator[data-legacy-status=\"error\"] {\n background: var(--prime-sys-color-surface-dangerSoft);\n color: var(--prime-sys-color-content-danger);\n box-shadow: none;\n}\n", "import { createComponentContext } from \"@/internal/context\";\n\n/** \u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0448\u0430\u0433\u0430 \u0432 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043D\u044B\u0445 \u0441\u0442\u0435\u043F\u043F\u0435\u0440\u0430\u0445: `default` \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044E \u0434\u043E \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 (\u0430\u043D\u0430\u043B\u043E\u0433 \u00ABpending\u00BB \u0443 \u0432\u044B\u0441\u043E\u043A\u043E\u0443\u0440\u043E\u0432\u043D\u0435\u0432\u043E\u0433\u043E Stepper). */\nexport type StepperAlignItemState = \"completed\" | \"active\" | \"default\";\n\ntype StepperAlignItemContextValue = {\n state: StepperAlignItemState;\n};\n\nexport const [StepperAlignItemProvider, useStepperAlignItemState] =\n createComponentContext<StepperAlignItemContextValue>(\"StepperAlign.Item\");\n\nexport function StepperAlignCheckIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n fill=\"currentColor\"\n d=\"M15.1 7.453 8.726 13.82 4.9 10l1.275-1.274 2.55 2.548 5.1-5.094L15.1 7.453Z\"\n />\n </svg>\n );\n}\n", "import * as React from \"react\";\n\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { StepperSize } from \"@/internal/states\";\nimport { HorizontalStepper } from \"./HorizontalStepper\";\nimport styles from \"./Stepper.module.css\";\nimport alignStyles from \"./StepperAlign.module.css\";\nimport {\n StepperAlignCheckIcon,\n StepperAlignItemProvider,\n type StepperAlignItemState,\n} from \"./stepperAlignContext\";\nimport { VerticalStepper } from \"./VerticalStepper\";\n\nexport { HorizontalStepper } from \"./HorizontalStepper\";\nexport { VerticalStepper } from \"./VerticalStepper\";\n\nexport type { StepperSize };\n\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\nexport type StepStatus = \"pending\" | \"active\" | \"completed\" | \"error\";\n\ntype StepperRootContextValue = {\n orientation: StepperOrientation;\n currentStep: number;\n getNextStepIndex: () => number;\n};\n\ntype StepperStepContextValue = {\n status: StepStatus;\n index: number;\n};\n\nconst [StepperRootProvider, useStepperRootContext] =\n createComponentContext<StepperRootContextValue>(\"Stepper\");\n\nconst [StepperStepProvider, useStepperStepContext] =\n createComponentContext<StepperStepContextValue>(\"Stepper.Step\");\n\nfunction toAlignState(status: StepStatus): StepperAlignItemState {\n if (status === \"completed\") return \"completed\";\n if (status === \"active\") return \"active\";\n return \"default\";\n}\n\nfunction computeStepStatus(index: number, currentStep: number): StepStatus {\n if (index < currentStep) return \"completed\";\n if (index === currentStep) return \"active\";\n return \"pending\";\n}\n\nexport type StepperRootProps = {\n orientation?: StepperOrientation;\n currentStep?: number;\n size?: StepperSize;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction StepperRoot({\n orientation = \"vertical\",\n currentStep = 0,\n size = \"m\",\n children,\n className,\n}: StepperRootProps) {\n const indexRef = React.useRef(0);\n indexRef.current = 0;\n const getNextStepIndex = React.useCallback(() => {\n const idx = indexRef.current;\n indexRef.current += 1;\n return idx;\n }, []);\n\n const value = React.useMemo(\n () => ({ orientation, currentStep, getNextStepIndex }),\n [orientation, currentStep, getNextStepIndex],\n );\n\n return (\n <StepperRootProvider value={value}>\n <ControlSizeProvider value={size}>\n <ol\n className={cx(\n styles.root,\n orientation === \"horizontal\" ? alignStyles.hRoot : alignStyles.vRoot,\n className,\n )}\n {...toDataAttributes({ orientation, size })}\n >\n {children}\n </ol>\n </ControlSizeProvider>\n </StepperRootProvider>\n );\n}\n\nStepperRoot.displayName = \"Stepper.Root\";\n\nexport type StepperSeparatorIconProps = {\n className?: string;\n};\n\nfunction StepperSeparatorIcon({ className }: StepperSeparatorIconProps) {\n return (\n <li className={styles.separatorLi} aria-hidden=\"true\">\n <HorizontalStepper.SeparatorIcon className={className} />\n </li>\n );\n}\n\nStepperSeparatorIcon.displayName = \"Stepper.SeparatorIcon\";\n\nexport type StepperArrowProps = {\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof VerticalStepper.Arrow>, \"className\">;\n\nfunction StepperArrow({ className, ...rest }: StepperArrowProps) {\n return <VerticalStepper.Arrow className={className} {...rest} />;\n}\n\nStepperArrow.displayName = \"Stepper.Arrow\";\n\nexport type StepperIndicatorProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nfunction StepperIndicator({ children, className }: StepperIndicatorProps) {\n const { status, index } = useStepperStepContext();\n const { orientation } = useStepperRootContext();\n const alignState = toAlignState(status);\n const indClass = orientation === \"horizontal\" ? alignStyles.hIndicator : alignStyles.vIndicator;\n const checkClass = orientation === \"horizontal\" ? alignStyles.hCheck : alignStyles.vCheck;\n\n const defaultChild =\n status === \"completed\" ? <StepperAlignCheckIcon className={checkClass} /> : String(index + 1);\n\n return (\n <span\n className={cx(indClass, className)}\n data-state={alignState}\n data-legacy-status={status === \"error\" ? \"error\" : undefined}\n aria-hidden=\"true\"\n >\n {children ?? defaultChild}\n </span>\n );\n}\n\nStepperIndicator.displayName = \"Stepper.Indicator\";\n\nexport type StepperContentProps = {\n title: string;\n description?: string;\n className?: string;\n};\n\nfunction StepperContent({ title, description, className }: StepperContentProps) {\n return (\n <div className={cx(styles.content, className)}>\n <div className={styles.title}>{title}</div>\n {description ? <p className={styles.description}>{description}</p> : null}\n </div>\n );\n}\n\nStepperContent.displayName = \"Stepper.Content\";\n\nexport type StepperStepProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> & {\n index?: number;\n status?: StepStatus;\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n};\n\nconst StepperStep = React.forwardRef<HTMLButtonElement, StepperStepProps>(function StepperStep(\n { index: indexProp, status: statusProp, children, className, disabled, type = \"button\", ...rest },\n ref,\n) {\n const { currentStep, orientation, getNextStepIndex } = useStepperRootContext();\n const index = indexProp ?? getNextStepIndex();\n const status = statusProp ?? computeStepStatus(index, currentStep);\n const alignState = toAlignState(status);\n const itemClass = orientation === \"horizontal\" ? alignStyles.hItem : alignStyles.vItem;\n\n return (\n <StepperStepProvider value={{ status, index }}>\n <StepperAlignItemProvider value={{ state: alignState }}>\n <li className={styles.stepLi} data-status={status}>\n <button\n ref={ref}\n type={type}\n disabled={disabled}\n className={cx(itemClass, className)}\n data-state={alignState}\n data-legacy-status={status === \"error\" ? \"error\" : undefined}\n aria-current={status === \"active\" ? \"step\" : undefined}\n {...rest}\n >\n {children}\n </button>\n </li>\n </StepperAlignItemProvider>\n </StepperStepProvider>\n );\n});\n\nStepperStep.displayName = \"Stepper.Step\";\n\nexport const Stepper = {\n Root: StepperRoot,\n Step: StepperStep,\n Item: StepperStep,\n Indicator: StepperIndicator,\n ItemIndicator: StepperIndicator,\n Content: StepperContent,\n SeparatorIcon: StepperSeparatorIcon,\n Arrow: StepperArrow,\n};\n", "/* Stepper: \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 ol + li; \u0432\u0438\u0437\u0443\u0430\u043B \u0448\u0430\u0433\u043E\u0432 \u2014 StepperAlign.module.css. */\n\n.root {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.stepLi {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.root[data-orientation=\"horizontal\"] .stepLi {\n flex: 0 0 auto;\n}\n\n.separatorLi {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* Title & description \u0432\u043D\u0443\u0442\u0440\u0438 \u044F\u0447\u0435\u0439\u043A\u0438 \u0441\u0435\u0442\u043A\u0438 (vertical) / flex (horizontal) */\n\n.content {\n flex: 1;\n min-width: 0;\n}\n\n.title {\n font-size: var(--st-text, var(--prime-sys-size-control-m-text));\n font-weight: var(--prime-sys-typography-weight-medium);\n color: inherit;\n}\n\n.description {\n font-size: var(--st-support, var(--prime-sys-size-control-m-supportText));\n color: var(--prime-sys-color-content-secondary);\n margin-top: var(--prime-sys-spacing-x1);\n}\n\n.stepLi[data-status=\"pending\"] .title {\n color: inherit;\n}\n\n.stepLi[data-status=\"active\"] .description,\n.stepLi[data-status=\"completed\"] .description,\n.stepLi[data-status=\"error\"] .description {\n color: var(--prime-sys-color-content-secondary);\n}\n", "import * as React from \"react\";\n\nimport { IconChevronRight } from \"@/icons\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport type { StepperSize } from \"@/internal/states\";\nimport alignStyles from \"./StepperAlign.module.css\";\nimport {\n StepperAlignCheckIcon,\n StepperAlignItemProvider,\n type StepperAlignItemState,\n useStepperAlignItemState,\n} from \"./stepperAlignContext\";\n\nexport type VerticalStepperRootProps = React.HTMLAttributes<HTMLDivElement> & {\n size?: StepperSize;\n};\n\nfunction VerticalStepperRoot({\n className,\n size = \"m\",\n children,\n ...rest\n}: VerticalStepperRootProps) {\n return (\n <ControlSizeProvider value={size}>\n <div className={cx(alignStyles.vRoot, className)} data-size={size} {...rest}>\n {children}\n </div>\n </ControlSizeProvider>\n );\n}\n\nVerticalStepperRoot.displayName = \"VerticalStepper.Root\";\n\nexport type VerticalStepperArrowProps<T extends React.ElementType = typeof IconChevronRight> = {\n as?: T;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"as\" | \"className\">;\n\nfunction VerticalStepperArrow<T extends React.ElementType = typeof IconChevronRight>({\n as,\n className,\n ...rest\n}: VerticalStepperArrowProps<T>) {\n const Component = (as ?? IconChevronRight) as React.ElementType;\n\n return <Component className={cx(alignStyles.vArrow, className)} strokeWidth={2} {...rest} />;\n}\n\nVerticalStepperArrow.displayName = \"VerticalStepper.Arrow\";\n\nexport type VerticalStepperItemProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\"\n> & {\n state?: StepperAlignItemState;\n type?: \"button\" | \"submit\" | \"reset\";\n};\n\nconst VerticalStepperItem = React.forwardRef<HTMLButtonElement, VerticalStepperItemProps>(\n function VerticalStepperItem(\n { state = \"default\", className, type = \"button\", children, ...rest },\n ref,\n ) {\n return (\n <StepperAlignItemProvider value={{ state }}>\n <button\n ref={ref}\n type={type}\n className={cx(alignStyles.vItem, className)}\n data-state={state}\n {...rest}\n >\n {children}\n </button>\n </StepperAlignItemProvider>\n );\n },\n);\n\nVerticalStepperItem.displayName = \"VerticalStepper.Item\";\n\nexport type VerticalStepperItemIndicatorProps = React.HTMLAttributes<HTMLDivElement> & {\n state?: StepperAlignItemState;\n};\n\nfunction VerticalStepperItemIndicator({\n state: stateProp,\n className,\n children,\n ...rest\n}: VerticalStepperItemIndicatorProps) {\n const { state: ctxState } = useStepperAlignItemState();\n const state = stateProp ?? ctxState;\n\n if (state === \"completed\") {\n return (\n <div className={cx(alignStyles.vIndicator, className)} data-state={state} {...rest}>\n <StepperAlignCheckIcon className={alignStyles.vCheck} />\n </div>\n );\n }\n\n return (\n <div className={cx(alignStyles.vIndicator, className)} data-state={state} {...rest}>\n {children}\n </div>\n );\n}\n\nVerticalStepperItemIndicator.displayName = \"VerticalStepper.ItemIndicator\";\n\nexport const VerticalStepper = {\n Root: VerticalStepperRoot,\n Arrow: VerticalStepperArrow,\n Item: VerticalStepperItem,\n ItemIndicator: VerticalStepperItemIndicator,\n};\n", "import * as React from \"react\";\nimport { Hint } from \"@/components/hint/Hint\";\nimport { Label } from \"@/components/label/Label\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { HintSize, LabelSize, SwitchSize, SwitchVariant } from \"@/internal/states\";\n\nimport styles from \"./Switch.module.css\";\n\ntype SwitchContextValue = {\n inputId: string;\n hintId: string;\n errorId: string;\n size: SwitchSize;\n inputRef: React.Ref<HTMLInputElement>;\n invalid: boolean;\n disabled: boolean;\n readOnly: boolean;\n isChecked: boolean;\n describedBy: string | undefined;\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n restInputPropsRef: React.MutableRefObject<\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\"\n >\n >;\n registerHint: () => void;\n unregisterHint: () => void;\n registerError: () => void;\n unregisterError: () => void;\n};\n\nconst [SwitchProvider, useSwitchContext] = createComponentContext<SwitchContextValue>(\"Switch\");\n\nexport type SwitchRootProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"checked\" | \"defaultChecked\" | \"onChange\"\n> & {\n label?: React.ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n variant?: SwitchVariant;\n size?: SwitchSize;\n};\n\nconst SwitchRoot = React.forwardRef<HTMLInputElement, SwitchRootProps>(\n (\n {\n id,\n checked,\n defaultChecked = false,\n onCheckedChange,\n variant = \"default\",\n size = \"m\",\n disabled,\n readOnly,\n className,\n \"aria-describedby\": ariaDescribedBy,\n children,\n ...inputRest\n },\n ref,\n ) => {\n const rawId = React.useId();\n const inputId = id ?? rawId;\n const hintId = `${inputId}-hint`;\n const errorId = `${inputId}-error`;\n\n const [hasHint, setHasHint] = React.useState(false);\n const [hasError, setHasError] = React.useState(false);\n\n const invalid = variant === \"error\" || hasError;\n\n const [isChecked, setChecked] = useControllableState<boolean>({\n value: checked,\n defaultValue: defaultChecked,\n onChange: onCheckedChange,\n });\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n setChecked(e.target.checked);\n },\n [readOnly, setChecked],\n );\n\n const restInputPropsRef = React.useRef(inputRest);\n restInputPropsRef.current = inputRest;\n\n const parts = [\n ariaDescribedBy,\n hasHint ? hintId : undefined,\n hasError ? errorId : undefined,\n ].filter(Boolean);\n const describedBy = parts.length > 0 ? parts.join(\" \") : undefined;\n\n const registerHint = React.useCallback(() => setHasHint(true), []);\n const unregisterHint = React.useCallback(() => setHasHint(false), []);\n const registerError = React.useCallback(() => setHasError(true), []);\n const unregisterError = React.useCallback(() => setHasError(false), []);\n\n const ctxValue = React.useMemo(\n () => ({\n inputId,\n hintId,\n errorId,\n size,\n inputRef: ref,\n invalid,\n disabled: Boolean(disabled),\n readOnly: Boolean(readOnly),\n isChecked,\n describedBy,\n handleChange,\n restInputPropsRef,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n }),\n [\n inputId,\n hintId,\n errorId,\n size,\n ref,\n invalid,\n disabled,\n readOnly,\n isChecked,\n describedBy,\n handleChange,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n ],\n );\n\n return (\n <SwitchProvider value={ctxValue}>\n <ControlSizeProvider value={size}>\n <div\n className={cx(styles.field, className)}\n {...toDataAttributes({\n size,\n variant,\n disabled: Boolean(disabled),\n invalid,\n checked: isChecked,\n readonly: Boolean(readOnly),\n })}\n >\n {children}\n </div>\n </ControlSizeProvider>\n </SwitchProvider>\n );\n },\n);\n\nSwitchRoot.displayName = \"SwitchRoot\";\n\n// \u2500\u2500\u2500 Label \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SwitchLabelProps = {\n children?: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLLabelElement>, \"htmlFor\" | \"size\">;\n\nconst SwitchLabel = React.forwardRef<HTMLLabelElement, SwitchLabelProps>(function SwitchLabel(\n { children, className, ...rest },\n ref,\n) {\n const {\n inputId,\n inputRef,\n invalid,\n disabled,\n readOnly,\n isChecked,\n describedBy,\n handleChange,\n restInputPropsRef,\n size,\n } = useSwitchContext();\n\n return (\n <Label.Root\n ref={ref}\n htmlFor={inputId}\n size={size as LabelSize}\n disabled={disabled}\n className={cx(styles.labelRow, className)}\n {...rest}\n >\n <span className={styles.controlCell}>\n <input\n ref={inputRef}\n id={inputId}\n className={styles.input}\n type=\"checkbox\"\n role=\"switch\"\n checked={isChecked}\n disabled={disabled}\n aria-checked={isChecked}\n aria-invalid={invalid || undefined}\n aria-readonly={readOnly || undefined}\n aria-describedby={describedBy}\n onChange={handleChange}\n {...restInputPropsRef.current}\n />\n <span className={styles.track} aria-hidden=\"true\" />\n </span>\n {children !== undefined && children !== null ? (\n <span className={styles.text}>{children}</span>\n ) : null}\n </Label.Root>\n );\n});\n\nSwitchLabel.displayName = \"SwitchLabel\";\n\n// \u2500\u2500\u2500 Hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SwitchHintProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction SwitchHint({ children, className, ...rest }: SwitchHintProps) {\n const { hintId, registerHint, unregisterHint, size, disabled } = useSwitchContext();\n\n React.useLayoutEffect(() => {\n registerHint();\n return () => {\n unregisterHint();\n };\n }, [registerHint, unregisterHint]);\n\n return (\n <Hint.Root\n id={hintId}\n size={size as HintSize}\n variant={disabled ? \"disabled\" : \"default\"}\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nSwitchHint.displayName = \"SwitchHint\";\n\n// \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type SwitchErrorProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction SwitchError({ children, className, ...rest }: SwitchErrorProps) {\n const { errorId, registerError, unregisterError, size } = useSwitchContext();\n\n React.useLayoutEffect(() => {\n registerError();\n return () => {\n unregisterError();\n };\n }, [registerError, unregisterError]);\n\n return (\n <Hint.Root\n id={errorId}\n size={size as HintSize}\n variant=\"error\"\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nSwitchError.displayName = \"SwitchError\";\n\n// \u2500\u2500\u2500 Namespace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Switch = {\n Root: SwitchRoot,\n Label: SwitchLabel,\n Hint: SwitchHint,\n Error: SwitchError,\n};\n", ".field {\n --prime-switch-track-width: var(--prime-sys-size-switch-m-trackWidth);\n --prime-switch-track-height: var(--prime-sys-size-switch-m-trackHeight);\n --prime-switch-thumb-size: var(--prime-sys-size-switch-m-thumb);\n --prime-switch-offset: var(--prime-sys-unit-0p125rem);\n --prime-switch-col-gap: var(--prime-sys-size-control-m-inputPaddingX);\n --prime-switch-thumb-translate: var(--prime-sys-unit-0p875rem);\n --prime-switch-thumb-disabled-size: var(--prime-sys-unit-0p75rem);\n --prime-switch-hint-offset: calc(var(--prime-switch-track-width) + var(--prime-switch-col-gap));\n --prime-switch-stack-gap: var(--prime-sys-size-control-m-gap);\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--prime-switch-stack-gap);\n}\n\n.field[data-size=\"s\"] {\n --prime-switch-track-width: var(--prime-sys-size-switch-s-trackWidth);\n --prime-switch-track-height: var(--prime-sys-size-switch-s-trackHeight);\n --prime-switch-thumb-size: var(--prime-sys-size-switch-s-thumb);\n --prime-switch-col-gap: var(--prime-sys-size-control-s-inputPaddingX);\n --prime-switch-thumb-translate: var(--prime-sys-unit-0p75rem);\n --prime-switch-thumb-disabled-size: var(--prime-sys-unit-0p625rem);\n}\n\n.field[data-size=\"l\"] {\n --prime-switch-track-width: var(--prime-sys-size-switch-l-trackWidth);\n --prime-switch-track-height: var(--prime-sys-size-switch-l-trackHeight);\n --prime-switch-thumb-size: var(--prime-sys-size-switch-l-thumb);\n --prime-switch-col-gap: var(--prime-sys-size-control-l-inputPaddingX);\n --prime-switch-thumb-translate: var(--prime-sys-unit-1rem);\n --prime-switch-thumb-disabled-size: var(--prime-sys-unit-0p875rem);\n}\n\n.field[data-size=\"xl\"] {\n --prime-switch-track-width: var(--prime-sys-size-switch-xl-trackWidth);\n --prime-switch-track-height: var(--prime-sys-size-switch-xl-trackHeight);\n --prime-switch-thumb-size: var(--prime-sys-size-switch-xl-thumb);\n --prime-switch-col-gap: var(--prime-sys-size-control-xl-inputPaddingX);\n --prime-switch-thumb-translate: var(--prime-sys-unit-1rem);\n --prime-switch-thumb-disabled-size: var(--prime-sys-unit-1p125rem);\n}\n\n.field .labelRow {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0;\n row-gap: 0;\n column-gap: var(--prime-switch-col-gap);\n align-items: center;\n width: 100%;\n cursor: pointer;\n}\n\n.controlCell {\n position: relative;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.input {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n.track {\n position: relative;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n width: var(--prime-switch-track-width);\n height: var(--prime-switch-track-height);\n border-radius: var(--prime-sys-shape-radius-round);\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n transition:\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.track::before {\n content: \"\";\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n left: var(--prime-switch-offset);\n width: var(--prime-switch-thumb-size);\n height: var(--prime-switch-thumb-size);\n border-radius: var(--prime-sys-shape-radius-round);\n background: var(--prime-sys-color-surface-elevated);\n box-shadow: 0 var(--prime-sys-unit-1px) var(--prime-sys-unit-2px)\n color-mix(in srgb, var(--prime-sys-color-content-primary) 18%, transparent);\n transform: translateY(-50%);\n transition: transform var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.text {\n line-height: var(--prime-sys-typography-body-lineHeight);\n min-width: 0;\n}\n\n.controlCell .input:checked + .track {\n background: var(--prime-sys-color-action-primaryBackground);\n border-color: var(--prime-sys-color-action-primaryBackground);\n box-shadow: none;\n}\n\n.controlCell .input:checked + .track::before {\n transform: translate(var(--prime-switch-thumb-translate), -50%);\n}\n\n.labelRow:hover .track {\n border-color: var(--prime-sys-color-field-borderHover);\n background: var(--prime-sys-color-field-bg);\n box-shadow: none;\n}\n\n.labelRow:hover .controlCell .input:checked + .track {\n background: var(--prime-sys-color-action-primaryBackgroundHover);\n border-color: var(--prime-sys-color-action-primaryBackgroundHover);\n}\n\n.controlCell .input:focus-visible + .track {\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.field[data-invalid=\"true\"] .track {\n border-color: var(--prime-sys-color-field-borderError);\n}\n\n.field[data-disabled=\"true\"] .labelRow {\n cursor: not-allowed;\n}\n\n.field[data-disabled=\"true\"] .track {\n background: var(--prime-sys-color-surface-raised);\n border-color: var(--prime-sys-color-border-subtle);\n box-shadow: 0 0 0 var(--prime-sys-unit-1px) var(--prime-sys-color-border-subtle);\n opacity: 1;\n}\n\n.field[data-disabled=\"true\"] .controlCell .input:checked + .track {\n background: var(--prime-sys-color-surface-raised);\n border-color: var(--prime-sys-color-border-subtle);\n}\n\n.field[data-disabled=\"true\"] .track::before {\n --prime-switch-thumb-size: var(--prime-switch-thumb-disabled-size);\n background: var(--prime-sys-color-border-subtle);\n}\n\n.hintSlot {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n padding-inline-start: var(--prime-switch-hint-offset);\n justify-content: flex-start;\n}\n", "import * as React from \"react\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport type { TabsSize } from \"@/internal/states\";\n\nimport styles from \"./Tabs.module.css\";\n\n// \u2500\u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsOrientation = \"horizontal\" | \"vertical\";\n\nexport type { TabsSize };\n\ntype TabsContextValue = {\n activeValue: string;\n onSelect: (value: string) => void;\n orientation: TabsOrientation;\n rootId: string;\n size: TabsSize;\n};\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst [TabsProvider, useTabsContext] = createComponentContext<TabsContextValue>(\"Tabs\");\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsRootProps = {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: TabsOrientation;\n size?: TabsSize;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction TabsRoot({\n value,\n defaultValue = \"\",\n onValueChange,\n orientation = \"horizontal\",\n size = \"m\",\n children,\n className,\n}: TabsRootProps) {\n const rootId = React.useId();\n\n const [activeValue, setActiveValue] = useControllableState({\n value,\n defaultValue,\n onChange: onValueChange,\n });\n\n const contextValue = React.useMemo<TabsContextValue>(\n () => ({ activeValue, onSelect: setActiveValue, orientation, rootId, size }),\n [activeValue, setActiveValue, orientation, rootId, size],\n );\n\n return (\n <TabsProvider value={contextValue}>\n <div className={cx(styles.root, className)} data-orientation={orientation} data-size={size}>\n {children}\n </div>\n </TabsProvider>\n );\n}\nTabsRoot.displayName = \"TabsRoot\";\n\n// \u2500\u2500\u2500 List \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsListProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nfunction TabsList({ children, className }: TabsListProps) {\n const { orientation, rootId, activeValue, onSelect, size } = useTabsContext();\n const listRef = React.useRef<HTMLDivElement>(null);\n const [indicator, setIndicator] = React.useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n const updateIndicator = React.useCallback(() => {\n const list = listRef.current;\n if (!list) return;\n const active = list.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]');\n if (!active) {\n setIndicator({ left: 0, top: 0, width: 0, height: 0 });\n return;\n }\n setIndicator({\n left: active.offsetLeft,\n top: active.offsetTop,\n width: active.offsetWidth,\n height: active.offsetHeight,\n });\n }, []);\n\n React.useLayoutEffect(() => {\n const list = listRef.current;\n if (!list) return;\n\n updateIndicator();\n\n const mo = new MutationObserver(updateIndicator);\n mo.observe(list, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"aria-selected\", \"data-disabled\"],\n });\n\n let ro: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n ro = new ResizeObserver(updateIndicator);\n ro.observe(list);\n }\n\n return () => {\n mo.disconnect();\n ro?.disconnect();\n };\n }, [updateIndicator]);\n\n const isHorizontal = orientation === \"horizontal\";\n const hasIndicator = isHorizontal ? indicator.width > 0 : indicator.height > 0;\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n const listEl = event.currentTarget;\n const tabs = Array.from(\n listEl.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]:not([data-disabled=\"true\"])'),\n );\n\n if (tabs.length === 0) return;\n\n const currentIndex = tabs.findIndex(\n (tab) => tab.id === `prime-ui-kit-tab-${rootId}-${activeValue}`,\n );\n\n const isHorizontal = orientation === \"horizontal\";\n const prevKey = isHorizontal ? \"ArrowLeft\" : \"ArrowUp\";\n const nextKey = isHorizontal ? \"ArrowRight\" : \"ArrowDown\";\n\n let targetTab: HTMLButtonElement | null = null;\n\n if (event.key === nextKey) {\n event.preventDefault();\n targetTab = tabs[(currentIndex + 1) % tabs.length];\n } else if (event.key === prevKey) {\n event.preventDefault();\n targetTab = tabs[(currentIndex - 1 + tabs.length) % tabs.length];\n } else if (event.key === \"Home\") {\n event.preventDefault();\n targetTab = tabs[0];\n } else if (event.key === \"End\") {\n event.preventDefault();\n targetTab = tabs[tabs.length - 1];\n }\n\n if (targetTab) {\n const tabValue = targetTab.dataset.value ?? \"\";\n onSelect(tabValue);\n targetTab.focus();\n }\n }\n\n return (\n <div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n data-orientation={orientation}\n className={cx(styles.list, className)}\n onKeyDown={handleKeyDown}\n >\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n <div\n className={cx(\n styles.indicator,\n isHorizontal ? styles.indicatorHorizontal : styles.indicatorVertical,\n )}\n style={\n isHorizontal\n ? {\n transform: `translate3d(${indicator.left}px, 0, 0)`,\n width: `${indicator.width}px`,\n }\n : {\n transform: `translate3d(0, ${indicator.top}px, 0)`,\n height: `${indicator.height}px`,\n }\n }\n aria-hidden=\"true\"\n data-visible={hasIndicator ? \"true\" : \"false\"}\n />\n </div>\n );\n}\nTabsList.displayName = \"TabsList\";\n\n// \u2500\u2500\u2500 Tab \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsTabProps = {\n value: string;\n disabled?: boolean;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction TabsTab({ value, disabled = false, children, className }: TabsTabProps) {\n const { activeValue, onSelect, rootId } = useTabsContext();\n const isSelected = activeValue === value;\n\n return (\n <button\n role=\"tab\"\n id={`prime-ui-kit-tab-${rootId}-${value}`}\n aria-selected={isSelected}\n aria-controls={`prime-ui-kit-panel-${rootId}-${value}`}\n tabIndex={isSelected ? 0 : -1}\n data-value={value}\n data-disabled={disabled ? \"true\" : undefined}\n disabled={disabled}\n className={cx(styles.tab, className)}\n onClick={() => {\n if (!disabled) onSelect(value);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n}\nTabsTab.displayName = \"TabsTab\";\n\n// \u2500\u2500\u2500 Icon (\u0441\u043B\u043E\u0442 \u043F\u043E\u0434 \u0433\u043B\u0438\u0444, \u043A\u0430\u043A Button.Icon) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsIconProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nfunction TabsIcon({ children, className, ...rest }: TabsIconProps) {\n return (\n <span className={cx(styles.icon, className)} aria-hidden=\"true\" {...rest}>\n {children}\n </span>\n );\n}\n\nTabsIcon.displayName = \"TabsIcon\";\n\n// \u2500\u2500\u2500 Label (\u043F\u043E\u0434\u043F\u0438\u0441\u044C \u0432 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0435; \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u043A\u0435\u0433\u043B\u044C \u0447\u0435\u0440\u0435\u0437 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 .root .tab * \u0432 CSS) \u2500\n\nexport type TabsLabelProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nfunction TabsLabel({ children, className, ...rest }: TabsLabelProps) {\n return (\n <span className={cx(styles.label, className)} {...rest}>\n {children}\n </span>\n );\n}\n\nTabsLabel.displayName = \"TabsLabel\";\n\n// \u2500\u2500\u2500 Panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TabsPanelProps = {\n value: string;\n children: React.ReactNode;\n className?: string;\n};\n\nfunction TabsPanel({ value, children, className }: TabsPanelProps) {\n const { activeValue, rootId } = useTabsContext();\n const isActive = activeValue === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n id={`prime-ui-kit-panel-${rootId}-${value}`}\n aria-labelledby={`prime-ui-kit-tab-${rootId}-${value}`}\n className={cx(styles.panel, className)}\n >\n {children}\n </div>\n );\n}\nTabsPanel.displayName = \"TabsPanel\";\n\n// \u2500\u2500\u2500 Export \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Tabs = {\n Root: TabsRoot,\n List: TabsList,\n Tab: TabsTab,\n Icon: TabsIcon,\n Label: TabsLabel,\n Panel: TabsPanel,\n};\n", ".root {\n --prime-tabs-trigger-height: var(--prime-sys-size-control-m-height);\n --prime-tabs-trigger-text: var(--prime-sys-size-control-m-text);\n --prime-tabs-trigger-gap: var(--prime-sys-size-control-m-gap);\n --prime-tabs-trigger-pad-x: var(--prime-sys-size-control-m-buttonPaddingX);\n --prime-tabs-trigger-pad-y: var(--prime-sys-size-control-m-buttonPaddingY);\n /* \u0420\u0430\u0441\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043C\u0435\u0436\u0434\u0443 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\u043C\u0438 \u0432 \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u043C \u0441\u043F\u0438\u0441\u043A\u0435. */\n --prime-tabs-item-gap: var(--prime-sys-spacing-x6);\n --prime-tabs-icon-size: var(--prime-sys-size-control-m-icon);\n}\n\n.root[data-size=\"s\"] {\n --prime-tabs-trigger-height: var(--prime-sys-size-control-s-height);\n --prime-tabs-trigger-text: var(--prime-sys-size-control-s-text);\n --prime-tabs-trigger-gap: var(--prime-sys-size-control-s-gap);\n --prime-tabs-trigger-pad-x: var(--prime-sys-size-control-s-buttonPaddingX);\n --prime-tabs-trigger-pad-y: var(--prime-sys-size-control-s-buttonPaddingY);\n --prime-tabs-item-gap: var(--prime-sys-spacing-x4);\n --prime-tabs-icon-size: var(--prime-sys-size-control-s-icon);\n}\n\n.root[data-size=\"l\"] {\n --prime-tabs-trigger-height: var(--prime-sys-size-control-l-height);\n --prime-tabs-trigger-text: var(--prime-sys-size-control-l-text);\n --prime-tabs-trigger-gap: var(--prime-sys-size-control-l-gap);\n --prime-tabs-trigger-pad-x: var(--prime-sys-size-control-l-buttonPaddingX);\n --prime-tabs-trigger-pad-y: var(--prime-sys-size-control-l-buttonPaddingY);\n --prime-tabs-item-gap: var(--prime-sys-spacing-x8);\n --prime-tabs-icon-size: var(--prime-sys-size-control-l-icon);\n}\n\n.root[data-size=\"xl\"] {\n --prime-tabs-trigger-height: var(--prime-sys-size-control-xl-height);\n --prime-tabs-trigger-text: var(--prime-sys-size-control-xl-text);\n --prime-tabs-trigger-gap: var(--prime-sys-size-control-xl-gap);\n --prime-tabs-trigger-pad-x: var(--prime-sys-size-control-xl-buttonPaddingX);\n --prime-tabs-trigger-pad-y: var(--prime-sys-size-control-xl-buttonPaddingY);\n --prime-tabs-item-gap: var(--prime-sys-spacing-x8);\n --prime-tabs-icon-size: var(--prime-sys-size-control-xl-icon);\n}\n\n.root[data-orientation=\"vertical\"] {\n display: flex;\n gap: var(--prime-sys-spacing-x4);\n}\n\n.list {\n position: relative;\n isolation: isolate;\n display: flex;\n gap: var(--prime-tabs-item-gap);\n box-sizing: border-box;\n}\n\n.root[data-orientation=\"horizontal\"] .list {\n flex-wrap: nowrap;\n align-items: center;\n border-top: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n border-bottom: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n.root[data-orientation=\"vertical\"] .list {\n flex-direction: column;\n gap: var(--prime-tabs-trigger-gap);\n border-right: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n}\n\n/* \u041F\u043B\u0430\u0432\u0430\u044E\u0449\u0430\u044F \u043F\u043E\u043B\u043E\u0441\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0432\u043A\u043B\u0430\u0434\u043A\u0438 (\u0432 \u043E\u0434\u043D\u043E\u043C \u0441\u0442\u0438\u043B\u0435 \u0441 SegmentedControl). */\n.indicator {\n position: absolute;\n z-index: 0;\n pointer-events: none;\n background: var(--prime-sys-color-action-primaryBackground);\n opacity: 0;\n transition:\n transform var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n width var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n height var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n opacity var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n.indicator[data-visible=\"true\"] {\n opacity: 1;\n}\n\n.indicatorHorizontal {\n bottom: var(--prime-sys-unit-neg-1px);\n left: 0;\n height: var(--prime-sys-unit-2px);\n width: 0;\n}\n\n.indicatorVertical {\n right: var(--prime-sys-unit-neg-1px);\n top: 0;\n width: var(--prime-sys-unit-2px);\n height: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indicator {\n transition: none;\n }\n}\n\n.tab {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n gap: var(--prime-tabs-trigger-gap);\n padding-inline: var(--prime-tabs-trigger-pad-x);\n padding-block: var(--prime-tabs-trigger-pad-y);\n height: var(--prime-tabs-trigger-height);\n box-sizing: border-box;\n font-size: var(--prime-tabs-trigger-text);\n font-family: inherit;\n font-weight: var(--prime-sys-typography-weight-medium);\n line-height: var(--prime-sys-typography-body-lineHeight);\n white-space: nowrap;\n color: var(--prime-sys-color-content-secondary);\n background: none;\n border: none;\n cursor: pointer;\n transition: color var(--prime-sys-motion-fast) var(--prime-sys-motion-standard);\n}\n\n/* \u0421\u043B\u043E\u0442 \u0438\u043A\u043E\u043D\u043A\u0438 \u2014 \u043A\u0430\u043A \u0443 Button.Icon (\u0434\u0432\u0435 \u0438\u043A\u043E\u043D\u043A\u0438: \u0441\u043B\u0435\u0432\u0430 \u0438 \u0441\u043F\u0440\u0430\u0432\u0430 \u043E\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u0438). */\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--prime-tabs-icon-size);\n height: var(--prime-tabs-icon-size);\n}\n\n.icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/*\n * \u042F\u0432\u043D\u044B\u0439 \u043A\u0435\u0433\u043B\u044C \u0434\u043B\u044F \u0432\u0441\u0435\u0433\u043E DOM \u0432\u043D\u0443\u0442\u0440\u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430, \u043A\u0440\u043E\u043C\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0441\u043B\u043E\u0442\u0430 .icon:\n * \u0438\u043D\u0430\u0447\u0435 Typography / \u0441\u0442\u0438\u043B\u0438 \u043F\u0440\u0435\u0432\u044C\u044E (.root[data-variant]) \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u044E\u0442 \u0441 \u0442\u043E\u0439 \u0436\u0435 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u0447\u043D\u043E\u0441\u0442\u044C\u044E.\n * \u041E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u0430\u044F \u0436\u0438\u0440\u043D\u043E\u0441\u0442\u044C \u0443 \u0432\u0441\u0435\u0445 \u0432\u043A\u043B\u0430\u0434\u043E\u043A (medium) \u2014 \u0431\u0435\u0437 \u0441\u043A\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u0441\u043C\u0435\u043D\u0435 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439; disabled \u2014 regular.\n */\n.root .tab *:not(.icon, .icon *) {\n font-size: var(--prime-tabs-trigger-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n font-weight: var(--prime-sys-typography-weight-medium);\n}\n\n.tab .icon {\n line-height: 0;\n}\n\n/* \u041E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u0438: \u0441\u0436\u0430\u0442\u0438\u0435 \u0432 flex-\u0440\u044F\u0434\u0443 \u043F\u0440\u0438 \u0434\u043B\u0438\u043D\u043D\u043E\u043C \u0442\u0435\u043A\u0441\u0442\u0435. */\n.label {\n min-width: 0;\n flex-shrink: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u0423 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0439 \u0432\u043A\u043B\u0430\u0434\u043A\u0438 \u043F\u0435\u0440\u0432\u0430\u044F \u0438\u043A\u043E\u043D\u043A\u0430 \u2014 primary, \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435 \u0441\u043B\u043E\u0442\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F subtle. */\n.tab[aria-selected=\"true\"] .icon:first-of-type :global(svg) {\n color: var(--prime-sys-color-action-primaryBackground);\n}\n\n.tab:hover {\n color: var(--prime-sys-color-content-primary);\n}\n\n.tab[aria-selected=\"true\"] {\n color: var(--prime-sys-color-content-primary);\n}\n\n.tab:focus-visible {\n outline: var(--prime-sys-unit-2px) solid var(--prime-sys-color-focus-ring);\n outline-offset: var(--prime-sys-unit-2px);\n border-radius: var(--prime-sys-shape-radius-s);\n}\n\n.tab[data-disabled=\"true\"] {\n color: var(--prime-sys-color-content-disabled);\n cursor: not-allowed;\n font-weight: var(--prime-sys-typography-weight-regular);\n}\n\n.root .tab[data-disabled=\"true\"] *:not(.icon, .icon *) {\n font-weight: var(--prime-sys-typography-weight-regular);\n}\n\n.tab[data-disabled=\"true\"] .icon:first-of-type :global(svg) {\n color: var(--prime-sys-color-content-disabled);\n}\n\n/* \u041A\u0435\u0433\u043B\u044C \u043A\u0430\u043A \u0443 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043E\u0432: \u0442\u043E\u043A\u0435\u043D \u0437\u0430\u0434\u0430\u043D \u043D\u0430 `.root` \u043F\u043E `data-size` \u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u0435\u0442\u0441\u044F \u0441\u044E\u0434\u0430. */\n.panel {\n box-sizing: border-box;\n padding: var(--prime-sys-spacing-x4) 0;\n font-size: var(--prime-tabs-trigger-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n color: var(--prime-sys-color-content-primary);\n}\n\n/* \u0412\u043B\u043E\u0436\u0435\u043D\u043D\u0430\u044F \u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u2014 \u0442\u043E\u0442 \u0436\u0435 \u044F\u0440\u0443\u0441, \u0447\u0442\u043E \u0438 `size` \u0443 Tabs.Root (\u043D\u0435 \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 body). */\n.root .panel\n *:not(a, a *, button, button *, input, textarea, select, code, code *, kbd, kbd *, pre, pre *) {\n font-size: var(--prime-tabs-trigger-text);\n line-height: var(--prime-sys-typography-body-lineHeight);\n}\n\n.panel :where(p, ul, ol) {\n margin: 0;\n}\n", "import * as React from \"react\";\n\nimport {\n ControlSizeProvider,\n controlSurfaceToInputSize,\n useOptionalControlSize,\n} from \"@/internal/ControlSizeContext\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\n\nimport styles from \"./Tag.module.css\";\n\nexport type TagSize = \"s\" | \"m\" | \"l\" | \"xl\";\n\nexport type TagRootProps = {\n size?: TagSize;\n onRemove?: () => void;\n disabled?: boolean;\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nexport type TagIconProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst TagRoot = React.forwardRef<HTMLSpanElement, TagRootProps>(\n ({ size: sizeProp, onRemove, disabled, children, className, ...rest }, ref) => {\n const controlSurface = useOptionalControlSize();\n const size =\n sizeProp ?? (controlSurface !== undefined ? controlSurfaceToInputSize(controlSurface) : \"m\");\n\n return (\n <span\n ref={ref}\n className={cx(styles.root, className)}\n aria-disabled={disabled || undefined}\n {...toDataAttributes({\n size,\n disabled: disabled ? true : undefined,\n })}\n {...rest}\n >\n <span className={styles.body}>\n <ControlSizeProvider value={size}>{children}</ControlSizeProvider>\n </span>\n {onRemove ? (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label=\"Remove\"\n onClick={onRemove}\n disabled={disabled}\n >\n <svg className={styles.removeIcon} viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M2 2l8 8M10 2l-8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </span>\n );\n },\n);\n\nTagRoot.displayName = \"TagRoot\";\n\nfunction TagIcon({ children, className }: TagIconProps) {\n return <span className={cx(styles.icon, className)}>{children}</span>;\n}\n\nTagIcon.displayName = \"TagIcon\";\n\nexport const Tag = { Root: TagRoot, Icon: TagIcon };\n", ".root {\n display: inline-flex;\n align-items: center;\n /* \u0412 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 flex/grid \u0441 `align-items: stretch` \u0438\u043D\u0430\u0447\u0435 \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0432\u0441\u044E \u0448\u0438\u0440\u0438\u043D\u0443 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F */\n width: fit-content;\n max-width: 100%;\n gap: var(--prime-sys-size-tag-m-gap);\n padding-block: var(--prime-sys-size-tag-m-paddingY);\n padding-inline: var(--prime-sys-size-tag-m-paddingX);\n font-size: var(--prime-sys-size-tag-m-text);\n line-height: 1;\n border-radius: var(--prime-sys-size-tag-m-radius);\n background: var(--prime-sys-color-surface-accentSoft);\n color: var(--prime-sys-color-content-primary);\n border: var(--prime-sys-unit-1px) solid var(--prime-sys-color-border-subtle);\n white-space: nowrap;\n box-sizing: border-box;\n}\n\n.root[data-size=\"s\"] {\n gap: var(--prime-sys-size-tag-s-gap);\n padding-block: var(--prime-sys-size-tag-s-paddingY);\n padding-inline: var(--prime-sys-size-tag-s-paddingX);\n font-size: var(--prime-sys-size-tag-s-text);\n border-radius: var(--prime-sys-size-tag-s-radius);\n}\n\n.root[data-size=\"l\"] {\n gap: var(--prime-sys-size-tag-l-gap);\n padding-block: var(--prime-sys-size-tag-l-paddingY);\n padding-inline: var(--prime-sys-size-tag-l-paddingX);\n font-size: var(--prime-sys-size-tag-l-text);\n border-radius: var(--prime-sys-size-tag-l-radius);\n}\n\n.root[data-size=\"xl\"] {\n gap: var(--prime-sys-size-tag-xl-gap);\n padding-block: var(--prime-sys-size-tag-xl-paddingY);\n padding-inline: var(--prime-sys-size-tag-xl-paddingX);\n font-size: var(--prime-sys-size-tag-xl-text);\n border-radius: var(--prime-sys-size-tag-xl-radius);\n}\n\n.root[data-disabled=\"true\"] {\n opacity: 0.5;\n}\n\n.body {\n display: inline-flex;\n align-items: center;\n gap: var(--prime-sys-size-tag-m-gap);\n min-width: 0;\n line-height: 1;\n}\n\n.root[data-size=\"s\"] .body {\n gap: var(--prime-sys-size-tag-s-gap);\n}\n\n.root[data-size=\"l\"] .body {\n gap: var(--prime-sys-size-tag-l-gap);\n}\n\n.root[data-size=\"xl\"] .body {\n gap: var(--prime-sys-size-tag-xl-gap);\n}\n\n.icon {\n display: inline-flex;\n width: var(--prime-sys-size-tag-m-iconSize);\n height: var(--prime-sys-size-tag-m-iconSize);\n flex-shrink: 0;\n color: var(--prime-sys-color-content-secondary);\n}\n\n.root[data-size=\"s\"] .icon {\n width: var(--prime-sys-size-tag-s-iconSize);\n height: var(--prime-sys-size-tag-s-iconSize);\n}\n\n.root[data-size=\"l\"] .icon {\n width: var(--prime-sys-size-tag-l-iconSize);\n height: var(--prime-sys-size-tag-l-iconSize);\n}\n\n.root[data-size=\"xl\"] .icon {\n width: var(--prime-sys-size-tag-xl-iconSize);\n height: var(--prime-sys-size-tag-xl-iconSize);\n}\n\n.icon > * {\n width: 100%;\n height: 100%;\n}\n\n.remove {\n display: inline-flex;\n flex: 0 0 var(--prime-sys-size-tag-m-iconSize);\n align-self: stretch;\n align-items: center;\n justify-content: center;\n width: var(--prime-sys-size-tag-m-iconSize);\n min-width: var(--prime-sys-size-tag-m-iconSize);\n min-height: 0;\n margin: 0;\n padding: 0;\n border: none;\n border-radius: var(--prime-sys-shape-radius-s);\n background: transparent;\n color: var(--prime-sys-color-content-secondary);\n font: inherit;\n line-height: 1;\n cursor: pointer;\n appearance: none;\n -webkit-tap-highlight-color: transparent;\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.root[data-size=\"s\"] .remove {\n flex-basis: var(--prime-sys-size-tag-s-iconSize);\n width: var(--prime-sys-size-tag-s-iconSize);\n min-width: var(--prime-sys-size-tag-s-iconSize);\n}\n\n.root[data-size=\"l\"] .remove {\n flex-basis: var(--prime-sys-size-tag-l-iconSize);\n width: var(--prime-sys-size-tag-l-iconSize);\n min-width: var(--prime-sys-size-tag-l-iconSize);\n}\n\n.root[data-size=\"xl\"] .remove {\n flex-basis: var(--prime-sys-size-tag-xl-iconSize);\n width: var(--prime-sys-size-tag-xl-iconSize);\n min-width: var(--prime-sys-size-tag-xl-iconSize);\n}\n\n.remove:hover:not(:disabled) {\n background: transparent;\n color: var(--prime-sys-color-content-primary);\n outline: none;\n box-shadow: none;\n}\n\n.remove:active:not(:disabled) {\n outline: none;\n box-shadow: none;\n}\n\n.remove:focus-visible {\n outline: none;\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.remove:disabled {\n cursor: not-allowed;\n}\n\n.removeIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 62.5%;\n height: 62.5%;\n flex-shrink: 0;\n}\n", "import * as React from \"react\";\nimport { Hint } from \"@/components/hint/Hint\";\nimport { ControlSizeProvider } from \"@/internal/ControlSizeContext\";\nimport { createComponentContext } from \"@/internal/context\";\nimport { cx } from \"@/internal/cx\";\nimport { toDataAttributes } from \"@/internal/data-attributes\";\nimport type { HintSize, TextareaSize, TextareaVariant } from \"@/internal/states\";\n\nimport styles from \"./Textarea.module.css\";\n\n// \u2500\u2500\u2500 Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype TextareaContextValue = {\n hintId: string;\n errorId: string;\n size: TextareaSize;\n disabled: boolean;\n readOnly: boolean;\n registerHint: () => void;\n unregisterHint: () => void;\n registerError: () => void;\n unregisterError: () => void;\n};\n\nconst [TextareaProvider, useTextareaContext] =\n createComponentContext<TextareaContextValue>(\"Textarea\");\n\n// \u2500\u2500\u2500 Char counter (\u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u0434\u043E Root \u0434\u043B\u044F partition \u043F\u043E child.type) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TextareaCharCounterProps = {\n current: number;\n max: number;\n};\n\nfunction TextareaCharCounter({ current, max }: TextareaCharCounterProps) {\n const overflow = current > max;\n return (\n <span\n className={styles.charCounter}\n data-overflow={overflow ? \"true\" : undefined}\n aria-live=\"polite\"\n >\n {current}/{max}\n </span>\n );\n}\n\nTextareaCharCounter.displayName = \"Textarea.CharCounter\";\n\nfunction partitionTextareaChildren(children: React.ReactNode) {\n const counters: React.ReactElement[] = [];\n const rest: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TextareaCharCounter) {\n counters.push(child);\n } else if (child != null && child !== false) {\n rest.push(child);\n }\n });\n\n return { counters, rest };\n}\n\n// \u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TextareaRootProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> & {\n variant?: TextareaVariant;\n size?: TextareaSize;\n autoResize?: boolean;\n};\n\nconst TextareaRoot = React.forwardRef<HTMLTextAreaElement, TextareaRootProps>(\n (\n {\n id,\n className,\n variant = \"default\",\n size = \"m\",\n disabled,\n readOnly,\n autoResize = true,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n defaultValue,\n value,\n onInput,\n children,\n ...rest\n },\n ref,\n ) => {\n const rawId = React.useId();\n const inputId = id ?? rawId;\n const hintId = `${inputId}-hint`;\n const errorId = `${inputId}-error`;\n\n const [hasHint, setHasHint] = React.useState(false);\n const [hasError, setHasError] = React.useState(false);\n\n const invalid = variant === \"error\" || hasError;\n const resolvedAriaInvalid = ariaInvalid ?? (invalid || undefined);\n\n const parts = [\n ariaDescribedBy,\n hasHint ? hintId : undefined,\n hasError ? errorId : undefined,\n ].filter(Boolean);\n const describedBy = parts.length > 0 ? parts.join(\" \") : undefined;\n\n const registerHint = React.useCallback(() => setHasHint(true), []);\n const unregisterHint = React.useCallback(() => setHasHint(false), []);\n const registerError = React.useCallback(() => setHasError(true), []);\n const unregisterError = React.useCallback(() => setHasError(false), []);\n\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const { counters: counterChildren, rest: otherChildren } = partitionTextareaChildren(children);\n const showFooter = counterChildren.length > 0;\n\n // Sync initial value from DOM \u2014 handles both controlled and uncontrolled\n React.useLayoutEffect(() => {\n if (!autoResize || !wrapperRef.current) return;\n const textarea = wrapperRef.current.querySelector(\"textarea\");\n if (textarea) {\n wrapperRef.current.dataset.value = textarea.value;\n }\n }, [autoResize]);\n\n // Sync controlled value changes that happen outside of user input\n React.useEffect(() => {\n if (!autoResize || !wrapperRef.current || typeof value !== \"string\") return;\n wrapperRef.current.dataset.value = value;\n }, [autoResize, value]);\n\n const handleInput = React.useCallback<\n NonNullable<React.TextareaHTMLAttributes<HTMLTextAreaElement>[\"onInput\"]>\n >(\n (e) => {\n if (autoResize && wrapperRef.current) {\n wrapperRef.current.dataset.value = (e.currentTarget as HTMLTextAreaElement).value;\n }\n onInput?.(e);\n },\n [autoResize, onInput],\n );\n\n const ctxValue = React.useMemo(\n () => ({\n hintId,\n errorId,\n size,\n disabled: Boolean(disabled),\n readOnly: Boolean(readOnly),\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n }),\n [\n hintId,\n errorId,\n size,\n disabled,\n readOnly,\n registerHint,\n unregisterHint,\n registerError,\n unregisterError,\n ],\n );\n\n const textareaEl = (\n <textarea\n ref={ref}\n id={inputId}\n className={cx(styles.textarea, autoResize && styles.textareaAutoResize)}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={resolvedAriaInvalid}\n aria-describedby={describedBy}\n defaultValue={defaultValue}\n value={value}\n onInput={handleInput}\n {...rest}\n />\n );\n\n const textareaBlock = autoResize ? (\n <div ref={wrapperRef} className={styles.autoResize}>\n {textareaEl}\n </div>\n ) : (\n textareaEl\n );\n\n return (\n <TextareaProvider value={ctxValue}>\n <ControlSizeProvider value={size}>\n <div className={styles.field} {...toDataAttributes({ size })}>\n <label\n htmlFor={inputId}\n className={cx(styles.control, className)}\n {...toDataAttributes({\n invalid,\n disabled: Boolean(disabled),\n readonly: Boolean(readOnly),\n size,\n })}\n >\n <div className={styles.controlStack}>\n <div className={styles.textareaRegion}>{textareaBlock}</div>\n {showFooter ? <div className={styles.controlFooter}>{counterChildren}</div> : null}\n </div>\n </label>\n {otherChildren}\n </div>\n </ControlSizeProvider>\n </TextareaProvider>\n );\n },\n);\n\nTextareaRoot.displayName = \"Textarea.Root\";\n\n// \u2500\u2500\u2500 Hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TextareaHintProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction TextareaHint({ children, className, ...rest }: TextareaHintProps) {\n const { hintId, registerHint, unregisterHint, size, disabled, readOnly } = useTextareaContext();\n\n React.useLayoutEffect(() => {\n registerHint();\n return () => {\n unregisterHint();\n };\n }, [registerHint, unregisterHint]);\n\n return (\n <Hint.Root\n id={hintId}\n size={size as HintSize}\n variant={disabled || readOnly ? \"disabled\" : \"default\"}\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nTextareaHint.displayName = \"Textarea.Hint\";\n\n// \u2500\u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type TextareaErrorProps = {\n children: React.ReactNode;\n className?: string;\n} & Omit<React.HTMLAttributes<HTMLParagraphElement>, \"id\">;\n\nfunction TextareaError({ children, className, ...rest }: TextareaErrorProps) {\n const { errorId, registerError, unregisterError, size } = useTextareaContext();\n\n React.useLayoutEffect(() => {\n registerError();\n return () => {\n unregisterError();\n };\n }, [registerError, unregisterError]);\n\n return (\n <Hint.Root\n id={errorId}\n size={size as HintSize}\n variant=\"error\"\n className={cx(styles.hintSlot, className)}\n {...rest}\n >\n {children}\n </Hint.Root>\n );\n}\n\nTextareaError.displayName = \"Textarea.Error\";\n\n// \u2500\u2500\u2500 Namespace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const Textarea = {\n Root: TextareaRoot,\n CharCounter: TextareaCharCounter,\n Hint: TextareaHint,\n Error: TextareaError,\n};\n", ".field {\n --prime-textarea-body-size: var(--prime-sys-size-control-m-text);\n --prime-textarea-line-height: var(--prime-sys-typography-body-lineHeight);\n --prime-textarea-min-height: var(--prime-sys-size-textarea-m-minHeight);\n --prime-textarea-stack-gap: var(--prime-sys-size-control-m-gap);\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: grid;\n gap: var(--prime-textarea-stack-gap);\n}\n\n.field[data-size=\"s\"] {\n --prime-textarea-body-size: var(--prime-sys-size-control-s-text);\n --prime-textarea-min-height: var(--prime-sys-size-textarea-s-minHeight);\n --prime-textarea-stack-gap: var(--prime-sys-size-control-s-gap);\n}\n\n.field[data-size=\"l\"] {\n --prime-textarea-body-size: var(--prime-sys-size-control-l-text);\n --prime-textarea-min-height: var(--prime-sys-size-textarea-l-minHeight);\n --prime-textarea-stack-gap: var(--prime-sys-size-control-l-gap);\n}\n\n.field[data-size=\"xl\"] {\n --prime-textarea-body-size: var(--prime-sys-size-control-xl-text);\n --prime-textarea-min-height: var(--prime-sys-size-textarea-xl-minHeight);\n --prime-textarea-stack-gap: var(--prime-sys-size-control-xl-gap);\n}\n\n.control {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n cursor: text;\n border: var(--prime-sys-border-width-control) solid var(--prime-sys-color-field-border);\n background: var(--prime-sys-color-field-bg);\n color: var(--prime-sys-color-field-text);\n box-shadow: var(--prime-sys-elevation-shadow-surface);\n transition:\n border-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n box-shadow var(--prime-sys-motion-medium) var(--prime-sys-motion-standard),\n background-color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.control[data-size=\"s\"] {\n min-height: var(--prime-sys-size-textarea-s-minHeight);\n border-radius: var(--prime-sys-size-textarea-s-radius);\n padding: var(--prime-sys-size-textarea-s-paddingX);\n}\n\n.control[data-size=\"m\"] {\n min-height: var(--prime-sys-size-textarea-m-minHeight);\n border-radius: var(--prime-sys-size-textarea-m-radius);\n padding: var(--prime-sys-size-textarea-m-paddingX);\n}\n\n.control[data-size=\"l\"] {\n min-height: var(--prime-sys-size-textarea-l-minHeight);\n border-radius: var(--prime-sys-size-textarea-l-radius);\n padding: var(--prime-sys-size-textarea-l-paddingX);\n}\n\n.control[data-size=\"xl\"] {\n min-height: var(--prime-sys-size-textarea-xl-minHeight);\n border-radius: var(--prime-sys-size-textarea-xl-radius);\n padding: var(--prime-sys-size-textarea-xl-paddingX);\n}\n\n.control:hover {\n border-color: var(--prime-sys-color-field-borderHover);\n background: var(--prime-sys-color-action-neutralBackgroundHover);\n box-shadow: none;\n}\n\n.control:focus-within {\n border-color: var(--prime-sys-color-field-borderFocus);\n box-shadow: var(--prime-sys-elevation-shadow-buttonFocus);\n}\n\n.control[data-invalid=\"true\"] {\n border-color: var(--prime-sys-color-field-borderError);\n}\n\n.control[data-invalid=\"true\"]:focus-within {\n box-shadow: var(--prime-sys-elevation-shadow-errorFocus);\n}\n\n.control[data-disabled=\"true\"] {\n background: var(--prime-sys-color-surface-accentSoft);\n border-color: transparent;\n box-shadow: none;\n}\n\n.controlStack {\n flex: 1 1 auto;\n min-height: 0;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.textareaRegion {\n flex: 1 1 auto;\n min-height: 0;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.controlFooter {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--prime-sys-spacing-x1);\n padding-top: var(--prime-sys-spacing-x1);\n}\n\n/* \u2500\u2500 Auto-resize wrapper (CSS grid trick) \u2500\u2500 */\n\n.autoResize {\n display: grid;\n flex: 1 1 auto;\n min-height: 0;\n min-width: 0;\n width: 100%;\n}\n\n.autoResize::after {\n content: attr(data-value) \" \";\n white-space: pre-wrap;\n overflow-wrap: break-word;\n word-break: break-word;\n visibility: hidden;\n grid-area: 1 / 1 / 2 / 2;\n font: inherit;\n min-width: 0;\n min-height: var(--prime-textarea-min-height);\n /* padding/border must match .textarea exactly */\n padding: 0;\n border: 0;\n}\n\n/* \u2500\u2500 Base textarea \u2500\u2500 */\n\n.textarea {\n -webkit-appearance: none;\n appearance: none;\n resize: vertical;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n box-sizing: border-box;\n border: 0;\n background: transparent;\n color: inherit;\n outline: none;\n box-shadow: none;\n font-size: var(--prime-textarea-body-size);\n line-height: var(--prime-textarea-line-height);\n /* \u041D\u0435 \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C nowrap \u043E\u0442 \u043F\u0440\u0435\u0434\u043A\u043E\u0432; \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u044B \u0432 value \u0438 \u043C\u044F\u0433\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u043D\u043E\u0441 \u0434\u043B\u0438\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A */\n white-space: pre-wrap;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n.textarea:focus,\n.textarea:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* Applied to textarea when autoResize=true \u2014 overrides resize/overflow */\n.textareaAutoResize {\n grid-area: 1 / 1 / 2 / 2;\n resize: none;\n overflow: hidden;\n}\n\n.textarea:not(.textareaAutoResize) {\n flex: 1 1 auto;\n min-height: var(--prime-textarea-min-height);\n}\n\n.textarea:disabled {\n color: var(--prime-sys-color-content-disabled);\n}\n\n.textarea::placeholder {\n color: var(--prime-sys-color-field-placeholder);\n transition: color var(--prime-sys-motion-medium) var(--prime-sys-motion-standard);\n}\n\n.control:hover .textarea::placeholder,\n.control:focus-within .textarea::placeholder {\n color: var(--prime-sys-color-content-secondary);\n}\n\n/* \u2500\u2500 Hint / error (\u0442\u0438\u043F\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430 \u2014 Hint.Root) \u2500\u2500 */\n\n.hintSlot {\n width: 100%;\n max-width: 100%;\n}\n\n/* \u2500\u2500 Char counter (\u043A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u043E, \u0432\u043D\u0443\u0442\u0440\u0438 \u043F\u043E\u043B\u044F \u2014 \u043A\u0430\u043A AlignUI) \u2500\u2500 */\n\n.charCounter {\n font-size: var(--prime-textarea-body-size);\n line-height: var(--prime-textarea-line-height);\n font-variant-numeric: tabular-nums;\n color: var(--prime-sys-color-content-muted);\n letter-spacing: var(--prime-sys-typography-tracking-normal);\n}\n\n.control[data-disabled=\"true\"] .charCounter {\n color: var(--prime-sys-color-content-disabled);\n}\n\n.charCounter[data-overflow=\"true\"] {\n color: var(--prime-sys-color-content-danger);\n}\n", "export const interactionStates = [\n \"default\",\n \"hover\",\n \"active\",\n \"focus\",\n \"focus-visible\",\n \"disabled\",\n] as const;\n\nexport const selectionStates = [\"selected\", \"checked\", \"indeterminate\"] as const;\n\nexport const validationStates = [\"valid\", \"invalid\", \"readonly\", \"required\"] as const;\n\nexport const asyncStates = [\"idle\", \"loading\", \"success\", \"error\"] as const;\n\nexport const disclosureStates = [\"open\", \"closed\"] as const;\n\nexport const componentVariants = {\n button: [\"primary\", \"neutral\", \"error\"] as const,\n input: [\"default\", \"error\"] as const,\n textarea: [\"default\", \"error\"] as const,\n checkbox: [\"default\", \"error\"] as const,\n radio: [\"default\", \"error\"] as const,\n switch: [\"default\", \"error\"] as const,\n select: [\"default\", \"error\"] as const,\n modal: [\"default\"] as const,\n} as const;\n\nexport const componentSizes = {\n buttonGroup: [\"s\", \"m\", \"l\", \"xl\"] as const,\n button: [\"s\", \"m\", \"l\", \"xl\"] as const,\n input: [\"s\", \"m\", \"l\", \"xl\"] as const,\n textarea: [\"s\", \"m\", \"l\", \"xl\"] as const,\n checkbox: [\"s\", \"m\", \"l\", \"xl\"] as const,\n radio: [\"s\", \"m\", \"l\", \"xl\"] as const,\n switch: [\"s\", \"m\", \"l\", \"xl\"] as const,\n select: [\"s\", \"m\", \"l\", \"xl\"] as const,\n fileUpload: [\"s\", \"m\", \"l\", \"xl\"] as const,\n linkButton: [\"s\", \"m\", \"l\", \"xl\"] as const,\n breadcrumb: [\"s\", \"m\", \"l\", \"xl\"] as const,\n divider: [\"s\", \"m\", \"l\", \"xl\"] as const,\n label: [\"s\", \"m\", \"l\", \"xl\"] as const,\n hint: [\"s\", \"m\", \"l\", \"xl\"] as const,\n banner: [\"s\", \"m\", \"l\", \"xl\"] as const,\n digitInput: [\"s\", \"m\", \"l\", \"xl\"] as const,\n kbd: [\"s\", \"m\", \"l\", \"xl\"] as const,\n slider: [\"s\", \"m\", \"l\", \"xl\"] as const,\n tabs: [\"s\", \"m\", \"l\", \"xl\"] as const,\n pagination: [\"s\", \"m\", \"l\", \"xl\"] as const,\n stepper: [\"s\", \"m\", \"l\", \"xl\"] as const,\n accordion: [\"s\", \"m\", \"l\", \"xl\"] as const,\n dropdown: [\"s\", \"m\", \"l\", \"xl\"] as const,\n progressBar: [\"s\", \"m\", \"l\", \"xl\"] as const,\n sidebar: [\"s\", \"m\", \"l\", \"xl\"] as const,\n drawer: [\"s\", \"m\", \"l\", \"xl\"] as const,\n dataTable: [\"s\", \"m\", \"l\", \"xl\"] as const,\n emptyPage: [\"s\", \"m\", \"l\", \"xl\"] as const,\n} as const;\n\nexport const buttonModes = [\"filled\", \"stroke\", \"lighter\", \"ghost\", \"fancy\"] as const;\n\nexport type InteractionState = (typeof interactionStates)[number];\nexport type SelectionState = (typeof selectionStates)[number];\nexport type ValidationState = (typeof validationStates)[number];\nexport type AsyncState = (typeof asyncStates)[number];\nexport type DisclosureState = (typeof disclosureStates)[number];\n\nexport type ButtonVariant = (typeof componentVariants.button)[number];\nexport type InputVariant = (typeof componentVariants.input)[number];\nexport type TextareaVariant = (typeof componentVariants.textarea)[number];\nexport type CheckboxVariant = (typeof componentVariants.checkbox)[number];\nexport type RadioVariant = (typeof componentVariants.radio)[number];\nexport type SwitchVariant = (typeof componentVariants.switch)[number];\nexport type SelectVariant = (typeof componentVariants.select)[number];\nexport type ModalVariant = (typeof componentVariants.modal)[number];\n\nexport type ButtonGroupSize = (typeof componentSizes.buttonGroup)[number];\nexport type ButtonSize = (typeof componentSizes.button)[number];\nexport type InputSize = (typeof componentSizes.input)[number];\nexport type TextareaSize = (typeof componentSizes.textarea)[number];\nexport type CheckboxSize = (typeof componentSizes.checkbox)[number];\nexport type RadioSize = (typeof componentSizes.radio)[number];\nexport type SwitchSize = (typeof componentSizes.switch)[number];\nexport type SelectSize = (typeof componentSizes.select)[number];\nexport type FileUploadSize = (typeof componentSizes.fileUpload)[number];\nexport type LinkButtonSize = (typeof componentSizes.linkButton)[number];\nexport type BreadcrumbSize = (typeof componentSizes.breadcrumb)[number];\nexport type DividerSize = (typeof componentSizes.divider)[number];\nexport type LabelSize = (typeof componentSizes.label)[number];\nexport type HintSize = (typeof componentSizes.hint)[number];\nexport type BannerSize = (typeof componentSizes.banner)[number];\nexport type DigitInputSize = (typeof componentSizes.digitInput)[number];\nexport type KbdSize = (typeof componentSizes.kbd)[number];\nexport type SliderSize = (typeof componentSizes.slider)[number];\nexport type TabsSize = (typeof componentSizes.tabs)[number];\nexport type PaginationSize = (typeof componentSizes.pagination)[number];\nexport type StepperSize = (typeof componentSizes.stepper)[number];\nexport type AccordionSize = (typeof componentSizes.accordion)[number];\nexport type DropdownSize = (typeof componentSizes.dropdown)[number];\nexport type ProgressBarSize = (typeof componentSizes.progressBar)[number];\nexport type SidebarSize = (typeof componentSizes.sidebar)[number];\nexport type DrawerSize = (typeof componentSizes.drawer)[number];\nexport type DataTableSize = (typeof componentSizes.dataTable)[number];\nexport type EmptyPageSize = (typeof componentSizes.emptyPage)[number];\nexport type ButtonMode = (typeof buttonModes)[number];\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "jsx", "React", "React", "root", "flexItem", "vertical", "horizontal", "both", "touch", "overscrollContain", "overscrollNone", "jsx", "ScrollContainer", "layoutRoot", "layoutMain", "layoutNav", "jsx", "AppShellRoot", "AppShellMain", "AppShellTemplate", "React", "React", "React", "root", "content", "jsx", "React", "React", "React", "React", "content", "tooltipIn", "jsx", "React", "root", "jsx", "Tag", "React", "jsx", "root", "navArea", "backdrop", "navPanel", "navPanelSurface", "header", "headerRow", "headerMain", "content", "footer", "footerInset", "group", "groupHeader", "groupHeaderAction", "groupLabel", "headingTrack", "headingText", "separator", "menu", "menuItem", "menuTooltipAnchor", "menuButton", "menuButtonActive", "menuIcon", "menuLabel", "menuTrailing", "menuAction", "toggleButton", "identityButton", "identityButtonLeading", "identityButtonMain", "identityButtonTitle", "identityButtonSubtitle", "identityButtonTrailing", "text", "navPanelBody", "navDocTree", "navPanelHeading", "navCategory", "navCategoryTrigger", "navCategoryLabel", "navCategoryCount", "navCategoryPanel", "React", "React", "React", "React", "jsx", "jsxs", "SidebarRoot", "jsx", "jsxs", "jsx", "jsxs", "parsed", "element", "React", "root", "item", "header", "trigger", "icon", "arrow", "arrowIcon", "arrowIconClosed", "arrowIconRotate", "arrowIconOpen", "content", "contentInner", "jsx", "jsxs", "AccordionRoot", "AccordionItem", "AccordionHeader", "AccordionTrigger", "AccordionContent", "React", "root", "image", "fallback", "groupRoot", "groupOverflow", "jsx", "React", "root", "dot", "icon", "statusDot", "jsx", "jsxs", "React", "React", "root", "icon", "spinner", "spin", "jsx", "root", "content", "icon", "title", "description", "actions", "closeButton", "jsx", "jsxs", "BannerRoot", "BannerCloseButton", "React", "X", "React", "React", "root", "sizeXs", "sizeS", "sizeM", "sizeL", "sizeXl", "toneDefault", "toneSubtle", "toneAccent", "toneDanger", "jsx", "X", "React", "root", "jsx", "root", "item", "itemHome", "breadcrumbLink", "itemCurrent", "separator", "ellipsis", "jsx", "React", "root", "item", "icon", "jsx", "React", "root", "iconBox", "lead", "headerRow", "stack", "label", "value", "description", "media", "sectionHeader", "sectionTitle", "sectionTrailing", "body", "chart", "title", "delta", "ctaBody", "actions", "listHeader", "list", "listItem", "split", "splitCell", "cover", "jsx", "CardRoot", "CardList", "CardListItem", "React", "root", "icon", "jsx", "React", "root", "iconSlot", "asterisk", "sub", "jsx", "React", "field", "labelRow", "controlCell", "input", "control", "svg", "rect", "checkPath", "indeterminateLine", "text", "hintSlot", "jsx", "jsxs", "CheckboxLabel", "React", "root", "code", "jsx", "CodeBlockRoot", "React", "React", "React", "root", "header", "label", "optionalLabel", "wrapper", "affix", "field", "icon", "inlineAffix", "meta", "metaHint", "jsx", "jsxs", "React", "React", "React", "trigger", "triggerMain", "triggerChevronSlot", "triggerChevron", "triggerValue", "triggerIcon", "content", "item", "itemText", "itemCheckSlot", "itemCheck", "itemIcon", "group", "groupLabel", "separator", "jsx", "jsxs", "slider", "sliderHeader", "sliderLabel", "sliderValue", "sliderTrack", "thumb", "area", "thumbArea", "formatSelectWrap", "channelStrip", "channelStripLead", "channelStripEyedropperBtn", "channelCell", "channelCellHex", "channelInput", "channelSuffix", "swatchPicker", "swatchItem", "triggerSwatch", "triggerSwatchSvg", "swatch", "field", "eyeDropperSquare", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "Fragment", "EyeDropperButton", "React", "React", "React", "overlay", "fadeIn", "content", "scaleIn", "header", "body", "footer", "headerNoDescription", "title", "description", "headText", "headerIcon", "closeButton", "closeBtn", "headerOnly", "bodyOnly", "jsx", "jsxs", "ModalClose", "dialogOverlay", "dialogContent", "dialogContentNarrow", "dialogContentWide", "dialogContentTight", "dialogContentSplitMd", "root", "inputRow", "inputRowComfortable", "inputIcon", "input", "list", "group", "groupFlush", "groupHeading", "groupHeadingRich", "item", "itemAlignStart", "itemIcon", "footer", "footerDense", "footerMuted", "footerKeyBadge", "footerHint", "tagSection", "tagSectionLabel", "tagRow", "itemAction", "jsx", "jsxs", "React", "ChevronRight", "root", "pageButton", "control", "ellipsis", "jsx", "jsxs", "ChevronRight", "root", "viewport", "table", "head", "headRow", "headCell", "headLabel", "sortButton", "sortLabel", "sortIcon", "sortGlyph", "body", "row", "cell", "firstColumnSticky", "cornerCellSticky", "stateCell", "sentinel", "footer", "meta", "jsx", "jsxs", "ChevronDown", "ChevronLeft", "ChevronRight", "React", "React", "pickerRoot", "months", "month", "nav", "navButton", "monthCaption", "monthCaptionLabel", "monthCaptionSpacer", "weekday", "shell", "presetsRow", "presetsBlock", "presetsGroup", "timeSection", "timeRow", "timeField", "timeInputRoot", "timeInputField", "valueText", "calendarViewport", "jsx", "jsxs", "ChevronLeft", "ChevronRight", "ChevronDown", "labels", "sizeProp", "size", "React", "root", "cell", "jsx", "React", "overlay", "drawerFadeIn", "drawerFadeOut", "panel", "drawerSlideInFromRight", "drawerSlideOutToRight", "drawerSlideInFromLeft", "drawerSlideOutToLeft", "header", "headerMain", "icon", "titleBlock", "title", "description", "closeButton", "body", "footer", "jsx", "jsxs", "React", "content", "block", "header", "headerRow", "headerLeading", "headerTrailing", "headerMain", "headerTitle", "headerDescription", "headerDescriptionTruncate", "dropdownInBottom", "dropdownInTop", "item", "itemIcon", "group", "groupLabel", "separator", "React", "jsx", "React", "root", "iconWrap", "title", "description", "actions", "jsx", "EmptyPageRoot", "EmptyPageTitle", "EmptyPageDescription", "Eye", "React", "React", "root", "item", "icon", "indicator", "jsx", "jsxs", "animate", "root", "toolbar", "toolbarLine1", "toolbarLine1End", "toolbarPaneSegment", "toolbarViewportSegment", "previewShell", "previewViewport", "previewInner", "codePane", "Fragment", "jsx", "jsxs", "Eye", "React", "React", "root", "label", "track", "jsx", "jsxs", "root", "input", "inner", "iconWrap", "copy", "title", "titleMuted", "browse", "browseLink", "dropBody", "actionsRow", "chip", "chipLabel", "item", "itemRow", "itemMain", "itemName", "itemNameRow", "itemInlineStatus", "itemMeta", "itemMetaSep", "itemStack", "itemTextGroup", "itemTryAgain", "itemActions", "itemFooter", "itemProgress", "formatBadge", "itemStatusIcon", "statusIconSpin", "fileUploadSpin", "jsx", "jsxs", "React", "root", "jsx", "X", "React", "viewport", "zone", "top", "bottom", "left", "center", "right", "stack", "item", "card", "iconWrap", "icon", "content", "header", "title", "badge", "description", "actionRow", "closeButton", "progressTrack", "progressValue", "notification-glow", "jsx", "jsxs", "X", "React", "jsx", "jsxs", "NotificationStackItem", "React", "section", "root", "header", "title", "description", "body", "jsx", "PageContentRoot", "PageContentSection", "PageContentTitle", "PageContentDescription", "React", "popoverScroll", "popoverInBottom", "popoverInTop", "React", "layoutEqual", "jsx", "React", "root", "track", "fill", "inner", "jsx", "jsxs", "clampProgress", "React", "field", "labelRow", "controlCell", "input", "svg", "outerCircle", "innerCircle", "text", "hintSlot", "jsx", "jsxs", "RadioLabel", "React", "root", "label", "visuallyHidden", "track", "segment", "jsx", "jsxs", "React", "root", "track", "label", "jsx", "jsxs", "clamp", "Slider", "React", "hRoot", "vRoot", "hItem", "hIndicator", "hCheck", "hSeparator", "hSeparatorIcon", "vItem", "vIndicator", "vCheck", "vArrow", "jsx", "jsx", "HorizontalStepperItem", "React", "root", "stepLi", "separatorLi", "content", "title", "description", "React", "jsx", "VerticalStepperItem", "jsx", "jsxs", "StepperStep", "React", "field", "labelRow", "controlCell", "input", "track", "text", "hintSlot", "jsx", "jsxs", "SwitchLabel", "React", "root", "list", "indicator", "indicatorHorizontal", "indicatorVertical", "tab", "icon", "label", "panel", "jsx", "jsxs", "isHorizontal", "React", "root", "body", "icon", "remove", "removeIcon", "jsx", "jsxs", "React", "field", "control", "controlStack", "textareaRegion", "controlFooter", "autoResize", "textarea", "textareaAutoResize", "hintSlot", "charCounter", "jsx", "jsxs"]
7
+ }