themelia-react-ui 1.0.1 → 2.0.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 (640) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +67 -16
  3. package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
  4. package/dist/accordion-CQXVcd7Q.js.map +1 -0
  5. package/dist/action-menu-BTpyPWJ2.js +264 -0
  6. package/dist/action-menu-BTpyPWJ2.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
  8. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
  10. package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
  12. package/dist/app-shell-BE_j8-AT.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
  14. package/dist/attachment-q69dlt5Y.js.map +1 -0
  15. package/dist/auth-M3vGMgDR.js +723 -0
  16. package/dist/auth-M3vGMgDR.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
  18. package/dist/avatar-djdaaQ_s.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
  20. package/dist/badge-0tATj-tW.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +33 -35
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +246 -222
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +94 -92
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +7 -4
  51. package/dist/base/qr-code.js.map +1 -1
  52. package/dist/base/repeaters.js +53 -53
  53. package/dist/base/repeaters.js.map +1 -1
  54. package/dist/base/sheet.js +1 -1
  55. package/dist/base/sidebar.js +1 -1
  56. package/dist/base/signature-pad.js +84 -82
  57. package/dist/base/signature-pad.js.map +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +7 -7
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/blocks/admin.js +228 -219
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +182 -212
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +665 -620
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +2 -2
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1439 -1553
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +1 -1
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +88 -97
  84. package/dist/blocks/planning.js.map +1 -1
  85. package/dist/blocks/timelines.js +1 -1
  86. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
  87. package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
  88. package/dist/button-BS3KDg00.js +674 -0
  89. package/dist/button-BS3KDg00.js.map +1 -0
  90. package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
  91. package/dist/button-R9CCoH7A.js.map +1 -0
  92. package/dist/buttons-DS0ZIwJ_.js +99 -0
  93. package/dist/buttons-DS0ZIwJ_.js.map +1 -0
  94. package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
  95. package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
  96. package/dist/chart-DwYRKKc-.js +152 -0
  97. package/dist/chart-DwYRKKc-.js.map +1 -0
  98. package/dist/checkbox-B7ygNTYp.js +35 -0
  99. package/dist/checkbox-B7ygNTYp.js.map +1 -0
  100. package/dist/choice-inputs-DrJ17tpL.js +752 -0
  101. package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
  102. package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
  103. package/dist/code-block-CD0B7M93.js.map +1 -0
  104. package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
  105. package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
  106. package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
  107. package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
  108. package/dist/combobox-6dvVny2q.js +272 -0
  109. package/dist/combobox-6dvVny2q.js.map +1 -0
  110. package/dist/combobox-CB7039j7.js +865 -0
  111. package/dist/combobox-CB7039j7.js.map +1 -0
  112. package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
  113. package/dist/command-kPMPjIxJ.js.map +1 -0
  114. package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
  115. package/dist/comments-You0Bzbr.js.map +1 -0
  116. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -2
  118. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  119. package/dist/components/base/badge/badge.d.ts +1 -1
  120. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  121. package/dist/components/base/buttons/base-button.d.ts +7 -0
  122. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  123. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  124. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  125. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  126. package/dist/components/base/buttons/text-button.d.ts +2 -2
  127. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  128. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  129. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  130. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  131. package/dist/components/base/carousel/carousel.d.ts +3 -1
  132. package/dist/components/base/chart/chart.d.ts +7 -7
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
  135. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  136. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  137. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  138. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  139. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  140. package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
  141. package/dist/components/base/display/alert-dialog.d.ts +8 -2
  142. package/dist/components/base/display/content-block.d.ts +4 -2
  143. package/dist/components/base/display/date-block.d.ts +1 -1
  144. package/dist/components/base/display/dialog.d.ts +12 -5
  145. package/dist/components/base/display/surface-title.d.ts +6 -1
  146. package/dist/components/base/feedback/alert.d.ts +1 -1
  147. package/dist/components/base/feedback/state-display.d.ts +5 -4
  148. package/dist/components/base/forms/form-field.d.ts +1 -0
  149. package/dist/components/base/forms/form-sizing.d.ts +35 -3
  150. package/dist/components/base/forms/workflow.d.ts +2 -0
  151. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  152. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  153. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  154. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  155. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  156. package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
  157. package/dist/components/base/navigation/tabs.d.ts +3 -5
  158. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  159. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  160. package/dist/components/base/sheet/index.d.ts +29 -1
  161. package/dist/components/base/sheet/sheet.d.ts +14 -5
  162. package/dist/components/base/spinner/spinner.d.ts +3 -2
  163. package/dist/components/base/structure/structure.types.d.ts +1 -1
  164. package/dist/components/base/table/index.d.ts +1 -1
  165. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  166. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  167. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  168. package/dist/components/base/upload/upload.recipes.d.ts +11 -0
  169. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  170. package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
  171. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  172. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  173. package/dist/components/blocks/analytics/index.d.ts +1 -1
  174. package/dist/components/blocks/analytics/types.d.ts +1 -1
  175. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  176. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  177. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  178. package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  180. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  181. package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
  182. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  183. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  184. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  185. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
  186. package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
  187. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  188. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  190. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  191. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  192. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  193. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  194. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  195. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  196. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  197. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  198. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  199. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  200. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  201. package/dist/components/features/media-library/media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  203. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  204. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  205. package/dist/components/features/overlays/drawer.d.ts +1 -1
  206. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  207. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  208. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  209. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  210. package/dist/components/features/overlays/overlays.types.d.ts +46 -22
  211. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  212. package/dist/components/features/products/partials/index.d.ts +1 -1
  213. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  214. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  215. package/dist/components/features/products/products.types.d.ts +2 -1
  216. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  217. package/dist/components/features/table/data-table.d.ts +1 -1
  218. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  219. package/dist/components/features/table/table.types.d.ts +1 -1
  220. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  221. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  222. package/dist/components/layout/page/index.d.ts +1 -1
  223. package/dist/components/layout/page/page.d.ts +0 -1
  224. package/dist/components/layout/page/page.types.d.ts +62 -6
  225. package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
  226. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  227. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  228. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  229. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  230. package/dist/components/primitives/date.d.ts +16 -3
  231. package/dist/components/primitives/dimensions.d.ts +6 -0
  232. package/dist/components/primitives/duration.d.ts +6 -0
  233. package/dist/components/primitives/file-size.d.ts +6 -0
  234. package/dist/components/primitives/index.d.ts +1 -1
  235. package/dist/components/primitives/initials.d.ts +11 -2
  236. package/dist/components/primitives/link.d.ts +7 -0
  237. package/dist/components/primitives/money.d.ts +29 -7
  238. package/dist/components/primitives/number.d.ts +17 -0
  239. package/dist/components/primitives/value-typography.d.ts +54 -0
  240. package/dist/components/primitives/value.d.ts +31 -6
  241. package/dist/components/typography/heading.d.ts +13 -2
  242. package/dist/components/typography/index.d.ts +1 -1
  243. package/dist/components/typography/label.d.ts +3 -0
  244. package/dist/components/typography/running-text.d.ts +12 -0
  245. package/dist/components/typography/text-link.d.ts +23 -1
  246. package/dist/components/typography/text.d.ts +12 -0
  247. package/dist/components/typography/text.styles.d.ts +37 -5
  248. package/dist/components/ui/button.d.ts +1 -1
  249. package/dist/components/ui/checkbox.d.ts +5 -0
  250. package/dist/components/ui/overlay.recipes.d.ts +15 -2
  251. package/dist/components/ui/popover.d.ts +1 -1
  252. package/dist/components/ui/select.d.ts +3 -1
  253. package/dist/components/ui/sidebar.d.ts +1 -1
  254. package/dist/components/ui/switch.d.ts +5 -0
  255. package/dist/components/ui/table.d.ts +2 -1
  256. package/dist/container.recipes-D9t8MHR3.js +27 -0
  257. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  258. package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
  259. package/dist/containers-D_L4mTVb.js.map +1 -0
  260. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  261. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  262. package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
  263. package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
  264. package/dist/data-display-3xWQUnMA.js +1335 -0
  265. package/dist/data-display-3xWQUnMA.js.map +1 -0
  266. package/dist/date-picker-DrDFj8Lo.js +1527 -0
  267. package/dist/date-picker-DrDFj8Lo.js.map +1 -0
  268. package/dist/date-pickers-CnFCb0n2.js +174 -0
  269. package/dist/date-pickers-CnFCb0n2.js.map +1 -0
  270. package/dist/date-uf3z37Nm.js +144 -0
  271. package/dist/date-uf3z37Nm.js.map +1 -0
  272. package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
  273. package/dist/display-DrdvPwF0.js.map +1 -0
  274. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
  275. package/dist/dropdown-menu-CURh59jb.js.map +1 -0
  276. package/dist/features/activities.js +177 -163
  277. package/dist/features/activities.js.map +1 -1
  278. package/dist/features/ai-chat.js +187 -183
  279. package/dist/features/ai-chat.js.map +1 -1
  280. package/dist/features/async-preview.js +9 -9
  281. package/dist/features/async-preview.js.map +1 -1
  282. package/dist/features/combobox.js +1 -1
  283. package/dist/features/comments.js +1 -1
  284. package/dist/features/data-view.js +25 -23
  285. package/dist/features/data-view.js.map +1 -1
  286. package/dist/features/email-composer/engine.js +1 -1
  287. package/dist/features/email-composer.js +353 -355
  288. package/dist/features/email-composer.js.map +1 -1
  289. package/dist/features/event-calendar.js +346 -354
  290. package/dist/features/event-calendar.js.map +1 -1
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +225 -227
  293. package/dist/features/global-search.js.map +1 -1
  294. package/dist/features/kanban.js +29 -29
  295. package/dist/features/kanban.js.map +1 -1
  296. package/dist/features/map.js +59 -58
  297. package/dist/features/map.js.map +1 -1
  298. package/dist/features/media-library.js +898 -900
  299. package/dist/features/media-library.js.map +1 -1
  300. package/dist/features/mentions.js +1 -1
  301. package/dist/features/overlays.js +1 -1
  302. package/dist/features/products.js +1412 -1444
  303. package/dist/features/products.js.map +1 -1
  304. package/dist/features/questionnaire.js +51 -49
  305. package/dist/features/questionnaire.js.map +1 -1
  306. package/dist/features/resource-assignment.js +103 -97
  307. package/dist/features/resource-assignment.js.map +1 -1
  308. package/dist/features/resource.js +13 -13
  309. package/dist/features/resource.js.map +1 -1
  310. package/dist/features/rich-text-editor.js +2 -2
  311. package/dist/features/schema-form.js +187 -183
  312. package/dist/features/schema-form.js.map +1 -1
  313. package/dist/features/suggestions.js +3 -3
  314. package/dist/features/sync.js +7 -7
  315. package/dist/features/sync.js.map +1 -1
  316. package/dist/features/table.js +1 -1
  317. package/dist/features/theme-tweaker.js +508 -503
  318. package/dist/features/theme-tweaker.js.map +1 -1
  319. package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
  320. package/dist/feedback-C7nR0UtT.js.map +1 -0
  321. package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
  322. package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
  323. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
  324. package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
  325. package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
  326. package/dist/filters-Da-gNPsE.js.map +1 -0
  327. package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
  328. package/dist/form-field-VZRULhUK.js.map +1 -0
  329. package/dist/form-sizing-uWP4lzVh.js +126 -0
  330. package/dist/form-sizing-uWP4lzVh.js.map +1 -0
  331. package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
  332. package/dist/forms-DDeEnXSY.js.map +1 -0
  333. package/dist/forms-numeric-D3CO60IF.js +905 -0
  334. package/dist/forms-numeric-D3CO60IF.js.map +1 -0
  335. package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
  336. package/dist/header-2ycNqGOR.js.map +1 -0
  337. package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
  338. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
  339. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  340. package/dist/http-CdEIHyQf.js.map +1 -0
  341. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
  342. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
  343. package/dist/index.js +2 -2
  344. package/dist/input-BoLm9Hks.js +20 -0
  345. package/dist/input-BoLm9Hks.js.map +1 -0
  346. package/dist/input-DhQdBnV3.js +255 -0
  347. package/dist/input-DhQdBnV3.js.map +1 -0
  348. package/dist/item-xzh8Df65.js +264 -0
  349. package/dist/item-xzh8Df65.js.map +1 -0
  350. package/dist/layout/app-shell.js +1 -1
  351. package/dist/layout/auth.js +1 -1
  352. package/dist/layout/containers.js +1 -1
  353. package/dist/layout/header.js +1 -1
  354. package/dist/layout/hooks.js +1 -1
  355. package/dist/layout/navigation.js +1 -1
  356. package/dist/layout/page.js +1 -1
  357. package/dist/layout/settings.js +1 -1
  358. package/dist/layout/sidebar.js +2 -2
  359. package/dist/layout/workspace.js +1 -1
  360. package/dist/layout.js +10 -10
  361. package/dist/lib/affordance-geometry.generated.d.ts +46 -10
  362. package/dist/lib/control-group-recipes.d.ts +22 -0
  363. package/dist/lib/field-affordance-recipes.d.ts +70 -2
  364. package/dist/lib/field-state-recipes.d.ts +6 -4
  365. package/dist/lib/format.d.ts +9 -0
  366. package/dist/lib/money-format.d.ts +30 -0
  367. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  368. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
  369. package/dist/lib/surface-recipes.d.ts +13 -8
  370. package/dist/lib/token-merge.generated.d.ts +144 -2
  371. package/dist/lib/track-recipes.d.ts +1 -1
  372. package/dist/lib/ui-provider/provider.d.ts +7 -2
  373. package/dist/lib/ui-provider/store.d.ts +6 -2
  374. package/dist/lib/ui-provider/types.d.ts +9 -4
  375. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  376. package/dist/lib/utils.js +1 -1
  377. package/dist/media-gallery-DQUQ0m3O.js +201 -0
  378. package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
  379. package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
  380. package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
  381. package/dist/message-YfFmbXNP.js +127 -0
  382. package/dist/message-YfFmbXNP.js.map +1 -0
  383. package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
  384. package/dist/navigation-Cbp5V8gG.js.map +1 -0
  385. package/dist/navigation-Cs1npsPm.js +300 -0
  386. package/dist/navigation-Cs1npsPm.js.map +1 -0
  387. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
  388. package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
  389. package/dist/number-CKRBYmZK.js +352 -0
  390. package/dist/number-CKRBYmZK.js.map +1 -0
  391. package/dist/overlay.recipes-CNO2S9V6.js +34 -0
  392. package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
  393. package/dist/overlays-DhZO7N-I.js +994 -0
  394. package/dist/overlays-DhZO7N-I.js.map +1 -0
  395. package/dist/page-C6R_8jFt.js +325 -0
  396. package/dist/page-C6R_8jFt.js.map +1 -0
  397. package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
  398. package/dist/page-header-hUTzcRZX.js.map +1 -0
  399. package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
  400. package/dist/pagination-Cm0jqa3I.js.map +1 -0
  401. package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
  402. package/dist/popover-Dcv_9jxr.js.map +1 -0
  403. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
  404. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
  405. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
  406. package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
  407. package/dist/primitives-BHrwQXFC.js +379 -0
  408. package/dist/primitives-BHrwQXFC.js.map +1 -0
  409. package/dist/primitives.js +5 -5
  410. package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
  411. package/dist/progress-Br9WTFya.js.map +1 -0
  412. package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
  413. package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
  414. package/dist/rich-text-editor-CF8QYt5p.js +574 -0
  415. package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
  416. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
  417. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
  418. package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
  419. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
  420. package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
  421. package/dist/scroll-area-DRdr16Pt.js.map +1 -0
  422. package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
  423. package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
  424. package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
  425. package/dist/separator-Do5GWDYi.js.map +1 -0
  426. package/dist/services/actions/action-adapters.d.ts +4 -0
  427. package/dist/services/actions.js +8 -3
  428. package/dist/services/actions.js.map +1 -1
  429. package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
  430. package/dist/settings-DHk0L2MF.js.map +1 -0
  431. package/dist/sheet-DRFNY1_D.js +207 -0
  432. package/dist/sheet-DRFNY1_D.js.map +1 -0
  433. package/dist/sidebar-Cb8WzOvE.js +511 -0
  434. package/dist/sidebar-Cb8WzOvE.js.map +1 -0
  435. package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
  436. package/dist/sidebar-Crc9M9JV.js.map +1 -0
  437. package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
  438. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
  439. package/dist/smart-card-Bek-TwUp.js +599 -0
  440. package/dist/smart-card-Bek-TwUp.js.map +1 -0
  441. package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
  442. package/dist/spinner-CmTAbEp0.js.map +1 -0
  443. package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
  444. package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
  445. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  446. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  447. package/dist/style.css +1 -1
  448. package/dist/surface-recipes-DOdoBXGm.js +28 -0
  449. package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
  450. package/dist/table-D6zKeYQX.js +162 -0
  451. package/dist/table-D6zKeYQX.js.map +1 -0
  452. package/dist/table-Dn4XSrSB.js +1444 -0
  453. package/dist/table-Dn4XSrSB.js.map +1 -0
  454. package/dist/tabs-Dk8E_knt.js +189 -0
  455. package/dist/tabs-Dk8E_knt.js.map +1 -0
  456. package/dist/text-inputs-BFpku0Qd.js +331 -0
  457. package/dist/text-inputs-BFpku0Qd.js.map +1 -0
  458. package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
  459. package/dist/text.styles-g4He6UIW.js.map +1 -0
  460. package/dist/theme.css +90 -124
  461. package/dist/themes/green.css +24 -0
  462. package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
  463. package/dist/timelines-CxuAFIc2.js.map +1 -0
  464. package/dist/track-recipes-CDcKmndW.js +10 -0
  465. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  466. package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
  467. package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
  468. package/dist/typography/rich-text.js +1 -1
  469. package/dist/typography-CAr3dQhX.js +116 -0
  470. package/dist/typography-CAr3dQhX.js.map +1 -0
  471. package/dist/typography.js +2 -2
  472. package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
  473. package/dist/ui-provider-D2_TeLqw.js.map +1 -0
  474. package/dist/ui-provider.js +1 -1
  475. package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
  476. package/dist/upload-B0WHW7ak.js.map +1 -0
  477. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
  478. package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
  479. package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
  480. package/dist/usage-card-U0YBLTNT.js.map +1 -0
  481. package/dist/utils-Cospvlj1.js +4445 -0
  482. package/dist/utils-Cospvlj1.js.map +1 -0
  483. package/dist/value-inputs-CjfzGMsN.js +854 -0
  484. package/dist/value-inputs-CjfzGMsN.js.map +1 -0
  485. package/dist/value-typography-Deb3yQZg.js +116 -0
  486. package/dist/value-typography-Deb3yQZg.js.map +1 -0
  487. package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
  488. package/dist/workspace-YoFjXi6i.js.map +1 -0
  489. package/docs/consumer-skill/SKILL.md +123 -119
  490. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  491. package/docs/consumer-skill/examples/app-layout.tsx +42 -14
  492. package/docs/consumer-skill/examples/detail.tsx +20 -5
  493. package/docs/consumer-skill/examples/edit.tsx +1 -1
  494. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  495. package/docs/consumer-skill/examples/manifest.json +37 -3
  496. package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
  497. package/docs/consumer-skill/examples/website.tsx +56 -0
  498. package/docs/consumer-skill/references/analytics.md +70 -0
  499. package/docs/consumer-skill/references/composition.md +195 -9
  500. package/docs/consumer-skill/references/design-contract.md +33 -7
  501. package/docs/consumer-skill/references/discovery.md +80 -5
  502. package/docs/consumer-skill/references/installation.md +22 -0
  503. package/docs/consumer-skill/references/integration.md +46 -1
  504. package/docs/consumer-skill/references/public-api.json +2083 -237
  505. package/docs/consumer-skill/references/review.md +74 -6
  506. package/docs/consumer-skill/references/theming.md +59 -8
  507. package/docs/consumer-skill/references/tokens.json +180 -9
  508. package/docs/consumer-skill/references/workflows.md +34 -0
  509. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  510. package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
  511. package/docs/consumer-skill/scripts/discovery.mjs +69 -9
  512. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  513. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  514. package/package.json +11 -6
  515. package/dist/accordion-B-5Focs8.js.map +0 -1
  516. package/dist/action-menu-Cx3SdfbN.js +0 -265
  517. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  518. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  519. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  520. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  521. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  522. package/dist/attachment-BO2R47wn.js.map +0 -1
  523. package/dist/auth-OFwWSAap.js +0 -704
  524. package/dist/auth-OFwWSAap.js.map +0 -1
  525. package/dist/avatar-Bpzty83c.js.map +0 -1
  526. package/dist/badge-BZXZT9wd.js.map +0 -1
  527. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  528. package/dist/button-BS6l5JUw.js.map +0 -1
  529. package/dist/buttons-Co6GavvM.js +0 -674
  530. package/dist/buttons-Co6GavvM.js.map +0 -1
  531. package/dist/chart-DVfcwQu6.js +0 -149
  532. package/dist/chart-DVfcwQu6.js.map +0 -1
  533. package/dist/checkbox-BavDRjF7.js +0 -34
  534. package/dist/checkbox-BavDRjF7.js.map +0 -1
  535. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  536. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  537. package/dist/code-block-xHKbAJDj.js.map +0 -1
  538. package/dist/combobox-DEbdr-3u.js +0 -273
  539. package/dist/combobox-DEbdr-3u.js.map +0 -1
  540. package/dist/combobox-xv3yJbzl.js +0 -850
  541. package/dist/combobox-xv3yJbzl.js.map +0 -1
  542. package/dist/command-C0xe7u9B.js.map +0 -1
  543. package/dist/comments-DviPLnwy.js.map +0 -1
  544. package/dist/containers-6s-ucRQQ.js.map +0 -1
  545. package/dist/data-display-cWIRdeaf.js +0 -1129
  546. package/dist/data-display-cWIRdeaf.js.map +0 -1
  547. package/dist/date-BFNMnrS5.js +0 -140
  548. package/dist/date-BFNMnrS5.js.map +0 -1
  549. package/dist/date-picker-CA6ogMQB.js +0 -1521
  550. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  551. package/dist/date-pickers-BPIKLdsD.js +0 -224
  552. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  553. package/dist/display-CFM5myut.js.map +0 -1
  554. package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
  555. package/dist/feedback-DWUkgEjR.js.map +0 -1
  556. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  557. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  558. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  559. package/dist/filters-BhsUtsxW.js.map +0 -1
  560. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  561. package/dist/form-sizing-BWs70_a2.js +0 -100
  562. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  563. package/dist/format-iamDSqs2.js +0 -110
  564. package/dist/format-iamDSqs2.js.map +0 -1
  565. package/dist/forms-B7pzS25o.js.map +0 -1
  566. package/dist/forms-numeric-BUBxELBv.js +0 -867
  567. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  568. package/dist/header-C59QZyxV.js.map +0 -1
  569. package/dist/http-CLTVJc5I.js.map +0 -1
  570. package/dist/input-WwYQZJzG.js +0 -202
  571. package/dist/input-WwYQZJzG.js.map +0 -1
  572. package/dist/input-ci9fIgFH.js +0 -20
  573. package/dist/input-ci9fIgFH.js.map +0 -1
  574. package/dist/item-pJ0GsOiJ.js +0 -257
  575. package/dist/item-pJ0GsOiJ.js.map +0 -1
  576. package/dist/media-gallery-DhDRgnVZ.js +0 -200
  577. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  578. package/dist/message-COsdEvXT.js +0 -108
  579. package/dist/message-COsdEvXT.js.map +0 -1
  580. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  581. package/dist/navigation-DBEu4POU.js +0 -267
  582. package/dist/navigation-DBEu4POU.js.map +0 -1
  583. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  584. package/dist/number-BNT_BIzJ.js +0 -269
  585. package/dist/number-BNT_BIzJ.js.map +0 -1
  586. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  587. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  588. package/dist/overlays-B11wZka6.js +0 -982
  589. package/dist/overlays-B11wZka6.js.map +0 -1
  590. package/dist/page-BV6ioQg3.js +0 -202
  591. package/dist/page-BV6ioQg3.js.map +0 -1
  592. package/dist/page-header-DQRa0jug.js.map +0 -1
  593. package/dist/pagination-C29vvt3I.js.map +0 -1
  594. package/dist/popover-CoLDEg19.js.map +0 -1
  595. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  596. package/dist/primitives-DKPOGVpj.js +0 -330
  597. package/dist/primitives-DKPOGVpj.js.map +0 -1
  598. package/dist/progress-BOe8l_FZ.js.map +0 -1
  599. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  600. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  601. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  602. package/dist/scroll-area-BheMQ270.js.map +0 -1
  603. package/dist/select-B2mb-qN2.js +0 -108
  604. package/dist/select-B2mb-qN2.js.map +0 -1
  605. package/dist/separator-Gk_WXH-l.js.map +0 -1
  606. package/dist/settings-BnCyyPOJ.js.map +0 -1
  607. package/dist/sheet-B-q914Ad.js +0 -205
  608. package/dist/sheet-B-q914Ad.js.map +0 -1
  609. package/dist/sidebar-C_2p3Tfj.js +0 -501
  610. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  611. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  612. package/dist/smart-card-CYLn46e6.js +0 -578
  613. package/dist/smart-card-CYLn46e6.js.map +0 -1
  614. package/dist/spinner-BY9HbUEh.js.map +0 -1
  615. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  616. package/dist/surface-recipes-CQfRr-VL.js +0 -27
  617. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  618. package/dist/table-BS39xnlq.js +0 -1424
  619. package/dist/table-BS39xnlq.js.map +0 -1
  620. package/dist/table-DnlAJ-xR.js +0 -146
  621. package/dist/table-DnlAJ-xR.js.map +0 -1
  622. package/dist/tabs-B5cNMWiP.js +0 -187
  623. package/dist/tabs-B5cNMWiP.js.map +0 -1
  624. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  625. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  626. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  627. package/dist/timelines-B9ICkQcV.js.map +0 -1
  628. package/dist/track-recipes-LLPNVwFg.js +0 -10
  629. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  630. package/dist/typography-Cv8MT-82.js +0 -96
  631. package/dist/typography-Cv8MT-82.js.map +0 -1
  632. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  633. package/dist/upload-D8Za5x_c.js.map +0 -1
  634. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  635. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  636. package/dist/utils-C2EKeIw3.js +0 -72
  637. package/dist/utils-C2EKeIw3.js.map +0 -1
  638. package/dist/value-inputs-DX2dbxjj.js +0 -824
  639. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  640. package/dist/workspace-C1PZmk8L.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-Crc9M9JV.js","names":["React","SidebarProvider","SidebarTrigger","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SidebarMenuAction","SidebarMenuBadge","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","React","SidebarProviderPrimitive","useSidebarPrimitive","SidebarHeaderPrimitive","SidebarFooterPrimitive","SidebarContentPrimitive","SidebarGroupPrimitive","SidebarGroupContentPrimitive","SidebarGroupActionPrimitive","SidebarInputPrimitive","SidebarSeparatorPrimitive","SidebarMenuPrimitive","SidebarMenuItemPrimitive","SidebarMenuActionPrimitive","SidebarMenuBadgePrimitive","SidebarMenuSubPrimitive","SidebarMenuSubItemPrimitive","SidebarInsetPrimitive","SidebarRailPrimitive","SidebarTriggerPrimitive","SidebarMenuButtonPrimitive","SidebarMenuSubButtonPrimitive","SidebarGroupLabelPrimitive","SheetDescription","SheetTitle","SheetHeader","Sheet","Separator","DisplayLabel","Text","TooltipTrigger","Tooltip","TooltipContent","Button","surfaceDividerRecipes","Skeleton","Input","useIsMobile","navigationRowDensityRecipes","navigationRowInlineClasses","navigationChildInsetClasses","React$1","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider$1","forwardedRef","openProp","setOpenProp","props","viewportMobile","hostRef","containerMobile","setContainerMobile","host","adaptTo","update","observer","isMobile","openMobile","setOpenMobile","_open","_setOpen","defaultOpen","open","setOpen","openState","value","toggleSidebar","handleKeyDown","event","state","contextValue","useRender","style","cn","className","SidebarTrigger$1","onClick","PanelLeftIcon","SidebarRail$1","SidebarInset$1","SidebarInput$1","SidebarHeader$1","SidebarFooter$1","SidebarSeparator$1","SidebarContent$1","SidebarGroup$1","SidebarGroupLabel$1","mergeProps","SidebarGroupAction$1","SidebarGroupContent$1","SidebarMenu$1","SidebarMenuItem$1","sidebarMenuButtonVariants","cva","SidebarMenuButton$1","isDisabled","disabled","comp","isActive","target","preventDisabledSidebarActivation","preventDisabledSidebarKey","tooltip","SidebarMenuAction$1","showOnHover","SidebarMenuBadge$1","SidebarMenuSub$1","SidebarMenuSubItem$1","SidebarMenuSubButton$1","defaultSidebarStrings","sidebarMenuButtonStateClasses","sidebarMenuSubButtonStateClasses","SidebarMenuDensityContext","sidebarMenuDensityRecipes","paddedCollapsedSidebarWidthClass","renderSidebarMenuText","children","renderSidebarTooltipText","normalizeSidebarMenuTooltip","getSidebarMenuButtonHeightClass","size","SidebarProvider","menuDensity","Sidebar","stringsProp","strings","useStrings","collapsible","surfaceClassName","rootClassName","SheetContent","contained","variant","side","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupContent","SidebarGroupAction","SidebarInput","SidebarSeparator","SidebarMenu","inheritedDensity","density","recipe","SidebarMenuItem","SidebarMenuAction","SidebarMenuBadge","content","inline","SidebarMenuSkeleton","resolvedWidth","width","showIcon","SidebarMenuSub","SidebarMenuSubItem","SidebarInset","SidebarRail","SidebarTrigger","SidebarMenuButton","normalizedRender","render","normalizedTooltip","resolvedSize","primitiveSize","active","SidebarMenuSubButton","SidebarGroupLabel","useBaseSidebarContext","useBaseSidebarMenuDensity"],"sources":["../src/components/ui/sidebar.tsx","../src/components/base/sidebar/sidebar.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { PanelLeftIcon } from \"lucide-react\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"./tooltip\"\nimport { MOBILE_BREAKPOINT, useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { navigationRowInlineClasses } from \"../../lib/navigation-row-recipes\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n adaptTo = \"viewport\",\n ref: forwardedRef,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n adaptTo?: \"viewport\" | \"container\"\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const viewportMobile = useIsMobile()\n const hostRef = React.useRef<HTMLDivElement>(null)\n const [containerMobile, setContainerMobile] = React.useState<boolean>()\n React.useEffect(() => {\n const host = hostRef.current\n if (adaptTo !== \"container\" || !host || typeof ResizeObserver === \"undefined\") return\n const update = () => setContainerMobile(host.getBoundingClientRect().width < MOBILE_BREAKPOINT)\n update()\n const observer = new ResizeObserver(update)\n observer.observe(host)\n return () => observer.disconnect()\n }, [adaptTo])\n const isMobile = viewportMobile || (adaptTo === \"container\" && (containerMobile ?? false))\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n const host = useRender({\n defaultTagName: \"div\",\n ref: forwardedRef ? [hostRef, forwardedRef] : hostRef,\n props: {\n ...props,\n \"data-slot\": \"sidebar-wrapper\",\n \"data-mobile\": isMobile,\n style: {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties,\n className: cn(\"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\", className),\n children,\n },\n })\n return <SidebarContext.Provider value={contextValue}>{host}</SidebarContext.Provider>\n\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-shell-sidebar-icon-padded\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-space-md group-data-[collapsible=icon]:w-shell-sidebar-icon-padded\"\n : \"border-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background md:peer-data-[variant=inset]:m-space-md md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-space-md relative flex w-full flex-1 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-space-md w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"gap-space-md flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n })\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"box-border border-0 bg-transparent font-sans text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-inner p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden group-data-[collapsible=icon]:hidden\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n })\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"text-sm w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"m-0 p-0 list-none flex w-full min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n cn(\"box-border border-0 bg-transparent py-0 font-sans no-underline ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground text-left transition-[width,height,padding] group-data-[collapsible=icon]:size-action! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:opacity-50 aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0\", navigationRowInlineClasses),\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline: \"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground ring-1 ring-sidebar-border hover:ring-sidebar-accent\",\n },\n size: {\n default: \"h-action\",\n sm: \"h-action-sm\",\n lg: \"h-action-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n render,\n disabled = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar()\n const isDisabled = disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\"\n\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size,\n active: isActive,\n },\n })\n\n // Tooltip.Trigger's disabled prop disables the tooltip, not its DOM target.\n // Own the target state after render composition so a render element cannot\n // re-enable the row; links retain their native role and destination.\n const target = isDisabled ? React.cloneElement(comp as React.ReactElement<React.HTMLAttributes<HTMLElement> & { disabled?: boolean }>, {\n disabled: comp.type === \"a\" ? undefined : true,\n \"aria-disabled\": true,\n tabIndex: -1,\n onClickCapture: preventDisabledSidebarActivation,\n onClick: preventDisabledSidebarActivation,\n onPointerDownCapture: preventDisabledSidebarActivation,\n onKeyDownCapture: preventDisabledSidebarKey,\n onKeyUpCapture: preventDisabledSidebarKey,\n }) : comp\n\n if (!tooltip) {\n return target\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip disabled={isDisabled || state !== \"collapsed\" || isMobile}>\n <TooltipTrigger disabled={isDisabled} render={target} />\n <TooltipContent\n side=\"right\"\n align=\"center\"\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction preventDisabledSidebarActivation(event: React.SyntheticEvent) {\n event.preventDefault()\n event.stopPropagation()\n}\n\nfunction preventDisabledSidebarKey(event: React.KeyboardEvent) {\n if (event.key === \"Enter\" || event.key === \" \") preventDisabledSidebarActivation(event)\n}\n\nfunction SidebarMenuAction({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n showOnHover?: boolean\n }) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"box-border border-0 bg-transparent font-sans text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-inner p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&_svg]:shrink-0\",\n showOnHover &&\n \"peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n },\n })\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-space-xs text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n })\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"h-action flex items-center\", navigationRowInlineClasses, className)}\n {...props}\n >\n {!!showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\"m-0 p-0 list-none border-sidebar-border mx-space-lg translate-x-px gap-space-xs border-l px-row-x py-row-y group-data-[collapsible=icon]:hidden flex min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n render,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<\"a\"> &\n React.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-action-xs focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n navigationRowInlineClasses,\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size,\n active: isActive,\n },\n })\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","/**\n * base/sidebar — tokenized wrapper around the shadcn `Sidebar` compound component.\n *\n * The shadcn source stays untouched. This layer applies the package shell,\n * density, spacing, typography, focus, and stable DOM-hook contracts while\n * preserving every compound part and polymorphic `render` seam.\n */\nimport * as React from 'react';\n\nimport {\n\tSidebarContent as SidebarContentPrimitive,\n\tSidebarFooter as SidebarFooterPrimitive,\n\tSidebarGroup as SidebarGroupPrimitive,\n\tSidebarGroupAction as SidebarGroupActionPrimitive,\n\tSidebarGroupContent as SidebarGroupContentPrimitive,\n\tSidebarGroupLabel as SidebarGroupLabelPrimitive,\n\tSidebarHeader as SidebarHeaderPrimitive,\n\tSidebarInput as SidebarInputPrimitive,\n\tSidebarInset as SidebarInsetPrimitive,\n\tSidebarMenu as SidebarMenuPrimitive,\n\tSidebarMenuAction as SidebarMenuActionPrimitive,\n\tSidebarMenuBadge as SidebarMenuBadgePrimitive,\n\tSidebarMenuButton as SidebarMenuButtonPrimitive,\n\tSidebarMenuItem as SidebarMenuItemPrimitive,\n\tSidebarMenuSub as SidebarMenuSubPrimitive,\n\tSidebarMenuSubButton as SidebarMenuSubButtonPrimitive,\n\tSidebarMenuSubItem as SidebarMenuSubItemPrimitive,\n\tSidebarProvider as SidebarProviderPrimitive,\n\tSidebarRail as SidebarRailPrimitive,\n\tSidebarSeparator as SidebarSeparatorPrimitive,\n\tSidebarTrigger as SidebarTriggerPrimitive,\n\tuseSidebar as useSidebarPrimitive,\n} from '../../ui/sidebar';\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from '../sheet/sheet';\nimport { Skeleton } from '../skeleton';\nimport { DisplayLabel, Text } from '../../typography';\nimport type { ComponentScale } from '../../../lib/component-vocabulary';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { navigationChildInsetClasses, navigationRowDensityRecipes, navigationRowInlineClasses } from '../../../lib/navigation-row-recipes';\n\nexport interface SidebarStrings {\n\tmobileTitle: string;\n\tmobileDescription: string;\n}\n\nexport const defaultSidebarStrings: SidebarStrings = {\n\tmobileTitle: 'Sidebar',\n\tmobileDescription: 'Displays the mobile sidebar.',\n};\n\nexport interface SidebarProps extends React.ComponentProps<'div'> {\n\t/** Edge where the desktop rail and mobile sheet are anchored. */\n\tside?: 'left' | 'right';\n\t/** Surface treatment and inset behavior for the desktop shell. */\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\t/** Desktop collapse mode. `none` renders a permanently expanded panel. */\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\t/** Keeps the desktop sidebar in its parent layout instead of fixing it to the viewport. */\n\tcontained?: boolean;\n\t/** Classes for the visible sidebar surface, separate from the positioning container. */\n\tsurfaceClassName?: string;\n\t/** Classes for the responsive positioning root. */\n\trootClassName?: string;\n\t/** Copy for the visually hidden mobile sheet title and description. */\n\tstrings?: StringsProp<SidebarStrings>;\n}\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContentPrimitive>;\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooterPrimitive>;\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroupPrimitive>;\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupActionPrimitive>;\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContentPrimitive>;\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabelPrimitive>;\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeaderPrimitive>;\nexport interface SidebarInputProps extends React.ComponentProps<typeof SidebarInputPrimitive> {\n\t/** Accessible name when no visible label is associated with the navigation search. */\n\t'aria-label'?: string;\n\t/** Search or filter hint. */\n\tplaceholder?: string;\n\t/** Controlled input value. */\n\tvalue?: React.InputHTMLAttributes<HTMLInputElement>['value'];\n\t/** Disables the navigation input. */\n\tdisabled?: boolean;\n\t/** Native input change callback. */\n\tonChange?: React.ChangeEventHandler<HTMLInputElement>;\n\t/** Additional classes merged with the tokenized control defaults. */\n\tclassName?: string;\n}\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInsetPrimitive>;\nexport type SidebarMenuDensity = 'compact' | 'default' | 'comfortable';\n\nexport interface SidebarMenuProps extends React.ComponentProps<typeof SidebarMenuPrimitive> {\n\t/** Row and child-list rhythm. Inherits the nearest sidebar menu/provider. */\n\tmenuDensity?: SidebarMenuDensity;\n}\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuActionPrimitive>;\nexport interface SidebarMenuBadgeProps extends React.ComponentProps<typeof SidebarMenuBadgePrimitive> {\n\t/** Render in normal flow, for example inside a nested menu button. */\n\tinline?: boolean;\n\t/** Count-bubble size. @default \"md\" */\n\tsize?: ComponentScale;\n}\nexport interface SidebarMenuButtonProps extends Omit<React.ComponentProps<typeof SidebarMenuButtonPrimitive>, 'size' | 'isActive'> {\n\t/** Explicit row scale. Otherwise follows menuDensity, or md in an unconfigured base menu. */\n\tsize?: ComponentScale;\n\t/** Marks the navigation item as current. */\n\tactive?: boolean;\n}\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItemPrimitive>;\nexport interface SidebarMenuSkeletonProps extends React.ComponentProps<'div'> {\n\t/** Show the leading icon placeholder. */\n\tshowIcon?: boolean;\n\t/** Deterministic text-bar width. @default \"72%\" */\n\twidth?: string;\n}\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSubPrimitive>;\nexport interface SidebarMenuSubButtonProps extends Omit<React.ComponentProps<typeof SidebarMenuSubButtonPrimitive>, 'isActive'> {\n\t/** Marks the nested navigation item as current. */\n\tactive?: boolean;\n}\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItemPrimitive>;\nexport interface SidebarProviderProps extends React.ComponentProps<'div'> {\n\t/** Use the provider width for drawers in embedded workspaces; viewport remains the default. */\n\tadaptTo?: 'viewport' | 'container';\n\t/** Initial expanded state for uncontrolled sidebars. @default true */\n\tdefaultOpen?: boolean;\n\t/** Controlled expanded state. */\n\topen?: boolean;\n\t/** Controlled state callback. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Default menu rhythm; individual menus may override it. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Sidebar shell contents. */\n\tchildren?: React.ReactNode;\n\t/** Scoped shell token overrides and other root styles. */\n\tstyle?: React.CSSProperties;\n\t/** Additional classes merged with the provider root. */\n\tclassName?: string;\n}\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRailPrimitive>;\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparatorPrimitive>;\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTriggerPrimitive>;\n\nconst sidebarMenuButtonStateClasses =\n\t'font-medium text-sidebar-foreground transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:text-sidebar-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-foreground';\n\nconst sidebarMenuSubButtonStateClasses =\n\t'font-medium text-sidebar-foreground/80 transition-[background-color,color] hover:bg-transparent hover:text-sidebar-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-transparent data-active:text-primary-accent data-[active=true]:bg-transparent data-[active=true]:text-primary-accent';\n\n// One token-backed recipe covers both composed navigation and raw menu anatomy.\n// No density configured preserves the raw menu button's established md scale.\nconst SidebarMenuDensityContext = React.createContext<SidebarMenuDensity | undefined>(undefined);\nconst sidebarMenuDensityRecipes = navigationRowDensityRecipes;\n\nconst paddedCollapsedSidebarWidthClass =\n\t'group-data-[collapsible=icon]:w-shell-sidebar-icon-padded';\n\nfunction renderSidebarMenuText(children: React.ReactNode) {\n\tif (typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint') {\n\t\treturn (\n\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn children;\n}\n\nfunction renderSidebarTooltipText(children: React.ReactNode) {\n\tif (typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint') {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"inherit\"\n\t\t\t\tlineHeight=\"snug\"\n\t\t\t\tclassName=\"sidebar-menu-button--tooltip-text text-inherit\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn children;\n}\n\nfunction normalizeSidebarMenuTooltip(tooltip: SidebarMenuButtonProps['tooltip']) {\n\tif (!tooltip) return tooltip;\n\n\tif (typeof tooltip === 'string') {\n\t\treturn { children: renderSidebarTooltipText(tooltip) };\n\t}\n\n\treturn {\n\t\t...tooltip,\n\t\tchildren: renderSidebarTooltipText(tooltip.children),\n\t};\n}\n\nfunction getSidebarMenuButtonHeightClass(size: SidebarMenuButtonProps['size']) {\n\tif (size === 'sm') {\n\t\treturn 'h-action-sm group-data-[collapsible=icon]:size-action-sm!';\n\t}\n\tif (size === 'lg') {\n\t\treturn 'h-action-lg group-data-[collapsible=icon]:size-action-lg!';\n\t}\n\treturn 'h-action group-data-[collapsible=icon]:size-action!';\n}\n\nfunction SidebarProvider({ className, style, menuDensity, ...props }: SidebarProviderProps) {\n\treturn (\n\t\t<SidebarMenuDensityContext.Provider value={menuDensity}>\n\t\t\t<SidebarProviderPrimitive\n\t\t\t\tclassName={cn('sidebar-provider--component shell-sidebar-vars', className)}\n\t\t\t\tstyle={{\n\t\t\t\t\t'--sidebar-width': 'var(--shell-sidebar-width)',\n\t\t\t\t\t'--sidebar-width-icon': 'calc(3.75rem * var(--density-scale))',\n\t\t\t\t\t...style,\n\t\t\t\t} as React.CSSProperties}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</SidebarMenuDensityContext.Provider>\n\t);\n}\n\n/** Tokenized responsive sidebar shell with contained and viewport-fixed modes. */\nfunction Sidebar({\n\tside = 'left',\n\tvariant = 'sidebar',\n\tcollapsible = 'offcanvas',\n\tcontained = false,\n\tclassName,\n\tsurfaceClassName,\n\trootClassName,\n\tchildren,\n\tdir,\n\tstrings: stringsProp,\n\t...props\n}: SidebarProps) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebarPrimitive();\n\tconst strings = useStrings(defaultSidebarStrings, stringsProp);\n\n\tif (collapsible === 'none') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tdir={dir}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'sidebar--component shell-sidebar-vars flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\trootClassName,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdir={dir}\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t// Side-qualified so the drawer width replaces the sheet's own 3/4 default.\n\t\t\t\t\t\t'sidebar--component shell-sidebar-vars data-[side=left]:w-(--sidebar-width) data-[side=right]:w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\trootClassName,\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={{ '--sidebar-width': 'min(20rem, calc(100vw - 2rem))' } as React.CSSProperties}\n\t\t\t\t\tside={side}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>{strings.mobileTitle}</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>{strings.mobileDescription}</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"sidebar--surface flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t);\n\t}\n\n\tif (contained) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'sidebar--component shell-sidebar-vars group peer sticky top-0 hidden h-full w-(--sidebar-width) shrink-0 text-sidebar-foreground transition-[width] duration-200 ease-linear md:block',\n\t\t\t\t\t'data-[collapsible=offcanvas]:w-0',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? 'data-[collapsible=icon]:w-shell-sidebar-icon-padded'\n\t\t\t\t\t\t: 'data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\trootClassName,\n\t\t\t\t)}\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tdir={dir}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'absolute inset-y-0 z-10 hidden h-full w-(--sidebar-width) transition-[transform,width] duration-200 ease-linear md:flex',\n\t\t\t\t\t\tside === 'left'\n\t\t\t\t\t\t\t? 'left-0 group-data-[collapsible=offcanvas]:-translate-x-full'\n\t\t\t\t\t\t\t: 'right-0 group-data-[collapsible=offcanvas]:translate-x-full',\n\t\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t\t? cn('px-space-md py-space-lg', paddedCollapsedSidebarWidthClass)\n\t\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-slot=\"sidebar-inner\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'sidebar--surface flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-radius group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',\n\t\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('sidebar--component shell-sidebar-vars group peer hidden text-sidebar-foreground md:block', rootClassName)}\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t\tdata-slot=\"sidebar\"\n\t\t\tdir={dir}\n\t\t>\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar-gap\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n\t\t\t\t\t'group-data-[collapsible=offcanvas]:w-0',\n\t\t\t\t\t'group-data-[side=right]:rotate-180',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? paddedCollapsedSidebarWidthClass\n\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar-container\"\n\t\t\t\tdata-side={side}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? cn('p-space-md', paddedCollapsedSidebarWidthClass)\n\t\t\t\t\t\t: 'border-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar-inner\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'sidebar--surface flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-radius group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction SidebarHeader({ className, ...props }: SidebarHeaderProps) {\n\treturn <SidebarHeaderPrimitive className={cn('sidebar-header--component gap-space-sm px-surface-xs pt-surface-xs', className)} {...props} />;\n}\n\nfunction SidebarFooter({ className, ...props }: SidebarFooterProps) {\n\treturn <SidebarFooterPrimitive className={cn('sidebar-footer--component gap-space-sm p-surface-xs', surfaceDividerRecipes.sidebar.footer, className)} {...props} />;\n}\n\nfunction SidebarContent({ className, ...props }: SidebarContentProps) {\n\treturn <SidebarContentPrimitive className={cn('sidebar-content--component min-w-0 gap-space-sm overflow-x-hidden', className)} {...props} />;\n}\n\nfunction SidebarGroup({ className, ...props }: SidebarGroupProps) {\n\treturn <SidebarGroupPrimitive className={cn('sidebar-group--component px-surface-xs py-space-2xs', className)} {...props} />;\n}\n\nfunction SidebarGroupContent({ className, ...props }: SidebarGroupContentProps) {\n\treturn <SidebarGroupContentPrimitive className={cn('sidebar-group-content--component', className)} {...props} />;\n}\n\nfunction SidebarGroupAction({ className, ...props }: SidebarGroupActionProps) {\n\treturn <SidebarGroupActionPrimitive className={cn('sidebar-group-action--component top-space-xs size-action-xs', className)} {...props} />;\n}\n\nfunction SidebarInput({ className, ...props }: SidebarInputProps) {\n\treturn <SidebarInputPrimitive className={cn('sidebar-input--component h-control-sm px-control-sm text-pxs', className)} {...props} />;\n}\n\nfunction SidebarSeparator({ className, ...props }: SidebarSeparatorProps) {\n\treturn <SidebarSeparatorPrimitive className={cn('sidebar-separator--component mx-space-lg', className)} {...props} />;\n}\n\nfunction SidebarMenu({ className, menuDensity, ...props }: SidebarMenuProps) {\n\tconst inheritedDensity = React.useContext(SidebarMenuDensityContext);\n\tconst density = menuDensity ?? inheritedDensity;\n\tconst recipe = sidebarMenuDensityRecipes[density ?? 'default'];\n\treturn (\n\t\t<SidebarMenuDensityContext.Provider value={density}>\n\t\t\t<SidebarMenuPrimitive className={cn('sidebar-menu--component', recipe.gap, className)} {...props} />\n\t\t</SidebarMenuDensityContext.Provider>\n\t);\n}\n\nfunction SidebarMenuItem({ className, ...props }: SidebarMenuItemProps) {\n\treturn <SidebarMenuItemPrimitive className={cn('sidebar-menu-item--component', className)} {...props} />;\n}\n\nfunction SidebarMenuAction({ className, ...props }: SidebarMenuActionProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn <SidebarMenuActionPrimitive className={cn(\n\t\t'sidebar-menu-action--component size-action-xs right-auto end-space-2xs! top-action-center! -translate-y-1/2 peer-data-[size=sm]/menu-button:top-action-sm-center! peer-data-[size=lg]/menu-button:top-action-lg-center!',\n\t\tdensity === 'comfortable'\n\t\t\t? 'peer-data-[sidebar=menu-sub-button]/menu-sub-button:top-action-sm-center!'\n\t\t\t: 'peer-data-[sidebar=menu-sub-button]/menu-sub-button:top-action-xs-center!',\n\t\tclassName,\n\t)} {...props} />;\n}\n\n\nfunction SidebarMenuBadge({ className, inline = false, size = 'md', children, ...props }: SidebarMenuBadgeProps) {\n\tconst content = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t? (\n\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"semibold\" lineHeight=\"none\" className=\"text-inherit tabular-nums\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t)\n\t\t: children;\n\n\treturn (\n\t\t<SidebarMenuBadgePrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-badge--component shrink-0 text-sidebar-foreground',\n\t\t\t\tsize === 'sm' ? 'h-4 min-w-4' : size === 'lg' ? 'h-6 min-w-6' : 'h-5 min-w-5',\n\t\t\t\tinline\n\t\t\t\t\t? 'static ms-auto translate-y-0'\n\t\t\t\t\t: 'top-action-center! -translate-y-1/2 peer-data-[size=sm]/menu-button:top-action-sm-center! peer-data-[size=lg]/menu-button:top-action-lg-center!',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</SidebarMenuBadgePrimitive>\n\t);\n}\n\n\nfunction SidebarMenuSkeleton({ className, showIcon = false, style, width, ...props }: SidebarMenuSkeletonProps) {\n\tconst resolvedWidth = width ?? '72%';\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"sidebar-menu-skeleton\"\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-skeleton--component flex h-action items-center gap-space-md rounded-inner px-control-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon ? (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-icon rounded-radius-sm\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-icon-sm flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={{ maxWidth: resolvedWidth }}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction SidebarMenuSub({ className, ...props }: SidebarMenuSubProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn <SidebarMenuSubPrimitive className={cn('sidebar-menu-sub--component border-l-0 border-s! border-sidebar-border', navigationChildInsetClasses, sidebarMenuDensityRecipes[density].childGap, className)} {...props} />;\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: SidebarMenuSubItemProps) {\n\treturn <SidebarMenuSubItemPrimitive className={cn('sidebar-menu-sub-item--component', className)} {...props} />;\n}\n\nfunction SidebarInset({ className, ...props }: SidebarInsetProps) {\n\treturn <SidebarInsetPrimitive className={cn('sidebar-inset--component', className)} {...props} />;\n}\n\nfunction SidebarRail({ className, ...props }: SidebarRailProps) {\n\treturn <SidebarRailPrimitive className={cn('sidebar-rail--component', className)} {...props} />;\n}\n\nfunction SidebarTrigger({ className, ...props }: SidebarTriggerProps) {\n\treturn <SidebarTriggerPrimitive className={cn('sidebar-trigger--component size-action-sm active:translate-y-0!', className)} {...props} />;\n}\n\nfunction SidebarMenuButton({\n\tclassName,\n\trender,\n\tsize,\n\ttooltip,\n\tchildren,\n\tactive = false,\n\t...props\n}: SidebarMenuButtonProps) {\n\tconst normalizedRender = tooltip && !render\n\t\t? <button type=\"button\" />\n\t\t: render;\n\tconst normalizedTooltip = normalizeSidebarMenuTooltip(tooltip);\n\tconst density = React.useContext(SidebarMenuDensityContext);\n\tconst resolvedSize = size ?? (density ? sidebarMenuDensityRecipes[density].size : 'md');\n\tconst primitiveSize = resolvedSize === 'md' ? 'default' : resolvedSize;\n\n\treturn (\n\t\t<SidebarMenuButtonPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-button--component group-data-[collapsible=icon]:size-action-sm! group-data-[collapsible=icon]:p-space-sm!',\n\t\t\t\tnavigationRowInlineClasses,\n\t\t\t\t// Reserve the trailing action (action-xs) plus the control inset. Written\n\t\t\t\t// from the root knobs: the derived --spacing-* aliases are fixed at :root,\n\t\t\t\t// so a scoped density would otherwise resolve with the root scale.\n\t\t\t\t'group-has-data-[sidebar=menu-action]/menu-item:px-control-sm! group-has-[>[data-sidebar=menu-action]]/menu-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!',\n\t\t\t\tgetSidebarMenuButtonHeightClass(resolvedSize),\n\t\t\t\tsidebarMenuButtonStateClasses,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trender={normalizedRender}\n\t\t\tsize={primitiveSize}\n\t\t\ttooltip={normalizedTooltip}\n\t\t\tisActive={active}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderSidebarMenuText(children)}\n\t\t</SidebarMenuButtonPrimitive>\n\t);\n}\n\nfunction SidebarMenuSubButton({\n\tclassName,\n\tchildren,\n\tactive = false,\n\t...props\n}: SidebarMenuSubButtonProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn (\n\t\t<SidebarMenuSubButtonPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-sub-button--component peer/menu-sub-button translate-x-0 group-has-[>[data-sidebar=menu-action]]/menu-sub-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!',\n\t\t\t\tnavigationRowInlineClasses,\n\t\t\t\tsidebarMenuDensityRecipes[density].childHeight,\n\t\t\t\tsidebarMenuSubButtonStateClasses,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tisActive={active}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderSidebarMenuText(children)}\n\t\t</SidebarMenuSubButtonPrimitive>\n\t);\n}\n\nfunction SidebarGroupLabel({\n\tclassName,\n\tchildren,\n\t...props\n}: SidebarGroupLabelProps) {\n\tconst content =\n\t\ttypeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t\t? <DisplayLabel>{children}</DisplayLabel>\n\t\t\t: children;\n\n\treturn (\n\t\t<SidebarGroupLabelPrimitive\n\t\t\tclassName={cn('sidebar-group-label--component h-action-sm px-control-sm group-data-[collapsible=icon]:pointer-events-none', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</SidebarGroupLabelPrimitive>\n\t);\n}\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarTrigger,\n};\n\n/** Internal bridge for the layout layer; not part of the base package entrypoint. */\nexport const useBaseSidebarContext = useSidebarPrimitive;\n\n/** Internal density bridge for composed navigation; not a base entrypoint export. */\nexport function useBaseSidebarMenuDensity() {\n\treturn React.useContext(SidebarMenuDensityContext);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,IAAMgE,KAAsB,iBACtBC,KAAyB,QACzBC,IAAgB,SAEhBC,IAAqB,QACrBC,KAA4B,KAY5BC,IAAiBrE,EAAM,cAA0C,IAAI;AAE3E,SAASsE,IAAa;CACpB,IAAMC,IAAUvE,EAAM,WAAWqE,CAAc;CAC/C,IAAI,CAACE,GACH,MAAU,MAAM,mDAAmD;CAGrE,OAAOA;AACT;AAEA,SAAStE,GAAgB,EACvB,iBAAc,IACd,aAAU,YACV,KAAKwE,GACL,MAAMC,GACN,cAAcC,GACd,cACA,UACA,aACA,GAAGC,KAMF;CACD,IAAMC,IAAiBlB,EAAY,GAC7BmB,IAAU9E,EAAM,OAAuB,IAAI,GAC3C,CAAC+E,GAAiBC,KAAsBhF,EAAM,SAAkB;CACtE,EAAM,gBAAgB;EACpB,IAAMiF,IAAOH,EAAQ;EACrB,IAAII,MAAY,eAAe,CAACD,KAAQ,OAAO,iBAAmB,KAAa;EAC/E,IAAME,UAAeH,EAAmBC,EAAK,sBAAsB,CAAC,CAAC,QAAA,GAAyB;EAC9F,EAAO;EACP,IAAMG,IAAW,IAAI,eAAeD,CAAM;EAE1C,OADAC,EAAS,QAAQH,CAAI,SACRG,EAAS,WAAW;CACnC,GAAG,CAACF,CAAO,CAAC;CACZ,IAAMG,IAAWR,KAAmBK,MAAY,gBAAgBH,KAAmB,KAC7E,CAACO,GAAYC,KAAiBvF,EAAM,SAAS,EAAK,GAIlD,CAACwF,GAAOC,KAAYzF,EAAM,SAAS0F,CAAW,GAC9CC,IAAOjB,KAAYc,GACnBI,IAAU5F,EAAM,aACnB,MAAmD;EAClD,IAAM6F,IAAY,OAAOC,KAAU,aAAaA,EAAMH,CAAI,IAAIG;EAQ9D,AAPInB,IACFA,EAAYkB,CAAS,IAErBJ,EAASI,CAAS,GAIpB,SAAS,SAAS,GAAG7B,GAAoB,GAAG6B,EAAU,oBAAoB5B;CAC5E,GACA,CAACU,GAAagB,CAAI,CACpB,GAGMI,IAAgB/F,EAAM,kBACnBqF,IAAWE,GAAe,MAAS,CAACI,CAAI,IAAIC,GAAS,MAAS,CAACD,CAAI,GACzE;EAACN;EAAUO;EAASL;CAAa,CAAC;CAGrC,EAAM,gBAAgB;EACpB,IAAMS,KAAiB,MAAyB;GAC9C,AACEC,EAAM,QAAQ7B,OACb6B,EAAM,WAAWA,EAAM,aAExBA,EAAM,eAAe,GACrBF,EAAc;EAElB;EAGA,OADA,OAAO,iBAAiB,WAAWC,CAAa,SACnC,OAAO,oBAAoB,WAAWA,CAAa;CAClE,GAAG,CAACD,CAAa,CAAC;CAIlB,IAAMG,IAAQP,IAAO,aAAa,aAE5BQ,IAAenG,EAAM,eAClB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EAACkG;EAAOP;EAAMC;EAASP;EAAUC;EAAYC;EAAeQ;CAAa,CAC3E,GAEMd,IAAOmB,EAAU;EACrB,gBAAgB;EAChB,KAAK3B,IAAe,CAACK,GAASL,CAAY,IAAIK;EAC9C,OAAO;GACL,GAAGF;GACH,aAAa;GACb,eAAeS;GACf,OAAO;IACL,mBAAmBnB;IACnB,wBAAwBC;IACxB,GAAGkC;GACL;GACA,WAAWC,EAAG,mFAAmFC,CAAS;GAC1G;EACF;CACF,CAAC;CACD,OAAO,kBAAClC,EAAe,UAAhB;EAAyB,OAAO8B;EAAe,UAAAlB;CAA8B,CAAA;AAEtF;AAwGA,SAAS/E,GAAe,EACtB,cACA,YACA,GAAG0E,KACmC;CACtC,IAAM,EAAE,qBAAkBN,EAAW;CAErC,OACE,kBAACf,GAAD;EACE,gBAAa;EACb,aAAU;EACV,SAAQ;EACR,MAAK;EACL,WAAW+C,EAAGC,CAAS;EACvB,UAAU,MAAU;GAElB,AADAE,IAAUR,CAAK,GACfF,EAAc;EAChB;EACA,GAAInB;EAVN,UAAA,CAYE,kBAAC8B,GAAD,CAAgB,CAAA,GAChB,kBAAC,QAAD;GAAM,WAAU;GAAU,UAAA;EAAoB,CAAA,CACxC;;AAEZ;AAEA,SAASvG,GAAY,EAAE,cAAW,GAAGyE,KAAyC;CAC5E,IAAM,EAAE,qBAAkBN,EAAW;CAErC,OACE,kBAAC,UAAD;EACE,gBAAa;EACb,aAAU;EACV,cAAW;EACX,UAAU;EACV,SAASyB;EACT,OAAM;EACN,WAAWO,EACT,6QACA,4EACA,0HACA,2JACA,6DACA,6DACAC,CACF;EACA,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASxE,GAAa,EAAE,cAAW,GAAGwE,KAAuC;CAC3E,OACE,kBAAC,QAAD;EACE,aAAU;EACV,WAAW0B,EACT,oRACAC,CACF;EACA,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASvE,GAAa,EACpB,cACA,GAAGuE,KACkC;CACrC,OACE,kBAAClB,GAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW4C,EAAG,wCAAwCC,CAAS;EAC/D,GAAI3B;CACL,CAAA;AAEL;AAEA,SAAStE,EAAc,EAAE,cAAW,GAAGsE,KAAsC;CAC3E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,iBAAiBC,CAAS;EACxC,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASrE,EAAc,EAAE,cAAW,GAAGqE,KAAsC;CAC3E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,iBAAiBC,CAAS;EACxC,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASpE,EAAiB,EACxB,cACA,GAAGoE,KACsC;CACzC,OACE,kBAAC3B,GAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAWqD,EAAG,wCAAwCC,CAAS;EAC/D,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASnE,EAAe,EAAE,cAAW,GAAGmE,KAAsC;CAC5E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EACT,yGACAC,CACF;EACA,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASlE,EAAa,EAAE,cAAW,GAAGkE,KAAsC;CAC1E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EACT,yCACAC,CACF;EACA,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASjE,EAAkB,EACzB,cACA,WACA,GAAGiE,KAC6D;CAChE,OAAOwB,EAAU;EACf,gBAAgB;EAChB,OAAOgB,EACL,EACE,WAAWd,EACT,mTACAC,CACF,EACF,GACA3B,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN,SAAS;EACX;CACF,CAAC;AACH;AAEA,SAAShE,EAAmB,EAC1B,cACA,WACA,GAAGgE,KACmE;CACtE,OAAOwB,EAAU;EACf,gBAAgB;EAChB,OAAOgB,EACL,EACE,WAAWd,EACT,iaACAC,CACF,EACF,GACA3B,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN,SAAS;EACX;CACF,CAAC;AACH;AAEA,SAAS/D,EAAoB,EAC3B,cACA,GAAG+D,KAC2B;CAC9B,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,kBAAkBC,CAAS;EACzC,GAAI3B;CACL,CAAA;AAEL;AAEA,SAAS9D,EAAY,EAAE,cAAW,GAAG8D,KAAqC;CACxE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,kDAAkDC,CAAS;EACzE,GAAI3B;CACL,CAAA;AAEL;AAEA,SAAS7D,EAAgB,EAAE,cAAW,GAAG6D,KAAqC;CAC5E,OACE,kBAAC,MAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,4BAA4BC,CAAS;EACnD,GAAI3B;CACL,CAAA;AAEL;AAEA,IAAM6C,IAA4BC,EAChCpB,EAAG,mrBAAmrBzC,CAA0B,GAChtB;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;EACX;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAEA,SAAS7C,EAAkB,EACzB,WACA,cAAW,IACX,cAAW,IACX,aAAU,WACV,UAAO,WACP,YACA,cACA,GAAG4D,KAKiD;CACpD,IAAM,EAAE,aAAU,aAAUN,EAAW,GACjCsD,IAAaC,KAAYjD,EAAM,qBAAqB,MAAQA,EAAM,qBAAqB,QAEvFkD,IAAO1B,EAAU;EACrB,gBAAgB;EAChB,OAAOgB,EACL,EACE,WAAWd,EAAGmB,EAA0B;GAAE;GAAS;EAAK,CAAC,GAAGlB,CAAS,EACvE,GACA3B,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN,SAAS;GACT;GACA,QAAQmD;EACV;CACF,CAAC,GAKKC,IAASJ,IAAa5H,EAAM,aAAa8H,GAAwF;EACrI,UAAUA,EAAK,SAAS,OAAM,KAAA;EAC9B,iBAAiB;EACjB,UAAU;EACV,gBAAgBG;EAChB,SAASA;EACT,sBAAsBA;EACtB,kBAAkBC;EAClB,gBAAgBA;CAClB,CAAC,IAAIJ;CAYL,OAVKK,KAID,OAAOA,KAAY,aACrB,IAAU,EACR,UAAUA,EACZ,IAIA,kBAAC9E,GAAD;EAAS,UAAUuE,KAAc1B,MAAU,eAAeb;EAA1D,UAAA,CACE,kBAACjC,GAAD;GAAgB,UAAUwE;GAAY,QAAQI;EAAS,CAAA,GACvD,kBAAC1E,GAAD;GACE,MAAK;GACL,OAAM;GACN,GAAI6E;EACL,CAAA,CACM;OAjBFH;AAmBX;AAEA,SAASC,EAAiC,GAA6B;CAErE,AADAhC,EAAM,eAAe,GACrBA,EAAM,gBAAgB;AACxB;AAEA,SAASiC,EAA0B,GAA4B;CAC7D,CAAIjC,EAAM,QAAQ,WAAWA,EAAM,QAAQ,QAAKgC,EAAiChC,CAAK;AACxF;AAEA,SAAShF,EAAkB,EACzB,cACA,WACA,iBAAc,IACd,GAAG2D,KAIA;CACH,OAAOwB,EAAU;EACf,gBAAgB;EAChB,OAAOgB,EACL,EACE,WAAWd,EACT,klBACA+B,KACE,6KACF9B,CACF,EACF,GACA3B,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN,SAAS;EACX;CACF,CAAC;AACH;AAEA,SAAS1D,GAAiB,EACxB,cACA,GAAG0D,KAC2B;CAC9B,OACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EACT,wcACAC,CACF;EACA,GAAI3B;CACL,CAAA;AAEL;AAwCA,SAASzD,GAAe,EAAE,cAAW,GAAGyD,KAAqC;CAC3E,OACE,kBAAC,MAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,yKAAyKC,CAAS;EAChM,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASxD,GAAmB,EAC1B,cACA,GAAGwD,KAC0B;CAC7B,OACE,kBAAC,MAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW0B,EAAG,gCAAgCC,CAAS;EACvD,GAAI3B;CACL,CAAA;AAEL;AAEA,SAASvD,GAAqB,EAC5B,WACA,UAAO,MACP,cAAW,IACX,cACA,GAAGuD,KAKA;CACH,OAAOwB,EAAU;EACf,gBAAgB;EAChB,OAAOgB,EACL,EACE,WAAWd,EACT,unBACAzC,GACA0C,CACF,EACF,GACA3B,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN,SAAS;GACT;GACA,QAAQmD;EACV;CACF,CAAC;AACH;;;ACtqBA,IAAaW,IAAwC;CACpD,aAAa;CACb,mBAAmB;AACpB,GA8FMC,KACL,wUAEKC,KACL,0TAIKC,IAA4BvH,EAAM,cAA8C,KAAA,CAAS,GACzFwH,IAA4BlF,GAE5BmF,IACL;AAED,SAASC,EAAsB,GAA2B;CAQzD,OAPI,OAAOC,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WAEtF,kBAAC9F,GAAD;EAAM,KAAI;EAAO,MAAK;EAAU,QAAO;EAAS,YAAW;EAAQ,WAAU;EAC3E;CACI,CAAA,IAGD8F;AACR;AAEA,SAASC,EAAyB,GAA2B;CAa5D,OAZI,OAAOD,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WAEtF,kBAAC9F,GAAD;EACC,KAAI;EACJ,MAAK;EACL,YAAW;EACX,WAAU;EAET;CACI,CAAA,IAGD8F;AACR;AAEA,SAASE,GAA4B,GAA4C;CAOhF,OANKhB,MAED,OAAOA,KAAY,WACf,EAAE,UAAUe,EAAyBf,CAAO,EAAE,IAG/C;EACN,GAAGA;EACH,UAAUe,EAAyBf,EAAQ,QAAQ;CACpD;AACD;AAEA,SAASiB,GAAgC,GAAsC;CAO9E,OANIC,MAAS,OACL,8DAEJA,MAAS,OACL,8DAED;AACR;AAEA,SAASC,GAAgB,EAAE,cAAW,UAAO,gBAAa,GAAG1E,KAA+B;CAC3F,OACC,kBAACiE,EAA0B,UAA3B;EAAoC,OAAOU;EAC1C,UAAA,kBAAChI,IAAD;GACC,WAAW+E,EAAG,kDAAkDC,CAAS;GACzE,OAAO;IACN,mBAAmB;IACnB,wBAAwB;IACxB,GAAGF;GACJ;GACA,GAAIzB;EACJ,CAAA;CACkC,CAAA;AAEtC;AAGA,SAAS4E,GAAQ,EAChB,UAAO,QACP,aAAU,WACV,iBAAc,aACd,eAAY,IACZ,cACA,qBACA,kBACA,aACA,QACA,SAASC,GACT,GAAG7E,KACa;CAChB,IAAM,EAAE,aAAU,UAAO,eAAY,qBAAkBpD,EAAoB,GACrEkI,IAAUC,EAAWjB,GAAuBe,CAAW;CA+F7D,OA7FIG,MAAgB,SAElB,kBAAC,OAAD;EACC,aAAU;EACL;EACL,WAAWtD,EACV,qHACAuD,GACAC,GACAvD,CACD;EACA,GAAI3B;EAEH;CACG,CAAA,IAIHS,IAEF,kBAACrC,GAAD;EAAO,MAAMsC;EAAY,cAAcC;EACtC,UAAA,kBAACwE,GAAD;GACM;GACL,gBAAa;GACb,aAAU;GACV,eAAY;GACZ,WAAWzD,EAEV,6KACAuD,GACAtD,GACAuD,CACD;GACA,OAAO,EAAE,mBAAmB,iCAAiC;GACvD;GACN,GAAIlF;GAdL,UAAA,CAgBC,kBAAC7B,GAAD;IAAa,WAAU;IAAvB,UAAA,CACC,kBAACD,GAAD,EAAA,UAAa4G,EAAQ,YAAwB,CAAA,GAC7C,kBAAC7G,GAAD,EAAA,UAAmB6G,EAAQ,kBAAoC,CAAA,CACnD;GACb,CAAA,GAAA,kBAAC,OAAD;IAAK,WAAU;IAAgD;GAAc,CAAA,CAChE;;CACR,CAAA,IAILM,IAEF,kBAAC,OAAD;EACC,WAAW1D,EACV,yLACA,oCACA2D,MAAY,cAAcA,MAAY,UACnC,wDACA,oDACHH,CACD;EACA,cAAY5D;EACZ,oBAAkBA,MAAU,cAAc0D,IAAc;EACxD,gBAAcK;EACd,aAAWC;EACX,aAAU;EACL;EAEL,UAAA,kBAAC,OAAD;GACC,WAAW5D,EACV,2HACA4D,MAAS,SACN,gEACA,+DACHD,MAAY,cAAcA,MAAY,UACnC3D,EAAG,2BAA2ByC,CAAgC,IAC9D,0DACHxC,CACD;GACA,GAAI3B;GAEJ,UAAA,kBAAC,OAAD;IACC,gBAAa;IACb,aAAU;IACV,WAAW0B,EACV,mOACAuD,CACD;IAEC;GACG,CAAA;EACD,CAAA;CACD,CAAA,IAKN,kBAAC,OAAD;EACC,WAAWvD,EAAG,4FAA4FwD,CAAa;EACvH,cAAY5D;EACZ,oBAAkBA,MAAU,cAAc0D,IAAc;EACxD,gBAAcK;EACd,aAAWC;EACX,aAAU;EACL;EAPN,UAAA,CASC,kBAAC,OAAD;GACC,aAAU;GACV,WAAW5D,EACV,2FACA,0CACA,sCACA2D,MAAY,cAAcA,MAAY,UACnClB,IACA,wDACJ;EACA,CAAA,GACD,kBAAC,OAAD;GACC,aAAU;GACV,aAAWmB;GACX,WAAW5D,EACV,8VACA2D,MAAY,cAAcA,MAAY,UACnC3D,EAAG,cAAcyC,CAAgC,IACjD,yIACHxC,CACD;GACA,GAAI3B;GAEJ,UAAA,kBAAC,OAAD;IACC,gBAAa;IACb,aAAU;IACV,WAAW0B,EACV,mOACAuD,CACD;IAEC;GACG,CAAA;EACD,CAAA,CACD;;AAEP;AAEA,SAASM,GAAc,EAAE,cAAW,GAAGvF,KAA6B;CACnE,OAAO,kBAACnD,GAAD;EAAwB,WAAW6E,EAAG,sEAAsEC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC5I;AAEA,SAASwF,GAAc,EAAE,cAAW,GAAGxF,KAA6B;CACnE,OAAO,kBAAClD,GAAD;EAAwB,WAAW4E,EAAG,uDAAuD9C,EAAsB,QAAQ,QAAQ+C,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AACnK;AAEA,SAASyF,GAAe,EAAE,cAAW,GAAGzF,KAA8B;CACrE,OAAO,kBAACjD,GAAD;EAAyB,WAAW2E,EAAG,qEAAqEC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC5I;AAEA,SAAS0F,GAAa,EAAE,cAAW,GAAG1F,KAA4B;CACjE,OAAO,kBAAChD,GAAD;EAAuB,WAAW0E,EAAG,uDAAuDC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC5H;AAEA,SAAS2F,GAAoB,EAAE,cAAW,GAAG3F,KAAmC;CAC/E,OAAO,kBAAC/C,GAAD;EAA8B,WAAWyE,EAAG,oCAAoCC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAChH;AAEA,SAAS4F,GAAmB,EAAE,cAAW,GAAG5F,KAAkC;CAC7E,OAAO,kBAAC9C,GAAD;EAA6B,WAAWwE,EAAG,+DAA+DC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC1I;AAEA,SAAS6F,GAAa,EAAE,cAAW,GAAG7F,KAA4B;CACjE,OAAO,kBAAC7C,IAAD;EAAuB,WAAWuE,EAAG,gEAAgEC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AACrI;AAEA,SAAS8F,GAAiB,EAAE,cAAW,GAAG9F,KAAgC;CACzE,OAAO,kBAAC5C,GAAD;EAA2B,WAAWsE,EAAG,4CAA4CC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AACrH;AAEA,SAAS+F,GAAY,EAAE,cAAW,gBAAa,GAAG/F,KAA2B;CAC5E,IAAMgG,IAAmBtJ,EAAM,WAAWuH,CAAyB,GAC7DgC,IAAUtB,KAAeqB,GACzBE,IAAShC,EAA0B+B,KAAW;CACpD,OACC,kBAAChC,EAA0B,UAA3B;EAAoC,OAAOgC;EAC1C,UAAA,kBAAC5I,GAAD;GAAsB,WAAWqE,EAAG,2BAA2BwE,EAAO,KAAKvE,CAAS;GAAG,GAAI3B;EAAQ,CAAA;CAChE,CAAA;AAEtC;AAEA,SAASmG,GAAgB,EAAE,cAAW,GAAGnG,KAA+B;CACvE,OAAO,kBAAC1C,GAAD;EAA0B,WAAWoE,EAAG,gCAAgCC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AACxG;AAEA,SAASoG,EAAkB,EAAE,cAAW,GAAGpG,KAAiC;CAC3E,IAAMiG,IAAUvJ,EAAM,WAAWuH,CAAyB,KAAK;CAC/D,OAAO,kBAAC1G,GAAD;EAA4B,WAAWmE,EAC7C,2NACAuE,MAAY,gBACT,8EACA,6EACHtE,CACD;EAAG,GAAI3B;CAAQ,CAAA;AAChB;AAGA,SAASqG,GAAiB,EAAE,cAAW,YAAS,IAAO,UAAO,MAAM,aAAU,GAAGrG,KAAgC;CAChH,IAAMsG,IAAU,OAAOjC,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WAElG,kBAAC9F,GAAD;EAAM,KAAI;EAAO,MAAK;EAAM,QAAO;EAAW,YAAW;EAAO,WAAU;EACxE;CACI,CAAA,IAEL8F;CAEH,OACC,kBAAC7G,IAAD;EACC,WAAWkE,EACV,kEACA+C,MAAS,OAAO,gBAAgBA,MAAS,OAAO,gBAAgB,eAChE8B,IACG,iCACA,mJACH5E,CACD;EACA,GAAI3B;EAEH,UAAAsG;CACyB,CAAA;AAE7B;AAGA,SAASE,GAAoB,EAAE,cAAW,cAAW,IAAO,UAAO,UAAO,GAAGxG,KAAmC;CAC/G,IAAMyG,IAAgBC,KAAS;CAE/B,OACC,kBAAC,OAAD;EACC,aAAU;EACV,gBAAa;EACb,WAAWhF,EACV,wGACAC,CACD;EACO;EACP,GAAI3B;EARL,UAAA,CAUE2G,IACA,kBAAC9H,GAAD;GACC,WAAU;GACV,gBAAa;EACb,CAAA,IACE,MACJ,kBAACA,GAAD;GACC,WAAU;GACV,gBAAa;GACb,OAAO,EAAE,UAAU4H,EAAc;EACjC,CAAA,CACG;;AAEP;AAEA,SAASG,GAAe,EAAE,cAAW,GAAG5G,KAA8B;CACrE,IAAMiG,IAAUvJ,EAAM,WAAWuH,CAAyB,KAAK;CAC/D,OAAO,kBAACxG,IAAD;EAAyB,WAAWiE,EAAG,0EAA0ExC,GAA6BgF,EAA0B+B,EAAQ,CAAC,UAAUtE,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC3N;AAEA,SAAS6G,GAAmB,EAAE,cAAW,GAAG7G,KAAkC;CAC7E,OAAO,kBAACtC,IAAD;EAA6B,WAAWgE,EAAG,oCAAoCC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC/G;AAEA,SAAS8G,GAAa,EAAE,cAAW,GAAG9G,KAA4B;CACjE,OAAO,kBAACrC,IAAD;EAAuB,WAAW+D,EAAG,4BAA4BC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AACjG;AAEA,SAAS+G,GAAY,EAAE,cAAW,GAAG/G,KAA2B;CAC/D,OAAO,kBAACpC,IAAD;EAAsB,WAAW8D,EAAG,2BAA2BC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC/F;AAEA,SAASgH,GAAe,EAAE,cAAW,GAAGhH,KAA8B;CACrE,OAAO,kBAACnC,IAAD;EAAyB,WAAW6D,EAAG,mEAAmEC,CAAS;EAAG,GAAI3B;CAAQ,CAAA;AAC1I;AAEA,SAASiH,GAAkB,EAC1B,cACA,WACA,SACA,YACA,aACA,YAAS,IACT,GAAGjH,KACuB;CAC1B,IAAMkH,IAAmB3D,KAAW,CAAC4D,IAClC,kBAAC,UAAD,EAAQ,MAAK,SAAU,CAAA,IACvBA,GACGC,IAAoB7C,GAA4BhB,CAAO,GACvD0C,IAAUvJ,EAAM,WAAWuH,CAAyB,GACpDoD,IAAe5C,MAASwB,IAAU/B,EAA0B+B,EAAQ,CAAC,OAAO,OAC5EqB,IAAgBD,MAAiB,OAAO,YAAYA;CAE1D,OACC,kBAACvJ,GAAD;EACC,WAAW4D,EACV,0HACAzC,GAIA,iNACAuF,GAAgC6C,CAAY,GAC5CtD,IACApC,CACD;EACA,QAAQuF;EACR,MAAMI;EACN,SAASF;EACT,UAAUG;EACV,GAAIvH;EAEH,UAAAoE,EAAsBC,CAAQ;CACJ,CAAA;AAE9B;AAEA,SAASmD,GAAqB,EAC7B,cACA,aACA,YAAS,IACT,GAAGxH,KAC0B;CAC7B,IAAMiG,IAAUvJ,EAAM,WAAWuH,CAAyB,KAAK;CAC/D,OACC,kBAAClG,IAAD;EACC,WAAW2D,EACV,6NACAzC,GACAiF,EAA0B+B,EAAQ,CAAC,aACnCjC,IACArC,CACD;EACA,UAAU4F;EACV,GAAIvH;EAEH,UAAAoE,EAAsBC,CAAQ;CACD,CAAA;AAEjC;AAEA,SAASoD,GAAkB,EAC1B,cACA,aACA,GAAGzH,KACuB;CAC1B,IAAMsG,IACL,OAAOjC,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WACjF,kBAAC/F,GAAD,EAAe,YAAuB,CAAA,IACtC+F;CAEJ,OACC,kBAACrG,GAAD;EACC,WAAW0D,EAAG,8GAA8GC,CAAS;EACrI,GAAI3B;EAEH,UAAAsG;CAC0B,CAAA;AAE9B;AA6BA,IAAaoB,KAAwB9K;AAGrC,SAAgB+K,KAA4B;CAC3C,OAAOjL,EAAM,WAAWuH,CAAyB;AAClD"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as e } from "./utils-C2EKeIw3.js";
