@acronis-platform/ui-react 0.55.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/README.md +1 -1
  2. package/package.json +4 -2
  3. package/dist/components/ui/accordion/accordion.js +0 -53
  4. package/dist/components/ui/accordion/accordion.js.map +0 -1
  5. package/dist/components/ui/alert/alert.js +0 -99
  6. package/dist/components/ui/alert/alert.js.map +0 -1
  7. package/dist/components/ui/app-shell/app-shell.js +0 -75
  8. package/dist/components/ui/app-shell/app-shell.js.map +0 -1
  9. package/dist/components/ui/auth-layout/auth-layout.js +0 -56
  10. package/dist/components/ui/auth-layout/auth-layout.js.map +0 -1
  11. package/dist/components/ui/avatar/avatar.js +0 -70
  12. package/dist/components/ui/avatar/avatar.js.map +0 -1
  13. package/dist/components/ui/breadcrumb/breadcrumb.js +0 -116
  14. package/dist/components/ui/breadcrumb/breadcrumb.js.map +0 -1
  15. package/dist/components/ui/button/button.js +0 -50
  16. package/dist/components/ui/button/button.js.map +0 -1
  17. package/dist/components/ui/button-icon/button-icon.js +0 -35
  18. package/dist/components/ui/button-icon/button-icon.js.map +0 -1
  19. package/dist/components/ui/button-menu/button-menu.js +0 -52
  20. package/dist/components/ui/button-menu/button-menu.js.map +0 -1
  21. package/dist/components/ui/card/card.js +0 -92
  22. package/dist/components/ui/card/card.js.map +0 -1
  23. package/dist/components/ui/card-filter/card-filter.js +0 -63
  24. package/dist/components/ui/card-filter/card-filter.js.map +0 -1
  25. package/dist/components/ui/chart/chart.js +0 -213
  26. package/dist/components/ui/chart/chart.js.map +0 -1
  27. package/dist/components/ui/checkbox/checkbox.js +0 -70
  28. package/dist/components/ui/checkbox/checkbox.js.map +0 -1
  29. package/dist/components/ui/chip/chip.js +0 -70
  30. package/dist/components/ui/chip/chip.js.map +0 -1
  31. package/dist/components/ui/collapsible/collapsible.js +0 -22
  32. package/dist/components/ui/collapsible/collapsible.js.map +0 -1
  33. package/dist/components/ui/combobox/combobox.js +0 -153
  34. package/dist/components/ui/combobox/combobox.js.map +0 -1
  35. package/dist/components/ui/data-table/data-table-column-header.js +0 -36
  36. package/dist/components/ui/data-table/data-table-column-header.js.map +0 -1
  37. package/dist/components/ui/data-table/data-table-pagination.js +0 -89
  38. package/dist/components/ui/data-table/data-table-pagination.js.map +0 -1
  39. package/dist/components/ui/data-table/data-table-toolbar.js +0 -46
  40. package/dist/components/ui/data-table/data-table-toolbar.js.map +0 -1
  41. package/dist/components/ui/data-table/data-table-view-options.js +0 -40
  42. package/dist/components/ui/data-table/data-table-view-options.js.map +0 -1
  43. package/dist/components/ui/data-table/data-table.js +0 -89
  44. package/dist/components/ui/data-table/data-table.js.map +0 -1
  45. package/dist/components/ui/description-list/description-list.js +0 -54
  46. package/dist/components/ui/description-list/description-list.js.map +0 -1
  47. package/dist/components/ui/dialog/dialog.js +0 -141
  48. package/dist/components/ui/dialog/dialog.js.map +0 -1
  49. package/dist/components/ui/dropdown-menu/dropdown-menu.js +0 -160
  50. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +0 -1
  51. package/dist/components/ui/empty/empty.js +0 -78
  52. package/dist/components/ui/empty/empty.js.map +0 -1
  53. package/dist/components/ui/field/field.js +0 -189
  54. package/dist/components/ui/field/field.js.map +0 -1
  55. package/dist/components/ui/filter-search/filter-search.js +0 -28
  56. package/dist/components/ui/filter-search/filter-search.js.map +0 -1
  57. package/dist/components/ui/form/form.js +0 -16
  58. package/dist/components/ui/form/form.js.map +0 -1
  59. package/dist/components/ui/grid/grid.js +0 -69
  60. package/dist/components/ui/grid/grid.js.map +0 -1
  61. package/dist/components/ui/input/input.js +0 -22
  62. package/dist/components/ui/input/input.js.map +0 -1
  63. package/dist/components/ui/input-date-picker/input-date-picker.js +0 -104
  64. package/dist/components/ui/input-date-picker/input-date-picker.js.map +0 -1
  65. package/dist/components/ui/input-search/input-search.js +0 -56
  66. package/dist/components/ui/input-search/input-search.js.map +0 -1
  67. package/dist/components/ui/input-select/input-select.js +0 -269
  68. package/dist/components/ui/input-select/input-select.js.map +0 -1
  69. package/dist/components/ui/input-text/input-text.js +0 -87
  70. package/dist/components/ui/input-text/input-text.js.map +0 -1
  71. package/dist/components/ui/input-text-area/input-text-area.js +0 -77
  72. package/dist/components/ui/input-text-area/input-text-area.js.map +0 -1
  73. package/dist/components/ui/label/label.js +0 -12
  74. package/dist/components/ui/label/label.js.map +0 -1
  75. package/dist/components/ui/link/link.js +0 -39
  76. package/dist/components/ui/link/link.js.map +0 -1
  77. package/dist/components/ui/number-field/number-field.js +0 -61
  78. package/dist/components/ui/number-field/number-field.js.map +0 -1
  79. package/dist/components/ui/page-content/page-content.js +0 -19
  80. package/dist/components/ui/page-content/page-content.js.map +0 -1
  81. package/dist/components/ui/page-header/page-header.js +0 -74
  82. package/dist/components/ui/page-header/page-header.js.map +0 -1
  83. package/dist/components/ui/pagination/pagination.js +0 -87
  84. package/dist/components/ui/pagination/pagination.js.map +0 -1
  85. package/dist/components/ui/popover/popover.js +0 -49
  86. package/dist/components/ui/popover/popover.js.map +0 -1
  87. package/dist/components/ui/progress/progress.js +0 -30
  88. package/dist/components/ui/progress/progress.js.map +0 -1
  89. package/dist/components/ui/progress-circle/progress-circle.js +0 -115
  90. package/dist/components/ui/progress-circle/progress-circle.js.map +0 -1
  91. package/dist/components/ui/radio/radio.js +0 -44
  92. package/dist/components/ui/radio/radio.js.map +0 -1
  93. package/dist/components/ui/resizable/resizable.js +0 -44
  94. package/dist/components/ui/resizable/resizable.js.map +0 -1
  95. package/dist/components/ui/scroll-area/scroll-area.js +0 -61
  96. package/dist/components/ui/scroll-area/scroll-area.js.map +0 -1
  97. package/dist/components/ui/search/search.js +0 -93
  98. package/dist/components/ui/search/search.js.map +0 -1
  99. package/dist/components/ui/search-global/search-global.js +0 -60
  100. package/dist/components/ui/search-global/search-global.js.map +0 -1
  101. package/dist/components/ui/section/section.js +0 -37
  102. package/dist/components/ui/section/section.js.map +0 -1
  103. package/dist/components/ui/separator/separator.js +0 -22
  104. package/dist/components/ui/separator/separator.js.map +0 -1
  105. package/dist/components/ui/sheet/sheet-details.js +0 -80
  106. package/dist/components/ui/sheet/sheet-details.js.map +0 -1
  107. package/dist/components/ui/sheet/sheet.js +0 -139
  108. package/dist/components/ui/sheet/sheet.js.map +0 -1
  109. package/dist/components/ui/sidebar-primary/sidebar-primary.js +0 -318
  110. package/dist/components/ui/sidebar-primary/sidebar-primary.js.map +0 -1
  111. package/dist/components/ui/sidebar-secondary/sidebar-secondary.js +0 -624
  112. package/dist/components/ui/sidebar-secondary/sidebar-secondary.js.map +0 -1
  113. package/dist/components/ui/skeleton/skeleton.js +0 -22
  114. package/dist/components/ui/skeleton/skeleton.js.map +0 -1
  115. package/dist/components/ui/slider/slider.js +0 -42
  116. package/dist/components/ui/slider/slider.js.map +0 -1
  117. package/dist/components/ui/spinner/spinner.js +0 -38
  118. package/dist/components/ui/spinner/spinner.js.map +0 -1
  119. package/dist/components/ui/stack/stack.js +0 -61
  120. package/dist/components/ui/stack/stack.js.map +0 -1
  121. package/dist/components/ui/switch/switch.js +0 -41
  122. package/dist/components/ui/switch/switch.js.map +0 -1
  123. package/dist/components/ui/table/table.js +0 -118
  124. package/dist/components/ui/table/table.js.map +0 -1
  125. package/dist/components/ui/tabs/tabs.js +0 -44
  126. package/dist/components/ui/tabs/tabs.js.map +0 -1
  127. package/dist/components/ui/tag/tag.js +0 -47
  128. package/dist/components/ui/tag/tag.js.map +0 -1
  129. package/dist/components/ui/toast/toast.js +0 -85
  130. package/dist/components/ui/toast/toast.js.map +0 -1
  131. package/dist/components/ui/toggle-group/toggle-group.js +0 -47
  132. package/dist/components/ui/toggle-group/toggle-group.js.map +0 -1
  133. package/dist/components/ui/tooltip/tooltip.js +0 -53
  134. package/dist/components/ui/tooltip/tooltip.js.map +0 -1
  135. package/dist/components/ui/widget-placeholder/widget-placeholder.js +0 -106
  136. package/dist/components/ui/widget-placeholder/widget-placeholder.js.map +0 -1
  137. package/dist/index.d.ts +0 -2
  138. package/dist/index.js +0 -361
  139. package/dist/index.js.map +0 -1
  140. package/dist/lib/portal-container.js +0 -14
  141. package/dist/lib/portal-container.js.map +0 -1
  142. package/dist/lib/utils.js +0 -9
  143. package/dist/lib/utils.js.map +0 -1
  144. package/dist/node_modules/.pnpm/@tanstack_react-table@8.21.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-table/build/lib/index.js +0 -104
  145. package/dist/node_modules/.pnpm/@tanstack_react-table@8.21.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-table/build/lib/index.js.map +0 -1
  146. package/dist/node_modules/.pnpm/@tanstack_table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.js +0 -1900
  147. package/dist/node_modules/.pnpm/@tanstack_table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.js.map +0 -1
  148. package/dist/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js +0 -36
  149. package/dist/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js.map +0 -1
  150. package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -17
  151. package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +0 -1
  152. package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-resizable-panels/dist/react-resizable-panels.js +0 -2093
  153. package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-resizable-panels/dist/react-resizable-panels.js.map +0 -1
  154. package/dist/node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2996
  155. package/dist/node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
  156. package/dist/react.d.ts +0 -2
  157. package/dist/react.js +0 -361
  158. package/dist/react.js.map +0 -1
  159. package/dist/src/components/ui/accordion/accordion.d.ts +0 -7
  160. package/dist/src/components/ui/accordion/index.d.ts +0 -1
  161. package/dist/src/components/ui/alert/alert.d.ts +0 -14
  162. package/dist/src/components/ui/alert/index.d.ts +0 -2
  163. package/dist/src/components/ui/app-shell/app-shell.d.ts +0 -8
  164. package/dist/src/components/ui/app-shell/index.d.ts +0 -1
  165. package/dist/src/components/ui/auth-layout/auth-layout.d.ts +0 -6
  166. package/dist/src/components/ui/auth-layout/index.d.ts +0 -1
  167. package/dist/src/components/ui/avatar/avatar.d.ts +0 -27
  168. package/dist/src/components/ui/avatar/index.d.ts +0 -1
  169. package/dist/src/components/ui/breadcrumb/breadcrumb.d.ts +0 -30
  170. package/dist/src/components/ui/breadcrumb/index.d.ts +0 -1
  171. package/dist/src/components/ui/button/button.d.ts +0 -16
  172. package/dist/src/components/ui/button/index.d.ts +0 -1
  173. package/dist/src/components/ui/button-icon/button-icon.d.ts +0 -20
  174. package/dist/src/components/ui/button-icon/index.d.ts +0 -1
  175. package/dist/src/components/ui/button-menu/button-menu.d.ts +0 -29
  176. package/dist/src/components/ui/button-menu/index.d.ts +0 -1
  177. package/dist/src/components/ui/card/card.d.ts +0 -17
  178. package/dist/src/components/ui/card/index.d.ts +0 -1
  179. package/dist/src/components/ui/card-filter/card-filter.d.ts +0 -27
  180. package/dist/src/components/ui/card-filter/index.d.ts +0 -1
  181. package/dist/src/components/ui/chart/chart.d.ts +0 -55
  182. package/dist/src/components/ui/chart/index.d.ts +0 -2
  183. package/dist/src/components/ui/checkbox/checkbox.d.ts +0 -10
  184. package/dist/src/components/ui/checkbox/index.d.ts +0 -1
  185. package/dist/src/components/ui/chip/chip.d.ts +0 -20
  186. package/dist/src/components/ui/chip/index.d.ts +0 -1
  187. package/dist/src/components/ui/collapsible/collapsible.d.ts +0 -5
  188. package/dist/src/components/ui/collapsible/index.d.ts +0 -1
  189. package/dist/src/components/ui/combobox/combobox.d.ts +0 -28
  190. package/dist/src/components/ui/combobox/index.d.ts +0 -2
  191. package/dist/src/components/ui/data-table/data-table-column-header.d.ts +0 -8
  192. package/dist/src/components/ui/data-table/data-table-pagination.d.ts +0 -8
  193. package/dist/src/components/ui/data-table/data-table-toolbar.d.ts +0 -9
  194. package/dist/src/components/ui/data-table/data-table-view-options.d.ts +0 -6
  195. package/dist/src/components/ui/data-table/data-table.d.ts +0 -24
  196. package/dist/src/components/ui/data-table/data-table.docs.d.ts +0 -22
  197. package/dist/src/components/ui/data-table/index.d.ts +0 -5
  198. package/dist/src/components/ui/description-list/description-list.d.ts +0 -8
  199. package/dist/src/components/ui/description-list/index.d.ts +0 -1
  200. package/dist/src/components/ui/dialog/dialog.d.ts +0 -39
  201. package/dist/src/components/ui/dialog/dialog.docs.d.ts +0 -24
  202. package/dist/src/components/ui/dialog/index.d.ts +0 -1
  203. package/dist/src/components/ui/dropdown-menu/dropdown-menu.d.ts +0 -39
  204. package/dist/src/components/ui/dropdown-menu/dropdown-menu.docs.d.ts +0 -25
  205. package/dist/src/components/ui/dropdown-menu/index.d.ts +0 -1
  206. package/dist/src/components/ui/empty/empty.d.ts +0 -9
  207. package/dist/src/components/ui/empty/index.d.ts +0 -1
  208. package/dist/src/components/ui/field/field.d.ts +0 -39
  209. package/dist/src/components/ui/field/field.docs.d.ts +0 -27
  210. package/dist/src/components/ui/field/index.d.ts +0 -2
  211. package/dist/src/components/ui/filter-search/filter-search.d.ts +0 -6
  212. package/dist/src/components/ui/filter-search/index.d.ts +0 -2
  213. package/dist/src/components/ui/form/form.d.ts +0 -6
  214. package/dist/src/components/ui/form/index.d.ts +0 -1
  215. package/dist/src/components/ui/grid/grid.d.ts +0 -15
  216. package/dist/src/components/ui/grid/index.d.ts +0 -1
  217. package/dist/src/components/ui/input/index.d.ts +0 -1
  218. package/dist/src/components/ui/input/input.d.ts +0 -4
  219. package/dist/src/components/ui/input-date-picker/index.d.ts +0 -1
  220. package/dist/src/components/ui/input-date-picker/input-date-picker.d.ts +0 -27
  221. package/dist/src/components/ui/input-search/index.d.ts +0 -1
  222. package/dist/src/components/ui/input-search/input-search.d.ts +0 -10
  223. package/dist/src/components/ui/input-select/index.d.ts +0 -1
  224. package/dist/src/components/ui/input-select/input-select.d.ts +0 -46
  225. package/dist/src/components/ui/input-text/index.d.ts +0 -1
  226. package/dist/src/components/ui/input-text/input-text.d.ts +0 -20
  227. package/dist/src/components/ui/input-text-area/index.d.ts +0 -1
  228. package/dist/src/components/ui/input-text-area/input-text-area.d.ts +0 -16
  229. package/dist/src/components/ui/label/index.d.ts +0 -1
  230. package/dist/src/components/ui/label/label.d.ts +0 -5
  231. package/dist/src/components/ui/label/label.docs.d.ts +0 -10
  232. package/dist/src/components/ui/link/index.d.ts +0 -1
  233. package/dist/src/components/ui/link/link.d.ts +0 -15
  234. package/dist/src/components/ui/number-field/index.d.ts +0 -1
  235. package/dist/src/components/ui/number-field/number-field.d.ts +0 -7
  236. package/dist/src/components/ui/page-content/index.d.ts +0 -1
  237. package/dist/src/components/ui/page-content/page-content.d.ts +0 -4
  238. package/dist/src/components/ui/page-header/index.d.ts +0 -1
  239. package/dist/src/components/ui/page-header/page-header.d.ts +0 -8
  240. package/dist/src/components/ui/pagination/index.d.ts +0 -2
  241. package/dist/src/components/ui/pagination/pagination.d.ts +0 -25
  242. package/dist/src/components/ui/popover/index.d.ts +0 -1
  243. package/dist/src/components/ui/popover/popover.d.ts +0 -27
  244. package/dist/src/components/ui/popover/popover.docs.d.ts +0 -25
  245. package/dist/src/components/ui/progress/index.d.ts +0 -1
  246. package/dist/src/components/ui/progress/progress.d.ts +0 -9
  247. package/dist/src/components/ui/progress/progress.docs.d.ts +0 -16
  248. package/dist/src/components/ui/progress-circle/index.d.ts +0 -1
  249. package/dist/src/components/ui/progress-circle/progress-circle.d.ts +0 -47
  250. package/dist/src/components/ui/progress-circle/progress-circle.docs.d.ts +0 -21
  251. package/dist/src/components/ui/radio/index.d.ts +0 -1
  252. package/dist/src/components/ui/radio/radio.d.ts +0 -8
  253. package/dist/src/components/ui/resizable/index.d.ts +0 -2
  254. package/dist/src/components/ui/resizable/resizable.d.ts +0 -6
  255. package/dist/src/components/ui/scroll-area/index.d.ts +0 -1
  256. package/dist/src/components/ui/scroll-area/scroll-area.d.ts +0 -10
  257. package/dist/src/components/ui/search/index.d.ts +0 -1
  258. package/dist/src/components/ui/search/search.d.ts +0 -7
  259. package/dist/src/components/ui/search-global/index.d.ts +0 -1
  260. package/dist/src/components/ui/search-global/search-global.d.ts +0 -7
  261. package/dist/src/components/ui/section/index.d.ts +0 -1
  262. package/dist/src/components/ui/section/section.d.ts +0 -7
  263. package/dist/src/components/ui/select/index.d.ts +0 -1
  264. package/dist/src/components/ui/select/select.d.ts +0 -1
  265. package/dist/src/components/ui/separator/index.d.ts +0 -1
  266. package/dist/src/components/ui/separator/separator.d.ts +0 -3
  267. package/dist/src/components/ui/sheet/index.d.ts +0 -3
  268. package/dist/src/components/ui/sheet/sheet-details.d.ts +0 -42
  269. package/dist/src/components/ui/sheet/sheet.d.ts +0 -36
  270. package/dist/src/components/ui/sheet/sheet.docs.d.ts +0 -21
  271. package/dist/src/components/ui/sidebar-primary/index.d.ts +0 -1
  272. package/dist/src/components/ui/sidebar-primary/sidebar-primary.d.ts +0 -99
  273. package/dist/src/components/ui/sidebar-secondary/index.d.ts +0 -1
  274. package/dist/src/components/ui/sidebar-secondary/sidebar-secondary.d.ts +0 -117
  275. package/dist/src/components/ui/skeleton/index.d.ts +0 -1
  276. package/dist/src/components/ui/skeleton/skeleton.d.ts +0 -4
  277. package/dist/src/components/ui/slider/index.d.ts +0 -1
  278. package/dist/src/components/ui/slider/slider.d.ts +0 -7
  279. package/dist/src/components/ui/spinner/index.d.ts +0 -1
  280. package/dist/src/components/ui/spinner/spinner.d.ts +0 -9
  281. package/dist/src/components/ui/stack/index.d.ts +0 -1
  282. package/dist/src/components/ui/stack/stack.d.ts +0 -13
  283. package/dist/src/components/ui/switch/index.d.ts +0 -1
  284. package/dist/src/components/ui/switch/switch.d.ts +0 -8
  285. package/dist/src/components/ui/table/index.d.ts +0 -1
  286. package/dist/src/components/ui/table/table.d.ts +0 -23
  287. package/dist/src/components/ui/tabs/index.d.ts +0 -1
  288. package/dist/src/components/ui/tabs/tabs.d.ts +0 -6
  289. package/dist/src/components/ui/tabs/tabs.docs.d.ts +0 -25
  290. package/dist/src/components/ui/tag/index.d.ts +0 -1
  291. package/dist/src/components/ui/tag/tag.d.ts +0 -12
  292. package/dist/src/components/ui/toast/index.d.ts +0 -1
  293. package/dist/src/components/ui/toast/toast.d.ts +0 -48
  294. package/dist/src/components/ui/toast/toast.docs.d.ts +0 -12
  295. package/dist/src/components/ui/toggle-group/index.d.ts +0 -1
  296. package/dist/src/components/ui/toggle-group/toggle-group.d.ts +0 -7
  297. package/dist/src/components/ui/tooltip/index.d.ts +0 -1
  298. package/dist/src/components/ui/tooltip/tooltip.d.ts +0 -13
  299. package/dist/src/components/ui/widget-placeholder/index.d.ts +0 -1
  300. package/dist/src/components/ui/widget-placeholder/widget-placeholder.d.ts +0 -18
  301. package/dist/src/components/ui/widget-placeholder/widget-placeholder.docs.d.ts +0 -14
  302. package/dist/src/index.d.ts +0 -68
  303. package/dist/src/lib/portal-container.d.ts +0 -36
  304. package/dist/src/lib/utils.d.ts +0 -2
  305. package/dist/src/react.d.ts +0 -1
  306. package/dist/styles.d.ts +0 -1
  307. package/dist/ui-react.css +0 -1