3
- import { t } from "./smart-card-CYLn46e6.js";
2
+ import { t as e } from "./utils-Cospvlj1.js";
3
+ import { t } from "./smart-card-Bek-TwUp.js";
4
4
  import * as n from "react";
5
5
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
6
  //#region src/components/ui/skeleton.tsx
@@ -215,7 +215,7 @@ var S = n.forwardRef(function({ rows: n = 6, columns: a = 5, toolbar: o = !0, fo
215
215
  children: /* @__PURE__ */ i(t, {
216
216
  surface: "framed",
217
217
  className: "overflow-hidden",
218
- contentClassName: "p-0!",
218
+ padding: "none",
219
219
  children: [
220
220
  !!o && /* @__PURE__ */ i("div", {
221
221
  className: "table-skeleton--toolbar flex min-w-0 items-center justify-between gap-space-md border-b border-border/70 px-surface py-row-y-lg",
@@ -234,7 +234,7 @@ var S = n.forwardRef(function({ rows: n = 6, columns: a = 5, toolbar: o = !0, fo
234
234
  children: [/* @__PURE__ */ r("thead", { children: /* @__PURE__ */ r("tr", {
235
235
  className: "border-b border-border/70",
236
236
  children: g.map((t) => /* @__PURE__ */ r("th", {
237
- className: "h-control px-row-x text-left align-middle",
237
+ className: "h-control px-row-x text-start align-middle",
238
238
  children: /* @__PURE__ */ r(v, { className: e("h-4", s[t % s.length]) })
239
239
  }, `table-head-${String(t)}`))
240
240
  }) }), /* @__PURE__ */ r("tbody", { children: Array.from({ length: m }, (t, n) => /* @__PURE__ */ r("tr", {
@@ -261,4 +261,4 @@ S.displayName = "TableSkeleton";
261
261
  //#endregion
262
262
  export { x as a, S as i, b as n, v as r, y as t };
263
263
 
264
- //# sourceMappingURL=skeleton-CmT1ppqb.js.map
264
+ //# sourceMappingURL=skeleton-DVMXr15h.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-CmT1ppqb.js","names":["Skeleton","PrimitiveSkeleton","React","cn","React$1","Skeleton$1","props","className","LINE_WIDTHS","TABLE_WIDTHS","clampCount","value","fallback","max","lineWidth","widths","index","skeletonAriaHidden","SkeletonFrame","Card","contentClassName","SkeletonCardHeader","Skeleton","description","action","MetricCardSkeleton","DetailRowSkeleton","DetailCardSkeleton","lineCount","lines","dense","SidebarCardSkeleton","TableResourceCellSkeleton","row","ContentSkeleton","avatar","lineWidths","PageSkeleton","statCount","stats","sectionCount","sections","actionCount","actions","tabs","sectionLines","children","TwoColumnPageSkeleton","mainCount","mainSections","sidebarCount","sidebarSections","mainLines","sidebarLines","TableSkeleton","rowCount","rows","columnCount","columns","columnIndexes","toolbar","column","footer"],"sources":["../src/components/ui/skeleton.tsx","../src/components/base/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-muted rounded-md animate-pulse\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import * as React from 'react';\n\nimport { Card } from '../cards/smart-card';\nimport { Skeleton as PrimitiveSkeleton } from '../../ui/skeleton';\nimport { cn } from '../../../lib/utils';\n\ntype DivProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst LINE_WIDTHS = [\n\t'w-full',\n\t'w-11/12',\n\t'w-10/12',\n\t'w-9/12',\n\t'w-8/12',\n\t'w-7/12',\n] as const;\n\nconst TABLE_WIDTHS = [\n\t'w-24',\n\t'w-36',\n\t'w-28',\n\t'w-20',\n\t'w-32',\n\t'w-16',\n] as const;\n\nconst clampCount = (value: number | undefined, fallback: number, max = 12, allowZero = false) => {\n\tif (!Number.isFinite(value)) return fallback;\n\tconst count = Math.floor(value ?? fallback);\n\treturn Math.max(allowZero ? 0 : 1, Math.min(count, max));\n};\n\nconst lineWidth = (index: number, widths?: readonly string[]) =>\n\twidths?.[index % widths.length] ?? LINE_WIDTHS[index % LINE_WIDTHS.length];\n\nconst skeletonAriaHidden = (props: Pick<DivProps, 'aria-label' | 'aria-labelledby'>) =>\n\tprops['aria-label'] || props['aria-labelledby'] ? undefined : true;\n\nfunction SkeletonFrame({\n\tclassName,\n\tcontentClassName,\n\tchildren,\n}: {\n\tclassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\tchildren: React.ReactNode;\n}) {\n\treturn (\n\t\t<Card\n\t\t\tsurface=\"framed\"\n\t\t\tclassName={className}\n\t\t\tcontentClassName={cn('skeleton-frame--content min-w-0', contentClassName)}\n\t\t>\n\t\t\t{children}\n\t\t</Card>\n\t);\n}\n\nfunction SkeletonCardHeader({\n\tdescription = true,\n\taction = true,\n\tclassName,\n}: {\n\t/** Supporting copy under the title. */\n\tdescription?: boolean;\n\t/** The action this surface performs. */\n\taction?: boolean;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div className={cn('flex min-w-0 items-start justify-between gap-space-md', className)}>\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t<Skeleton className=\"h-4 w-36 max-w-full\" />\n\t\t\t\t{!!description && <Skeleton className=\"h-3 w-56 max-w-full\" />}\n\t\t\t</div>\n\t\t\t{!!action && <Skeleton className=\"h-action-sm w-20 shrink-0\" />}\n\t\t</div>\n\t);\n}\n\nfunction MetricCardSkeleton({ index }: { index: number }) {\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-md\">\n\t\t\t<div className=\"flex items-start justify-between gap-space-md\">\n\t\t\t\t<div className=\"flex min-w-0 flex-col gap-space-sm\">\n\t\t\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t\t\t<Skeleton className={cn('h-5 w-24', index % 3 === 0 && 'w-28')} />\n\t\t\t\t</div>\n\t\t\t\t<Skeleton className=\"size-8 rounded-radius-md\" />\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t<Skeleton className=\"h-5 w-16\" />\n\t\t\t\t<Skeleton className=\"h-3 w-24\" />\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction DetailRowSkeleton({ index }: { index: number }) {\n\treturn (\n\t\t<div className=\"flex min-w-0 flex-col gap-space-xs\">\n\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t<Skeleton className={cn('h-4 w-36 max-w-full', index % 3 === 0 && 'w-44')} />\n\t\t</div>\n\t);\n}\n\nfunction DetailCardSkeleton({\n\tlines = 4,\n\tdense = false,\n}: {\n\tlines?: number;\n\tdense?: boolean;\n}) {\n\tconst lineCount = clampCount(lines, 4, 8);\n\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-lg\">\n\t\t\t<SkeletonCardHeader description={!dense} action={!dense} />\n\t\t\t<div className=\"grid min-w-0 gap-space-md sm:grid-cols-2\">\n\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t<DetailRowSkeleton key={`detail-row-${String(index)}`} index={index} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction SidebarCardSkeleton({ lines = 3 }: { lines?: number }) {\n\tconst lineCount = clampCount(lines, 3, 5);\n\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-md\">\n\t\t\t<SkeletonCardHeader description={false} action={false} />\n\t\t\t<div className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t<div key={`sidebar-line-${String(index)}`} className=\"flex min-w-0 items-center justify-between gap-space-md\">\n\t\t\t\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t\t\t\t<Skeleton className={cn('h-4 w-16', index % 3 === 0 && 'w-20')} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction TableResourceCellSkeleton({ row }: { row: number }) {\n\treturn (\n\t\t<div className=\"flex min-w-0 items-center gap-space-sm\">\n\t\t\t<Skeleton className=\"size-avatar rounded-full shrink-0\" />\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-xs\">\n\t\t\t\t<Skeleton className={cn('h-4 w-32 max-w-full', row % 2 === 0 && 'w-40')} />\n\t\t\t\t<Skeleton className=\"h-3 w-24 max-w-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport interface SkeletonProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSkeleton> {}\n\nexport function Skeleton({ className, ...props }: SkeletonProps) {\n\treturn (\n\t\t<PrimitiveSkeleton\n\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\tclassName={cn('skeleton--component max-w-full rounded-radius-sm motion-reduce:animate-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSkeleton.displayName = 'Skeleton';\n\nexport interface ContentSkeletonProps extends DivProps {\n\t/** Number of text rows rendered in the content stack. */\n\tlines?: number;\n\t/** Render an avatar/media placeholder before the text stack. */\n\tavatar?: boolean;\n\t/** Render a small action placeholder aligned to the trailing edge. */\n\taction?: boolean;\n\t/** Optional per-line width classes. Keep these as Tailwind width utilities. */\n\tlineWidths?: readonly string[];\n}\n\nexport const ContentSkeleton = React.forwardRef<HTMLDivElement, ContentSkeletonProps>(\n\tfunction ContentSkeleton({\n\t\tlines = 3,\n\t\tavatar = false,\n\t\taction = false,\n\t\tlineWidths,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst lineCount = clampCount(lines, 3);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'content-skeleton--component',\n\t\t\t\t\t'flex w-full min-w-0 items-start gap-space-md',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{!!avatar && <Skeleton className=\"size-avatar rounded-full shrink-0\" />}\n\t\t\t\t<div className=\"content-skeleton--body flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\tkey={`content-line-${String(index)}`}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'content-skeleton--line h-4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineWidth(index, lineWidths),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t{!!action && <Skeleton className=\"content-skeleton--action h-action-sm w-16 shrink-0\" />}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nContentSkeleton.displayName = 'ContentSkeleton';\n\nexport interface PageSkeletonProps extends DivProps {\n\t/** Number of compact KPI cards below the page header. */\n\tstats?: number;\n\t/** Number of content cards below the optional stats row. */\n\tsections?: number;\n\t/** Number of skeleton lines in each content card. */\n\tsectionLines?: number;\n\t/** Render tab/filter placeholders between the header and content. */\n\ttabs?: boolean;\n\t/** Number of action button placeholders in the page header. */\n\tactions?: number;\n}\n\nexport const PageSkeleton = React.forwardRef<HTMLDivElement, PageSkeletonProps>(\n\tfunction PageSkeleton({\n\t\tstats = 3,\n\t\tsections = 2,\n\t\tsectionLines = 4,\n\t\ttabs = true,\n\t\tactions = 2,\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}, ref) {\n\t\tconst statCount = clampCount(stats, 3, 6, true);\n\t\tconst sectionCount = clampCount(sections, 2, 6, true);\n\t\tconst actionCount = clampCount(actions, 2, 4, true);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn('page-skeleton--component flex w-full min-w-0 flex-col gap-space-2xl', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"page-skeleton--header flex min-w-0 flex-col gap-space-lg md:flex-row md:items-start md:justify-between\">\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-space-md\">\n\t\t\t\t\t\t<Skeleton className=\"size-avatar-lg rounded-full shrink-0\" />\n\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-5 w-56 max-w-full\" />\n\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-80 max-w-full\" />\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-space-sm pt-space-2xs\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-16\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-14\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t{Array.from({ length: actionCount }, (_, index) => (\n\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\tkey={`page-action-${String(index)}`}\n\t\t\t\t\t\t\t\tclassName={cn('h-action-sm', index === 0 ? 'w-24' : 'size-action-sm')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{!!tabs && (\n\t\t\t\t\t<div className=\"page-skeleton--tabs flex min-w-0 flex-wrap gap-space-sm rounded-radius border border-border/70 bg-card p-surface-xs\">\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-32\" />\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-28\" />\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-36\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{statCount > 0 && (\n\t\t\t\t\t<div className=\"page-skeleton--stats grid min-w-0 gap-space-lg sm:grid-cols-2 lg:grid-cols-3\">\n\t\t\t\t\t\t{Array.from({ length: statCount }, (_, index) => (\n\t\t\t\t\t\t\t<MetricCardSkeleton key={`page-stat-${String(index)}`} index={index} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{sectionCount > 0 && (\n\t\t\t\t\t<div className=\"page-skeleton--sections grid min-w-0 gap-space-lg\">\n\t\t\t\t\t\t{Array.from({ length: sectionCount }, (_, index) => (\n\t\t\t\t\t\t\t<DetailCardSkeleton key={`page-section-${String(index)}`} lines={sectionLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nPageSkeleton.displayName = 'PageSkeleton';\n\nexport interface TwoColumnPageSkeletonProps extends DivProps {\n\t/** Number of primary column cards. */\n\tmainSections?: number;\n\t/** Number of secondary column cards. */\n\tsidebarSections?: number;\n\t/** Lines per primary column card. */\n\tmainLines?: number;\n\t/** Lines per secondary column card. */\n\tsidebarLines?: number;\n}\n\nexport const TwoColumnPageSkeleton = React.forwardRef<HTMLDivElement, TwoColumnPageSkeletonProps>(\n\tfunction TwoColumnPageSkeleton({\n\t\tmainSections = 2,\n\t\tsidebarSections = 3,\n\t\tmainLines = 5,\n\t\tsidebarLines = 3,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst mainCount = clampCount(mainSections, 2, 5);\n\t\tconst sidebarCount = clampCount(sidebarSections, 3, 5);\n\n\t\treturn (\n\t\t\t<PageSkeleton\n\t\t\t\tref={ref}\n\t\t\t\tstats={0}\n\t\t\t\tsections={0}\n\t\t\t\ttabs={false}\n\t\t\t\tclassName={cn('two-column-page-skeleton--component', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"two-column-page-skeleton--layout grid min-w-0 gap-space-lg lg:grid-cols-3\">\n\t\t\t\t\t<div className=\"two-column-page-skeleton--main grid min-w-0 gap-space-lg lg:col-span-2\">\n\t\t\t\t\t\t{Array.from({ length: mainCount }, (_, index) => (\n\t\t\t\t\t\t\t<DetailCardSkeleton key={`two-column-main-${String(index)}`} lines={mainLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"two-column-page-skeleton--sidebar grid min-w-0 gap-space-lg self-start\">\n\t\t\t\t\t\t{Array.from({ length: sidebarCount }, (_, index) => (\n\t\t\t\t\t\t\t<SidebarCardSkeleton key={`two-column-sidebar-${String(index)}`} lines={sidebarLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</PageSkeleton>\n\t\t);\n\t},\n);\n\nTwoColumnPageSkeleton.displayName = 'TwoColumnPageSkeleton';\n\nexport interface TableSkeletonProps extends DivProps {\n\trows?: number;\n\t/** How many columns the grid uses. */\n\tcolumns?: number;\n\ttoolbar?: boolean;\n\t/** Content below the body. */\n\tfooter?: boolean;\n}\n\nexport const TableSkeleton = React.forwardRef<HTMLDivElement, TableSkeletonProps>(\n\tfunction TableSkeleton({\n\t\trows = 6,\n\t\tcolumns = 5,\n\t\ttoolbar = true,\n\t\tfooter = true,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst rowCount = clampCount(rows, 6, 20);\n\t\tconst columnCount = clampCount(columns, 5, 8);\n\t\tconst columnIndexes = Array.from({ length: columnCount }, (_, index) => index);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn('table-skeleton--component', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Card\n\t\t\t\t\tsurface=\"framed\"\n\t\t\t\t\tclassName=\"overflow-hidden\"\n\t\t\t\t\tcontentClassName=\"p-0!\"\n\t\t\t\t>\n\t\t\t\t\t{!!toolbar && (\n\t\t\t\t\t\t<div className=\"table-skeleton--toolbar flex min-w-0 items-center justify-between gap-space-md border-b border-border/70 px-surface py-row-y-lg\">\n\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-control-sm w-56 max-w-full\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"hidden h-action-sm w-24 sm:block\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"hidden shrink-0 items-center gap-space-sm sm:flex\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"size-action-sm\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"table-skeleton--scroll overflow-x-auto\">\n\t\t\t\t\t\t<table className=\"w-full min-w-full table-fixed border-collapse\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr className=\"border-b border-border/70\">\n\t\t\t\t\t\t\t\t\t{columnIndexes.map((column) => (\n\t\t\t\t\t\t\t\t\t\t<th key={`table-head-${String(column)}`} className=\"h-control px-row-x text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t<Skeleton className={cn('h-4', TABLE_WIDTHS[column % TABLE_WIDTHS.length])} />\n\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t{Array.from({ length: rowCount }, (_, row) => (\n\t\t\t\t\t\t\t\t\t<tr key={`table-row-${String(row)}`} className=\"border-b border-border/55 last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t{columnIndexes.map((column) => (\n\t\t\t\t\t\t\t\t\t\t\t<td key={`table-cell-${String(row)}-${String(column)}`} className=\"px-row-x py-row-y align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{column === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableResourceCellSkeleton row={row} />\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'h-4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTABLE_WIDTHS[(row + column) % TABLE_WIDTHS.length],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!footer && (\n\t\t\t\t\t\t<div className=\"table-skeleton--footer flex flex-wrap items-center justify-between gap-space-md border-t border-border/70 px-surface py-row-y-lg\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-32\" />\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nTableSkeleton.displayName = 'TableSkeleton';\n"],"mappings":"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"}
1
+ {"version":3,"file":"skeleton-DVMXr15h.js","names":["Skeleton","PrimitiveSkeleton","React","cn","React$1","Skeleton$1","props","className","LINE_WIDTHS","TABLE_WIDTHS","clampCount","value","fallback","max","lineWidth","widths","index","skeletonAriaHidden","SkeletonFrame","Card","contentClassName","SkeletonCardHeader","Skeleton","description","action","MetricCardSkeleton","DetailRowSkeleton","DetailCardSkeleton","lineCount","lines","dense","SidebarCardSkeleton","TableResourceCellSkeleton","row","ContentSkeleton","avatar","lineWidths","PageSkeleton","statCount","stats","sectionCount","sections","actionCount","actions","tabs","sectionLines","children","TwoColumnPageSkeleton","mainCount","mainSections","sidebarCount","sidebarSections","mainLines","sidebarLines","TableSkeleton","rowCount","rows","columnCount","columns","columnIndexes","toolbar","column","footer"],"sources":["../src/components/ui/skeleton.tsx","../src/components/base/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-muted rounded-md animate-pulse\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import * as React from 'react';\n\nimport { Card } from '../cards/smart-card';\nimport { Skeleton as PrimitiveSkeleton } from '../../ui/skeleton';\nimport { cn } from '../../../lib/utils';\n\ntype DivProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst LINE_WIDTHS = [\n\t'w-full',\n\t'w-11/12',\n\t'w-10/12',\n\t'w-9/12',\n\t'w-8/12',\n\t'w-7/12',\n] as const;\n\nconst TABLE_WIDTHS = [\n\t'w-24',\n\t'w-36',\n\t'w-28',\n\t'w-20',\n\t'w-32',\n\t'w-16',\n] as const;\n\nconst clampCount = (value: number | undefined, fallback: number, max = 12, allowZero = false) => {\n\tif (!Number.isFinite(value)) return fallback;\n\tconst count = Math.floor(value ?? fallback);\n\treturn Math.max(allowZero ? 0 : 1, Math.min(count, max));\n};\n\nconst lineWidth = (index: number, widths?: readonly string[]) =>\n\twidths?.[index % widths.length] ?? LINE_WIDTHS[index % LINE_WIDTHS.length];\n\nconst skeletonAriaHidden = (props: Pick<DivProps, 'aria-label' | 'aria-labelledby'>) =>\n\tprops['aria-label'] || props['aria-labelledby'] ? undefined : true;\n\nfunction SkeletonFrame({\n\tclassName,\n\tcontentClassName,\n\tchildren,\n}: {\n\tclassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\tchildren: React.ReactNode;\n}) {\n\treturn (\n\t\t<Card\n\t\t\tsurface=\"framed\"\n\t\t\tclassName={className}\n\t\t\tcontentClassName={cn('skeleton-frame--content min-w-0', contentClassName)}\n\t\t>\n\t\t\t{children}\n\t\t</Card>\n\t);\n}\n\nfunction SkeletonCardHeader({\n\tdescription = true,\n\taction = true,\n\tclassName,\n}: {\n\t/** Supporting copy under the title. */\n\tdescription?: boolean;\n\t/** The action this surface performs. */\n\taction?: boolean;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div className={cn('flex min-w-0 items-start justify-between gap-space-md', className)}>\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t<Skeleton className=\"h-4 w-36 max-w-full\" />\n\t\t\t\t{!!description && <Skeleton className=\"h-3 w-56 max-w-full\" />}\n\t\t\t</div>\n\t\t\t{!!action && <Skeleton className=\"h-action-sm w-20 shrink-0\" />}\n\t\t</div>\n\t);\n}\n\nfunction MetricCardSkeleton({ index }: { index: number }) {\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-md\">\n\t\t\t<div className=\"flex items-start justify-between gap-space-md\">\n\t\t\t\t<div className=\"flex min-w-0 flex-col gap-space-sm\">\n\t\t\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t\t\t<Skeleton className={cn('h-5 w-24', index % 3 === 0 && 'w-28')} />\n\t\t\t\t</div>\n\t\t\t\t<Skeleton className=\"size-8 rounded-radius-md\" />\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t<Skeleton className=\"h-5 w-16\" />\n\t\t\t\t<Skeleton className=\"h-3 w-24\" />\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction DetailRowSkeleton({ index }: { index: number }) {\n\treturn (\n\t\t<div className=\"flex min-w-0 flex-col gap-space-xs\">\n\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t<Skeleton className={cn('h-4 w-36 max-w-full', index % 3 === 0 && 'w-44')} />\n\t\t</div>\n\t);\n}\n\nfunction DetailCardSkeleton({\n\tlines = 4,\n\tdense = false,\n}: {\n\tlines?: number;\n\tdense?: boolean;\n}) {\n\tconst lineCount = clampCount(lines, 4, 8);\n\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-lg\">\n\t\t\t<SkeletonCardHeader description={!dense} action={!dense} />\n\t\t\t<div className=\"grid min-w-0 gap-space-md sm:grid-cols-2\">\n\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t<DetailRowSkeleton key={`detail-row-${String(index)}`} index={index} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction SidebarCardSkeleton({ lines = 3 }: { lines?: number }) {\n\tconst lineCount = clampCount(lines, 3, 5);\n\n\treturn (\n\t\t<SkeletonFrame contentClassName=\"flex min-w-0 flex-col gap-space-md\">\n\t\t\t<SkeletonCardHeader description={false} action={false} />\n\t\t\t<div className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t<div key={`sidebar-line-${String(index)}`} className=\"flex min-w-0 items-center justify-between gap-space-md\">\n\t\t\t\t\t\t<Skeleton className={cn('h-3 w-20', index % 2 === 0 && 'w-24')} />\n\t\t\t\t\t\t<Skeleton className={cn('h-4 w-16', index % 3 === 0 && 'w-20')} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SkeletonFrame>\n\t);\n}\n\nfunction TableResourceCellSkeleton({ row }: { row: number }) {\n\treturn (\n\t\t<div className=\"flex min-w-0 items-center gap-space-sm\">\n\t\t\t<Skeleton className=\"size-avatar rounded-full shrink-0\" />\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-xs\">\n\t\t\t\t<Skeleton className={cn('h-4 w-32 max-w-full', row % 2 === 0 && 'w-40')} />\n\t\t\t\t<Skeleton className=\"h-3 w-24 max-w-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport interface SkeletonProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSkeleton> {}\n\nexport function Skeleton({ className, ...props }: SkeletonProps) {\n\treturn (\n\t\t<PrimitiveSkeleton\n\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\tclassName={cn('skeleton--component max-w-full rounded-radius-sm motion-reduce:animate-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSkeleton.displayName = 'Skeleton';\n\nexport interface ContentSkeletonProps extends DivProps {\n\t/** Number of text rows rendered in the content stack. */\n\tlines?: number;\n\t/** Render an avatar/media placeholder before the text stack. */\n\tavatar?: boolean;\n\t/** Render a small action placeholder aligned to the trailing edge. */\n\taction?: boolean;\n\t/** Optional per-line width classes. Keep these as Tailwind width utilities. */\n\tlineWidths?: readonly string[];\n}\n\nexport const ContentSkeleton = React.forwardRef<HTMLDivElement, ContentSkeletonProps>(\n\tfunction ContentSkeleton({\n\t\tlines = 3,\n\t\tavatar = false,\n\t\taction = false,\n\t\tlineWidths,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst lineCount = clampCount(lines, 3);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'content-skeleton--component',\n\t\t\t\t\t'flex w-full min-w-0 items-start gap-space-md',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{!!avatar && <Skeleton className=\"size-avatar rounded-full shrink-0\" />}\n\t\t\t\t<div className=\"content-skeleton--body flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t\t{Array.from({ length: lineCount }, (_, index) => (\n\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\tkey={`content-line-${String(index)}`}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'content-skeleton--line h-4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineWidth(index, lineWidths),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t{!!action && <Skeleton className=\"content-skeleton--action h-action-sm w-16 shrink-0\" />}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nContentSkeleton.displayName = 'ContentSkeleton';\n\nexport interface PageSkeletonProps extends DivProps {\n\t/** Number of compact KPI cards below the page header. */\n\tstats?: number;\n\t/** Number of content cards below the optional stats row. */\n\tsections?: number;\n\t/** Number of skeleton lines in each content card. */\n\tsectionLines?: number;\n\t/** Render tab/filter placeholders between the header and content. */\n\ttabs?: boolean;\n\t/** Number of action button placeholders in the page header. */\n\tactions?: number;\n}\n\nexport const PageSkeleton = React.forwardRef<HTMLDivElement, PageSkeletonProps>(\n\tfunction PageSkeleton({\n\t\tstats = 3,\n\t\tsections = 2,\n\t\tsectionLines = 4,\n\t\ttabs = true,\n\t\tactions = 2,\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}, ref) {\n\t\tconst statCount = clampCount(stats, 3, 6, true);\n\t\tconst sectionCount = clampCount(sections, 2, 6, true);\n\t\tconst actionCount = clampCount(actions, 2, 4, true);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn('page-skeleton--component flex w-full min-w-0 flex-col gap-space-2xl', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"page-skeleton--header flex min-w-0 flex-col gap-space-lg md:flex-row md:items-start md:justify-between\">\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-space-md\">\n\t\t\t\t\t\t<Skeleton className=\"size-avatar-lg rounded-full shrink-0\" />\n\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-space-sm\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-5 w-56 max-w-full\" />\n\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-80 max-w-full\" />\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-space-sm pt-space-2xs\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-16\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-14\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t{Array.from({ length: actionCount }, (_, index) => (\n\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\tkey={`page-action-${String(index)}`}\n\t\t\t\t\t\t\t\tclassName={cn('h-action-sm', index === 0 ? 'w-24' : 'size-action-sm')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{!!tabs && (\n\t\t\t\t\t<div className=\"page-skeleton--tabs flex min-w-0 flex-wrap gap-space-sm rounded-radius border border-border/70 bg-card p-surface-xs\">\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-32\" />\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-28\" />\n\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-36\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{statCount > 0 && (\n\t\t\t\t\t<div className=\"page-skeleton--stats grid min-w-0 gap-space-lg sm:grid-cols-2 lg:grid-cols-3\">\n\t\t\t\t\t\t{Array.from({ length: statCount }, (_, index) => (\n\t\t\t\t\t\t\t<MetricCardSkeleton key={`page-stat-${String(index)}`} index={index} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{sectionCount > 0 && (\n\t\t\t\t\t<div className=\"page-skeleton--sections grid min-w-0 gap-space-lg\">\n\t\t\t\t\t\t{Array.from({ length: sectionCount }, (_, index) => (\n\t\t\t\t\t\t\t<DetailCardSkeleton key={`page-section-${String(index)}`} lines={sectionLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nPageSkeleton.displayName = 'PageSkeleton';\n\nexport interface TwoColumnPageSkeletonProps extends DivProps {\n\t/** Number of primary column cards. */\n\tmainSections?: number;\n\t/** Number of secondary column cards. */\n\tsidebarSections?: number;\n\t/** Lines per primary column card. */\n\tmainLines?: number;\n\t/** Lines per secondary column card. */\n\tsidebarLines?: number;\n}\n\nexport const TwoColumnPageSkeleton = React.forwardRef<HTMLDivElement, TwoColumnPageSkeletonProps>(\n\tfunction TwoColumnPageSkeleton({\n\t\tmainSections = 2,\n\t\tsidebarSections = 3,\n\t\tmainLines = 5,\n\t\tsidebarLines = 3,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst mainCount = clampCount(mainSections, 2, 5);\n\t\tconst sidebarCount = clampCount(sidebarSections, 3, 5);\n\n\t\treturn (\n\t\t\t<PageSkeleton\n\t\t\t\tref={ref}\n\t\t\t\tstats={0}\n\t\t\t\tsections={0}\n\t\t\t\ttabs={false}\n\t\t\t\tclassName={cn('two-column-page-skeleton--component', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"two-column-page-skeleton--layout grid min-w-0 gap-space-lg lg:grid-cols-3\">\n\t\t\t\t\t<div className=\"two-column-page-skeleton--main grid min-w-0 gap-space-lg lg:col-span-2\">\n\t\t\t\t\t\t{Array.from({ length: mainCount }, (_, index) => (\n\t\t\t\t\t\t\t<DetailCardSkeleton key={`two-column-main-${String(index)}`} lines={mainLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"two-column-page-skeleton--sidebar grid min-w-0 gap-space-lg self-start\">\n\t\t\t\t\t\t{Array.from({ length: sidebarCount }, (_, index) => (\n\t\t\t\t\t\t\t<SidebarCardSkeleton key={`two-column-sidebar-${String(index)}`} lines={sidebarLines} />\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</PageSkeleton>\n\t\t);\n\t},\n);\n\nTwoColumnPageSkeleton.displayName = 'TwoColumnPageSkeleton';\n\nexport interface TableSkeletonProps extends DivProps {\n\trows?: number;\n\t/** How many columns the grid uses. */\n\tcolumns?: number;\n\ttoolbar?: boolean;\n\t/** Content below the body. */\n\tfooter?: boolean;\n}\n\nexport const TableSkeleton = React.forwardRef<HTMLDivElement, TableSkeletonProps>(\n\tfunction TableSkeleton({\n\t\trows = 6,\n\t\tcolumns = 5,\n\t\ttoolbar = true,\n\t\tfooter = true,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst rowCount = clampCount(rows, 6, 20);\n\t\tconst columnCount = clampCount(columns, 5, 8);\n\t\tconst columnIndexes = Array.from({ length: columnCount }, (_, index) => index);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\taria-hidden={skeletonAriaHidden(props)}\n\t\t\t\tclassName={cn('table-skeleton--component', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Card\n\t\t\t\t\tsurface=\"framed\"\n\t\t\t\t\tclassName=\"overflow-hidden\"\n\t\t\t\t\tpadding=\"none\"\n\t\t\t\t>\n\t\t\t\t\t{!!toolbar && (\n\t\t\t\t\t\t<div className=\"table-skeleton--toolbar flex min-w-0 items-center justify-between gap-space-md border-b border-border/70 px-surface py-row-y-lg\">\n\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-control-sm w-56 max-w-full\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"hidden h-action-sm w-24 sm:block\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"hidden shrink-0 items-center gap-space-sm sm:flex\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"size-action-sm\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"table-skeleton--scroll overflow-x-auto\">\n\t\t\t\t\t\t<table className=\"w-full min-w-full table-fixed border-collapse\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr className=\"border-b border-border/70\">\n\t\t\t\t\t\t\t\t\t{columnIndexes.map((column) => (\n\t\t\t\t\t\t\t\t\t\t<th key={`table-head-${String(column)}`} className=\"h-control px-row-x text-start align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t<Skeleton className={cn('h-4', TABLE_WIDTHS[column % TABLE_WIDTHS.length])} />\n\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t{Array.from({ length: rowCount }, (_, row) => (\n\t\t\t\t\t\t\t\t\t<tr key={`table-row-${String(row)}`} className=\"border-b border-border/55 last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t{columnIndexes.map((column) => (\n\t\t\t\t\t\t\t\t\t\t\t<td key={`table-cell-${String(row)}-${String(column)}`} className=\"px-row-x py-row-y align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{column === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableResourceCellSkeleton row={row} />\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'h-4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTABLE_WIDTHS[(row + column) % TABLE_WIDTHS.length],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!footer && (\n\t\t\t\t\t\t<div className=\"table-skeleton--footer flex flex-wrap items-center justify-between gap-space-md border-t border-border/70 px-surface py-row-y-lg\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-32\" />\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-action-sm w-20\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nTableSkeleton.displayName = 'TableSkeleton';\n"],"mappings":"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"}