@@ -1,139 +0,0 @@
1
- import { jsx as r, jsxs as n, Fragment as g } from "react/jsx-runtime";
2
- import * as d from "react";
3
- import { Dialog as a } from "@base-ui/react/dialog";
4
- import { TimesIcon as x } from "@acronis-platform/icons-react/stroke-mono";
5
- import { cva as y } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
6
- import { cn as s } from "../../../lib/utils.js";
7
- import { usePortalContainer as v } from "../../../lib/portal-container.js";
8
- const S = y(
9
- "fixed z-50 flex flex-col overflow-hidden bg-muted text-foreground shadow-lg duration-300 data-[open]:animate-in data-[closed]:animate-out",
10
- {
11
- variants: {
12
- side: {
13
- top: "inset-x-0 top-0 max-h-[80vh] border-b border-border data-[open]:slide-in-from-top data-[closed]:slide-out-to-top",
14
- bottom: "inset-x-0 bottom-0 max-h-[80vh] border-t border-border data-[open]:slide-in-from-bottom data-[closed]:slide-out-to-bottom",
15
- left: "inset-y-0 left-0 h-full w-3/4 border-r border-border data-[open]:slide-in-from-left data-[closed]:slide-out-to-left sm:max-w-md",
16
- right: "inset-y-0 right-0 h-full w-3/4 border-l border-border data-[open]:slide-in-from-right data-[closed]:slide-out-to-right sm:max-w-md"
17
- }
18
- },
19
- defaultVariants: {
20
- side: "right"
21
- }
22
- }
23
- ), O = a.Root, V = a.Trigger, I = a.Portal, q = a.Close, l = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
24
- a.Backdrop,
25
- {
26
- ref: t,
27
- className: s(
28
- "fixed inset-0 z-50 bg-[var(--ui-background-overlay-primary)] duration-200 data-[open]:animate-in data-[open]:fade-in-0 data-[closed]:animate-out data-[closed]:fade-out-0",
29
- e
30
- ),
31
- ...o
32
- }
33
- ));
34
- l.displayName = "SheetOverlay";
35
- const N = d.forwardRef(
36
- ({
37
- className: e,
38
- children: o,
39
- side: t,
40
- portal: m = !0,
41
- portalContainer: c,
42
- keepMounted: f,
43
- ...p
44
- }, h) => {
45
- const u = v(), b = c ?? u, i = /* @__PURE__ */ n(g, { children: [
46
- /* @__PURE__ */ r(l, {}),
47
- /* @__PURE__ */ r(
48
- a.Popup,
49
- {
50
- ref: h,
51
- className: s(S({ side: t }), e),
52
- ...p,
53
- children: o
54
- }
55
- )
56
- ] });
57
- return m ? /* @__PURE__ */ r(a.Portal, { container: b, keepMounted: f, children: i }) : i;
58
- }
59
- );
60
- N.displayName = "SheetContent";
61
- const w = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
62
- "div",
63
- {
64
- ref: t,
65
- className: s(
66
- "flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-5 py-4",
67
- e
68
- ),
69
- ...o
70
- }
71
- ));
72
- w.displayName = "SheetHeader";
73
- const C = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
74
- "div",
75
- {
76
- ref: t,
77
- className: s(
78
- "flex h-16 shrink-0 items-center justify-end gap-4 border-t border-border bg-background px-6 py-4",
79
- e
80
- ),
81
- ...o
82
- }
83
- ));
84
- C.displayName = "SheetFooter";
85
- const R = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r("div", { ref: t, className: s("flex-1 overflow-auto p-6", e), ...o }));
86
- R.displayName = "SheetBody";
87
- const k = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
88
- a.Title,
89
- {
90
- ref: t,
91
- className: s(
92
- "flex-1 text-lg font-semibold leading-7 text-foreground",
93
- e
94
- ),
95
- ...o
96
- }
97
- ));
98
- k.displayName = "SheetTitle";
99
- const T = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
100
- a.Description,
101
- {
102
- ref: t,
103
- className: s("text-sm text-muted-foreground", e),
104
- ...o
105
- }
106
- ));
107
- T.displayName = "SheetDescription";
108
- const B = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ n(
109
- a.Close,
110
- {
111
- ref: t,
112
- className: s(
113
- "rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none",
114
- e
115
- ),
116
- ...o,
117
- children: [
118
- /* @__PURE__ */ r(x, { size: 24 }),
119
- /* @__PURE__ */ r("span", { className: "sr-only", children: "Close" })
120
- ]
121
- }
122
- ));
123
- B.displayName = "SheetCloseButton";
124
- export {
125
- O as Sheet,
126
- R as SheetBody,
127
- q as SheetClose,
128
- B as SheetCloseButton,
129
- N as SheetContent,
130
- T as SheetDescription,
131
- C as SheetFooter,
132
- w as SheetHeader,
133
- l as SheetOverlay,
134
- I as SheetPortal,
135
- k as SheetTitle,
136
- V as SheetTrigger,
137
- S as sheetVariants
138
- };
139
- //# sourceMappingURL=sheet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet.js","sources":["../../../../src/components/ui/sheet/sheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { TimesIcon } from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\nimport { usePortalContainer } from '@/lib/portal-container';\n\n// Initial version ported from `@acronis-platform/shadcn-uikit`'s `sheet`\n// (packages/ui-legacy/src/components/ui/sheet.tsx). A modal side panel — the\n// same Base UI Dialog primitive the `Dialog` component uses (keyboard, focus\n// trap, scroll lock, ARIA come from Base UI), but anchored to a screen edge with\n// a slide transition. In the Vue kit this was `Details`; it's re-exported under\n// `Details*` aliases for a 1:1 drop-in. No `--ui-sheet-*` token tier exists yet,\n// so this design-pending v1 mirrors the Dialog family's semantic theming:\n// • overlay -> var(--ui-background-overlay-primary)\n// • panel -> bg-muted = --ui-background-surface-secondary\n// • header / footer -> bg-background = --ui-background-surface-primary bars,\n// divided by border-border\n// • title -> text-foreground / description -> text-muted-foreground\n// • close -> text-muted-foreground → hover text-foreground, focus ring\n// var(--ui-focus-primary)\n// Enter/exit slide animations use `tw-animate-css` (imported in styles/index.css),\n// keyed to Base UI's data-[open] / data-[closed] state attributes. Reconcile\n// against the real design with `/figma-component Sheet <url> --update`\n// (Cyber-Compliance node 3442-31542) once the mockup is ready for dev.\n\nconst sheetVariants = cva(\n 'fixed z-50 flex flex-col overflow-hidden bg-muted text-foreground shadow-lg duration-300 data-[open]:animate-in data-[closed]:animate-out',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 max-h-[80vh] border-b border-border data-[open]:slide-in-from-top data-[closed]:slide-out-to-top',\n bottom:\n 'inset-x-0 bottom-0 max-h-[80vh] border-t border-border data-[open]:slide-in-from-bottom data-[closed]:slide-out-to-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r border-border data-[open]:slide-in-from-left data-[closed]:slide-out-to-left sm:max-w-md',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l border-border data-[open]:slide-in-from-right data-[closed]:slide-out-to-right sm:max-w-md',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n);\n\nconst Sheet = DialogPrimitive.Root;\n\nconst SheetTrigger = DialogPrimitive.Trigger;\n\nconst SheetPortal = DialogPrimitive.Portal;\n\nconst SheetClose = DialogPrimitive.Close;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Backdrop>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Backdrop>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-[var(--ui-background-overlay-primary)] duration-200 data-[open]:animate-in data-[open]:fade-in-0 data-[closed]:animate-out data-[closed]:fade-out-0',\n className\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = 'SheetOverlay';\n\nexport interface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Popup>,\n VariantProps<typeof sheetVariants> {\n /** Screen edge the panel anchors to. Defaults to `right`. */\n side?: VariantProps<typeof sheetVariants>['side'];\n /**\n * Render the content inside a portal (default `true`). Base UI requires the\n * Popup to sit in a Portal for correct stacking; set `false` for inline usage\n * (e.g. when the caller supplies its own `SheetPortal`, or in tests).\n */\n portal?: boolean;\n /**\n * Portal container. Pass a shadow-root mount for isolated-style previews\n * (the docs demos do this via `useShadowMount`).\n */\n portalContainer?: DialogPrimitive.Portal.Props['container'];\n /** Keep the content mounted while closed (Base UI `Portal` prop). */\n keepMounted?: DialogPrimitive.Portal.Props['keepMounted'];\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n SheetContentProps\n>(\n (\n {\n className,\n children,\n side,\n portal = true,\n portalContainer,\n keepMounted,\n ...props\n },\n ref\n ) => {\n const ctxContainer = usePortalContainer();\n const resolvedContainer = portalContainer ?? ctxContainer;\n\n const popup = (\n <>\n <SheetOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n </DialogPrimitive.Popup>\n </>\n );\n\n return portal ? (\n <DialogPrimitive.Portal container={resolvedContainer} keepMounted={keepMounted}>\n {popup}\n </DialogPrimitive.Portal>\n ) : (\n popup\n );\n }\n);\nSheetContent.displayName = 'SheetContent';\n\nconst SheetHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-5 py-4',\n className\n )}\n {...props}\n />\n));\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex h-16 shrink-0 items-center justify-end gap-4 border-t border-border bg-background px-6 py-4',\n className\n )}\n {...props}\n />\n));\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex-1 overflow-auto p-6', className)} {...props} />\n));\nSheetBody.displayName = 'SheetBody';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'flex-1 text-lg font-semibold leading-7 text-foreground',\n className\n )}\n {...props}\n />\n));\nSheetTitle.displayName = 'SheetTitle';\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nSheetDescription.displayName = 'SheetDescription';\n\nconst SheetCloseButton = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close\n ref={ref}\n className={cn(\n 'rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none',\n className\n )}\n {...props}\n >\n <TimesIcon size={24} />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n));\nSheetCloseButton.displayName = 'SheetCloseButton';\n\nexport {\n Sheet,\n SheetTrigger,\n SheetPortal,\n SheetClose,\n SheetCloseButton,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetBody,\n SheetTitle,\n SheetDescription,\n sheetVariants,\n};\n"],"names":["sheetVariants","cva","Sheet","DialogPrimitive","SheetTrigger","SheetPortal","SheetClose","SheetOverlay","React","className","props","ref","jsx","cn","SheetContent","children","side","portal","portalContainer","keepMounted","ctxContainer","usePortalContainer","resolvedContainer","popup","jsxs","Fragment","SheetHeader","SheetFooter","SheetBody","SheetTitle","SheetDescription","SheetCloseButton","TimesIcon"],"mappings":"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"}
@@ -1,318 +0,0 @@
1
- import { jsx as i, jsxs as v, Fragment as _ } from "react/jsx-runtime";
2
- import * as n from "react";
3
- import { mergeProps as y } from "@base-ui/react/merge-props";
4
- import { useRender as f } from "@base-ui/react/use-render";
5
- import { SquareArrowUpRightIcon as T } from "@acronis-platform/icons-react/stroke-mono";
6
- import { cva as E } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
7
- import { cn as m } from "../../../lib/utils.js";
8
- import { Tooltip as x, TooltipTrigger as h, TooltipContent as w } from "../tooltip/tooltip.js";
9
- import { ScrollArea as I } from "../scroll-area/scroll-area.js";
10
- const N = n.createContext(null);
11
- function g() {
12
- return n.useContext(N) ?? {
13
- expanded: !0,
14
- toggleExpanded: () => {
15
- }
16
- };
17
- }
18
- function M(a, e, r) {
19
- const [s, t] = n.useState(e), o = a !== void 0, l = o ? a : s, d = n.useCallback(
20
- (c) => {
21
- o || t(c), r == null || r(c);
22
- },
23
- [o, r]
24
- );
25
- return [l, d];
26
- }
27
- function S(a, { enabled: e }) {
28
- const [r, s] = n.useState(!1);
29
- return n.useEffect(() => {
30
- const t = a.current;
31
- if (!e || !t) {
32
- s(!1);
33
- return;
34
- }
35
- const o = () => s(t.scrollWidth > t.clientWidth);
36
- o();
37
- const l = new ResizeObserver(o);
38
- return l.observe(t), () => l.disconnect();
39
- }, [a, e]), r;
40
- }
41
- const k = n.forwardRef(
42
- ({
43
- className: a,
44
- expanded: e,
45
- defaultExpanded: r = !0,
46
- onExpandedChange: s,
47
- "aria-label": t = "Primary",
48
- render: o,
49
- children: l,
50
- ...d
51
- }, c) => {
52
- const [u, p] = M(
53
- e,
54
- r,
55
- s
56
- ), b = n.useMemo(
57
- () => ({ expanded: u, toggleExpanded: () => p(!u) }),
58
- [u, p]
59
- ), R = f({
60
- render: o,
61
- ref: c,
62
- defaultTagName: "nav",
63
- props: y(
64
- {
65
- "aria-label": t,
66
- "data-state": u ? "expanded" : "collapsed",
67
- className: m(
68
- "group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-primary-global-container-color)] w-[var(--ui-sidebar-primary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-primary-expanded-container-width)] transition-[width]",
69
- a
70
- ),
71
- children: l
72
- },
73
- d
74
- )
75
- });
76
- return /* @__PURE__ */ i(N.Provider, { value: b, children: R });
77
- }
78
- );
79
- k.displayName = "SidebarPrimary";
80
- const z = n.forwardRef(({ className: a, logo: e, collapsedLogo: r, children: s, ...t }, o) => {
81
- const { expanded: l } = g(), c = e != null || r != null ? l ? e ?? r : r ?? e : s;
82
- return /* @__PURE__ */ i(
83
- "div",
84
- {
85
- ref: o,
86
- className: m(
87
- "flex items-center shrink-0 text-[var(--ui-sidebar-primary-global-logo-color)]",
88
- "px-[var(--ui-sidebar-primary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-primary-collapsed-container-header-padding-y)]",
89
- "[&_:where(img,svg)]:h-[var(--ui-sidebar-primary-collapsed-logo-height)] [&_:where(img,svg)]:w-auto",
90
- "group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-primary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-primary-expanded-container-header-padding-y)]",
91
- "group-data-[state=expanded]/sidebar:[&_:where(img,svg)]:h-[var(--ui-sidebar-primary-expanded-logo-height)]",
92
- a
93
- ),
94
- ...t,
95
- children: c
96
- }
97
- );
98
- });
99
- z.displayName = "SidebarPrimaryHeader";
100
- const O = n.forwardRef(({ className: a, children: e, ...r }, s) => (
101
- // The section list scrolls inside a ScrollArea: its overlay scrollbar floats
102
- // over the content and reserves no gutter, so the full-bleed selected row is
103
- // never cropped — on every OS, unlike a native `overflow` scrollbar.
104
- //
105
- // Base UI's Scroll Area Content sets `min-width: fit-content` inline (it
106
- // needs the content's true intrinsic width to detect horizontal overflow),
107
- // which forces every row wider than the rail — overriding `min-w-0` +
108
- // `truncate` on a long label, since intrinsic-width calculations ignore
109
- // `text-overflow`. We only ever scroll vertically here, so cancel it: the
110
- // `!` (important) is required to beat the inline style's specificity.
111
- /* @__PURE__ */ i(
112
- I,
113
- {
114
- ref: s,
115
- className: m(
116
- "min-h-0 flex-1 [&_[data-slot=scroll-area-content]]:min-w-0!",
117
- a
118
- ),
119
- ...r,
120
- children: /* @__PURE__ */ i("div", { className: "flex flex-col gap-[var(--ui-sidebar-primary-global-section-list-gap)]", children: e })
121
- }
122
- )
123
- ));
124
- O.displayName = "SidebarPrimaryContent";
125
- const C = n.forwardRef(({ className: a, ...e }, r) => /* @__PURE__ */ i(
126
- "div",
127
- {
128
- ref: r,
129
- className: m(
130
- "flex flex-col shrink-0 gap-[var(--ui-sidebar-primary-global-footer-list-gap)]",
131
- "border-t border-[var(--ui-sidebar-primary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-primary-global-container-footer-border-width)]",
132
- a
133
- ),
134
- ...e
135
- }
136
- ));
137
- C.displayName = "SidebarPrimaryFooter";
138
- const F = n.forwardRef(({ className: a, ...e }, r) => (
139
- // position (`:not(:first-child)`) instead of a prop.
140
- /* @__PURE__ */ i(
141
- "div",
142
- {
143
- ref: r,
144
- className: m(
145
- "flex flex-col pb-[var(--ui-sidebar-primary-section-container-padding-y)]",
146
- "[&:not(:first-child)]:border-t [&:not(:first-child)]:border-[var(--ui-sidebar-primary-section-container-border-color)] [&:not(:first-child)]:[border-top-width:var(--ui-sidebar-primary-section-container-border-width)] [&:not(:first-child)]:pt-[var(--ui-sidebar-primary-section-container-padding-y)]",
147
- a
148
- ),
149
- ...e
150
- }
151
- )
152
- ));
153
- F.displayName = "SidebarPrimarySection";
154
- const L = n.forwardRef(({ className: a, ...e }, r) => /* @__PURE__ */ i(
155
- "ul",
156
- {
157
- ref: r,
158
- className: m(
159
- "flex flex-col gap-[var(--ui-sidebar-primary-section-menu-item-list-gap)]",
160
- a
161
- ),
162
- ...e
163
- }
164
- ));
165
- L.displayName = "SidebarPrimaryMenu";
166
- const P = E(
167
- "group/menu-item flex w-full items-center gap-[var(--ui-sidebar-primary-menu-item-global-container-gap)] h-[var(--ui-sidebar-primary-menu-item-global-container-height)] px-[var(--ui-sidebar-primary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-primary-menu-item-global-container-padding-y)] no-underline ui-sidebar-primary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-primary-menu-item-global-icon-size)]",
168
- {
169
- variants: {
170
- variant: {
171
- unselected: "bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-idle)] text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-idle)] [&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-idle)] hover:bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-hover)] hover:text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-hover)] hover:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-hover)] active:bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-active)] active:text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-active)] active:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-active)]",
172
- selected: "bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-idle)] text-[var(--ui-sidebar-primary-menu-item-selected-label-color-idle)] [&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-idle)] hover:bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-hover)] hover:text-[var(--ui-sidebar-primary-menu-item-selected-label-color-hover)] hover:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-hover)] active:bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-active)] active:text-[var(--ui-sidebar-primary-menu-item-selected-label-color-active)] active:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-active)]"
173
- }
174
- },
175
- defaultVariants: {
176
- variant: "unselected"
177
- }
178
- }
179
- ), V = n.forwardRef(
180
- ({ className: a, selected: e = !1, icon: r, render: s, children: t, extras: o, ...l }, d) => {
181
- const { expanded: c } = g(), u = n.useRef(null), p = S(u, { enabled: c }), b = f({
182
- render: s,
183
- ref: d,
184
- defaultTagName: "a",
185
- props: y(
186
- {
187
- className: m(
188
- P({
189
- variant: e ? "selected" : "unselected"
190
- }),
191
- a
192
- ),
193
- "aria-current": e ? "page" : void 0,
194
- children: /* @__PURE__ */ v(_, { children: [
195
- r != null && /* @__PURE__ */ i("span", { className: "flex shrink-0 items-center self-start mt-[var(--ui-sidebar-primary-menu-item-global-icon-margin-t)]", children: r }),
196
- /* @__PURE__ */ v(x, { disabled: !p, children: [
197
- /* @__PURE__ */ i(
198
- h,
199
- {
200
- render: /* @__PURE__ */ i(
201
- "span",
202
- {
203
- ref: u,
204
- className: m(
205
- "min-w-0 flex-1 truncate text-start",
206
- !c && "sr-only"
207
- )
208
- }
209
- ),
210
- children: t
211
- }
212
- ),
213
- /* @__PURE__ */ i(w, { children: t })
214
- ] }),
215
- o != null && /* @__PURE__ */ i("span", { className: m(!c && "hidden"), children: o })
216
- ] })
217
- },
218
- l
219
- )
220
- });
221
- return /* @__PURE__ */ i("li", { className: "contents", children: b });
222
- }
223
- );
224
- V.displayName = "SidebarPrimaryMenuItem";
225
- const j = n.forwardRef(({ className: a, variant: e, shortcut: r, tag: s, children: t, ...o }, l) => {
226
- const { expanded: d } = g(), c = e === "tag" || e === "tag-externalLink", u = e === "externalLink" || e === "tag-externalLink", p = e === "shortcut";
227
- return /* @__PURE__ */ v(
228
- "span",
229
- {
230
- ref: l,
231
- className: m(
232
- "inline-flex items-center gap-[var(--ui-sidebar-primary-menu-item-extras-global-container-gap)]",
233
- !d && "hidden",
234
- a
235
- ),
236
- ...o,
237
- children: [
238
- c && (s ?? t),
239
- p && /* @__PURE__ */ i("span", { className: "ui-sidebar-primary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-primary-menu-item-extras-global-shortcut-color)]", children: r ?? t }),
240
- u && /* @__PURE__ */ i(
241
- T,
242
- {
243
- size: 16,
244
- className: "text-[var(--ui-sidebar-primary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-primary-menu-item-extras-global-external-icon-size)]"
245
- }
246
- )
247
- ]
248
- }
249
- );
250
- });
251
- j.displayName = "SidebarPrimaryMenuItemExtras";
252
- const A = n.forwardRef(({ className: a, icon: e, children: r, extras: s, onClick: t, ...o }, l) => {
253
- const { expanded: d, toggleExpanded: c } = g(), u = n.useRef(null), p = S(u, { enabled: d });
254
- return /* @__PURE__ */ i("li", { className: "contents", children: /* @__PURE__ */ v(
255
- "button",
256
- {
257
- ref: l,
258
- type: "button",
259
- "aria-expanded": d,
260
- className: m(
261
- P({ variant: "unselected" }),
262
- "text-start",
263
- a
264
- ),
265
- onClick: (b) => {
266
- t == null || t(b), b.defaultPrevented || c();
267
- },
268
- ...o,
269
- children: [
270
- e != null && /* @__PURE__ */ i(
271
- "span",
272
- {
273
- className: m(
274
- "flex shrink-0 items-center self-start mt-[var(--ui-sidebar-primary-menu-item-global-icon-margin-t)] transition-transform",
275
- d ? "rtl:rotate-180" : "ltr:rotate-180"
276
- ),
277
- children: e
278
- }
279
- ),
280
- /* @__PURE__ */ v(x, { disabled: !p, children: [
281
- /* @__PURE__ */ i(
282
- h,
283
- {
284
- render: /* @__PURE__ */ i(
285
- "span",
286
- {
287
- ref: u,
288
- className: m(
289
- "min-w-0 flex-1 truncate",
290
- !d && "sr-only"
291
- )
292
- }
293
- ),
294
- children: r
295
- }
296
- ),
297
- /* @__PURE__ */ i(w, { children: r })
298
- ] }),
299
- s != null && /* @__PURE__ */ i("span", { className: m(!d && "hidden"), children: s })
300
- ]
301
- }
302
- ) });
303
- });
304
- A.displayName = "SidebarPrimaryCollapseTrigger";
305
- export {
306
- k as SidebarPrimary,
307
- A as SidebarPrimaryCollapseTrigger,
308
- O as SidebarPrimaryContent,
309
- C as SidebarPrimaryFooter,
310
- z as SidebarPrimaryHeader,
311
- L as SidebarPrimaryMenu,
312
- V as SidebarPrimaryMenuItem,
313
- j as SidebarPrimaryMenuItemExtras,
314
- F as SidebarPrimarySection,
315
- P as sidebarPrimaryMenuItemVariants,
316
- S as useIsOverflowing
317
- };
318
- //# sourceMappingURL=sidebar-primary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar-primary.js","sources":["../../../../src/components/ui/sidebar-primary/sidebar-primary.tsx"],"sourcesContent":["import * as React from 'react';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { SquareArrowUpRightIcon } from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nimport { ScrollArea } from '../scroll-area';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip';\n\n// Composable SidebarPrimary primitives mirroring the Figma \"SidebarPrimary\"\n// component set (node 2092:4359, variant expanded|collapsed). Every color and\n// metric is wired to a next-gen `--ui-sidebar-primary-*` token from\n// @acronis-platform/tokens-pd — no hex, no invented tokens.\n//\n// expanded/collapsed is a width-reflow state, not a panel show/hide, so it is\n// modelled as a controlled/uncontrolled `expanded` prop (default true) that sets\n// `data-state=\"expanded|collapsed\"` on the root. Every metric token has a\n// distinct `collapsed-*` / `expanded-*` name, switched via `data-[state=…]`\n// attribute selectors — Base UI Collapsible would fight this (it hides a panel;\n// the rail never hides). Layout state is shared to descendants through a small\n// context so menu items know whether to show or `sr-only` their label/extras.\n//\n// R2 (menu-item border-radius): the token tier ships no radius token. Verified\n// against the Figma node — the menu-item COMPONENT and its container frame both\n// report cornerRadius=None (the only radius in the node is the COMPONENT_SET's\n// own variant-container chrome). Rows are therefore SQUARE; no `rounded-*` is\n// applied. The focus ring uses the shared `--ui-focus-brand` (no sidebar focus\n// token exists — R1), matching Button/Breadcrumb.\n\ninterface SidebarPrimaryContextValue {\n expanded: boolean;\n /** Flip the rail width — drives the controlled/uncontrolled `expanded` state. */\n toggleExpanded: () => void;\n}\n\nconst SidebarPrimaryContext =\n React.createContext<SidebarPrimaryContextValue | null>(null);\n\nfunction useSidebarPrimaryContext(): SidebarPrimaryContextValue {\n // Default to expanded so parts render standalone (e.g. in isolation tests /\n // stories) without a wrapping root; the toggle is a no-op outside a root.\n return (\n React.useContext(SidebarPrimaryContext) ?? {\n expanded: true,\n toggleExpanded: () => {},\n }\n );\n}\n\n/**\n * Controlled + uncontrolled boolean state (the Base UI idiom). When `controlled`\n * is provided it wins and the setter only emits the change callback; otherwise\n * the setter updates internal state. `onChange` is ALWAYS invoked with the next\n * value so a consumer can react in either mode.\n */\nfunction useControllableBoolean(\n controlled: boolean | undefined,\n defaultValue: boolean,\n onChange?: (next: boolean) => void\n): [boolean, (next: boolean) => void] {\n const [uncontrolled, setUncontrolled] = React.useState(defaultValue);\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n const setValue = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolled(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n return [value, setValue];\n}\n\n/**\n * Tracks whether `ref`'s element is clipping its own content (`scrollWidth >\n * clientWidth`) — used to gate a tooltip so it only opens when a truncated\n * label is actually cut off. Re-measures via `ResizeObserver` (covers the\n * rail's expand/collapse width transition); `enabled` skips measurement\n * entirely (e.g. while collapsed, where the label is `sr-only`).\n */\nfunction useIsOverflowing<T extends Element>(\n ref: React.RefObject<T | null>,\n { enabled }: { enabled: boolean }\n): boolean {\n const [isOverflowing, setIsOverflowing] = React.useState(false);\n\n React.useEffect(() => {\n const element = ref.current;\n if (!enabled || !element) {\n setIsOverflowing(false);\n return;\n }\n const measure = () =>\n setIsOverflowing(element.scrollWidth > element.clientWidth);\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref, enabled]);\n\n return isOverflowing;\n}\n\nexport interface SidebarPrimaryProps\n extends React.ComponentPropsWithoutRef<'nav'> {\n /** Controlled expanded (rail width) state. */\n expanded?: boolean;\n /** Uncontrolled initial expanded state. Defaults to `true` (full width). */\n defaultExpanded?: boolean;\n /** Fires when the expanded state changes (e.g. a consumer toggle). */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Replace the rendered `<nav>` with another element or component\n * (Base UI composition). Accepts a React element or a render function.\n */\n render?: useRender.RenderProp;\n}\n\nconst SidebarPrimary = React.forwardRef<HTMLElement, SidebarPrimaryProps>(\n (\n {\n className,\n expanded: expandedProp,\n defaultExpanded = true,\n onExpandedChange,\n 'aria-label': ariaLabel = 'Primary',\n render,\n children,\n ...props\n },\n ref\n ) => {\n const [expanded, setExpanded] = useControllableBoolean(\n expandedProp,\n defaultExpanded,\n onExpandedChange\n );\n\n // Collapse is driven by the consumer through the layout context — the\n // `SidebarPrimaryCollapseTrigger` (the Figma \"Collapse menu\" footer item)\n // calls `toggleExpanded`, which updates uncontrolled state and always emits\n // `onExpandedChange`. Controlled consumers ignore the internal state and\n // react to the callback.\n const context = React.useMemo<SidebarPrimaryContextValue>(\n () => ({ expanded, toggleExpanded: () => setExpanded(!expanded) }),\n [expanded, setExpanded]\n );\n\n const element = useRender({\n render,\n ref,\n defaultTagName: 'nav',\n props: mergeProps<'nav'>(\n {\n 'aria-label': ariaLabel,\n // `data-state` drives every collapsed/expanded token switch via\n // attribute selectors; typed loosely because React's nav attribute\n // map doesn't include arbitrary data-* keys as literals.\n ...({ 'data-state': expanded ? 'expanded' : 'collapsed' } as Record<\n string,\n string\n >),\n className: cn(\n 'group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-primary-global-container-color)] w-[var(--ui-sidebar-primary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-primary-expanded-container-width)] transition-[width]',\n className\n ),\n children,\n },\n props\n ),\n });\n\n return (\n <SidebarPrimaryContext.Provider value={context}>\n {element}\n </SidebarPrimaryContext.Provider>\n );\n }\n);\nSidebarPrimary.displayName = 'SidebarPrimary';\n\nexport interface SidebarPrimaryHeaderProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Logo content shown while the rail is expanded (e.g. a full lockup).\n * Pairs with `collapsedLogo` to swap distinct graphics per rail state\n * instead of resizing one. When neither `logo` nor `collapsedLogo` is\n * given, `children` renders in both states (the original single-slot\n * behavior).\n */\n logo?: React.ReactNode;\n /**\n * Logo content shown while the rail is collapsed (e.g. a monogram mark).\n * Falls back to `logo` when omitted.\n */\n collapsedLogo?: React.ReactNode;\n}\n\nconst SidebarPrimaryHeader = React.forwardRef<\n HTMLDivElement,\n SidebarPrimaryHeaderProps\n>(({ className, logo, collapsedLogo, children, ...props }, ref) => {\n // Hosts a consumer-provided logo (R7 — no Logo part is built). Padding and the\n // logo height switch on expanded/collapsed; `[&_*]:h-…` sizes whatever the\n // consumer slots in. The logo color token tints any `currentColor` mark.\n const { expanded } = useSidebarPrimaryContext();\n const hasTwinLogos = logo != null || collapsedLogo != null;\n const content = hasTwinLogos\n ? expanded\n ? (logo ?? collapsedLogo)\n : (collapsedLogo ?? logo)\n : children;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center shrink-0 text-[var(--ui-sidebar-primary-global-logo-color)]',\n 'px-[var(--ui-sidebar-primary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-primary-collapsed-container-header-padding-y)]',\n '[&_:where(img,svg)]:h-[var(--ui-sidebar-primary-collapsed-logo-height)] [&_:where(img,svg)]:w-auto',\n 'group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-primary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-primary-expanded-container-header-padding-y)]',\n 'group-data-[state=expanded]/sidebar:[&_:where(img,svg)]:h-[var(--ui-sidebar-primary-expanded-logo-height)]',\n className\n )}\n {...props}\n >\n {content}\n </div>\n );\n});\nSidebarPrimaryHeader.displayName = 'SidebarPrimaryHeader';\n\nconst SidebarPrimaryContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, children, ...props }, ref) => (\n // The section list scrolls inside a ScrollArea: its overlay scrollbar floats\n // over the content and reserves no gutter, so the full-bleed selected row is\n // never cropped — on every OS, unlike a native `overflow` scrollbar.\n //\n // Base UI's Scroll Area Content sets `min-width: fit-content` inline (it\n // needs the content's true intrinsic width to detect horizontal overflow),\n // which forces every row wider than the rail — overriding `min-w-0` +\n // `truncate` on a long label, since intrinsic-width calculations ignore\n // `text-overflow`. We only ever scroll vertically here, so cancel it: the\n // `!` (important) is required to beat the inline style's specificity.\n <ScrollArea\n ref={ref}\n className={cn(\n 'min-h-0 flex-1 [&_[data-slot=scroll-area-content]]:min-w-0!',\n className\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-[var(--ui-sidebar-primary-global-section-list-gap)]\">\n {children}\n </div>\n </ScrollArea>\n));\nSidebarPrimaryContent.displayName = 'SidebarPrimaryContent';\n\nconst SidebarPrimaryFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col shrink-0 gap-[var(--ui-sidebar-primary-global-footer-list-gap)]',\n 'border-t border-[var(--ui-sidebar-primary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-primary-global-container-footer-border-width)]',\n className\n )}\n {...props}\n />\n));\nSidebarPrimaryFooter.displayName = 'SidebarPrimaryFooter';\n\nconst SidebarPrimarySection = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n // position (`:not(:first-child)`) instead of a prop.\n <div\n ref={ref}\n className={cn(\n 'flex flex-col pb-[var(--ui-sidebar-primary-section-container-padding-y)]',\n '[&:not(:first-child)]:border-t [&:not(:first-child)]:border-[var(--ui-sidebar-primary-section-container-border-color)] [&:not(:first-child)]:[border-top-width:var(--ui-sidebar-primary-section-container-border-width)] [&:not(:first-child)]:pt-[var(--ui-sidebar-primary-section-container-padding-y)]',\n className\n )}\n {...props}\n />\n));\nSidebarPrimarySection.displayName = 'SidebarPrimarySection';\n\nconst SidebarPrimaryMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<'ul'>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\n 'flex flex-col gap-[var(--ui-sidebar-primary-section-menu-item-list-gap)]',\n className\n )}\n {...props}\n />\n));\nSidebarPrimaryMenu.displayName = 'SidebarPrimaryMenu';\n\n// Primary recolors the container, the icon AND the label per variant\n// (selected|unselected) × interaction state (idle/hover/active). Every state is\n// wired to its own token even where acronis's value is unchanged, because these\n// are runtime `var()` references — a brand override is only honored if the\n// matching state token is referenced. (This is why Primary cannot share a cva\n// with Secondary, which recolors only the container — DESIGN §6.2.)\nconst sidebarPrimaryMenuItemVariants = cva(\n 'group/menu-item flex w-full items-center gap-[var(--ui-sidebar-primary-menu-item-global-container-gap)] h-[var(--ui-sidebar-primary-menu-item-global-container-height)] px-[var(--ui-sidebar-primary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-primary-menu-item-global-container-padding-y)] no-underline ui-sidebar-primary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-primary-menu-item-global-icon-size)]',\n {\n variants: {\n variant: {\n unselected:\n 'bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-idle)] text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-idle)] [&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-idle)] hover:bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-hover)] hover:text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-hover)] hover:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-hover)] active:bg-[var(--ui-sidebar-primary-menu-item-unselected-container-color-active)] active:text-[var(--ui-sidebar-primary-menu-item-unselected-label-color-active)] active:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-unselected-icon-color-active)]',\n selected:\n 'bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-idle)] text-[var(--ui-sidebar-primary-menu-item-selected-label-color-idle)] [&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-idle)] hover:bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-hover)] hover:text-[var(--ui-sidebar-primary-menu-item-selected-label-color-hover)] hover:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-hover)] active:bg-[var(--ui-sidebar-primary-menu-item-selected-container-color-active)] active:text-[var(--ui-sidebar-primary-menu-item-selected-label-color-active)] active:[&_svg]:text-[var(--ui-sidebar-primary-menu-item-selected-icon-color-active)]',\n },\n },\n defaultVariants: {\n variant: 'unselected',\n },\n }\n);\n\nexport interface SidebarPrimaryMenuItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'>,\n Omit<VariantProps<typeof sidebarPrimaryMenuItemVariants>, 'variant'> {\n /** Marks the current route: sets the `selected` variant + `aria-current=\"page\"`. */\n selected?: boolean;\n /** Leading 16px icon (from `@acronis-platform/icons-react`). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n /**\n * Trailing affordance — a `SidebarPrimaryMenuItemExtras` element. Rendered as\n * a flex sibling of the label (its own `gap` from `_global/container/gap`),\n * not nested inside the label's truncating span — nesting it there collapses\n * the row gap and lets `truncate` clip the affordance. Hidden in collapsed/rail\n * mode regardless of node type — the parent wraps it, so this holds even for\n * a raw node rather than `SidebarPrimaryMenuItemExtras`.\n */\n extras?: React.ReactNode;\n /**\n * Replace the rendered `<a>` with another element or component (e.g. a router\n * `Link` or a `<button>`) via Base UI composition.\n */\n render?: useRender.RenderProp;\n}\n\nconst SidebarPrimaryMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarPrimaryMenuItemProps\n>(\n (\n { className, selected = false, icon, render, children, extras, ...props },\n ref\n ) => {\n const { expanded } = useSidebarPrimaryContext();\n const labelRef = React.useRef<HTMLSpanElement>(null);\n const isOverflowing = useIsOverflowing(labelRef, { enabled: expanded });\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarPrimaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <>\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-primary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n {/* Keep the label in the DOM in collapsed/rail mode as `sr-only` so\n the icon-only row keeps an accessible name (a11y §7) — never\n `display:none` the text. Extras are visually dropped when\n collapsed but stay queryable for the same reason. The tooltip\n trigger is the label span itself, not the row — it must not\n open when hovering the icon or extras, and only ever opens\n when the label is actually clipped. */}\n <Tooltip disabled={!isOverflowing}>\n <TooltipTrigger\n render={\n <span\n ref={labelRef}\n className={cn(\n 'min-w-0 flex-1 truncate text-start',\n !expanded && 'sr-only'\n )}\n />\n }\n >\n {children}\n </TooltipTrigger>\n <TooltipContent>{children}</TooltipContent>\n </Tooltip>\n {extras != null && (\n <span className={cn(!expanded && 'hidden')}>{extras}</span>\n )}\n </>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n }\n);\nSidebarPrimaryMenuItem.displayName = 'SidebarPrimaryMenuItem';\n\nexport interface SidebarPrimaryMenuItemExtrasProps\n extends React.ComponentPropsWithoutRef<'span'> {\n /** Which trailing affordance to render. */\n variant: 'tag' | 'externalLink' | 'shortcut' | 'tag-externalLink';\n /** Shortcut text (e.g. \"⌘H\") for the `shortcut` variant. */\n shortcut?: string;\n /**\n * Tag content for the `tag` / `tag-externalLink` variants. Figma constrains\n * this slot's `Tag` instance to `size=\"sm\"` (no other size is offered on\n * MenuItemExtras) — always pass a `<Tag variant=\"info\" size=\"sm\">`, never the\n * default size.\n */\n tag?: React.ReactNode;\n}\n\nconst SidebarPrimaryMenuItemExtras = React.forwardRef<\n HTMLSpanElement,\n SidebarPrimaryMenuItemExtrasProps\n>(({ className, variant, shortcut, tag, children, ...props }, ref) => {\n const { expanded } = useSidebarPrimaryContext();\n const showTag = variant === 'tag' || variant === 'tag-externalLink';\n const showExternal =\n variant === 'externalLink' || variant === 'tag-externalLink';\n const showShortcut = variant === 'shortcut';\n\n return (\n <span\n ref={ref}\n // The extras cluster is rail-mode noise — drop it when collapsed.\n className={cn(\n 'inline-flex items-center gap-[var(--ui-sidebar-primary-menu-item-extras-global-container-gap)]',\n !expanded && 'hidden',\n className\n )}\n {...props}\n >\n {showTag && (tag ?? children)}\n {showShortcut && (\n <span className=\"ui-sidebar-primary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-primary-menu-item-extras-global-shortcut-color)]\">\n {shortcut ?? children}\n </span>\n )}\n {showExternal && (\n <SquareArrowUpRightIcon\n size={16}\n className=\"text-[var(--ui-sidebar-primary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-primary-menu-item-extras-global-external-icon-size)]\"\n />\n )}\n </span>\n );\n});\nSidebarPrimaryMenuItemExtras.displayName = 'SidebarPrimaryMenuItemExtras';\n\nexport interface SidebarPrimaryCollapseTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> {\n /** Leading 16px icon (e.g. a panel-left glyph). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n /**\n * Trailing affordance — a `SidebarPrimaryMenuItemExtras` element (Figma\n * shows a `⌘H` shortcut here). Rendered as a flex sibling of the label, same\n * as `SidebarPrimaryMenuItem`'s `extras` prop.\n */\n extras?: React.ReactNode;\n}\n\n// The footer \"Collapse menu\" affordance (Figma). A menu-item-styled `<button>`\n// that flips the rail width via the layout context — this is the live wiring\n// for the controllable `expanded` state (B1). In collapsed mode it keeps its\n// label as `sr-only` like every other row.\nconst SidebarPrimaryCollapseTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarPrimaryCollapseTriggerProps\n>(({ className, icon, children, extras, onClick, ...props }, ref) => {\n const { expanded, toggleExpanded } = useSidebarPrimaryContext();\n const labelRef = React.useRef<HTMLSpanElement>(null);\n const isOverflowing = useIsOverflowing(labelRef, { enabled: expanded });\n\n return (\n <li className=\"contents\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={expanded}\n className={cn(\n sidebarPrimaryMenuItemVariants({ variant: 'unselected' }),\n 'text-start',\n className\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleExpanded();\n }}\n {...props}\n >\n {icon != null && (\n <span\n className={cn(\n 'flex shrink-0 items-center self-start mt-[var(--ui-sidebar-primary-menu-item-global-icon-margin-t)] transition-transform',\n expanded ? 'rtl:rotate-180' : 'ltr:rotate-180'\n )}\n >\n {icon}\n </span>\n )}\n <Tooltip disabled={!isOverflowing}>\n <TooltipTrigger\n render={\n <span\n ref={labelRef}\n className={cn(\n 'min-w-0 flex-1 truncate',\n !expanded && 'sr-only'\n )}\n />\n }\n >\n {children}\n </TooltipTrigger>\n <TooltipContent>{children}</TooltipContent>\n </Tooltip>\n {extras != null && (\n <span className={cn(!expanded && 'hidden')}>{extras}</span>\n )}\n </button>\n </li>\n );\n});\nSidebarPrimaryCollapseTrigger.displayName = 'SidebarPrimaryCollapseTrigger';\n\nexport {\n SidebarPrimary,\n SidebarPrimaryHeader,\n SidebarPrimaryContent,\n SidebarPrimaryFooter,\n SidebarPrimarySection,\n SidebarPrimaryMenu,\n SidebarPrimaryMenuItem,\n SidebarPrimaryMenuItemExtras,\n SidebarPrimaryCollapseTrigger,\n useIsOverflowing,\n sidebarPrimaryMenuItemVariants,\n};\n"],"names":["SidebarPrimaryContext","React","useSidebarPrimaryContext","useControllableBoolean","controlled","defaultValue","onChange","uncontrolled","setUncontrolled","isControlled","value","setValue","next","useIsOverflowing","ref","enabled","isOverflowing","setIsOverflowing","element","measure","observer","SidebarPrimary","className","expandedProp","defaultExpanded","onExpandedChange","ariaLabel","render","children","props","expanded","setExpanded","context","useRender","mergeProps","cn","SidebarPrimaryHeader","logo","collapsedLogo","content","jsx","SidebarPrimaryContent","ScrollArea","SidebarPrimaryFooter","SidebarPrimarySection","SidebarPrimaryMenu","sidebarPrimaryMenuItemVariants","cva","SidebarPrimaryMenuItem","selected","icon","extras","labelRef","inner","jsxs","Fragment","Tooltip","TooltipTrigger","TooltipContent","SidebarPrimaryMenuItemExtras","variant","shortcut","tag","showTag","showExternal","showShortcut","SquareArrowUpRightIcon","SidebarPrimaryCollapseTrigger","onClick","toggleExpanded","event"],"mappings":"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"}