dawn-ui-react 1.0.0-beta.6 → 1.0.0-beta.7

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 (515) hide show
  1. package/README.md +9 -7
  2. package/dist/index.d.mts +4185 -0
  3. package/dist/index.mjs +9721 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/styles.css +2 -0
  6. package/package.json +42 -56
  7. package/dist/components/accordion/accordion-header.d.ts +0 -2
  8. package/dist/components/accordion/accordion-icon.d.ts +0 -2
  9. package/dist/components/accordion/accordion-item.d.ts +0 -2
  10. package/dist/components/accordion/accordion-panel.d.ts +0 -2
  11. package/dist/components/accordion/accordion-subtitle.d.ts +0 -2
  12. package/dist/components/accordion/accordion-title.d.ts +0 -2
  13. package/dist/components/accordion/accordion.d.ts +0 -2
  14. package/dist/components/accordion/accordion.types.d.ts +0 -19
  15. package/dist/components/accordion/index.d.ts +0 -8
  16. package/dist/components/alert/alert-action.d.ts +0 -2
  17. package/dist/components/alert/alert-description.d.ts +0 -2
  18. package/dist/components/alert/alert-icon.d.ts +0 -2
  19. package/dist/components/alert/alert-title.d.ts +0 -2
  20. package/dist/components/alert/alert.d.ts +0 -2
  21. package/dist/components/alert/alert.types.d.ts +0 -9
  22. package/dist/components/alert/index.d.ts +0 -6
  23. package/dist/components/alert-dialog/alert-dialog-close.d.ts +0 -2
  24. package/dist/components/alert-dialog/alert-dialog-confirm.d.ts +0 -2
  25. package/dist/components/alert-dialog/alert-dialog-context.d.ts +0 -10
  26. package/dist/components/alert-dialog/alert-dialog-description.d.ts +0 -2
  27. package/dist/components/alert-dialog/alert-dialog-footer.d.ts +0 -2
  28. package/dist/components/alert-dialog/alert-dialog-header.d.ts +0 -2
  29. package/dist/components/alert-dialog/alert-dialog-icon.d.ts +0 -2
  30. package/dist/components/alert-dialog/alert-dialog-popup.d.ts +0 -2
  31. package/dist/components/alert-dialog/alert-dialog-title.d.ts +0 -2
  32. package/dist/components/alert-dialog/alert-dialog-trigger.d.ts +0 -2
  33. package/dist/components/alert-dialog/alert-dialog.d.ts +0 -2
  34. package/dist/components/alert-dialog/alert-dialog.types.d.ts +0 -16
  35. package/dist/components/alert-dialog/index.d.ts +0 -11
  36. package/dist/components/autocomplete/autocomplete-collection.d.ts +0 -2
  37. package/dist/components/autocomplete/autocomplete-content.d.ts +0 -2
  38. package/dist/components/autocomplete/autocomplete-grid-content.d.ts +0 -2
  39. package/dist/components/autocomplete/autocomplete-grid-item.d.ts +0 -2
  40. package/dist/components/autocomplete/autocomplete-group-label.d.ts +0 -2
  41. package/dist/components/autocomplete/autocomplete-group.d.ts +0 -2
  42. package/dist/components/autocomplete/autocomplete-input-group-addon.d.ts +0 -2
  43. package/dist/components/autocomplete/autocomplete-input-group-input.d.ts +0 -2
  44. package/dist/components/autocomplete/autocomplete-input-group.d.ts +0 -2
  45. package/dist/components/autocomplete/autocomplete-item.d.ts +0 -2
  46. package/dist/components/autocomplete/autocomplete-row.d.ts +0 -2
  47. package/dist/components/autocomplete/autocomplete-status.d.ts +0 -2
  48. package/dist/components/autocomplete/autocomplete-trigger.d.ts +0 -2
  49. package/dist/components/autocomplete/autocomplete.d.ts +0 -2
  50. package/dist/components/autocomplete/autocomplete.types.d.ts +0 -23
  51. package/dist/components/autocomplete/index.d.ts +0 -15
  52. package/dist/components/avatar/avatar-badge.d.ts +0 -2
  53. package/dist/components/avatar/avatar-fallback.d.ts +0 -2
  54. package/dist/components/avatar/avatar-image.d.ts +0 -3
  55. package/dist/components/avatar/avatar.d.ts +0 -2
  56. package/dist/components/avatar/avatar.types.d.ts +0 -14
  57. package/dist/components/avatar/index.d.ts +0 -5
  58. package/dist/components/badge/badge.d.ts +0 -2
  59. package/dist/components/badge/badge.types.d.ts +0 -8
  60. package/dist/components/badge/index.d.ts +0 -2
  61. package/dist/components/bento-box/bento-box-action.d.ts +0 -2
  62. package/dist/components/bento-box/bento-box-content.d.ts +0 -2
  63. package/dist/components/bento-box/bento-box-description.d.ts +0 -2
  64. package/dist/components/bento-box/bento-box-footer.d.ts +0 -2
  65. package/dist/components/bento-box/bento-box-header.d.ts +0 -2
  66. package/dist/components/bento-box/bento-box-title.d.ts +0 -2
  67. package/dist/components/bento-box/bento-box.d.ts +0 -2
  68. package/dist/components/bento-box/bento-box.types.d.ts +0 -11
  69. package/dist/components/bento-box/index.d.ts +0 -8
  70. package/dist/components/breadcrumb/breadcrumb-ellipsis.d.ts +0 -2
  71. package/dist/components/breadcrumb/breadcrumb-item.d.ts +0 -2
  72. package/dist/components/breadcrumb/breadcrumb-link.d.ts +0 -2
  73. package/dist/components/breadcrumb/breadcrumb-separator.d.ts +0 -2
  74. package/dist/components/breadcrumb/breadcrumb.d.ts +0 -2
  75. package/dist/components/breadcrumb/breadcrumb.types.d.ts +0 -5
  76. package/dist/components/breadcrumb/index.d.ts +0 -6
  77. package/dist/components/button/button.d.ts +0 -2
  78. package/dist/components/button/button.types.d.ts +0 -8
  79. package/dist/components/button/index.d.ts +0 -2
  80. package/dist/components/button-group/button-group.d.ts +0 -2
  81. package/dist/components/button-group/button-group.types.d.ts +0 -8
  82. package/dist/components/button-group/index.d.ts +0 -2
  83. package/dist/components/chart/chart-container.d.ts +0 -5
  84. package/dist/components/chart/chart-legend-content.d.ts +0 -8
  85. package/dist/components/chart/chart-legend-icon.d.ts +0 -2
  86. package/dist/components/chart/chart-legend-indicator.d.ts +0 -2
  87. package/dist/components/chart/chart-legend-label.d.ts +0 -2
  88. package/dist/components/chart/chart-legend.d.ts +0 -2
  89. package/dist/components/chart/chart-linear-gradient.d.ts +0 -2
  90. package/dist/components/chart/chart-tooltip-content.d.ts +0 -4
  91. package/dist/components/chart/chart-tooltip-icon.d.ts +0 -2
  92. package/dist/components/chart/chart-tooltip-indicator.d.ts +0 -2
  93. package/dist/components/chart/chart-tooltip-label.d.ts +0 -2
  94. package/dist/components/chart/chart-tooltip-name.d.ts +0 -2
  95. package/dist/components/chart/chart-tooltip-payload.d.ts +0 -5
  96. package/dist/components/chart/chart-tooltip-value.d.ts +0 -2
  97. package/dist/components/chart/chart-tooltip.d.ts +0 -2
  98. package/dist/components/chart/chart.types.d.ts +0 -50
  99. package/dist/components/chart/chart.utils.d.ts +0 -11
  100. package/dist/components/chart/index.d.ts +0 -19
  101. package/dist/components/checkbox/checkbox-indicator.d.ts +0 -2
  102. package/dist/components/checkbox/checkbox.d.ts +0 -2
  103. package/dist/components/checkbox/checkbox.types.d.ts +0 -10
  104. package/dist/components/checkbox/index.d.ts +0 -3
  105. package/dist/components/checkbox-group/checkbox-group.d.ts +0 -3
  106. package/dist/components/checkbox-group/checkbox-group.types.d.ts +0 -2
  107. package/dist/components/checkbox-group/index.d.ts +0 -2
  108. package/dist/components/code-block/code-block-actions.d.ts +0 -2
  109. package/dist/components/code-block/code-block-copy.d.ts +0 -3
  110. package/dist/components/code-block/code-block-download.d.ts +0 -3
  111. package/dist/components/code-block/code-block-header.d.ts +0 -3
  112. package/dist/components/code-block/code-block-name.d.ts +0 -2
  113. package/dist/components/code-block/code-block-select.d.ts +0 -2
  114. package/dist/components/code-block/code-block-tabs.d.ts +0 -2
  115. package/dist/components/code-block/code-block-window.d.ts +0 -2
  116. package/dist/components/code-block/code-block.d.ts +0 -4
  117. package/dist/components/code-block/code-block.types.d.ts +0 -26
  118. package/dist/components/code-block/index.d.ts +0 -10
  119. package/dist/components/collapsible/collapsible-panel.d.ts +0 -2
  120. package/dist/components/collapsible/collapsible-trigger.d.ts +0 -2
  121. package/dist/components/collapsible/collapsible.d.ts +0 -2
  122. package/dist/components/collapsible/collapsible.types.d.ts +0 -5
  123. package/dist/components/collapsible/index.d.ts +0 -4
  124. package/dist/components/color-channel-slider/color-channel-slider.d.ts +0 -2
  125. package/dist/components/color-channel-slider/color-channel-slider.types.d.ts +0 -8
  126. package/dist/components/color-channel-slider/color-channel-slider.utils.d.ts +0 -4
  127. package/dist/components/color-channel-slider/index.d.ts +0 -2
  128. package/dist/components/color-picker/color-picker-area.d.ts +0 -2
  129. package/dist/components/color-picker/color-picker-group.d.ts +0 -2
  130. package/dist/components/color-picker/color-picker-hue-slider.d.ts +0 -2
  131. package/dist/components/color-picker/color-picker-input.d.ts +0 -3
  132. package/dist/components/color-picker/color-picker-label.d.ts +0 -2
  133. package/dist/components/color-picker/color-picker-lightness-slider.d.ts +0 -2
  134. package/dist/components/color-picker/color-picker-palette-add.d.ts +0 -2
  135. package/dist/components/color-picker/color-picker-palette-limit.d.ts +0 -2
  136. package/dist/components/color-picker/color-picker-palette-list.d.ts +0 -2
  137. package/dist/components/color-picker/color-picker-palette-swatch.d.ts +0 -2
  138. package/dist/components/color-picker/color-picker-row.d.ts +0 -2
  139. package/dist/components/color-picker/color-picker-transparency-slider.d.ts +0 -2
  140. package/dist/components/color-picker/color-picker-value-type.d.ts +0 -2
  141. package/dist/components/color-picker/color-picker.d.ts +0 -4
  142. package/dist/components/color-picker/color-picker.types.d.ts +0 -111
  143. package/dist/components/color-picker/index.d.ts +0 -14
  144. package/dist/components/combobox/combobox-chip.d.ts +0 -2
  145. package/dist/components/combobox/combobox-chips.d.ts +0 -2
  146. package/dist/components/combobox/combobox-collection.d.ts +0 -2
  147. package/dist/components/combobox/combobox-empty.d.ts +0 -2
  148. package/dist/components/combobox/combobox-group-label.d.ts +0 -2
  149. package/dist/components/combobox/combobox-group.d.ts +0 -2
  150. package/dist/components/combobox/combobox-input.d.ts +0 -3
  151. package/dist/components/combobox/combobox-item.d.ts +0 -2
  152. package/dist/components/combobox/combobox-list.d.ts +0 -2
  153. package/dist/components/combobox/combobox-popup.d.ts +0 -2
  154. package/dist/components/combobox/combobox-status.d.ts +0 -2
  155. package/dist/components/combobox/combobox-trigger.d.ts +0 -2
  156. package/dist/components/combobox/combobox-value.d.ts +0 -2
  157. package/dist/components/combobox/combobox-virtualized-list.d.ts +0 -3
  158. package/dist/components/combobox/combobox.d.ts +0 -2
  159. package/dist/components/combobox/combobox.types.d.ts +0 -31
  160. package/dist/components/combobox/index.d.ts +0 -16
  161. package/dist/components/context-menu/context-menu-checkbox-item.d.ts +0 -2
  162. package/dist/components/context-menu/context-menu-group-label.d.ts +0 -2
  163. package/dist/components/context-menu/context-menu-group.d.ts +0 -2
  164. package/dist/components/context-menu/context-menu-item.d.ts +0 -2
  165. package/dist/components/context-menu/context-menu-popup.d.ts +0 -2
  166. package/dist/components/context-menu/context-menu-radio-group.d.ts +0 -2
  167. package/dist/components/context-menu/context-menu-radio-item.d.ts +0 -2
  168. package/dist/components/context-menu/context-menu-separator.d.ts +0 -2
  169. package/dist/components/context-menu/context-menu-shortcut.d.ts +0 -2
  170. package/dist/components/context-menu/context-menu-submenu-trigger.d.ts +0 -2
  171. package/dist/components/context-menu/context-menu-submenu.d.ts +0 -2
  172. package/dist/components/context-menu/context-menu-trigger.d.ts +0 -2
  173. package/dist/components/context-menu/context-menu.d.ts +0 -2
  174. package/dist/components/context-menu/context-menu.types.d.ts +0 -21
  175. package/dist/components/context-menu/index.d.ts +0 -14
  176. package/dist/components/dialog/dialog-close.d.ts +0 -2
  177. package/dist/components/dialog/dialog-content.d.ts +0 -2
  178. package/dist/components/dialog/dialog-description.d.ts +0 -2
  179. package/dist/components/dialog/dialog-footer.d.ts +0 -2
  180. package/dist/components/dialog/dialog-header.d.ts +0 -2
  181. package/dist/components/dialog/dialog-icon.d.ts +0 -2
  182. package/dist/components/dialog/dialog-popup.d.ts +0 -2
  183. package/dist/components/dialog/dialog-title.d.ts +0 -2
  184. package/dist/components/dialog/dialog-trigger.d.ts +0 -2
  185. package/dist/components/dialog/dialog.d.ts +0 -2
  186. package/dist/components/dialog/dialog.types.d.ts +0 -13
  187. package/dist/components/dialog/index.d.ts +0 -12
  188. package/dist/components/drawer/drawer-close.d.ts +0 -2
  189. package/dist/components/drawer/drawer-content.d.ts +0 -2
  190. package/dist/components/drawer/drawer-description.d.ts +0 -2
  191. package/dist/components/drawer/drawer-header.d.ts +0 -2
  192. package/dist/components/drawer/drawer-popup.d.ts +0 -2
  193. package/dist/components/drawer/drawer-provider.d.ts +0 -2
  194. package/dist/components/drawer/drawer-title.d.ts +0 -2
  195. package/dist/components/drawer/drawer-trigger.d.ts +0 -2
  196. package/dist/components/drawer/drawer.d.ts +0 -2
  197. package/dist/components/drawer/drawer.types.d.ts +0 -10
  198. package/dist/components/drawer/index.d.ts +0 -10
  199. package/dist/components/dropzone/dropzone-actions.d.ts +0 -2
  200. package/dist/components/dropzone/dropzone-clear.d.ts +0 -2
  201. package/dist/components/dropzone/dropzone-confirm.d.ts +0 -2
  202. package/dist/components/dropzone/dropzone-container.d.ts +0 -2
  203. package/dist/components/dropzone/dropzone-error.d.ts +0 -2
  204. package/dist/components/dropzone/dropzone-file-limit.d.ts +0 -2
  205. package/dist/components/dropzone/dropzone-file-size-limit.d.ts +0 -2
  206. package/dist/components/dropzone/dropzone-files-header.d.ts +0 -2
  207. package/dist/components/dropzone/dropzone-files-list.d.ts +0 -2
  208. package/dist/components/dropzone/dropzone-files-title.d.ts +0 -2
  209. package/dist/components/dropzone/dropzone-files.d.ts +0 -2
  210. package/dist/components/dropzone/dropzone-formats.d.ts +0 -2
  211. package/dist/components/dropzone/dropzone-heading.d.ts +0 -2
  212. package/dist/components/dropzone/dropzone-icon.d.ts +0 -2
  213. package/dist/components/dropzone/dropzone-info.d.ts +0 -2
  214. package/dist/components/dropzone/dropzone-subtitle.d.ts +0 -2
  215. package/dist/components/dropzone/dropzone-trigger.d.ts +0 -2
  216. package/dist/components/dropzone/dropzone.d.ts +0 -24
  217. package/dist/components/dropzone/dropzone.types.d.ts +0 -30
  218. package/dist/components/dropzone/dropzone.utils.d.ts +0 -3
  219. package/dist/components/dropzone/index.d.ts +0 -18
  220. package/dist/components/field/field-checkbox.d.ts +0 -2
  221. package/dist/components/field/field-description.d.ts +0 -2
  222. package/dist/components/field/field-errors.d.ts +0 -2
  223. package/dist/components/field/field-input-group-input.d.ts +0 -2
  224. package/dist/components/field/field-input-group.d.ts +0 -2
  225. package/dist/components/field/field-input.d.ts +0 -2
  226. package/dist/components/field/field-label.d.ts +0 -2
  227. package/dist/components/field/field-radio-group.d.ts +0 -2
  228. package/dist/components/field/field-radio.d.ts +0 -2
  229. package/dist/components/field/field-row.d.ts +0 -2
  230. package/dist/components/field/field-select.d.ts +0 -2
  231. package/dist/components/field/field-set.d.ts +0 -2
  232. package/dist/components/field/field-slider.d.ts +0 -2
  233. package/dist/components/field/field-switch.d.ts +0 -2
  234. package/dist/components/field/field-text-area.d.ts +0 -2
  235. package/dist/components/field/field-toggle.d.ts +0 -2
  236. package/dist/components/field/field.d.ts +0 -2
  237. package/dist/components/field/field.types.d.ts +0 -33
  238. package/dist/components/field/index.d.ts +0 -18
  239. package/dist/components/form/form-context.d.ts +0 -182
  240. package/dist/components/form/form-contexts.d.ts +0 -1
  241. package/dist/components/form/form-errors.d.ts +0 -2
  242. package/dist/components/form/form-footer.d.ts +0 -2
  243. package/dist/components/form/form-reset.d.ts +0 -2
  244. package/dist/components/form/form-set-content.d.ts +0 -2
  245. package/dist/components/form/form-set-heading.d.ts +0 -2
  246. package/dist/components/form/form-set.d.ts +0 -2
  247. package/dist/components/form/form-submit.d.ts +0 -2
  248. package/dist/components/form/form.d.ts +0 -3
  249. package/dist/components/form/form.types.d.ts +0 -17
  250. package/dist/components/form/index.d.ts +0 -10
  251. package/dist/components/index.d.ts +0 -57
  252. package/dist/components/input/index.d.ts +0 -2
  253. package/dist/components/input/input.d.ts +0 -2
  254. package/dist/components/input/input.types.d.ts +0 -19
  255. package/dist/components/input-group/index.d.ts +0 -5
  256. package/dist/components/input-group/input-group-addon.d.ts +0 -2
  257. package/dist/components/input-group/input-group-input.d.ts +0 -2
  258. package/dist/components/input-group/input-group-separator.d.ts +0 -2
  259. package/dist/components/input-group/input-group.d.ts +0 -2
  260. package/dist/components/input-group/input-group.types.d.ts +0 -11
  261. package/dist/components/input-otp/index.d.ts +0 -4
  262. package/dist/components/input-otp/input-otp-separator.d.ts +0 -2
  263. package/dist/components/input-otp/input-otp-slot.d.ts +0 -2
  264. package/dist/components/input-otp/input-otp.d.ts +0 -3
  265. package/dist/components/input-otp/input-otp.types.d.ts +0 -4
  266. package/dist/components/kbd/index.d.ts +0 -2
  267. package/dist/components/kbd/kbd-group.d.ts +0 -2
  268. package/dist/components/kbd/kbd.d.ts +0 -2
  269. package/dist/components/kbd/kbd.types.d.ts +0 -2
  270. package/dist/components/label/index.d.ts +0 -2
  271. package/dist/components/label/label.d.ts +0 -2
  272. package/dist/components/label/label.types.d.ts +0 -5
  273. package/dist/components/layer-tree/index.d.ts +0 -18
  274. package/dist/components/layer-tree/layer-tree-body.d.ts +0 -2
  275. package/dist/components/layer-tree/layer-tree-context.d.ts +0 -377
  276. package/dist/components/layer-tree/layer-tree-expand-all.d.ts +0 -2
  277. package/dist/components/layer-tree/layer-tree-footer.d.ts +0 -2
  278. package/dist/components/layer-tree/layer-tree-icon-cell.d.ts +0 -2
  279. package/dist/components/layer-tree/layer-tree-locked-all.d.ts +0 -2
  280. package/dist/components/layer-tree/layer-tree-locked-cell.d.ts +0 -2
  281. package/dist/components/layer-tree/layer-tree-node-icon.d.ts +0 -2
  282. package/dist/components/layer-tree/layer-tree-row.d.ts +0 -2
  283. package/dist/components/layer-tree/layer-tree-search.d.ts +0 -2
  284. package/dist/components/layer-tree/layer-tree-sort.d.ts +0 -2
  285. package/dist/components/layer-tree/layer-tree-text-cell.d.ts +0 -2
  286. package/dist/components/layer-tree/layer-tree-trigger-cell.d.ts +0 -3
  287. package/dist/components/layer-tree/layer-tree-utils.d.ts +0 -86
  288. package/dist/components/layer-tree/layer-tree-visibility-all.d.ts +0 -2
  289. package/dist/components/layer-tree/layer-tree-visibility-cell.d.ts +0 -2
  290. package/dist/components/layer-tree/layer-tree.d.ts +0 -8
  291. package/dist/components/layer-tree/layer-tree.types.d.ts +0 -110
  292. package/dist/components/menu/index.d.ts +0 -14
  293. package/dist/components/menu/menu-checkbox-item.d.ts +0 -2
  294. package/dist/components/menu/menu-group-label.d.ts +0 -2
  295. package/dist/components/menu/menu-group.d.ts +0 -2
  296. package/dist/components/menu/menu-item.d.ts +0 -2
  297. package/dist/components/menu/menu-popup.d.ts +0 -2
  298. package/dist/components/menu/menu-radio-group.d.ts +0 -2
  299. package/dist/components/menu/menu-radio-item.d.ts +0 -2
  300. package/dist/components/menu/menu-separator.d.ts +0 -2
  301. package/dist/components/menu/menu-shortcut.d.ts +0 -2
  302. package/dist/components/menu/menu-submenu-trigger.d.ts +0 -2
  303. package/dist/components/menu/menu-submenu.d.ts +0 -2
  304. package/dist/components/menu/menu-trigger.d.ts +0 -2
  305. package/dist/components/menu/menu.d.ts +0 -2
  306. package/dist/components/menu/menu.types.d.ts +0 -21
  307. package/dist/components/meter/index.d.ts +0 -9
  308. package/dist/components/meter/meter-footer.d.ts +0 -2
  309. package/dist/components/meter/meter-header.d.ts +0 -2
  310. package/dist/components/meter/meter-indicator.d.ts +0 -2
  311. package/dist/components/meter/meter-label.d.ts +0 -2
  312. package/dist/components/meter/meter-subtitle.d.ts +0 -2
  313. package/dist/components/meter/meter-track.d.ts +0 -2
  314. package/dist/components/meter/meter-value.d.ts +0 -2
  315. package/dist/components/meter/meter.d.ts +0 -2
  316. package/dist/components/meter/meter.types.d.ts +0 -15
  317. package/dist/components/nav-bar/index.d.ts +0 -5
  318. package/dist/components/nav-bar/nav-bar-item-icon.d.ts +0 -2
  319. package/dist/components/nav-bar/nav-bar-item-label.d.ts +0 -2
  320. package/dist/components/nav-bar/nav-bar-item.d.ts +0 -2
  321. package/dist/components/nav-bar/nav-bar.d.ts +0 -2
  322. package/dist/components/nav-bar/nav-bar.types.d.ts +0 -15
  323. package/dist/components/navigation-menu/index.d.ts +0 -9
  324. package/dist/components/navigation-menu/navigation-menu-content.d.ts +0 -2
  325. package/dist/components/navigation-menu/navigation-menu-icon.d.ts +0 -2
  326. package/dist/components/navigation-menu/navigation-menu-item.d.ts +0 -2
  327. package/dist/components/navigation-menu/navigation-menu-link.d.ts +0 -2
  328. package/dist/components/navigation-menu/navigation-menu-list.d.ts +0 -2
  329. package/dist/components/navigation-menu/navigation-menu-popup.d.ts +0 -2
  330. package/dist/components/navigation-menu/navigation-menu-trigger.d.ts +0 -6
  331. package/dist/components/navigation-menu/navigation-menu.d.ts +0 -2
  332. package/dist/components/navigation-menu/navigation-menu.types.d.ts +0 -16
  333. package/dist/components/number-field/index.d.ts +0 -2
  334. package/dist/components/number-field/number-field.d.ts +0 -3
  335. package/dist/components/number-field/number-field.types.d.ts +0 -10
  336. package/dist/components/popover/index.d.ts +0 -10
  337. package/dist/components/popover/popover-button.d.ts +0 -2
  338. package/dist/components/popover/popover-content.d.ts +0 -2
  339. package/dist/components/popover/popover-description.d.ts +0 -2
  340. package/dist/components/popover/popover-header.d.ts +0 -2
  341. package/dist/components/popover/popover-panel.d.ts +0 -2
  342. package/dist/components/popover/popover-title.d.ts +0 -2
  343. package/dist/components/popover/popover-trigger.d.ts +0 -2
  344. package/dist/components/popover/popover.d.ts +0 -2
  345. package/dist/components/popover/popover.types.d.ts +0 -15
  346. package/dist/components/preview-card/index.d.ts +0 -4
  347. package/dist/components/preview-card/preview-card-popup.d.ts +0 -2
  348. package/dist/components/preview-card/preview-card-trigger.d.ts +0 -2
  349. package/dist/components/preview-card/preview-card.d.ts +0 -2
  350. package/dist/components/preview-card/preview-card.types.d.ts +0 -4
  351. package/dist/components/profile/index.d.ts +0 -6
  352. package/dist/components/profile/profile-action.d.ts +0 -2
  353. package/dist/components/profile/profile-content.d.ts +0 -2
  354. package/dist/components/profile/profile-name.d.ts +0 -2
  355. package/dist/components/profile/profile-subname.d.ts +0 -2
  356. package/dist/components/profile/profile.d.ts +0 -2
  357. package/dist/components/profile/profile.types.d.ts +0 -8
  358. package/dist/components/progress/index.d.ts +0 -4
  359. package/dist/components/progress/progress-bar.d.ts +0 -2
  360. package/dist/components/progress/progress-indicator.d.ts +0 -2
  361. package/dist/components/progress/progress.d.ts +0 -2
  362. package/dist/components/progress/progress.types.d.ts +0 -8
  363. package/dist/components/radar-ping/index.d.ts +0 -2
  364. package/dist/components/radar-ping/radar-ping.d.ts +0 -2
  365. package/dist/components/radar-ping/radar-ping.types.d.ts +0 -8
  366. package/dist/components/radio-group/index.d.ts +0 -3
  367. package/dist/components/radio-group/radio-group.d.ts +0 -3
  368. package/dist/components/radio-group/radio-group.types.d.ts +0 -7
  369. package/dist/components/radio-group/radio.d.ts +0 -2
  370. package/dist/components/resizeable/index.d.ts +0 -4
  371. package/dist/components/resizeable/resizeable-handle.d.ts +0 -2
  372. package/dist/components/resizeable/resizeable-panel-group.d.ts +0 -2
  373. package/dist/components/resizeable/resizeable-panel.d.ts +0 -2
  374. package/dist/components/resizeable/resizeable.types.d.ts +0 -6
  375. package/dist/components/scroll-area/index.d.ts +0 -2
  376. package/dist/components/scroll-area/scroll-area.d.ts +0 -2
  377. package/dist/components/scroll-area/scroll-area.types.d.ts +0 -10
  378. package/dist/components/select/index.d.ts +0 -12
  379. package/dist/components/select/select-description.d.ts +0 -2
  380. package/dist/components/select/select-group-label.d.ts +0 -2
  381. package/dist/components/select/select-group.d.ts +0 -2
  382. package/dist/components/select/select-icon.d.ts +0 -2
  383. package/dist/components/select/select-item.d.ts +0 -2
  384. package/dist/components/select/select-list.d.ts +0 -2
  385. package/dist/components/select/select-popup.d.ts +0 -2
  386. package/dist/components/select/select-title.d.ts +0 -2
  387. package/dist/components/select/select-trigger.d.ts +0 -2
  388. package/dist/components/select/select-value.d.ts +0 -2
  389. package/dist/components/select/select.d.ts +0 -2
  390. package/dist/components/select/select.types.d.ts +0 -22
  391. package/dist/components/separator/index.d.ts +0 -2
  392. package/dist/components/separator/separator.d.ts +0 -2
  393. package/dist/components/separator/separator.types.d.ts +0 -11
  394. package/dist/components/sidebar/index.d.ts +0 -18
  395. package/dist/components/sidebar/sidebar-content.d.ts +0 -2
  396. package/dist/components/sidebar/sidebar-footer.d.ts +0 -2
  397. package/dist/components/sidebar/sidebar-group-content.d.ts +0 -2
  398. package/dist/components/sidebar/sidebar-group-label.d.ts +0 -2
  399. package/dist/components/sidebar/sidebar-group.d.ts +0 -2
  400. package/dist/components/sidebar/sidebar-header.d.ts +0 -2
  401. package/dist/components/sidebar/sidebar-menu-badge.d.ts +0 -2
  402. package/dist/components/sidebar/sidebar-menu-button.d.ts +0 -2
  403. package/dist/components/sidebar/sidebar-menu-collapsible-panel.d.ts +0 -2
  404. package/dist/components/sidebar/sidebar-menu-collapsible-trigger.d.ts +0 -2
  405. package/dist/components/sidebar/sidebar-menu-collapsible.d.ts +0 -2
  406. package/dist/components/sidebar/sidebar-menu-item.d.ts +0 -2
  407. package/dist/components/sidebar/sidebar-menu.d.ts +0 -2
  408. package/dist/components/sidebar/sidebar-provider.d.ts +0 -14
  409. package/dist/components/sidebar/sidebar-toggle.d.ts +0 -2
  410. package/dist/components/sidebar/sidebar.d.ts +0 -3
  411. package/dist/components/sidebar/sidebar.types.d.ts +0 -29
  412. package/dist/components/sidebar/sidebar.utils.d.ts +0 -1
  413. package/dist/components/skeleton/index.d.ts +0 -2
  414. package/dist/components/skeleton/skeleton.d.ts +0 -2
  415. package/dist/components/skeleton/skeleton.types.d.ts +0 -1
  416. package/dist/components/slider/index.d.ts +0 -3
  417. package/dist/components/slider/slider-group-context.d.ts +0 -5
  418. package/dist/components/slider/slider-group.d.ts +0 -3
  419. package/dist/components/slider/slider-thumb.d.ts +0 -3
  420. package/dist/components/slider/slider.d.ts +0 -2
  421. package/dist/components/slider/slider.types.d.ts +0 -15
  422. package/dist/components/slider-group/index.d.ts +0 -9
  423. package/dist/components/slider-group/slider-description.d.ts +0 -2
  424. package/dist/components/slider-group/slider-group-context.d.ts +0 -5
  425. package/dist/components/slider-group/slider-group-slider.d.ts +0 -3
  426. package/dist/components/slider-group/slider-group.d.ts +0 -3
  427. package/dist/components/slider-group/slider-group.types.d.ts +0 -27
  428. package/dist/components/slider-group/slider-icon.d.ts +0 -2
  429. package/dist/components/slider-group/slider-input.d.ts +0 -2
  430. package/dist/components/slider-group/slider-label.d.ts +0 -2
  431. package/dist/components/slider-group/slider-value.d.ts +0 -2
  432. package/dist/components/switch/index.d.ts +0 -2
  433. package/dist/components/switch/switch.d.ts +0 -2
  434. package/dist/components/switch/switch.types.d.ts +0 -4
  435. package/dist/components/table/index.d.ts +0 -39
  436. package/dist/components/table/table-badge-cell.d.ts +0 -2
  437. package/dist/components/table/table-body.d.ts +0 -2
  438. package/dist/components/table/table-checkbox-cell.d.ts +0 -2
  439. package/dist/components/table/table-column-toggle.d.ts +0 -2
  440. package/dist/components/table/table-container.d.ts +0 -2
  441. package/dist/components/table/table-context.d.ts +0 -414
  442. package/dist/components/table/table-date-cell.d.ts +0 -2
  443. package/dist/components/table/table-date-filter-chip.d.ts +0 -3
  444. package/dist/components/table/table-date-filter-form.d.ts +0 -3
  445. package/dist/components/table/table-filter-list.d.ts +0 -2
  446. package/dist/components/table/table-filter-menu.d.ts +0 -2
  447. package/dist/components/table/table-first-page.d.ts +0 -2
  448. package/dist/components/table/table-footer.d.ts +0 -2
  449. package/dist/components/table/table-header.d.ts +0 -2
  450. package/dist/components/table/table-image-cell.d.ts +0 -2
  451. package/dist/components/table/table-last-page.d.ts +0 -2
  452. package/dist/components/table/table-nav.d.ts +0 -2
  453. package/dist/components/table/table-next-page.d.ts +0 -2
  454. package/dist/components/table/table-number-cell.d.ts +0 -2
  455. package/dist/components/table/table-number-filter-chip.d.ts +0 -3
  456. package/dist/components/table/table-number-filter-form.d.ts +0 -3
  457. package/dist/components/table/table-pagination.d.ts +0 -2
  458. package/dist/components/table/table-paging.d.ts +0 -2
  459. package/dist/components/table/table-previous-page.d.ts +0 -2
  460. package/dist/components/table/table-results.d.ts +0 -3
  461. package/dist/components/table/table-search.d.ts +0 -3
  462. package/dist/components/table/table-select-filter-chip.d.ts +0 -3
  463. package/dist/components/table/table-select-filter-form.d.ts +0 -3
  464. package/dist/components/table/table-select-header.d.ts +0 -2
  465. package/dist/components/table/table-sort-chip.d.ts +0 -3
  466. package/dist/components/table/table-sort-list.d.ts +0 -2
  467. package/dist/components/table/table-sort-menu.d.ts +0 -2
  468. package/dist/components/table/table-string-filter-chip.d.ts +0 -3
  469. package/dist/components/table/table-string-filter-form.d.ts +0 -3
  470. package/dist/components/table/table-text-cell.d.ts +0 -2
  471. package/dist/components/table/table-toolbar.d.ts +0 -2
  472. package/dist/components/table/table-view-mode-toggle.d.ts +0 -2
  473. package/dist/components/table/table-viewport.d.ts +0 -2
  474. package/dist/components/table/table.types.d.ts +0 -169
  475. package/dist/components/table/table.utils.d.ts +0 -30
  476. package/dist/components/tabs/index.d.ts +0 -6
  477. package/dist/components/tabs/tabs-indicator.d.ts +0 -2
  478. package/dist/components/tabs/tabs-list.d.ts +0 -2
  479. package/dist/components/tabs/tabs-panel.d.ts +0 -2
  480. package/dist/components/tabs/tabs-tab.d.ts +0 -2
  481. package/dist/components/tabs/tabs.d.ts +0 -2
  482. package/dist/components/tabs/tabs.types.d.ts +0 -15
  483. package/dist/components/text-area/index.d.ts +0 -2
  484. package/dist/components/text-area/text-area.d.ts +0 -3
  485. package/dist/components/text-area/text-area.types.d.ts +0 -5
  486. package/dist/components/toast/anchored-toast-item.d.ts +0 -2
  487. package/dist/components/toast/anchored-toasts.d.ts +0 -2
  488. package/dist/components/toast/index.d.ts +0 -27
  489. package/dist/components/toast/stack-toast-item.d.ts +0 -3
  490. package/dist/components/toast/stack-toasts.d.ts +0 -2
  491. package/dist/components/toast/toast-manager.d.ts +0 -19
  492. package/dist/components/toast/toast-provider.d.ts +0 -2
  493. package/dist/components/toast/toast.types.d.ts +0 -21
  494. package/dist/components/toggle/index.d.ts +0 -2
  495. package/dist/components/toggle/toggle.d.ts +0 -2
  496. package/dist/components/toggle/toggle.types.d.ts +0 -9
  497. package/dist/components/toggle-group/index.d.ts +0 -2
  498. package/dist/components/toggle-group/toggle-group-context.d.ts +0 -5
  499. package/dist/components/toggle-group/toggle-group.d.ts +0 -2
  500. package/dist/components/toggle-group/toggle-group.types.d.ts +0 -7
  501. package/dist/components/tooltip/index.d.ts +0 -4
  502. package/dist/components/tooltip/tooltip-context.d.ts +0 -2
  503. package/dist/components/tooltip/tooltip-trigger.d.ts +0 -2
  504. package/dist/components/tooltip/tooltip.d.ts +0 -2
  505. package/dist/components/tooltip/tooltip.types.d.ts +0 -9
  506. package/dist/dawn-ui-react.js +0 -59801
  507. package/dist/dawn-ui-react.umd.cjs +0 -228
  508. package/dist/hooks/index.d.ts +0 -2
  509. package/dist/hooks/theme/constants.d.ts +0 -4
  510. package/dist/hooks/theme/index.d.ts +0 -3
  511. package/dist/hooks/theme/types.d.ts +0 -16
  512. package/dist/hooks/theme/use-theme.d.ts +0 -3
  513. package/dist/hooks/use-media-query.d.ts +0 -6
  514. package/dist/index.d.ts +0 -3
  515. package/dist/utils/cn.d.ts +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Accordion","BaseAccordion","BaseAccordion","BaseAccordion","BaseAccordion","AccordionRoot","Alert","AlertRoot","AlertDialog","BaseAlertDialog","BaseButton","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","AlertDialogRoot","Autocomplete","BaseAutocomplete","BaseAutocomplete","DEFAULT_SIDE_OFFSET","BaseAutocomplete","formatFileSize","BaseAutocomplete","DEFAULT_SIDE_OFFSET","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","AutocompleteRoot","Avatar","BaseAvatar","BaseAvatar","BaseAvatar","AvatarRoot","BentoBox","BentoBoxRoot","Breadcrumb","BreadcrumbRoot","Calendar","Select","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","SelectRoot","CalendarRoot","Tooltip","BaseCheckbox","Checkbox","BaseCheckbox","CheckboxRoot","BaseCheckboxGroup","CodeBlock","Tabs","SwitchTabs","SwitchTabs","SwitchTabs","SwitchTabs","SwitchTabs","TabsRoot","CodeBlockRoot","Collapsible","BaseCollapsible","BaseCollapsible","BaseCollapsible","CollapsibleRoot","BaseSlider","ColorPicker","InputGroup","DEFAULT_COLOR","getStringValue","getColorValue","getColorInputProps","BaseInput","BaseSeparator","InputGroupRoot","Popover","BasePopover","BasePopover","BasePopover","BasePopover","BasePopover","BasePopover","PopoverRoot","FIRST_VALUE_INDEX","getSliderValue","ColorPickerRoot","Combobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","ComboboxRoot","ContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","ContextMenuRoot","Dialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","DialogRoot","Drawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","DrawerRoot","EMPTY","defaultMaxFilesErrorLabel","defaultMaxFileSizeErrorLabel","Dropzone","EMPTY_FILE_COUNT","EMPTY_FILE_COUNT","Meter","BaseMeter","BaseMeter","BaseMeter","BaseMeter","BaseMeter","MeterRoot","DropzoneRoot","Field","NO_ERRORS","formatFileSize","BaseInput","NO_ERRORS","NO_ERRORS","NO_ERRORS","NO_ERRORS","BaseRadio","RadioGroup","BaseRadioGroup","RadioGroupRoot","Tooltip","BaseTooltip","BaseTooltip","BaseTooltip","TooltipRoot","BaseSlider","MIN_DEFAULT","MAX_DEFAULT","STEP_DEFAULT","Slider","BaseSlider","SliderRoot","BaseSwitch","BaseToggle","FieldRoot","Form","FormRoot","InputOTP","InputOTPRoot","Kbd","KbdRoot","features","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","useTableContext","useCellContext","useTableContext","useCellContext","useTableContext","Menu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","MenuRoot","getColumnHeaderLabel","useTableContext","useCellContext","useCellContext","useTableContext","useCellContext","useTableContext","NavBar","NavBarRoot","NavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","NavigationMenuRoot","BaseNumberField","PreviewCard","BasePreviewCard","BasePreviewCard","BasePreviewCard","PreviewCardRoot","Profile","ProfileRoot","Progress","ProgressRoot","BaseResizableSeparator","BaseResizablePanel","BaseResizableGroup","BaseScrollArea","Sidebar","BaseScrollArea","SidebarRoot","MIN_DEFAULT","MAX_DEFAULT","STEP_DEFAULT","SliderGroup","SliderGroupRoot","FIRST_RANGE_INDEX","useCellContext","useTableContext","useCellContext","useTableContext","useTableContext","useCellContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","useTableContext","useCellContext","PAGE_NUMBER_OFFSET","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","useTableContext","useTableContext","BaseToast","BaseToast","BaseToast","BaseToast","BaseToast","BaseToast","BaseToggleGroup"],"sources":["../src/utils/cn.ts","../src/components/accordion/accordion.types.ts","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-header.tsx","../src/components/accordion/accordion-icon.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-panel.tsx","../src/components/accordion/accordion-subtitle.tsx","../src/components/accordion/accordion-title.tsx","../src/components/accordion/index.ts","../src/components/alert/alert.types.ts","../src/components/alert/alert.tsx","../src/components/alert/alert-action.tsx","../src/components/alert/alert-description.tsx","../src/components/alert/alert-icon.tsx","../src/components/alert/alert-title.tsx","../src/components/alert/index.ts","../src/components/alert-dialog/alert-dialog.tsx","../src/components/button/button.types.ts","../src/components/button/button.tsx","../src/components/alert-dialog/alert-dialog-close.tsx","../src/components/alert-dialog/alert-dialog-confirm.tsx","../src/components/alert-dialog/alert-dialog-description.tsx","../src/components/alert-dialog/alert-dialog-footer.tsx","../src/components/alert-dialog/alert-dialog-header.tsx","../src/components/alert-dialog/alert-dialog-icon.tsx","../src/components/alert-dialog/alert-dialog.types.ts","../src/components/alert-dialog/alert-dialog-popup.tsx","../src/components/alert-dialog/alert-dialog-title.tsx","../src/components/alert-dialog/alert-dialog-trigger.tsx","../src/components/alert-dialog/index.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/autocomplete/autocomplete-collection.tsx","../src/components/autocomplete/autocomplete-content.tsx","../src/components/input/input.types.tsx","../src/components/autocomplete/autocomplete-input-group.tsx","../src/components/autocomplete/autocomplete-input-group-input.tsx","../src/components/autocomplete/autocomplete-grid-content.tsx","../src/components/autocomplete/autocomplete-grid-item.tsx","../src/components/autocomplete/autocomplete-group.tsx","../src/components/autocomplete/autocomplete-group-label.tsx","../src/components/autocomplete/autocomplete-input-group-addon.tsx","../src/components/autocomplete/autocomplete-item.tsx","../src/components/autocomplete/autocomplete-row.tsx","../src/components/autocomplete/autocomplete-status.tsx","../src/components/autocomplete/autocomplete-trigger.tsx","../src/components/autocomplete/index.ts","../src/components/avatar/avatar.types.ts","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar-badge.tsx","../src/components/avatar/avatar-fallback.tsx","../src/components/skeleton/skeleton.tsx","../src/components/avatar/avatar-image.tsx","../src/components/avatar/index.ts","../src/components/badge/badge.types.ts","../src/components/badge/badge.tsx","../src/components/bento-box/bento-box.types.ts","../src/components/bento-box/bento-box.tsx","../src/components/bento-box/bento-box-action.tsx","../src/components/bento-box/bento-box-content.tsx","../src/components/bento-box/bento-box-description.tsx","../src/components/bento-box/bento-box-footer.tsx","../src/components/bento-box/bento-box-header.tsx","../src/components/bento-box/bento-box-title.tsx","../src/components/bento-box/index.ts","../src/components/breadcrumb/breadcrumb.tsx","../src/components/breadcrumb/breadcrumb-ellipsis.tsx","../src/components/breadcrumb/breadcrumb-item.tsx","../src/components/breadcrumb/breadcrumb-link.tsx","../src/components/breadcrumb/breadcrumb-separator.tsx","../src/components/breadcrumb/index.ts","../src/components/button-group/button-group.types.ts","../src/components/button-group/button-group.tsx","../src/components/calendar/calendar.reducer.ts","../src/components/calendar/calendar.tsx","../src/components/calendar/calendar-footer.tsx","../src/components/calendar/calendar-header.tsx","../src/components/calendar/calendar.types.ts","../src/components/calendar/calendar-panel.tsx","../src/components/select/select.tsx","../src/components/select/select-description.tsx","../src/components/select/select-group.tsx","../src/components/select/select-group-label.tsx","../src/components/select/select-icon.tsx","../src/components/select/select-item.tsx","../src/components/select/select-list.tsx","../src/components/select/select-popup.tsx","../src/components/select/select-title.tsx","../src/components/select/select.types.ts","../src/components/select/select-trigger.tsx","../src/components/select/select-value.tsx","../src/components/select/index.ts","../src/components/calendar/calendar-picker.tsx","../src/utils/date-time.ts","../src/components/calendar/calendar-summary.tsx","../src/components/calendar/index.ts","../src/components/chart/chart.types.ts","../src/components/chart/chart-container.tsx","../src/components/chart/chart-tooltip.tsx","../src/components/chart/chart-tooltip-content.tsx","../src/components/chart/chart-tooltip-label.tsx","../src/components/chart/chart-tooltip-payload.tsx","../src/components/chart/chart-legend.tsx","../src/components/chart/chart.utils.ts","../src/components/chart/chart-legend-icon.tsx","../src/components/chart/chart-legend-indicator.tsx","../src/components/chart/chart-legend-label.tsx","../src/components/chart/chart-legend-content.tsx","../src/components/chart/chart-linear-gradient.tsx","../src/components/chart/chart-tooltip-indicator.tsx","../src/components/chart/chart-tooltip-name.tsx","../src/components/chart/chart-tooltip-icon.tsx","../src/components/chart/chart-tooltip-value.tsx","../src/components/label/label.types.ts","../src/components/label/label.tsx","../src/components/checkbox/checkbox-indicator.tsx","../src/components/checkbox/checkbox.types.ts","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/index.ts","../src/components/checkbox-group/checkbox-group.tsx","../src/components/code-block/code-block.tsx","../src/components/code-block/code-block-actions.tsx","../src/components/code-block/code-block-copy.tsx","../src/components/code-block/code-block-download.tsx","../src/components/code-block/code-block-header.tsx","../src/components/code-block/code-block-name.tsx","../src/components/code-block/code-block-select.tsx","../src/components/tabs/tabs.types.ts","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs-indicator.tsx","../src/components/tabs/tabs-list.tsx","../src/components/tabs/tabs-panel.tsx","../src/components/tabs/tabs-tab.tsx","../src/components/tabs/index.ts","../src/components/code-block/code-block-tabs.tsx","../src/components/code-block/code-block-window.tsx","../src/components/code-block/index.ts","../src/components/collapsible/collapsible.tsx","../src/components/collapsible/collapsible-panel.tsx","../src/components/collapsible/collapsible-trigger.tsx","../src/components/collapsible/index.ts","../src/components/color-channel-slider/color-channel-slider.types.ts","../src/components/color-channel-slider/color-channel-slider.tsx","../src/components/color-picker/color-picker.types.ts","../src/components/color-picker/color-picker.tsx","../src/components/color-picker/color-picker-area.tsx","../src/components/color-picker/color-picker-group.tsx","../src/components/color-channel-slider/color-channel-slider.utils.ts","../src/components/color-picker/color-picker-hue-slider.tsx","../src/components/input-group/input-group.tsx","../src/components/input-group/input-group.types.ts","../src/components/input-group/input-group-addon.tsx","../src/components/input-group/input-group-input.tsx","../src/components/separator/separator.types.ts","../src/components/separator/separator.tsx","../src/components/input-group/input-group-separator.tsx","../src/components/input-group/index.ts","../src/components/popover/popover.tsx","../src/components/popover/popover-button.tsx","../src/components/popover/popover-content.tsx","../src/components/popover/popover-description.tsx","../src/components/popover/popover-header.tsx","../src/components/popover/popover.types.ts","../src/components/popover/popover-panel.tsx","../src/components/popover/popover-title.tsx","../src/components/popover/popover-trigger.tsx","../src/components/popover/index.ts","../src/components/color-picker/color-picker-input.tsx","../src/components/color-picker/color-picker-label.tsx","../src/components/color-picker/color-picker-lightness-slider.tsx","../src/components/color-picker/color-picker-palette-add.tsx","../src/components/color-picker/color-picker-palette-limit.tsx","../src/components/color-picker/color-picker-palette-swatch.tsx","../src/components/color-picker/color-picker-palette-list.tsx","../src/components/color-picker/color-picker-row.tsx","../src/components/color-picker/color-picker-transparency-slider.tsx","../src/components/color-picker/color-picker-value-type.tsx","../src/components/color-picker/index.ts","../src/components/combobox/combobox.tsx","../src/components/combobox/combobox-chip.tsx","../src/components/combobox/combobox-chips.tsx","../src/components/combobox/combobox-collection.tsx","../src/components/combobox/combobox-empty.tsx","../src/components/combobox/combobox-group.tsx","../src/components/combobox/combobox-group-label.tsx","../src/components/combobox/combobox-input.tsx","../src/components/combobox/combobox-item.tsx","../src/components/combobox/combobox-list.tsx","../src/components/combobox/combobox-popup.tsx","../src/components/combobox/combobox-status.tsx","../src/components/combobox/combobox-trigger.tsx","../src/components/combobox/combobox-value.tsx","../src/components/combobox/combobox.types.ts","../src/components/combobox/combobox-virtualized-list.tsx","../src/components/combobox/index.ts","../src/components/context-menu/context-menu.tsx","../src/components/context-menu/context-menu-checkbox-item.tsx","../src/components/context-menu/context-menu-group.tsx","../src/components/context-menu/context-menu-group-label.tsx","../src/components/context-menu/context-menu.types.ts","../src/components/context-menu/context-menu-item.tsx","../src/components/context-menu/context-menu-popup.tsx","../src/components/context-menu/context-menu-radio-group.tsx","../src/components/context-menu/context-menu-radio-item.tsx","../src/components/context-menu/context-menu-separator.tsx","../src/components/context-menu/context-menu-shortcut.tsx","../src/components/context-menu/context-menu-submenu.tsx","../src/components/context-menu/context-menu-submenu-trigger.tsx","../src/components/context-menu/context-menu-trigger.tsx","../src/components/context-menu/index.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-close.tsx","../src/components/dialog/dialog-content.tsx","../src/components/dialog/dialog-description.tsx","../src/components/dialog/dialog-footer.tsx","../src/components/dialog/dialog-header.tsx","../src/components/dialog/dialog-icon.tsx","../src/components/dialog/dialog-popup.tsx","../src/components/dialog/dialog-title.tsx","../src/components/dialog/dialog-trigger.tsx","../src/components/dialog/dialog.types.ts","../src/components/dialog/index.ts","../src/components/drawer/drawer.tsx","../src/components/drawer/drawer-close.tsx","../src/components/drawer/drawer-content.tsx","../src/components/drawer/drawer-description.tsx","../src/components/drawer/drawer-header.tsx","../src/components/drawer/drawer-popup.tsx","../src/components/drawer/drawer-provider.tsx","../src/components/drawer/drawer-title.tsx","../src/components/drawer/drawer-trigger.tsx","../src/components/drawer/index.ts","../src/components/dropzone/dropzone.utils.ts","../src/components/dropzone/dropzone.tsx","../src/components/dropzone/dropzone-actions.tsx","../src/components/dropzone/dropzone-clear.tsx","../src/components/dropzone/dropzone-confirm.tsx","../src/components/dropzone/dropzone-container.tsx","../src/components/dropzone/dropzone-error.tsx","../src/components/dropzone/dropzone-file-limit.tsx","../src/components/dropzone/dropzone-file-size-limit.tsx","../src/components/dropzone/dropzone-files.tsx","../src/components/dropzone/dropzone-files-header.tsx","../src/components/meter/meter.types.ts","../src/components/meter/meter.tsx","../src/components/meter/meter-footer.tsx","../src/components/meter/meter-header.tsx","../src/components/meter/meter-indicator.tsx","../src/components/meter/meter-label.tsx","../src/components/meter/meter-subtitle.tsx","../src/components/meter/meter-track.tsx","../src/components/meter/meter-value.tsx","../src/components/meter/index.ts","../src/components/dropzone/dropzone-files-list.tsx","../src/components/dropzone/dropzone-files-title.tsx","../src/components/dropzone/dropzone-formats.tsx","../src/components/dropzone/dropzone-heading.tsx","../src/components/dropzone/dropzone-icon.tsx","../src/components/dropzone/dropzone-info.tsx","../src/components/dropzone/dropzone-subtitle.tsx","../src/components/dropzone/dropzone-trigger.tsx","../src/components/dropzone/index.ts","../src/components/field/field.tsx","../src/components/form/form-contexts.ts","../src/components/field/field-checkbox.tsx","../src/components/field/field-description.tsx","../src/components/field/field-errors.tsx","../src/components/input/input.tsx","../src/components/field/field-input.tsx","../src/components/field/field-input-group.tsx","../src/components/field/field-input-group-input.tsx","../src/components/field/field.types.ts","../src/components/field/field-label.tsx","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/radio.tsx","../src/components/radio-group/radio-group.tsx","../src/components/radio-group/index.ts","../src/components/field/field-radio.tsx","../src/components/field/field-radio-group.tsx","../src/components/field/field-row.tsx","../src/components/field/field-select.tsx","../src/components/field/field-set.tsx","../src/components/tooltip/tooltip.tsx","../src/components/tooltip/tooltip-context.tsx","../src/components/tooltip/tooltip-trigger.tsx","../src/components/tooltip/index.ts","../src/components/slider/slider-thumb.tsx","../src/components/slider/slider.types.ts","../src/components/slider/slider.tsx","../src/components/slider/index.ts","../src/components/field/field-slider.tsx","../src/components/switch/switch.tsx","../src/components/field/field-switch.tsx","../src/components/text-area/text-area.types.ts","../src/components/text-area/text-area.tsx","../src/components/field/field-text-area.tsx","../src/components/toggle-group/toggle-group-context.ts","../src/components/toggle/toggle.types.ts","../src/components/toggle/toggle.tsx","../src/components/field/field-toggle.tsx","../src/components/field/index.ts","../src/components/form/form.tsx","../src/components/form/form-errors.tsx","../src/components/form/form-footer.tsx","../src/components/form/form-reset.tsx","../src/components/form/form-set.tsx","../src/components/form/form-set-content.tsx","../src/components/form/form.types.ts","../src/components/form/form-set-heading.tsx","../src/components/form/form-submit.tsx","../src/components/form/form-context.tsx","../src/components/form/index.ts","../src/components/input-otp/input-otp.tsx","../src/components/input-otp/input-otp-separator.tsx","../src/components/input-otp/input-otp-slot.tsx","../src/components/input-otp/index.ts","../src/components/kbd/kbd.tsx","../src/components/kbd/kbd-group.tsx","../src/components/kbd/index.ts","../src/components/layer-tree/layer-tree-utils.ts","../src/components/layer-tree/layer-tree-context.tsx","../src/components/layer-tree/layer-tree.types.ts","../src/components/layer-tree/layer-tree.tsx","../src/components/layer-tree/layer-tree-row.tsx","../src/components/layer-tree/layer-tree-body.tsx","../src/components/layer-tree/layer-tree-expand-all.tsx","../src/components/layer-tree/layer-tree-footer.tsx","../src/components/layer-tree/layer-tree-icon-cell.tsx","../src/components/layer-tree/layer-tree-locked-all.tsx","../src/components/layer-tree/layer-tree-locked-cell.tsx","../src/components/layer-tree/layer-tree-node-icon.tsx","../src/components/layer-tree/layer-tree-search.tsx","../src/components/menu/menu.tsx","../src/components/menu/menu-checkbox-item.tsx","../src/components/menu/menu-group.tsx","../src/components/menu/menu-group-label.tsx","../src/components/menu/menu.types.ts","../src/components/menu/menu-item.tsx","../src/components/menu/menu-popup.tsx","../src/components/menu/menu-radio-group.tsx","../src/components/menu/menu-radio-item.tsx","../src/components/menu/menu-separator.tsx","../src/components/menu/menu-shortcut.tsx","../src/components/menu/menu-submenu.tsx","../src/components/menu/menu-submenu-trigger.tsx","../src/components/menu/menu-trigger.tsx","../src/components/menu/index.ts","../src/components/layer-tree/layer-tree-sort.tsx","../src/components/layer-tree/layer-tree-text-cell.tsx","../src/components/layer-tree/layer-tree-trigger-cell.tsx","../src/components/layer-tree/layer-tree-visibility-all.tsx","../src/components/layer-tree/layer-tree-visibility-cell.tsx","../src/components/layer-tree/layer-tree-table.tsx","../src/components/nav-bar/nav-bar.types.ts","../src/components/nav-bar/nav-bar.tsx","../src/components/nav-bar/nav-bar-item.tsx","../src/components/nav-bar/nav-bar-item-icon.tsx","../src/components/nav-bar/nav-bar-item-label.tsx","../src/components/nav-bar/index.ts","../src/components/navigation-menu/navigation-menu.tsx","../src/components/navigation-menu/navigation-menu-content.tsx","../src/components/navigation-menu/navigation-menu-icon.tsx","../src/components/navigation-menu/navigation-menu-item.tsx","../src/components/navigation-menu/navigation-menu.types.ts","../src/components/navigation-menu/navigation-menu-link.tsx","../src/components/navigation-menu/navigation-menu-list.tsx","../src/components/navigation-menu/navigation-menu-popup.tsx","../src/components/navigation-menu/navigation-menu-trigger.tsx","../src/components/navigation-menu/index.ts","../src/components/number-field/number-field.types.ts","../src/components/number-field/number-field.tsx","../src/components/preview-card/preview-card.tsx","../src/components/preview-card/preview-card-popup.tsx","../src/components/preview-card/preview-card-trigger.tsx","../src/components/preview-card/index.ts","../src/components/profile/profile.tsx","../src/components/profile/profile-action.tsx","../src/components/profile/profile-content.tsx","../src/components/profile/profile-name.tsx","../src/components/profile/profile-subname.tsx","../src/components/profile/index.ts","../src/components/progress/progress.tsx","../src/components/progress/progress-bar.tsx","../src/components/progress/progress-description.tsx","../src/components/progress/progress-title.tsx","../src/components/progress/progress-indicator.tsx","../src/components/progress/progress-label.tsx","../src/components/progress/index.ts","../src/components/radar-ping/radar-ping.types.ts","../src/components/radar-ping/radar-ping.tsx","../src/components/resizeable/resizeable-handle.tsx","../src/components/resizeable/resizeable-panel.tsx","../src/components/resizeable/resizeable-panel-group.tsx","../src/components/scroll-area/scroll-area.types.ts","../src/components/scroll-area/scroll-area.tsx","../src/hooks/use-media-query.ts","../src/hooks/theme/theme.constants.ts","../src/hooks/theme/use-theme.tsx","../src/components/sidebar/sidebar-provider.tsx","../src/components/sidebar/sidebar.tsx","../src/components/sidebar/sidebar-content.tsx","../src/components/sidebar/sidebar-footer.tsx","../src/components/sidebar/sidebar-group.tsx","../src/components/sidebar/sidebar-group-content.tsx","../src/components/sidebar/sidebar-group-label.tsx","../src/components/sidebar/sidebar-header.tsx","../src/components/sidebar/sidebar-menu.tsx","../src/components/sidebar/sidebar-menu-badge.tsx","../src/components/sidebar/sidebar-menu-button.tsx","../src/components/sidebar/sidebar-menu-collapsible.tsx","../src/components/sidebar/sidebar-menu-collapsible-panel.tsx","../src/components/sidebar/sidebar-menu-collapsible-trigger.tsx","../src/components/sidebar/sidebar-menu-item.tsx","../src/components/sidebar/sidebar-toggle.tsx","../src/components/sidebar/sidebar.utils.ts","../src/components/sidebar/index.ts","../src/components/slider-group/slider-description.tsx","../src/components/slider-group/slider-group-context.ts","../src/components/slider-group/slider-group.tsx","../src/components/slider-group/slider-group-slider.tsx","../src/components/slider-group/slider-icon.tsx","../src/components/slider-group/slider-input.tsx","../src/components/slider-group/slider-label.tsx","../src/components/slider-group/slider-value.tsx","../src/components/slider-group/index.ts","../src/components/table/table.types.ts","../src/components/table/table.utils.ts","../src/components/table/table-feature-context.ts","../src/components/table/table-badge-cell.tsx","../src/components/table/table-body.tsx","../src/components/table/table-checkbox-cell.tsx","../src/components/table/table-column-toggle.tsx","../src/components/table/table-container.tsx","../src/components/table/table-date-cell.tsx","../src/components/table/table-date-filter-form.tsx","../src/components/table/table-date-filter-chip.tsx","../src/components/table/table-number-filter-form.tsx","../src/components/table/table-number-filter-chip.tsx","../src/components/table/table-select-filter-form.tsx","../src/components/table/table-select-filter-chip.tsx","../src/components/table/table-string-filter-form.tsx","../src/components/table/table-string-filter-chip.tsx","../src/components/table/table-filter-list.tsx","../src/components/table/table-filter-menu.tsx","../src/components/table/table-first-page.tsx","../src/components/table/table-footer.tsx","../src/components/table/table-header.tsx","../src/components/table/table-image-cell.tsx","../src/components/table/table-last-page.tsx","../src/components/table/table-nav.tsx","../src/components/table/table-next-page.tsx","../src/components/table/table-number-cell.tsx","../src/components/table/table-pagination.tsx","../src/components/table/table-paging.tsx","../src/components/table/table-previous-page.tsx","../src/components/table/table-search.tsx","../src/components/table/table-select-header.tsx","../src/components/table/table-sort-menu.tsx","../src/components/table/table-sort-chip.tsx","../src/components/table/table-sort-list.tsx","../src/components/table/table-text-cell.tsx","../src/components/table/table-toolbar.tsx","../src/components/table/table-view-mode-toggle.tsx","../src/components/table/table-viewport.tsx","../src/components/table/table-context.tsx","../src/components/table/table-results.tsx","../src/components/toast/anchored-toast-item.tsx","../src/components/toast/toast-manager.ts","../src/components/toast/anchored-toasts.tsx","../src/components/toast/stack-toast-item.tsx","../src/components/toast/stack-toasts.tsx","../src/components/toast/toast-managers.ts","../src/components/toast/toast-provider.tsx","../src/components/toast/toast.tsx","../src/components/toggle-group/toggle-group.types.ts","../src/components/toggle-group/toggle-group.tsx"],"sourcesContent":["import { clsx } from 'clsx'\nimport type { ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import type { Accordion as BaseAccordion } from '@base-ui/react/accordion'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type React from 'react'\n\ntype AccordionProps = React.ComponentProps<typeof BaseAccordion.Root> &\n VariantProps<typeof accordionVariants> & {\n withSeparator?: boolean\n }\n\ntype AccordionPanelProps = React.ComponentProps<typeof BaseAccordion.Panel>\n\nconst accordionVariants = cva('flex flex-col justify-center', {\n defaultVariants: {\n variant: 'surface',\n },\n variants: {\n variant: {\n ghost: 'bg-transparent',\n surface: 'overflow-hidden rounded-xl bg-surface shadow-2xs',\n },\n },\n }),\n accordionItemVariants = cva(\n 'group transition-all data-disabled:pointer-events-none data-disabled:opacity-50',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n '[&_[data-slot=accordion-content]]:gap-x-sm [&_[data-slot=accordion-down-icon]]:size-md [&_[data-slot=accordion-subtitle]]:style-text-prose-0 [&_[data-slot=accordion-title]]:style-text-strong-1 [&_[data-slot=accordion-trigger]]:h-3xl [&_[data-slot=accordion-trigger]]:gap-md [&_[data-slot=accordion-trigger]]:pr-sm [&_[data-slot=accordion-trigger]]:pl-lg [&_[data-slot=accordion-icon]]:[&>svg]:size-lg',\n medium:\n '[&_[data-slot=accordion-content]]:gap-x-xs [&_[data-slot=accordion-down-icon]]:size-sm [&_[data-slot=accordion-subtitle]]:style-text-prose--1 [&_[data-slot=accordion-title]]:style-text-strong-0 [&_[data-slot=accordion-trigger]]:h-2xl [&_[data-slot=accordion-trigger]]:gap-sm [&_[data-slot=accordion-trigger]]:pr-sm [&_[data-slot=accordion-trigger]]:pl-md [&_[data-slot=accordion-icon]]:[&>svg]:size-md',\n small:\n '[&_[data-slot=accordion-content]]:gap-x-2xs [&_[data-slot=accordion-down-icon]]:size-xs [&_[data-slot=accordion-subtitle]]:style-text-prose--2 [&_[data-slot=accordion-title]]:style-text-strong--1 [&_[data-slot=accordion-trigger]]:h-xl [&_[data-slot=accordion-trigger]]:gap-xs [&_[data-slot=accordion-trigger]]:px-sm [&_[data-slot=accordion-icon]]:[&>svg]:size-sm',\n },\n tone: {\n accent:\n '[&_[data-slot=accordion-icon]]:text-accent-default [&_[data-slot=accordion-subtitle]]:text-accent-muted [&_[data-slot=accordion-title]]:text-accent-default [&:not([data-open])]:hover:bg-accent-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-accent-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-accent-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-accent-on-container',\n brand:\n '[&_[data-slot=accordion-icon]]:text-brand-default [&_[data-slot=accordion-subtitle]]:text-brand-muted [&_[data-slot=accordion-title]]:text-brand-default [&:not([data-open])]:hover:bg-brand-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-brand-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-brand-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-brand-on-container',\n error:\n '[&_[data-slot=accordion-icon]]:text-error-default [&_[data-slot=accordion-subtitle]]:text-error-muted [&_[data-slot=accordion-title]]:text-error-default [&:not([data-open])]:hover:bg-error-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-error-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-error-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-error-on-container',\n info: '[&_[data-slot=accordion-icon]]:text-info-default [&_[data-slot=accordion-subtitle]]:text-info-muted [&_[data-slot=accordion-title]]:text-info-default [&:not([data-open])]:hover:bg-info-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-info-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-info-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-info-on-container',\n neutral:\n '[&_[data-slot=accordion-icon]]:text-neutral-default [&_[data-slot=accordion-subtitle]]:text-neutral-muted [&_[data-slot=accordion-title]]:text-neutral-default [&:not([data-open])]:hover:bg-neutral-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-neutral-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-neutral-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-neutral-on-container',\n success:\n '[&_[data-slot=accordion-icon]]:text-success-default [&_[data-slot=accordion-subtitle]]:text-success-muted [&_[data-slot=accordion-title]]:text-success-default [&:not([data-open])]:hover:bg-success-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-success-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-success-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-success-on-container',\n warning:\n '[&_[data-slot=accordion-icon]]:text-warning-default [&_[data-slot=accordion-subtitle]]:text-warning-muted [&_[data-slot=accordion-title]]:text-warning-default [&:not([data-open])]:hover:bg-warning-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-warning-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-warning-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-warning-on-container',\n },\n },\n },\n )\n\ntype AccordionItemProps = React.ComponentProps<typeof BaseAccordion.Item> &\n VariantProps<typeof accordionItemVariants>\ntype AccordionHeaderProps = React.ComponentProps<typeof BaseAccordion.Header>\ntype AccordionTitleProps = React.ComponentProps<'div'>\ntype AccordionSubtitleProps = React.ComponentProps<'div'>\ntype AccordionIconProps = React.ComponentProps<'div'>\n\nexport type {\n AccordionProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTitleProps,\n AccordionSubtitleProps,\n AccordionIconProps,\n AccordionPanelProps,\n}\nexport { accordionVariants, accordionItemVariants }\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport { accordionVariants } from './accordion.types'\nimport type { AccordionProps } from './accordion.types'\n\nexport function Accordion({\n withSeparator = true,\n variant,\n className,\n ref,\n ...props\n}: AccordionProps) {\n return (\n <BaseAccordion.Root\n className={cn(\n accordionVariants({ className, variant }),\n withSeparator && 'divide-y divide-border',\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\nimport { CaretDownIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn.ts'\n\nimport type { AccordionHeaderProps } from './accordion.types'\n\nexport function AccordionHeader({ className, children, ref, ...props }: AccordionHeaderProps) {\n return (\n <BaseAccordion.Header className={cn('', className)} ref={ref} {...props}>\n <BaseAccordion.Trigger\n className={cn(\n 'group flex min-h-2xl w-full items-center justify-between gap-sm py-sm pr-sm pl-md hover:cursor-pointer',\n )}\n >\n <div className=\"grid auto-rows-min items-center gap-x-sm has-data-[slot=accordion-icon]:grid-cols-[auto_1fr] has-data-[slot=accordion-subtitle]:grid-rows-[auto_auto] has-data-[slot=accordion-subtitle]:**:data-[slot=accordion-icon]:row-span-2\">\n {children}\n </div>\n <CaretDownIcon\n className=\"ml-auto shrink-0 text-on-surface-variant transition-transform duration-200 ease-out group-data-panel-open:rotate-180\"\n weight=\"bold\"\n />\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionIconProps } from './accordion.types'\n\nexport function AccordionIcon({ className, ref, ...props }: AccordionIconProps) {\n return (\n <div\n data-slot=\"accordion-icon\"\n className={cn(\n 'col-start-1 row-start-1 self-center transition-colors [&>svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport { accordionItemVariants } from './accordion.types'\nimport type { AccordionItemProps } from './accordion.types'\n\nexport function AccordionItem({ size, tone, className, ref, ...props }: AccordionItemProps) {\n return (\n <BaseAccordion.Item\n className={cn(accordionItemVariants({ className, size, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AccordionPanelProps } from './accordion.types'\n\nexport function AccordionPanel({ className, children, ref, ...props }: AccordionPanelProps) {\n return (\n <BaseAccordion.Panel\n className={cn(\n 'h-(--accordion-panel-height) overflow-hidden transition-all duration-300 ease-out data-ending-style:h-[0px] data-starting-style:h-[0px]',\n className,\n )}\n data-panel\n ref={ref}\n {...props}\n >\n <div className=\"px-md pb-sm\">{children}</div>\n </BaseAccordion.Panel>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionSubtitleProps } from './accordion.types'\n\nexport function AccordionSubtitle({ className, ref, ...props }: AccordionSubtitleProps) {\n return (\n <div\n data-slot=\"accordion-subtitle\"\n className={cn('text-left style-text-prose--1 transition-colors', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionTitleProps } from './accordion.types'\n\nexport function AccordionTitle({ className, ref, ...props }: AccordionTitleProps) {\n return (\n <div\n data-slot=\"accordion-title\"\n className={cn(\n 'text-left style-text-strong-0 transition-colors [&:not(:has(~_[data-slot=accordion-subtitle]))]:leading-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as AccordionRoot } from './accordion'\nimport { AccordionHeader } from './accordion-header'\nimport { AccordionIcon } from './accordion-icon'\nimport { AccordionItem } from './accordion-item'\nimport { AccordionPanel } from './accordion-panel'\nimport { AccordionSubtitle } from './accordion-subtitle'\nimport { AccordionTitle } from './accordion-title'\n\nconst Accordion = Object.assign(AccordionRoot, {\n Header: AccordionHeader,\n Icon: AccordionIcon,\n Item: AccordionItem,\n Panel: AccordionPanel,\n Subtitle: AccordionSubtitle,\n Title: AccordionTitle,\n})\n\nexport type {\n AccordionHeaderProps,\n AccordionItemProps,\n AccordionProps,\n AccordionPanelProps,\n AccordionSubtitleProps,\n AccordionTitleProps,\n AccordionIconProps,\n} from './accordion.types'\nexport { AccordionHeader } from './accordion-header'\nexport { AccordionItem } from './accordion-item'\nexport { AccordionPanel } from './accordion-panel'\nexport { AccordionSubtitle } from './accordion-subtitle'\nexport { AccordionTitle } from './accordion-title'\nexport { AccordionIcon } from './accordion-icon'\n\nexport { Accordion }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst alertVariants = cva(\n 'group grid auto-rows-min items-center justify-start gap-x-xs rounded-xl border p-xs transition-all has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-data-[slot=alert-description]:grid-rows-[auto_auto] has-data-[slot=alert-icon]:grid-cols-[auto_1fr] has-data-[slot=alert-icon]:has-data-[slot=alert-action]:grid-cols-[auto_1fr_auto] has-data-[slot=alert-description]:**:data-[slot=alert-icon]:row-span-2',\n {\n defaultVariants: {\n tone: 'brand',\n },\n variants: {\n tone: {\n accent:\n 'border-accent-border bg-accent-container [&_[data-slot=alert-description]]:text-accent-on-container-muted [&_[data-slot=alert-icon]]:text-accent-on-container [&_[data-slot=alert-title]]:text-accent-on-container',\n brand:\n 'border-brand-border bg-brand-container [&_[data-slot=alert-description]]:text-brand-on-container-muted [&_[data-slot=alert-icon]]:text-brand-on-container [&_[data-slot=alert-title]]:text-brand-on-container',\n error:\n 'border-error-border bg-error-container [&_[data-slot=alert-description]]:text-error-on-container-muted [&_[data-slot=alert-icon]]:text-error-on-container [&_[data-slot=alert-title]]:text-error-on-container',\n info: 'border-info-border bg-info-container [&_[data-slot=alert-description]]:text-info-on-container-muted [&_[data-slot=alert-icon]]:text-info-on-container [&_[data-slot=alert-title]]:text-info-on-container',\n neutral:\n 'border-neutral-border bg-neutral-container [&_[data-slot=alert-description]]:text-neutral-on-container-muted [&_[data-slot=alert-icon]]:text-neutral-on-container [&_[data-slot=alert-title]]:text-neutral-on-container',\n success:\n 'border-success-border bg-success-container [&_[data-slot=alert-description]]:text-success-on-container-muted [&_[data-slot=alert-icon]]:text-success-on-container [&_[data-slot=alert-title]]:text-success-on-container',\n warning:\n 'border-warning-border bg-warning-container [&_[data-slot=alert-description]]:text-warning-on-container-muted [&_[data-slot=alert-icon]]:text-warning-on-container [&_[data-slot=alert-title]]:text-warning-on-container',\n },\n },\n },\n)\n\ntype AlertProps = React.ComponentProps<'div'> & VariantProps<typeof alertVariants>\ntype AlertTitleProps = React.ComponentProps<'div'>\ntype AlertDescriptionProps = React.ComponentProps<'div'>\ntype AlertActionProps = React.ComponentProps<'div'>\ntype AlertIconProps = React.ComponentProps<'div'>\n\nexport {\n alertVariants,\n type AlertProps,\n type AlertTitleProps,\n type AlertDescriptionProps,\n type AlertActionProps,\n type AlertIconProps,\n}\n","import { cn } from '@/utils/cn'\n\nimport { alertVariants } from './alert.types'\nimport type { AlertProps } from './alert.types'\n\nexport function Alert({ tone, className, ref, ...props }: AlertProps) {\n return <div className={cn(alertVariants({ className, tone }))} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertActionProps } from './alert.types'\n\nexport function AlertAction({ className, ref, ...props }: AlertActionProps) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn('col-[-2/-1] row-span-2 row-start-1 ml-md self-start', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDescriptionProps } from './alert.types'\n\nexport function AlertDescription({ className, ref, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('style-text-prose--1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertIconProps } from './alert.types'\n\nexport function AlertIcon({ className, ref, ...props }: AlertIconProps) {\n return (\n <div\n data-slot=\"alert-icon\"\n className={cn(\n 'col-start-1 row-start-1 self-start transition-colors [&>svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertTitleProps } from './alert.types'\n\nexport function AlertTitle({ className, ref, ...props }: AlertTitleProps) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'flex items-center gap-2xs style-text-strong-0 [&:not(:has(~_[data-slot=alert-description]))]:leading-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Alert as AlertRoot } from './alert'\nimport { AlertAction } from './alert-action'\nimport { AlertDescription } from './alert-description'\nimport { AlertIcon } from './alert-icon'\nimport { AlertTitle } from './alert-title'\n\nconst Alert = Object.assign(AlertRoot, {\n Action: AlertAction,\n Description: AlertDescription,\n Icon: AlertIcon,\n Title: AlertTitle,\n})\n\nexport type {\n AlertActionProps,\n AlertDescriptionProps,\n AlertIconProps,\n AlertProps,\n AlertTitleProps,\n} from './alert.types'\nexport { AlertDescription } from './alert-description'\nexport { AlertTitle } from './alert-title'\nexport { AlertAction } from './alert-action'\nexport { AlertIcon } from './alert-icon'\n\nexport { Alert }\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport type { AlertDialogProps } from './alert-dialog.types'\n\nexport function AlertDialog({ ...props }: AlertDialogProps) {\n return <BaseAlertDialog.Root {...props} />\n}\n","import type { Button as BaseButton } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const buttonVariants = cva(\n 'inline-flex cursor-pointer items-center justify-center rounded-full whitespace-nowrap transition-all select-none disabled:pointer-events-none disabled:opacity-50',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default hover:bg-brand-muted',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default hover:bg-accent-muted',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default hover:bg-neutral-muted',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default hover:bg-error-muted',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default hover:bg-info-muted',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default hover:bg-success-muted',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default hover:bg-warning-muted',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className:\n 'border-brand-border text-brand-default hover:bg-brand-subtle hover:text-brand-on-container',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className:\n 'border-accent-border text-accent-default hover:bg-accent-subtle hover:text-accent-on-container',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className:\n 'border-neutral-border text-neutral-default hover:bg-neutral-subtle hover:text-neutral-on-container',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className:\n 'border-error-border text-error-default hover:bg-error-subtle hover:text-error-on-container',\n tone: 'error',\n variant: 'outline',\n },\n {\n className:\n 'border-info-border text-info-default hover:bg-info-subtle hover:text-info-on-container',\n tone: 'info',\n variant: 'outline',\n },\n {\n className:\n 'border-success-border text-success-default hover:bg-success-subtle hover:text-success-on-container',\n tone: 'success',\n variant: 'outline',\n },\n {\n className:\n 'border-warning-border text-warning-default hover:bg-warning-subtle hover:text-warning-on-container',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className: 'text-brand-default hover:bg-brand-subtle hover:text-brand-on-container',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n className: 'text-accent-default hover:bg-accent-subtle hover:text-accent-on-container',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n className: 'text-neutral-default hover:bg-neutral-subtle hover:text-neutral-on-container',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n className: 'text-error-default hover:bg-error-subtle hover:text-error-on-container',\n tone: 'error',\n variant: 'ghost',\n },\n {\n className: 'text-info-default hover:bg-info-subtle hover:text-info-on-container',\n tone: 'info',\n variant: 'ghost',\n },\n {\n className: 'text-success-default hover:bg-success-subtle hover:text-success-on-container',\n tone: 'success',\n variant: 'ghost',\n },\n {\n className: 'text-warning-default hover:bg-warning-subtle hover:text-warning-on-container',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n className:\n 'border-brand-border bg-brand-container text-brand-on-container hover:border-brand-border-strong hover:bg-brand-container-high',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className:\n 'border-accent-border bg-accent-container text-accent-on-container hover:border-accent-border-strong hover:bg-accent-container-high',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className:\n 'border-neutral-border bg-neutral-container text-neutral-on-container hover:border-neutral-border-strong hover:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className:\n 'border-error-border bg-error-container text-error-on-container hover:border-error-border-strong hover:bg-error-container-high',\n tone: 'error',\n variant: 'soft',\n },\n {\n className:\n 'border-info-border bg-info-container text-info-on-container hover:border-info-border-strong hover:bg-info-container-high',\n tone: 'info',\n variant: 'soft',\n },\n {\n className:\n 'border-success-border bg-success-container text-success-on-container hover:border-success-border-strong hover:bg-success-container-high',\n tone: 'success',\n variant: 'soft',\n },\n {\n className:\n 'border-warning-border bg-warning-container text-warning-on-container hover:border-warning-border-strong hover:bg-warning-container-high',\n tone: 'warning',\n variant: 'soft',\n },\n {\n className:\n 'bg-brand-container text-brand-on-container not-active:hover:bg-brand-container-high',\n tone: 'brand',\n variant: 'elevated',\n },\n {\n className:\n 'bg-accent-container text-accent-on-container not-active:hover:bg-accent-container-high',\n tone: 'accent',\n variant: 'elevated',\n },\n {\n className: 'bg-surface-2 text-on-surface not-active:hover:bg-surface-3',\n tone: 'neutral',\n variant: 'elevated',\n },\n {\n className:\n 'bg-error-container text-error-on-container not-active:hover:bg-error-container-high',\n tone: 'error',\n variant: 'elevated',\n },\n {\n className:\n 'bg-info-container text-info-on-container not-active:hover:bg-info-container-high',\n tone: 'info',\n variant: 'elevated',\n },\n {\n className:\n 'bg-success-container text-success-on-container not-active:hover:bg-success-container-high',\n tone: 'success',\n variant: 'elevated',\n },\n {\n className:\n 'bg-warning-container text-warning-on-container not-active:hover:bg-warning-container-high',\n tone: 'warning',\n variant: 'elevated',\n },\n {\n className:\n 'text-brand-default hover:decoration-brand-default [&>svg]:text-brand-default/50 hover:[&>svg]:text-brand-default',\n tone: 'brand',\n variant: 'link',\n },\n {\n className:\n 'text-accent-default hover:decoration-accent-default [&>svg]:text-accent-default/50 hover:[&>svg]:text-accent-default',\n tone: 'accent',\n variant: 'link',\n },\n {\n className:\n 'text-neutral-default hover:decoration-neutral-default [&>svg]:text-neutral-default/50 hover:[&>svg]:text-neutral-default',\n tone: 'neutral',\n variant: 'link',\n },\n {\n className:\n 'text-error-default hover:decoration-error-default [&>svg]:text-error-default/50 hover:[&>svg]:text-error-default',\n tone: 'error',\n variant: 'link',\n },\n {\n className:\n 'text-info-default hover:decoration-info-default [&>svg]:text-info-default/50 hover:[&>svg]:text-info-default',\n tone: 'info',\n variant: 'link',\n },\n {\n className:\n 'text-success-default hover:decoration-success-default [&>svg]:text-success-default/50 hover:[&>svg]:text-success-default',\n tone: 'success',\n variant: 'link',\n },\n {\n className:\n 'text-warning-default hover:decoration-warning-default [&>svg]:text-warning-default/50 hover:[&>svg]:text-warning-default',\n tone: 'warning',\n variant: 'link',\n },\n ],\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n size: {\n extraSmall: 'h-md gap-3xs px-2xs style-text-default--2 [&>svg]:size-xs',\n iconExtraSmall: 'size-md p-[0px] [&>svg]:size-xs',\n iconLarge: 'size-2xl p-[0px] [&>svg]:size-md',\n iconMedium: 'size-xl p-[0px] [&>svg]:size-sm',\n iconSmall: 'size-lg p-[0px] [&>svg]:size-xs',\n large: 'h-2xl gap-xs px-md style-text-default-2 [&>svg]:size-md',\n medium: 'h-xl gap-2xs px-sm style-text-default-0 [&>svg]:size-sm',\n small: 'h-lg gap-3xs px-xs style-text-default--1 [&>svg]:size-xs',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n elevated: 'shadow-xs not-active:hover:shadow-md',\n fill: 'active:scale-[0.98]',\n ghost: 'active:scale-[0.98]',\n link: 'size-fit! p-0! underline decoration-transparent underline-offset-2 [&>svg]:transition-colors',\n outline: 'border active:scale-[0.98]',\n soft: 'border active:scale-[0.98]',\n },\n },\n },\n)\n\nexport type ButtonProps = React.ComponentProps<typeof BaseButton> &\n VariantProps<typeof buttonVariants>\n","import { Button as BaseButton } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { buttonVariants } from './button.types'\nimport type { ButtonProps } from './button.types'\n\nexport function Button({ tone, variant, size, className, ...props }: ButtonProps) {\n return (\n <BaseButton\n data-size={size}\n className={cn(buttonVariants({ className, size, tone, variant }))}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { AlertDialogCloseProps } from './alert-dialog.types'\n\nexport function AlertDialogClose({\n className,\n tone = 'neutral',\n variant = 'outline',\n size,\n ...props\n}: AlertDialogCloseProps) {\n return (\n <BaseAlertDialog.Close\n data-slot=\"alert-dialog-close\"\n className={cn(className)}\n render={<Button tone={tone} variant={variant} size={size} />}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { AlertDialogConfirmProps } from './alert-dialog.types'\n\nexport function AlertDialogConfirm({ className, ref, ...props }: AlertDialogConfirmProps) {\n return (\n <BaseAlertDialog.Close\n data-confirm\n data-slot=\"alert-dialog-confirm\"\n className={cn('', className)}\n ref={ref}\n {...props}\n render={<Button />}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogDescriptionProps } from './alert-dialog.types'\n\nexport function AlertDialogDescription({ className, ref, ...props }: AlertDialogDescriptionProps) {\n return (\n <BaseAlertDialog.Description\n data-slot=\"alert-dialog-description\"\n className={cn('mb-[0px] style-text-prose-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogFooterProps } from './alert-dialog.types'\n\nexport function AlertDialogFooter({ className, ref, ...props }: AlertDialogFooterProps) {\n return (\n <div className={cn('flex items-start justify-end gap-2xs', className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogHeaderProps } from './alert-dialog.types'\n\nexport function AlertDialogHeader({ className, ref, ...props }: AlertDialogHeaderProps) {\n return (\n <div\n className={cn(\n 'grid auto-rows-min items-center gap-x-sm has-data-[slot=alert-dialog-description]:grid-rows-[auto_auto] has-data-[slot=alert-dialog-icon]:grid-cols-[auto_1fr] has-data-[slot=alert-dialog-description]:**:data-[slot=alert-dialog-icon]:row-span-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogIconProps } from './alert-dialog.types'\n\nexport function AlertDialogIcon({ className, ref, ...props }: AlertDialogIconProps) {\n return (\n <div\n data-slot=\"alert-dialog-icon\"\n className={cn('row-span-2 self-start [&>svg]:size-xl [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { ButtonProps } from '../button/button.types'\n\nconst alertDialogVariants = cva(\n 'fixed top-1/2 left-1/2 z-999 max-w-[lg(100vw-3rem)] min-w-1/3 -translate-1/2 space-y-md overflow-hidden rounded-3xl bg-surface-3 p-md transition-all duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n {\n defaultVariants: {\n tone: 'brand',\n },\n variants: {\n tone: {\n accent:\n '[&_[data-slot=alert-dialog-confirm]]:bg-accent-default [&_[data-slot=alert-dialog-confirm]]:text-accent-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-accent-muted [&_svg]:text-accent-default',\n brand:\n '[&_[data-slot=alert-dialog-confirm]]:bg-brand-default [&_[data-slot=alert-dialog-confirm]]:text-brand-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-brand-muted [&_svg]:text-brand-default',\n error:\n '[&_[data-slot=alert-dialog-confirm]]:bg-error-default [&_[data-slot=alert-dialog-confirm]]:text-error-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-error-muted [&_svg]:text-error-default',\n info: '[&_[data-slot=alert-dialog-confirm]]:bg-info-default [&_[data-slot=alert-dialog-confirm]]:text-info-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-info-muted [&_svg]:text-info-default',\n neutral:\n '[&_[data-slot=alert-dialog-confirm]]:bg-neutral-default [&_[data-slot=alert-dialog-confirm]]:text-neutral-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-neutral-muted [&_svg]:text-neutral-default',\n success:\n '[&_[data-slot=alert-dialog-confirm]]:bg-success-default [&_[data-slot=alert-dialog-confirm]]:text-success-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-success-muted [&_svg]:text-success-default',\n warning:\n '[&_[data-slot=alert-dialog-confirm]]:bg-warning-default [&_[data-slot=alert-dialog-confirm]]:text-warning-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-warning-muted [&_svg]:text-warning-default',\n },\n },\n },\n ),\n alertDialogHandle = BaseAlertDialog.createHandle<React.ComponentType>()\n\ntype AlertDialogProps = React.ComponentProps<typeof BaseAlertDialog.Root>\ntype AlertDialogTriggerProps = React.ComponentProps<typeof BaseAlertDialog.Trigger>\ntype AlertDialogPopupProps = React.ComponentProps<typeof BaseAlertDialog.Popup> &\n VariantProps<typeof alertDialogVariants>\ntype AlertDialogHeaderProps = React.ComponentProps<'div'>\ntype AlertDialogTitleProps = React.ComponentProps<typeof BaseAlertDialog.Title>\ntype AlertDialogDescriptionProps = React.ComponentProps<typeof BaseAlertDialog.Description>\ntype AlertDialogCloseProps = React.ComponentProps<typeof BaseAlertDialog.Close> &\n Pick<ButtonProps, 'tone' | 'variant' | 'size'>\ntype AlertDialogFooterProps = React.ComponentProps<'div'>\ntype AlertDialogConfirmProps = React.ComponentProps<typeof BaseAlertDialog.Close> &\n Pick<ButtonProps, 'tone' | 'variant' | 'size'>\ntype AlertDialogIconProps = React.ComponentProps<'div'>\n\nexport type {\n AlertDialogProps,\n AlertDialogTriggerProps,\n AlertDialogPopupProps,\n AlertDialogHeaderProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n AlertDialogCloseProps,\n AlertDialogFooterProps,\n AlertDialogConfirmProps,\n AlertDialogIconProps,\n}\nexport { alertDialogHandle, alertDialogVariants }\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { alertDialogVariants } from './alert-dialog.types'\nimport type { AlertDialogPopupProps } from './alert-dialog.types'\n\nconst style: React.CSSProperties = {\n WebkitBackdropFilter: 'blur(16px)',\n backdropFilter: 'blur(16px)',\n backgroundColor: 'rgb(0 0 0 / 10%)',\n}\n\nexport function AlertDialogPopup({ tone, className, ref, ...props }: AlertDialogPopupProps) {\n return (\n <BaseAlertDialog.Portal>\n <BaseAlertDialog.Backdrop\n data-slot=\"alert-dialog-backdrop\"\n className=\"fixed inset-[0px] z-998 min-h-dvh transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-[-webkit-touch-callout:none]:absolute\"\n style={style}\n />\n <BaseAlertDialog.Popup\n className={cn(alertDialogVariants({ tone }), className)}\n ref={ref}\n {...props}\n />\n </BaseAlertDialog.Portal>\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogTitleProps } from './alert-dialog.types'\n\nexport function AlertDialogTitle({ className, ref, ...props }: AlertDialogTitleProps) {\n return (\n <BaseAlertDialog.Title\n data-slot=\"alert-dialog-title\"\n className={cn('style-text-strong-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogTriggerProps } from './alert-dialog.types'\n\nexport function AlertDialogTrigger({\n className,\n children,\n ref,\n ...props\n}: AlertDialogTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BaseAlertDialog.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n )\n}\n","import { AlertDialog as AlertDialogRoot } from './alert-dialog'\nimport { AlertDialogClose } from './alert-dialog-close'\nimport { AlertDialogConfirm } from './alert-dialog-confirm'\nimport { AlertDialogDescription } from './alert-dialog-description'\nimport { AlertDialogFooter } from './alert-dialog-footer'\nimport { AlertDialogHeader } from './alert-dialog-header'\nimport { AlertDialogIcon } from './alert-dialog-icon'\nimport { AlertDialogPopup } from './alert-dialog-popup'\nimport { AlertDialogTitle } from './alert-dialog-title'\nimport { AlertDialogTrigger } from './alert-dialog-trigger'\n\nconst AlertDialog = Object.assign(AlertDialogRoot, {\n Close: AlertDialogClose,\n Confirm: AlertDialogConfirm,\n Description: AlertDialogDescription,\n Footer: AlertDialogFooter,\n Header: AlertDialogHeader,\n Icon: AlertDialogIcon,\n Popup: AlertDialogPopup,\n Title: AlertDialogTitle,\n Trigger: AlertDialogTrigger,\n})\n\nexport type {\n AlertDialogCloseProps,\n AlertDialogConfirmProps,\n AlertDialogDescriptionProps,\n AlertDialogFooterProps,\n AlertDialogHeaderProps,\n AlertDialogPopupProps,\n AlertDialogProps,\n AlertDialogTitleProps,\n AlertDialogTriggerProps,\n AlertDialogIconProps,\n} from './alert-dialog.types'\nexport { AlertDialogClose } from './alert-dialog-close'\nexport { AlertDialogConfirm } from './alert-dialog-confirm'\nexport { AlertDialogDescription } from './alert-dialog-description'\nexport { AlertDialogFooter } from './alert-dialog-footer'\nexport { AlertDialogHeader } from './alert-dialog-header'\nexport { AlertDialogPopup } from './alert-dialog-popup'\nexport { AlertDialogTitle } from './alert-dialog-title'\nexport { AlertDialogTrigger } from './alert-dialog-trigger'\nexport { AlertDialogIcon } from './alert-dialog-icon'\n\nexport { AlertDialog }\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport type { AutocompleteProps } from './autocomplete.types'\n\nexport function Autocomplete({ ...props }: AutocompleteProps) {\n return <BaseAutocomplete.Root {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport type { AutocompleteCollectionProps } from './autocomplete.types'\n\nexport function AutocompleteCollection({ ...props }: AutocompleteCollectionProps) {\n return <BaseAutocomplete.Collection {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteContentProps } from './autocomplete.types'\n\nconst DEFAULT_SIDE_OFFSET = 16\n\nexport function AutocompleteContent({\n emptyText,\n className,\n children,\n sideOffset = DEFAULT_SIDE_OFFSET,\n ref,\n ...props\n}: AutocompleteContentProps) {\n return (\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n className={cn('', className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <BaseAutocomplete.Popup className=\"max-h-[22.5rem] w-[calc(var(--anchor-width)+var(--spacing-md))] max-w-[calc(var(--available-width))] overflow-hidden rounded-xl bg-surface-2 shadow-md\">\n <BaseAutocomplete.Empty className=\"ml-3xs p-sm style-text-prose--1 text-on-surface-variant empty:m-[0px] empty:p-[0px]\">\n {emptyText}\n </BaseAutocomplete.Empty>\n <BaseAutocomplete.List className=\"max-h-[min(22.5rem,var(--available-height))] scroll-pt-[2.25rem] scroll-pb-[0.5rem] overflow-y-auto overscroll-contain data-empty:p-[0px]\">\n {children}\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n )\n}\n","import type { Input as BaseInput } from '@base-ui/react/input'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst BYTES_PER_KILOBYTE = 1000,\n INITIAL_UNIT_INDEX = 0,\n INTEGER_PRECISION = 0,\n FRACTIONAL_PRECISION = 1,\n UNIT_INDEX_INCREMENT = 1,\n getPrecision = (size: number): number => {\n if (Number.isInteger(size)) {\n return INTEGER_PRECISION\n }\n return FRACTIONAL_PRECISION\n },\n formatFileSize = (bytes: number): string => {\n if (bytes < BYTES_PER_KILOBYTE) {\n return `${bytes} B`\n }\n\n const units = ['KB', 'MB', 'GB', 'TB']\n let size = bytes / BYTES_PER_KILOBYTE,\n unitIndex = INITIAL_UNIT_INDEX\n\n while (size >= BYTES_PER_KILOBYTE && unitIndex < units.length - UNIT_INDEX_INCREMENT) {\n size /= BYTES_PER_KILOBYTE\n unitIndex += UNIT_INDEX_INCREMENT\n }\n\n return `${size.toFixed(getPrecision(size))} ${units[unitIndex]}`\n },\n inputVariants = cva(\n 'group flex w-full items-center text-ellipsis caret-brand-border-strong outline outline-transparent transition-all placeholder:opacity-60 focus-within:outline-brand-border-strong not-focus-within:hover:outline-border-strong disabled:cursor-not-allowed aria-invalid:bg-error-container aria-invalid:text-error-on-container aria-invalid:caret-error-border-strong aria-invalid:outline-error-border aria-invalid:focus-within:outline-error-border-strong aria-invalid:not-focus-within:hover:outline-error-border data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: 'h-2xl gap-xs rounded-2xl px-md style-text-prose-1',\n medium: 'h-xl gap-2xs rounded-xl px-sm style-text-prose-0',\n small: 'h-lg gap-3xs rounded-lg pr-3xs pl-xs style-text-prose--1',\n },\n variant: {\n ghost: 'bg-transparent',\n primary: 'bg-surface shadow-2xs',\n secondary: 'bg-neutral-container',\n },\n },\n },\n )\n\ntype InputProps = VariantProps<typeof inputVariants> &\n Omit<ComponentProps<typeof BaseInput>, 'size'> & {\n fileUploadButtonLabel?: string\n fileUploadButtonIcon?: React.ReactNode\n maxFiles?: number\n maxFileSize?: number\n clearFilesLabel?: string\n filesSelectedLabel?: (count: number) => string\n maxFilesErrorLabel?: (maxFiles: number) => string\n maxFileSizeErrorLabel?: (fileName: string, maxFileSize: string) => string\n compact?: boolean\n }\n\nexport { formatFileSize, inputVariants, type InputProps }\n","import { cn } from '@/utils/cn'\n\nimport { inputVariants } from '../input/input.types'\nimport type { AutocompleteInputGroupProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroup({\n variant,\n className,\n ref,\n ...props\n}: AutocompleteInputGroupProps) {\n return <div className={cn(inputVariants({ variant }), className)} ref={ref} {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteInputGroupInputProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroupInput({\n placeholder,\n className,\n ref,\n ...props\n}: AutocompleteInputGroupInputProps) {\n return (\n <BaseAutocomplete.Input\n placeholder={placeholder}\n className={cn('grow text-ellipsis outline-none placeholder:opacity-85', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport { AutocompleteInputGroup } from './autocomplete-input-group'\nimport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nimport type { AutocompleteGridContentProps } from './autocomplete.types'\n\nconst DEFAULT_SIDE_OFFSET = 4\n\nexport function AutocompleteGridContent({\n placeholder = 'Search…',\n emptyText,\n className,\n children,\n sideOffset = DEFAULT_SIDE_OFFSET,\n ref,\n ...props\n}: AutocompleteGridContentProps) {\n return (\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n className={cn('', className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <BaseAutocomplete.Popup className=\"max-h-[20.5rem] max-w-(--available-width) origin-(--transform-origin) overflow-hidden rounded-lg bg-surface-2 shadow-lg transition-[transform,scale,opacity] [--input-container-height:3rem] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\">\n <div className=\"m-3xs flex h-(--input-container-height) items-center justify-center text-center\">\n <AutocompleteInputGroup>\n <AutocompleteInputGroupInput placeholder={placeholder} />\n </AutocompleteInputGroup>\n </div>\n <BaseAutocomplete.Empty className=\"p-sm style-text-prose--1 empty:m-[0px] empty:p-[0px]\">\n {emptyText}\n </BaseAutocomplete.Empty>\n <BaseAutocomplete.List className=\"max-h-[calc(19.5rem-var(--input-container-height))] scroll-pt-xl scroll-pb-[0.35rem] overflow-auto overscroll-contain\">\n {children}\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGridItemProps } from './autocomplete.types'\n\nexport function AutocompleteGridItem({\n className,\n children,\n ref,\n ...props\n}: AutocompleteGridItemProps) {\n return (\n <BaseAutocomplete.Item\n className={cn(\n 'group flex h-lg min-w-(--anchor-width) cursor-default items-center rounded-md style-text-prose--1 select-none hover:cursor-pointer hover:bg-accent-default hover:text-surface data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-accent-default data-highlighted:text-surface before:data-highlighted:absolute before:data-highlighted:inset-[0px] before:data-highlighted:z-[-1] before:data-highlighted:rounded-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"text-lg leading-none\">{children}</span>\n </BaseAutocomplete.Item>\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGroupProps } from './autocomplete.types'\n\nexport function AutocompleteGroup({ className, ref, ...props }: AutocompleteGroupProps) {\n return (\n <BaseAutocomplete.Group className={cn('block space-y-3xs', className)} ref={ref} {...props} />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGroupProps } from './autocomplete.types'\n\nexport function AutocompleteGroupLabel({ className, ref, ...props }: AutocompleteGroupProps) {\n return (\n <BaseAutocomplete.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 my-[0px] mr-[0px] ml-[3px] bg-surface-2 px-sm pt-sm pb-3xs style-text-strong--2 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AutocompleteInputGroupAddonProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroupAddon({\n className,\n ref,\n ...props\n}: AutocompleteInputGroupAddonProps) {\n return (\n <div\n className={cn(\n 'inline-flex items-center gap-xs style-text-default-0 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteItemProps } from './autocomplete.types'\n\nexport function AutocompleteItem({ className, ref, ...props }: AutocompleteItemProps) {\n return (\n <BaseAutocomplete.Item\n className={cn(\n 'mx-xs flex cursor-default items-center rounded-lg px-2xs py-3xs style-text-prose-0 select-none first:mt-xs last:mb-xs hover:cursor-pointer hover:bg-neutral-container-high hover:text-neutral-on-container data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container before:data-highlighted:absolute before:data-highlighted:inset-x-sm before:data-highlighted:inset-y-[0px] before:data-highlighted:z-[-1] before:data-highlighted:rounded-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteRowProps } from './autocomplete.types'\n\nexport function AutocompleteRow({ className, ref, ...props }: AutocompleteRowProps) {\n return <BaseAutocomplete.Row className={cn('grid grid-cols-5', className)} ref={ref} {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteStatusProps } from './autocomplete.types'\n\nexport function AutocompleteStatus({ className, ref, ...props }: AutocompleteStatusProps) {\n return (\n <BaseAutocomplete.Status\n className={cn(\n 'flex items-center gap-2xs p-xs style-text-prose--1 text-on-surface-variant empty:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteTriggerProps } from './autocomplete.types'\n\nexport function AutocompleteTrigger({ className, ref, ...props }: AutocompleteTriggerProps) {\n return <BaseAutocomplete.Trigger className={cn('', className)} ref={ref} {...props} />\n}\n","import { Autocomplete as AutocompleteRoot } from './autocomplete'\nimport { AutocompleteCollection } from './autocomplete-collection'\nimport { AutocompleteContent } from './autocomplete-content'\nimport { AutocompleteGridContent } from './autocomplete-grid-content'\nimport { AutocompleteGridItem } from './autocomplete-grid-item'\nimport { AutocompleteGroup } from './autocomplete-group'\nimport { AutocompleteGroupLabel } from './autocomplete-group-label'\nimport { AutocompleteInputGroup } from './autocomplete-input-group'\nimport { AutocompleteInputGroupAddon } from './autocomplete-input-group-addon'\nimport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nimport { AutocompleteItem } from './autocomplete-item'\nimport { AutocompleteRow } from './autocomplete-row'\nimport { AutocompleteStatus } from './autocomplete-status'\nimport { AutocompleteTrigger } from './autocomplete-trigger'\n\nconst Autocomplete = Object.assign(AutocompleteRoot, {\n Collection: AutocompleteCollection,\n Content: AutocompleteContent,\n GridContent: AutocompleteGridContent,\n GridItem: AutocompleteGridItem,\n Group: AutocompleteGroup,\n GroupLabel: AutocompleteGroupLabel,\n InputGroup: AutocompleteInputGroup,\n InputGroupAddon: AutocompleteInputGroupAddon,\n InputGroupInput: AutocompleteInputGroupInput,\n Item: AutocompleteItem,\n Row: AutocompleteRow,\n Status: AutocompleteStatus,\n Trigger: AutocompleteTrigger,\n})\n\nexport type {\n AutocompleteCollectionProps,\n AutocompleteContentProps,\n AutocompleteGridContentProps,\n AutocompleteGridItemProps,\n AutocompleteGroupLabelProps,\n AutocompleteGroupProps,\n AutocompleteInputGroupAddonProps,\n AutocompleteInputGroupInputProps,\n AutocompleteInputGroupProps,\n AutocompleteItemProps,\n AutocompleteProps,\n AutocompleteRowProps,\n AutocompleteStatusProps,\n AutocompleteTriggerProps,\n} from './autocomplete.types'\nexport { AutocompleteCollection } from './autocomplete-collection'\nexport { AutocompleteContent } from './autocomplete-content'\nexport { AutocompleteGridContent } from './autocomplete-grid-content'\nexport { AutocompleteGridItem } from './autocomplete-grid-item'\nexport { AutocompleteGroup } from './autocomplete-group'\nexport { AutocompleteGroupLabel } from './autocomplete-group-label'\nexport { AutocompleteInputGroup } from './autocomplete-input-group'\nexport { AutocompleteInputGroupAddon } from './autocomplete-input-group-addon'\nexport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nexport { AutocompleteItem } from './autocomplete-item'\nexport { AutocompleteRow } from './autocomplete-row'\nexport { AutocompleteStatus } from './autocomplete-status'\nexport { AutocompleteTrigger } from './autocomplete-trigger'\n\nexport { Autocomplete }\n","import type { Avatar as BaseAvatar } from '@base-ui/react/avatar'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst avatarVariants = cva(\n 'group/avatar relative inline-flex shrink-0 items-center justify-center rounded-full',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'size-2xl style-text-default-1',\n medium: 'size-xl style-text-default-0',\n small: 'size-lg style-text-default--1',\n },\n },\n },\n ),\n avatarBadgeVariants = cva(\n 'absolute right-0 bottom-0 inline-flex items-center justify-center rounded-full outline-3 outline-surface-background group-data-[size=large]/avatar:size-md group-data-[size=medium]/avatar:size-sm group-data-[size=small]/avatar:size-xs group-data-[size=large]/avatar:[&_svg]:size-sm group-data-[size=medium]/avatar:[&_svg]:size-xs group-data-[size=small]/avatar:[&_svg]:size-2xs',\n {\n defaultVariants: {\n position: 'bottomRight',\n tone: 'success',\n },\n variants: {\n position: {\n bottomLeft: 'bottom-0 left-0',\n bottomRight: 'right-0 bottom-0',\n topLeft: 'top-0 left-0',\n topRight: 'top-0 right-0',\n },\n tone: {\n accent: 'bg-accent-default [&>svg]:text-accent-on-default',\n brand: 'bg-brand-default [&>svg]:text-brand-on-default',\n error: 'bg-error-default [&>svg]:text-error-on-default',\n info: 'bg-info-default [&>svg]:text-info-on-default',\n neutral: 'bg-neutral-default [&>svg]:text-neutral-on-default',\n success: 'bg-success-default [&>svg]:text-success-on-default',\n warning: 'bg-warning-default [&>svg]:text-warning-on-default',\n },\n },\n },\n )\n\ntype AvatarProps = ComponentProps<typeof BaseAvatar.Root> & VariantProps<typeof avatarVariants>\ntype AvatarImageProps = ComponentProps<typeof BaseAvatar.Image>\ntype AvatarFallbackProps = ComponentProps<typeof BaseAvatar.Fallback>\ntype AvatarBadgeProps = ComponentProps<'div'> & VariantProps<typeof avatarBadgeVariants>\n\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps, AvatarBadgeProps }\nexport { avatarVariants, avatarBadgeVariants }\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\n\nimport { cn } from '@/utils/cn'\n\nimport { avatarVariants } from './avatar.types'\nimport type { AvatarProps } from './avatar.types'\n\nexport function Avatar({ size = 'medium', className, ref, ...props }: AvatarProps) {\n return (\n <BaseAvatar.Root\n className={cn(avatarVariants({ className, size }))}\n data-size={size}\n data-slot=\"avatar\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { avatarBadgeVariants } from './avatar.types'\nimport type { AvatarBadgeProps } from './avatar.types'\n\nexport function AvatarBadge({ tone, position, className, ref, ...props }: AvatarBadgeProps) {\n return (\n <div\n data-slot=\"avatar-badge\"\n className={cn(avatarBadgeVariants({ className, position, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AvatarFallbackProps } from './avatar.types'\n\nexport function AvatarFallback({ className, ref, ...props }: AvatarFallbackProps) {\n return (\n <BaseAvatar.Fallback\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-surface-3 align-middle shadow-2xs select-none',\n className,\n )}\n data-slot=\"avatar-fallback\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SkeletonProps } from './skeleton.types'\n\nexport function Skeleton({ className, ref, ...props }: SkeletonProps) {\n return (\n <div\n className={cn('animate-pulse rounded-lg bg-surface-2 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\nimport type { ImageLoadingStatus } from '@base-ui/react/avatar'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Skeleton } from '../skeleton'\nimport type { AvatarImageProps } from './avatar.types'\n\nexport function AvatarImage({ className, ref, ...props }: AvatarImageProps) {\n const [status, setStatus] = React.useState<ImageLoadingStatus>('loading')\n\n if (status === 'loading') {\n return <Skeleton className=\"absolute inset-0 size-full rounded-full\" />\n }\n\n return (\n <BaseAvatar.Image\n onLoadingStatusChange={setStatus}\n className={cn('size-full rounded-full object-cover', className)}\n data-slot=\"avatar-image\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { Avatar as AvatarRoot } from './avatar'\nimport { AvatarBadge } from './avatar-badge'\nimport { AvatarFallback } from './avatar-fallback'\nimport { AvatarImage } from './avatar-image'\n\nconst Avatar = Object.assign(AvatarRoot, {\n Badge: AvatarBadge,\n Fallback: AvatarFallback,\n Image: AvatarImage,\n})\n\nexport type {\n AvatarBadgeProps,\n AvatarFallbackProps,\n AvatarImageProps,\n AvatarProps,\n} from './avatar.types'\nexport { AvatarFallback } from './avatar-fallback'\nexport { AvatarImage } from './avatar-image'\nexport { AvatarBadge } from './avatar-badge'\n\nexport { Avatar }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nexport const badgeVariants = cva(\n 'inline-flex h-md items-center justify-center gap-3xs rounded-full style-text-default--2 whitespace-nowrap transition-all select-none',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className: 'border-brand-default text-brand-default',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className: 'border-accent-default text-accent-default',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className: 'border-neutral-default text-neutral-default',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className: 'border-error-default text-error-default',\n tone: 'error',\n variant: 'outline',\n },\n {\n className: 'border-info-default text-info-default',\n tone: 'info',\n variant: 'outline',\n },\n {\n className: 'border-success-default text-success-default',\n tone: 'success',\n variant: 'outline',\n },\n {\n className: 'border-warning-default text-warning-default',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className: 'border-brand-border bg-brand-container text-brand-on-container',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className: 'border-accent-border bg-accent-container text-accent-on-container',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className: 'border-neutral-border bg-neutral-container text-neutral-on-container',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className: 'border-error-border bg-error-container text-error-on-container',\n tone: 'error',\n variant: 'soft',\n },\n {\n className: 'border-info-border bg-info-container text-info-on-container',\n tone: 'info',\n variant: 'soft',\n },\n {\n className: 'border-success-border bg-success-container text-success-on-container',\n tone: 'success',\n variant: 'soft',\n },\n {\n className: 'border-warning-border bg-warning-container text-warning-on-container',\n tone: 'warning',\n variant: 'soft',\n },\n ],\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n size: {\n iconLarge: 'size-lg [&>svg]:size-sm',\n iconMedium: 'size-md [&>svg]:size-xs',\n iconSmall: 'size-sm [&>svg]:size-2xs',\n large: 'h-lg px-xs [&>svg]:size-sm',\n medium: 'h-md px-xs [&>svg]:size-xs',\n small: 'h-sm px-xs [&>svg]:size-2xs',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n fill: 'shadow-2xs',\n outline: 'border',\n soft: 'border',\n },\n },\n },\n)\n\nexport type BadgeProps = ComponentProps<'div'> & VariantProps<typeof badgeVariants>\n","import { cn } from '@/utils/cn'\n\nimport { badgeVariants } from './badge.types'\nimport type { BadgeProps } from './badge.types'\n\nexport function Badge({ className, size, tone, variant, ref, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ className, size, tone, variant }))} ref={ref} {...props} />\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst bentoBoxVariants = cva(\n 'group/box flex size-full min-h-0 flex-col overflow-hidden bg-surface',\n {\n defaultVariants: {\n fill: false,\n size: 'medium',\n },\n variants: {\n fill: {\n false: '',\n true: 'p-0!',\n },\n size: {\n large: 'gap-md rounded-3xl p-md shadow-sm',\n medium: 'gap-sm rounded-2xl p-sm shadow-xs',\n small: 'gap-xs rounded-xl p-xs shadow-2xs',\n },\n },\n },\n)\n\ntype BentoBoxProps = React.ComponentProps<'div'> & VariantProps<typeof bentoBoxVariants>\ntype BentoBoxHeaderProps = React.ComponentProps<'div'>\ntype BentoBoxTitleProps = React.ComponentProps<'span'>\ntype BentoBoxContentProps = React.ComponentProps<'div'>\ntype BentoBoxDescriptionProps = React.ComponentProps<'span'>\ntype BentoBoxActionProps = React.ComponentProps<'div'>\ntype BentoBoxFooterProps = React.ComponentProps<'div'>\n\nexport type {\n BentoBoxProps,\n BentoBoxHeaderProps,\n BentoBoxTitleProps,\n BentoBoxContentProps,\n BentoBoxDescriptionProps,\n BentoBoxActionProps,\n BentoBoxFooterProps,\n}\nexport { bentoBoxVariants }\n","import { cn } from '@/utils/cn'\n\nimport { bentoBoxVariants } from './bento-box.types'\nimport type { BentoBoxProps } from './bento-box.types'\n\nexport function BentoBox({ fill, size, className, ref, ...props }: BentoBoxProps) {\n return (\n <div\n data-size={size}\n className={cn(bentoBoxVariants({ className, fill, size }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxActionProps } from './bento-box.types'\n\nexport function BentoBoxAction({ className, ref, ...props }: BentoBoxActionProps) {\n return (\n <div\n className={cn(\n 'col-start-2 row-span-2 row-start-1 self-start justify-self-end pl-lg',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxContentProps } from './bento-box.types'\n\nexport function BentoBoxContent({ className, ref, ...props }: BentoBoxContentProps) {\n return <div className={cn('min-h-0 flex-1', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxDescriptionProps } from './bento-box.types'\n\nexport function BentoBoxDescription({ className, ref, ...props }: BentoBoxDescriptionProps) {\n return (\n <span\n className={cn(\n 'text-on-surface-variant group-data-[size=large]/box:style-text-prose-0 group-data-[size=medium]/box:style-text-prose--1 group-data-[size=small]/box:style-text-prose--2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxFooterProps } from './bento-box.types'\n\nexport function BentoBoxFooter({ className, ref, ...props }: BentoBoxFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between not-first:group-data-[size=large]/box:gap-lg not-first:group-data-[size=medium]/box:gap-md group-data-[size=small]/box:gap-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxHeaderProps } from './bento-box.types'\n\nexport function BentoBoxHeader({ className, ref, ...props }: BentoBoxHeaderProps) {\n return (\n <div\n className={cn(\n 'group/box-header grid auto-rows-min items-start group-data-[size=large]/box:gap-0 group-data-[size=medium]/box:gap-0 group-data-[size=small]/box:gap-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxTitleProps } from './bento-box.types'\n\nexport function BentoBoxTitle({ className, ref, ...props }: BentoBoxTitleProps) {\n return (\n <span\n className={cn(\n 'group-data-[size=large]/box:style-text-strong-1 not-first:group-data-[size=large]/box:pt-xs group-data-[size=medium]/box:style-text-strong-0 not-first:group-data-[size=medium]/box:pt-2xs group-data-[size=small]/box:style-text-strong--1 not-first:group-data-[size=small]/box:pt-3xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { BentoBox as BentoBoxRoot } from './bento-box'\nimport { BentoBoxAction } from './bento-box-action'\nimport { BentoBoxContent } from './bento-box-content'\nimport { BentoBoxDescription } from './bento-box-description'\nimport { BentoBoxFooter } from './bento-box-footer'\nimport { BentoBoxHeader } from './bento-box-header'\nimport { BentoBoxTitle } from './bento-box-title'\n\nconst BentoBox = Object.assign(BentoBoxRoot, {\n Action: BentoBoxAction,\n Content: BentoBoxContent,\n Description: BentoBoxDescription,\n Footer: BentoBoxFooter,\n Header: BentoBoxHeader,\n Title: BentoBoxTitle,\n})\n\nexport type {\n BentoBoxActionProps,\n BentoBoxContentProps,\n BentoBoxDescriptionProps,\n BentoBoxFooterProps,\n BentoBoxHeaderProps,\n BentoBoxProps,\n BentoBoxTitleProps,\n} from './bento-box.types'\n\nexport { BentoBoxAction } from './bento-box-action'\nexport { BentoBoxContent } from './bento-box-content'\nexport { BentoBoxDescription } from './bento-box-description'\nexport { BentoBoxFooter } from './bento-box-footer'\nexport { BentoBoxHeader } from './bento-box-header'\nexport { BentoBoxTitle } from './bento-box-title'\n\nexport { BentoBox }\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbProps } from './breadcrumb.types'\n\nexport function Breadcrumb({ className, ref, ...props }: BreadcrumbProps) {\n return (\n <nav className={cn('flex items-center gap-2xs px-sm py-2xs', className)} ref={ref} {...props} />\n )\n}\n","import { DotsThreeIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { BreadcrumbEllipsisProps } from './breadcrumb.types'\n\nexport function BreadcrumbEllipsis({\n className,\n children,\n ref,\n ...props\n}: BreadcrumbEllipsisProps) {\n return (\n <div\n className={cn(\n 'flex size-md items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer hover:bg-neutral-container hover:text-neutral-on-container active:scale-[0.98] active:bg-neutral-container disabled:opacity-50 [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n <DotsThreeIcon weight=\"bold\" />\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbItemProps } from './breadcrumb.types'\n\nexport function BreadcrumbItem({ className, ref, ...props }: BreadcrumbItemProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-md items-center justify-center gap-2xs rounded-full px-2xs style-text-default--1 text-accent-default [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbLinkProps } from './breadcrumb.types'\n\nexport function BreadcrumbLink({ className, ref, ...props }: BreadcrumbLinkProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-md items-center justify-center gap-3xs rounded-full px-2xs style-text-default--1 text-on-surface-variant transition-all hover:cursor-pointer hover:bg-neutral-container active:scale-[0.98] active:bg-neutral-container disabled:opacity-50 [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { BreadcrumbSeparatorProps } from './breadcrumb.types'\n\nexport function BreadcrumbSeparator({ className, ref, ...props }: BreadcrumbSeparatorProps) {\n return (\n <div className={cn('text-on-surface-variant [&>svg]:size-xs', className)} ref={ref} {...props}>\n <CaretRightIcon weight=\"bold\" />\n </div>\n )\n}\n","import { Breadcrumb as BreadcrumbRoot } from './breadcrumb'\nimport { BreadcrumbEllipsis } from './breadcrumb-ellipsis'\nimport { BreadcrumbItem } from './breadcrumb-item'\nimport { BreadcrumbLink } from './breadcrumb-link'\nimport { BreadcrumbSeparator } from './breadcrumb-separator'\n\nconst Breadcrumb = Object.assign(BreadcrumbRoot, {\n Ellipsis: BreadcrumbEllipsis,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Separator: BreadcrumbSeparator,\n})\n\nexport type {\n BreadcrumbEllipsisProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbProps,\n BreadcrumbSeparatorProps,\n} from './breadcrumb.types'\nexport { BreadcrumbEllipsis } from './breadcrumb-ellipsis'\nexport { BreadcrumbItem } from './breadcrumb-item'\nexport { BreadcrumbLink } from './breadcrumb-link'\nexport { BreadcrumbSeparator } from './breadcrumb-separator'\n\nexport { Breadcrumb }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const buttonGroupVariants = cva(\n 'inline-flex cursor-pointer items-center justify-center overflow-hidden rounded-full whitespace-nowrap transition-all select-none *:rounded-none *:bg-transparent disabled:pointer-events-none disabled:opacity-50 [&>button]:text-inherit',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default [&>button:hover]:bg-brand-muted',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default [&>button:hover]:bg-accent-muted',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default [&>button:hover]:bg-neutral-muted',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default [&>button:hover]:bg-error-muted',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default [&>button:hover]:bg-info-muted',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default [&>button:hover]:bg-success-muted',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default [&>button:hover]:bg-warning-muted',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className:\n 'border-brand-border text-brand-default [&>button:hover]:bg-brand-subtle [&>button:hover]:text-brand-on-container',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className:\n 'border-accent-border text-accent-default [&>button:hover]:bg-accent-subtle [&>button:hover]:text-accent-on-container',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className:\n 'border-neutral-border text-neutral-default [&>button:hover]:bg-neutral-subtle [&>button:hover]:text-neutral-on-container',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className:\n 'border-error-border text-error-default [&>button:hover]:bg-error-subtle [&>button:hover]:text-error-on-container',\n tone: 'error',\n variant: 'outline',\n },\n {\n className:\n 'border-info-border text-info-default [&>button:hover]:bg-info-subtle [&>button:hover]:text-info-on-container',\n tone: 'info',\n variant: 'outline',\n },\n {\n className:\n 'border-success-border text-success-default [&>button:hover]:bg-success-subtle [&>button:hover]:text-success-on-container',\n tone: 'success',\n variant: 'outline',\n },\n {\n className:\n 'border-warning-border text-warning-default [&>button:hover]:bg-warning-subtle [&>button:hover]:text-warning-on-container',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className:\n 'text-brand-default [&>button:hover]:bg-brand-subtle [&>button:hover]:text-brand-on-container',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n className:\n 'text-accent-default [&>button:hover]:bg-accent-subtle [&>button:hover]:text-accent-on-container',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n className:\n 'text-neutral-default [&>button:hover]:bg-neutral-subtle [&>button:hover]:text-neutral-on-container',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n className:\n 'text-error-default [&>button:hover]:bg-error-subtle [&>button:hover]:text-error-on-container',\n tone: 'error',\n variant: 'ghost',\n },\n {\n className:\n 'text-info-default [&>button:hover]:bg-info-subtle [&>button:hover]:text-info-on-container',\n tone: 'info',\n variant: 'ghost',\n },\n {\n className:\n 'text-success-default [&>button:hover]:bg-success-subtle [&>button:hover]:text-success-on-container',\n tone: 'success',\n variant: 'ghost',\n },\n {\n className:\n 'text-warning-default [&>button:hover]:bg-warning-subtle [&>button:hover]:text-warning-on-container',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n className:\n 'border-brand-border bg-brand-container text-brand-on-container [&>button:hover]:bg-brand-container-high',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className:\n 'border-accent-border bg-accent-container text-accent-on-container [&>button:hover]:bg-accent-container-high',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className:\n 'border-neutral-border bg-neutral-container text-neutral-on-container [&>button:hover]:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className:\n 'border-error-border bg-error-container text-error-on-container [&>button:hover]:bg-error-container-high',\n tone: 'error',\n variant: 'soft',\n },\n {\n className:\n 'border-info-border bg-info-container text-info-on-container [&>button:hover]:bg-info-container-high',\n tone: 'info',\n variant: 'soft',\n },\n {\n className:\n 'border-success-border bg-success-container text-success-on-container [&>button:hover]:bg-success-container-high',\n tone: 'success',\n variant: 'soft',\n },\n {\n className:\n 'border-warning-border bg-warning-container text-warning-on-container [&>button:hover]:bg-warning-container-high',\n tone: 'warning',\n variant: 'soft',\n },\n {\n className:\n 'bg-brand-container text-brand-on-container [&>button]:not-active:hover:bg-brand-container-high [&>button]:active:bg-brand-container',\n tone: 'brand',\n variant: 'elevated',\n },\n {\n className:\n 'bg-accent-container text-accent-on-container [&>button]:not-active:hover:bg-accent-container-high [&>button]:active:bg-accent-container',\n tone: 'accent',\n variant: 'elevated',\n },\n {\n className:\n 'bg-surface-2 text-on-surface [&>button]:not-active:hover:bg-surface-3 [&>button]:not-active:hover:text-neutral-on-container [&>button]:active:bg-surface',\n tone: 'neutral',\n variant: 'elevated',\n },\n {\n className:\n 'bg-error-container text-error-on-container [&>button]:not-active:hover:bg-error-container-high [&>button]:active:bg-error-container',\n tone: 'error',\n variant: 'elevated',\n },\n {\n className:\n 'bg-info-container text-info-on-container [&>button]:not-active:hover:bg-info-container-high [&>button]:active:bg-info-container',\n tone: 'info',\n variant: 'elevated',\n },\n {\n className:\n 'bg-success-container text-success-on-container [&>button]:not-active:hover:bg-success-container-high [&>button]:active:bg-success-container',\n tone: 'success',\n variant: 'elevated',\n },\n {\n className:\n 'bg-warning-container text-warning-on-container [&>button]:not-active:hover:bg-warning-container-high [&>button]:active:bg-warning-container',\n tone: 'warning',\n variant: 'elevated',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n orientation: {\n horizontal:\n '[&>*+*]:relative [&>*+*]:before:absolute [&>*+*]:before:top-1/2 [&>*+*]:before:left-0 [&>*+*]:before:h-1/2 [&>*+*]:before:w-px [&>*+*]:before:-translate-y-1/2 [&>*+*]:before:content-[\"\"]',\n vertical:\n 'flex-col [&>*+*]:relative [&>*+*]:before:absolute [&>*+*]:before:top-0 [&>*+*]:before:left-1/2 [&>*+*]:before:h-px [&>*+*]:before:w-1/2 [&>*+*]:before:-translate-x-1/2 [&>*+*]:before:content-[\"\"]',\n },\n size: {\n extraSmall:\n '*:style-text-default--2 [&>button]:h-md [&>button]:px-2xs [&>button]:[&>svg]:size-2xs',\n iconExtraSmall:\n '*:size-md [&>button]:size-md [&>button]:p-[0px] [&>button]:[&>svg]:size-2xs',\n iconLarge: '*:size-2xl [&>button]:size-2xl [&>button]:p-[0px] [&>button]:[&>svg]:size-md',\n iconMedium: '*:size-xl [&>button]:size-xl [&>button]:p-[0px] [&>button]:[&>svg]:size-sm',\n iconSmall: '*:size-lg [&>button]:size-lg [&>button]:p-[0px] [&>button]:[&>svg]:size-xs',\n large:\n '*:style-text-default-2 [&>button]:h-2xl [&>button]:px-md [&>button]:[&>svg]:size-md',\n medium:\n '*:style-text-default-0 [&>button]:h-xl [&>button]:px-sm [&>button]:[&>svg]:size-sm',\n small:\n '*:style-text-default--1 [&>button]:h-lg [&>button]:px-xs [&>button]:[&>svg]:size-xs',\n },\n tone: {\n accent: '[&>*+*]:before:bg-accent-border',\n brand: '[&>*+*]:before:bg-brand-border',\n error: '[&>*+*]:before:bg-error-border',\n info: '[&>*+*]:before:bg-info-border',\n neutral: '[&>*+*]:before:bg-neutral-border',\n success: '[&>*+*]:before:bg-success-border',\n warning: '',\n },\n variant: {\n elevated: 'shadow-xs *:active:scale-100!',\n fill: '',\n ghost: '',\n outline: 'border',\n soft: 'border',\n },\n },\n },\n)\n\nexport type ButtonGroupProps = React.ComponentProps<'div'> &\n VariantProps<typeof buttonGroupVariants>\n","import { cn } from '@/utils/cn'\n\nimport { buttonGroupVariants } from './button-group.types'\nimport type { ButtonGroupProps } from './button-group.types'\n\nexport function ButtonGroup({\n size,\n variant,\n tone,\n orientation,\n className,\n ref,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n className={cn(buttonGroupVariants({ orientation, size, tone, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { CalendarState, CalendarAction } from './calendar.types'\n\nexport const calendarReducer = (state: CalendarState, action: CalendarAction): CalendarState => {\n switch (action.type) {\n case 'SET_SELECTED_DATES': {\n return {\n ...state,\n selectedDates: action.payload,\n }\n }\n default: {\n return state\n }\n }\n}\n","import React from 'react'\n\nimport { calendarReducer } from './calendar.reducer'\nimport type { CalendarProps, CalendarContextValue } from './calendar.types'\n\nconst CalendarContext = React.createContext<CalendarContextValue | undefined>(undefined),\n useCalendar = () => {\n const context = React.useContext(CalendarContext)\n\n if (!context) {\n throw new Error('useCalendar must be used within a Calendar')\n }\n\n return context\n }\n\nfunction Calendar({ defaultState, children }: CalendarProps) {\n const [state, dispatch] = React.useReducer(\n calendarReducer,\n defaultState ?? { selectedDates: undefined },\n )\n\n return <CalendarContext.Provider value={{ dispatch, state }}>{children}</CalendarContext.Provider>\n}\n\nexport { Calendar, useCalendar }\n","import { cn } from '@/utils/cn'\n\nimport type { CalendarFooterProps } from './calendar.types'\n\nexport function CalendarFooter({ className, children, ref, ...props }: CalendarFooterProps) {\n return (\n <div\n data-slot=\"calendar-footer\"\n className={cn('mt-xs flex flex-col gap-3xs border-t border-border pt-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { CalendarHeaderProps } from './calendar.types'\n\nexport function CalendarHeader({ className, children, ref, ...props }: CalendarHeaderProps) {\n return (\n <div className={cn('', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import type { DateRange, Mode, PropsBase } from '@daypicker/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type React from 'react'\n\nconst calendarPanelVariants = cva('w-fit', {\n compoundVariants: [\n {\n className: 'rounded-2xl p-sm',\n variant: ['elevated', 'outline'],\n },\n ],\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n ghost: 'bg-transparent',\n outline: 'border border-border-strong',\n },\n },\n})\n\ntype CalendarSelected = Date | Date[] | DateRange\n\ninterface CalendarState {\n selectedDates: CalendarSelected | undefined\n}\n\ninterface CalendarAction {\n type: 'SET_SELECTED_DATES'\n payload: CalendarSelected | undefined\n}\n\ntype CalendarProps = React.ComponentProps<'div'> & {\n defaultState?: CalendarState\n}\ninterface CalendarContextValue {\n state: CalendarState\n dispatch: React.Dispatch<CalendarAction>\n}\n\ntype CalendarPickerProps = PropsBase & {\n selected?: CalendarSelected\n onSelect?: (date: CalendarSelected | undefined) => void\n mode?: Mode\n}\ntype CalendarPanelProps = React.ComponentProps<'div'> & VariantProps<typeof calendarPanelVariants>\ntype CalendarHeaderProps = React.ComponentProps<'div'>\ntype CalendarSummaryProps = React.ComponentProps<'div'>\ntype CalendarFooterProps = React.ComponentProps<'div'>\n\nexport type {\n CalendarSelected,\n CalendarState,\n CalendarAction,\n CalendarProps,\n CalendarContextValue,\n CalendarPickerProps,\n CalendarPanelProps,\n CalendarHeaderProps,\n CalendarSummaryProps,\n CalendarFooterProps,\n}\nexport { calendarPanelVariants }\n","import { cn } from '@/utils/cn'\n\nimport { calendarPanelVariants } from './calendar.types'\nimport type { CalendarPanelProps } from './calendar.types'\n\nexport function CalendarPanel({ variant, className, children, ref, ...props }: CalendarPanelProps) {\n return (\n <div className={cn(calendarPanelVariants({ variant }), className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport type { SelectProps } from './select.types'\n\nexport function Select<Value, Multiple extends boolean | undefined = false>(\n props: SelectProps<Value, Multiple>,\n) {\n return <BaseSelect.Root {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SelectDescriptionProps } from './select.types'\n\nexport function SelectDescription({ className, ref, ...props }: SelectDescriptionProps) {\n return (\n <span\n className={cn(\n 'style-text-prose--1 text-on-surface-variant transition-colors group-data-highlighted/item:text-neutral-on-container group-data-selected/item:text-neutral-on-default',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectGroupProps } from './select.types'\n\nexport function SelectGroup({ className, ref, ...props }: SelectGroupProps) {\n return (\n <BaseSelect.Group\n className={cn(\n 'block space-y-3xs border-border-strong not-last:border-b not-last:pb-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectGroupLabelProps } from './select.types'\n\nexport function SelectGroupLabel({ className, ref, ...props }: SelectGroupLabelProps) {\n return (\n <BaseSelect.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 cursor-default bg-surface-2 px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectIconProps } from './select.types'\n\nexport function SelectIcon({ className, ref, ...props }: SelectIconProps) {\n return (\n <BaseSelect.Icon\n className={cn('flex text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectItemProps } from './select.types'\n\nexport function SelectItem({ className, children, ref, ...props }: SelectItemProps) {\n return (\n <BaseSelect.Item\n className={cn(\n // oxlint-disable-next-line tailwindcss/no-unknown-classes\n 'group/item grid min-h-lg cursor-default grid-cols-[1fr_0.75rem] items-center gap-xs rounded-lg px-2xs py-3xs transition-colors outline-none select-none group-data-[side=none]:pr-xs hover:cursor-pointer data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container data-highlighted:before:absolute data-highlighted:before:inset-x-3xs data-highlighted:before:inset-y-[0px] data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-selected:bg-neutral-default data-selected:text-neutral-on-default [&_svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseSelect.ItemText className=\"flex flex-col\">{children}</BaseSelect.ItemText>\n <BaseSelect.ItemIndicator className=\"place-self-end self-center\">\n <CheckIcon weight=\"bold\" />\n </BaseSelect.ItemIndicator>\n </BaseSelect.Item>\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectListProps } from './select.types'\n\nexport function SelectList({ className, ref, ...props }: SelectListProps) {\n return (\n <BaseSelect.List\n className={cn(\n 'relative max-h-(--available-height) scroll-py-md space-y-3xs overflow-y-auto',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\nimport { CaretDownIcon, CaretUpIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectPopupProps } from './select.types'\n\nexport function SelectPopup({ className, children, ref, ...props }: SelectPopupProps) {\n return (\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n className={cn('z-9999 outline-none select-none', className)}\n ref={ref}\n {...props}\n >\n <BaseSelect.Popup className=\"group min-w-(--anchor-width) origin-(--transform-origin) rounded-xl bg-surface-2 bg-clip-padding p-2xs shadow-md transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0 data-[side=none]:data-ending-style:scale-90 data-[side=none]:data-ending-style:opacity-0 data-[side=none]:data-starting-style:scale-90 data-[side=none]:data-starting-style:opacity-0\">\n <BaseSelect.ScrollUpArrow className=\"top-0 right-0 z-[1px] flex h-md w-full cursor-default items-center justify-center rounded-xl bg-surface-2 before:absolute before:left-0 before:size-full before:content-[''] data-[side=none]:before:-top-full\">\n <CaretUpIcon className=\"size-sm\" weight=\"fill\" />\n </BaseSelect.ScrollUpArrow>\n {children}\n <BaseSelect.ScrollDownArrow className=\"right-0 bottom-0 z-[1px] flex h-md w-full cursor-default items-center justify-center rounded-xl bg-surface-2 before:absolute before:left-0 before:size-full before:content-[''] data-[side=none]:before:-bottom-full\">\n <CaretDownIcon className=\"size-sm\" weight=\"fill\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SelectTitleProps } from './select.types'\n\nexport function SelectTitle({ className, ref, ...props }: SelectTitleProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2xs style-text-default-0 text-on-surface transition-colors group-data-highlighted/item:text-neutral-on-container group-data-selected/item:text-neutral-on-default',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Select as BaseSelect } from '@base-ui/react/select'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\n\nconst selectVariants = cva(\n 'flex items-center justify-between outline outline-transparent transition-all duration-100 hover:cursor-pointer aria-invalid:bg-error-container aria-invalid:text-error-on-container aria-invalid:outline-error-border data-disabled:cursor-not-allowed [&_[data-value]]:min-w-0 [&_[data-value]]:flex-1',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large:\n 'h-2xl gap-xl rounded-2xl px-md style-text-default-1 [&_[data-value]]:gap-xs [&_svg]:size-md',\n medium:\n 'h-xl gap-lg rounded-xl px-sm style-text-default-0 [&_[data-value]]:gap-2xs [&_svg]:size-sm',\n small:\n 'h-lg gap-md rounded-lg px-xs style-text-default--1 [&_[data-value]]:gap-3xs [&_svg]:size-xs',\n },\n variant: {\n ghost: 'bg-transparent hover:bg-neutral-container',\n primary: 'bg-surface shadow-2xs hover:outline-border-strong',\n secondary: 'bg-neutral-container hover:outline-border-strong',\n },\n },\n },\n)\n\ntype SelectChangeEventDetails =\n NonNullable<React.ComponentProps<typeof BaseSelect.Root>['onValueChange']> extends (\n value: never,\n details: infer Details,\n ) => void\n ? Details\n : never\n\ntype SelectValue<Value, Multiple extends boolean | undefined> = Multiple extends true\n ? Value[]\n : Value\n\ninterface SelectProps<Value, Multiple extends boolean | undefined = false> extends Omit<\n BaseSelect.Root.Props<Value, Multiple>,\n | 'defaultValue'\n | 'isItemEqualToValue'\n | 'items'\n | 'itemToStringLabel'\n | 'itemToStringValue'\n | 'onValueChange'\n | 'value'\n> {\n defaultValue?: SelectValue<Value, Multiple> | null\n isItemEqualToValue?: (itemValue: Value, value: Value) => boolean\n items?: Record<string, ReactNode> | readonly { label: ReactNode; value: Value }[]\n itemToStringLabel?: (itemValue: Value) => string\n itemToStringValue?: (itemValue: Value) => string\n onValueChange?: (\n value: SelectValue<Value, Multiple> | (Multiple extends true ? never : null),\n eventDetails: SelectChangeEventDetails,\n ) => void\n value?: SelectValue<Value, Multiple> | null\n}\ntype SelectTriggerProps = React.ComponentProps<typeof BaseSelect.Trigger> &\n VariantProps<typeof selectVariants>\ntype SelectValueProps = React.ComponentProps<typeof BaseSelect.Value>\ntype SelectIconProps = React.ComponentProps<typeof BaseSelect.Icon>\ntype SelectPopupProps = React.ComponentProps<typeof BaseSelect.Positioner>\ntype SelectItemProps = React.ComponentProps<typeof BaseSelect.Item>\ntype SelectListProps = React.ComponentProps<typeof BaseSelect.List>\ntype SelectGroupProps = React.ComponentProps<typeof BaseSelect.Group>\ntype SelectGroupLabelProps = React.ComponentProps<typeof BaseSelect.GroupLabel>\ntype SelectDescriptionProps = React.ComponentProps<'span'>\ntype SelectTitleProps = React.ComponentProps<'span'>\ninterface SelectFilter {\n id: number\n label: string\n value: string\n}\n\nexport type {\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectIconProps,\n SelectPopupProps,\n SelectItemProps,\n SelectListProps,\n SelectGroupProps,\n SelectGroupLabelProps,\n SelectDescriptionProps,\n SelectTitleProps,\n SelectFilter,\n}\nexport { selectVariants }\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport { selectVariants } from './select.types'\nimport type { SelectTriggerProps } from './select.types'\n\nexport function SelectTrigger({ variant, size, className, ref, ...props }: SelectTriggerProps) {\n return (\n <BaseSelect.Trigger\n className={cn(selectVariants({ className, size, variant }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectValueProps } from './select.types'\n\nexport function SelectValue({ className, ref, ...props }: SelectValueProps) {\n return (\n <BaseSelect.Value\n data-value\n className={cn(\n 'flex h-lg min-w-0 flex-1 items-center gap-2xs overflow-hidden text-left text-ellipsis whitespace-nowrap data-placeholder:opacity-70',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as SelectRoot } from './select'\nimport { SelectDescription } from './select-description'\nimport { SelectGroup } from './select-group'\nimport { SelectGroupLabel } from './select-group-label'\nimport { SelectIcon } from './select-icon'\nimport { SelectItem } from './select-item'\nimport { SelectList } from './select-list'\nimport { SelectPopup } from './select-popup'\nimport { SelectTitle } from './select-title'\nimport { SelectTrigger } from './select-trigger'\nimport { SelectValue } from './select-value'\n\nconst Select = Object.assign(SelectRoot, {\n Description: SelectDescription,\n Group: SelectGroup,\n GroupLabel: SelectGroupLabel,\n Icon: SelectIcon,\n Item: SelectItem,\n List: SelectList,\n Popup: SelectPopup,\n Title: SelectTitle,\n Trigger: SelectTrigger,\n Value: SelectValue,\n})\n\nexport type {\n SelectIconProps,\n SelectItemProps,\n SelectListProps,\n SelectPopupProps,\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectGroupProps,\n SelectGroupLabelProps,\n SelectDescriptionProps,\n SelectTitleProps,\n} from './select.types'\nexport { SelectItem } from './select-item'\nexport { SelectList } from './select-list'\nexport { SelectIcon } from './select-icon'\nexport { SelectPopup } from './select-popup'\nexport { SelectTrigger } from './select-trigger'\nexport { SelectValue } from './select-value'\nexport { SelectGroup } from './select-group'\nexport { SelectGroupLabel } from './select-group-label'\nexport { SelectDescription } from './select-description'\nexport { SelectTitle } from './select-title'\n\nexport { Select }\n","import { DayPicker, getDefaultClassNames, isDateRange } from '@daypicker/react'\nimport type { OnSelectHandler, PropsBase } from '@daypicker/react'\nimport { CaretLeftIcon, CaretRightIcon, CaretUpDownIcon } from '@phosphor-icons/react'\nimport type { ChangeEvent, ComponentProps } from 'react'\n\n// eslint-disable-next-line import/no-unassigned-import -- DayPicker styles are required globally.\nimport '@daypicker/react/style.css'\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTitle,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useCalendar } from './calendar'\nimport type { CalendarPickerProps, CalendarSelected } from './calendar.types'\n\ntype CalendarComponents = NonNullable<PropsBase['components']>\n\nfunction createSelectTarget(value: string): HTMLSelectElement {\n const element = document.createElement('select'),\n option = Object.assign(document.createElement('option'), { value })\n\n element.append(option)\n element.value = value\n\n return element\n}\n\nfunction CalendarDropdown({\n options,\n onChange,\n value,\n 'aria-label': ariaLabel,\n}: ComponentProps<NonNullable<CalendarComponents['Dropdown']>>) {\n const handleValueChange = (newValue: string | null) => {\n if (onChange) {\n const element = createSelectTarget(newValue ?? ''),\n syntheticEvent = {\n bubbles: false,\n cancelable: false,\n currentTarget: element,\n defaultPrevented: false,\n eventPhase: Event.NONE,\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n isTrusted: false,\n nativeEvent: new Event('change'),\n persist: () => undefined,\n preventDefault: () => undefined,\n stopPropagation: () => undefined,\n target: element,\n timeStamp: performance.now(),\n type: 'change',\n } satisfies ChangeEvent<HTMLSelectElement>\n\n onChange(syntheticEvent)\n }\n }\n\n return (\n <Select<string> value={value?.toString()} onValueChange={handleValueChange}>\n <SelectTrigger variant=\"ghost\" aria-label={ariaLabel}>\n <SelectValue>{options?.find((option) => option.value === value)?.label}</SelectValue>\n <SelectIcon>\n <CaretUpDownIcon weight=\"bold\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup>\n <SelectList>\n {options?.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value.toString()}\n disabled={option.disabled}\n >\n <SelectTitle>{option.label}</SelectTitle>\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n\nfunction CalendarNextMonthButton({\n onClick,\n disabled,\n ...props\n}: ComponentProps<NonNullable<CalendarComponents['NextMonthButton']>>) {\n return (\n <Button\n {...props}\n variant=\"ghost\"\n tone=\"neutral\"\n size=\"iconSmall\"\n onClick={onClick}\n disabled={disabled}\n >\n <CaretRightIcon weight=\"bold\" />\n </Button>\n )\n}\n\nfunction CalendarPreviousMonthButton({\n onClick,\n disabled,\n ...props\n}: ComponentProps<NonNullable<CalendarComponents['PreviousMonthButton']>>) {\n return (\n <Button\n {...props}\n variant=\"ghost\"\n tone=\"neutral\"\n size=\"iconSmall\"\n onClick={onClick}\n disabled={disabled}\n >\n <CaretLeftIcon weight=\"bold\" />\n </Button>\n )\n}\n\nfunction getMultipleSelected(selectedDates: CalendarSelected | undefined): Date[] | undefined {\n if (Array.isArray(selectedDates)) {\n return selectedDates\n }\n return undefined\n}\n\nfunction getRangeSelected(selectedDates: CalendarSelected | undefined) {\n if (isDateRange(selectedDates)) {\n return selectedDates\n }\n return undefined\n}\n\nfunction getSingleSelected(selectedDates: CalendarSelected | undefined): Date | undefined {\n if (selectedDates instanceof Date) {\n return selectedDates\n }\n return undefined\n}\n\nconst defaultClassNames = getDefaultClassNames(),\n calendarClassNames: PropsBase['classNames'] = {\n caption_label: 'style-text-strong-0',\n day: cn(\n 'rounded-xl style-text-default-0 transition-colors hover:bg-brand-container hover:text-brand-on-container data-selected:text-brand-on-default data-selected:hover:bg-brand-default',\n defaultClassNames.day,\n ),\n disabled: cn('pointer-events-none text-on-surface', defaultClassNames.disabled),\n month_caption: 'flex items-center justify-center h-lg',\n month_grid: cn('mt-xs', defaultClassNames.month_grid),\n nav: cn('h-lg! w-full justify-between!', defaultClassNames.nav),\n outside: cn('border-none text-on-surface', defaultClassNames.outside),\n range_end: cn('rounded-l-none bg-brand-default text-brand-on-default'),\n range_middle: cn(\n 'rounded-none! border-y border-brand-border bg-brand-container! text-brand-on-container! transition-none',\n ),\n range_start: cn(\n 'rounded-r-none bg-brand-default text-brand-on-default',\n '[&.rounded-l-none]:rounded-xl',\n ),\n selected: cn('bg-brand-default text-brand-on-default'),\n today: cn('text-brand-default! data-selected:text-brand-on-default!', defaultClassNames.today),\n weekdays: cn('style-text-default-0 text-on-surface', defaultClassNames.weekdays),\n },\n calendarComponents: CalendarComponents = {\n Dropdown: CalendarDropdown,\n NextMonthButton: CalendarNextMonthButton,\n PreviousMonthButton: CalendarPreviousMonthButton,\n }\n\nexport function CalendarPicker({\n className,\n mode = 'single',\n selected,\n onSelect,\n ...props\n}: CalendarPickerProps) {\n const { state, dispatch } = useCalendar(),\n selectedValue = selected ?? state.selectedDates,\n handleSelect: OnSelectHandler<CalendarSelected | undefined> = (next) => {\n dispatch({ payload: next, type: 'SET_SELECTED_DATES' })\n onSelect?.(next)\n },\n baseProps: PropsBase = {\n className,\n classNames: calendarClassNames,\n components: calendarComponents,\n ...props,\n }\n\n switch (mode) {\n case 'multiple': {\n return (\n <DayPicker\n {...baseProps}\n mode=\"multiple\"\n selected={getMultipleSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n case 'range': {\n return (\n <DayPicker\n {...baseProps}\n mode=\"range\"\n selected={getRangeSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n default: {\n return (\n <DayPicker\n {...baseProps}\n mode=\"single\"\n selected={getSingleSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n }\n}\n","export const formatDate = (\n date: Date,\n locale: Intl.LocalesArgument = 'en-US',\n options?: Intl.DateTimeFormatOptions,\n): string => new Intl.DateTimeFormat(locale, options).format(date)\n","import { isDateRange } from '@daypicker/react'\n\nimport { cn } from '@/utils/cn'\nimport { formatDate } from '@/utils/date-time'\n\nimport { useCalendar } from './calendar'\nimport type { CalendarSummaryProps } from './calendar.types'\n\nconst dateFormatOptions: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n },\n formatCalendarDate = (date: Date) => formatDate(date, 'en-US', dateFormatOptions)\n\nexport function CalendarSummary({ className, children, ref, ...props }: CalendarSummaryProps) {\n const { state } = useCalendar()\n let formattedDate: string | undefined = undefined\n\n if (state.selectedDates instanceof Date) {\n formattedDate = formatCalendarDate(state.selectedDates)\n }\n\n if (isDateRange(state.selectedDates)) {\n const { from: startDate, to: endDate } = state.selectedDates\n if (startDate && endDate) {\n formattedDate = `${formatCalendarDate(startDate)} - ${formatCalendarDate(endDate)}`\n }\n }\n\n return (\n <div className={cn('flex flex-col', className)} ref={ref} {...props}>\n <span className=\"style-text-strong-1\">{formatCalendarDate(new Date())}</span>\n <span className=\"style-text-strong-0\">{formattedDate}</span>\n {children}\n </div>\n )\n}\n","import { Calendar as CalendarRoot } from './calendar'\nimport { CalendarFooter } from './calendar-footer'\nimport { CalendarHeader } from './calendar-header'\nimport { CalendarPanel } from './calendar-panel'\nimport { CalendarPicker } from './calendar-picker'\nimport { CalendarSummary } from './calendar-summary'\n\nconst Calendar = Object.assign(CalendarRoot, {\n Footer: CalendarFooter,\n Header: CalendarHeader,\n Panel: CalendarPanel,\n Picker: CalendarPicker,\n Summary: CalendarSummary,\n})\n\nexport type {\n CalendarAction,\n CalendarContextValue,\n CalendarProps,\n CalendarFooterProps,\n CalendarHeaderProps,\n CalendarPanelProps,\n CalendarPickerProps,\n CalendarSummaryProps,\n} from './calendar.types'\n\nexport { CalendarPicker } from './calendar-picker'\nexport { CalendarFooter } from './calendar-footer'\nexport { CalendarHeader } from './calendar-header'\nexport { CalendarPanel } from './calendar-panel'\nexport { CalendarSummary } from './calendar-summary'\nexport { Calendar }\n","import React from 'react'\nimport type {\n TooltipProps as RechartsTooltipProps,\n TooltipContentProps as RechartsTooltipContentProps,\n LegendProps as RechartsLegendProps,\n DefaultLegendContentProps as RechartsDefaultLegendContentProps,\n} from 'recharts'\n\nconst THEMES = { dark: '.dark', light: '' } as const,\n ChartContainerContext = React.createContext<ChartContainerContextProps | undefined>(undefined),\n ChartLegendPayloadContext = React.createContext<\n | {\n label?: string\n color?: string\n icon?: React.ComponentType\n }\n | undefined\n >(undefined)\n\ntype ChartConfig = Record<\n string,\n {\n label?: string\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>\n\ninterface ChartContainerContextProps {\n config: ChartConfig\n}\n\ntype ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig\n initialDimension?: { width: number; height: number }\n}\n\ntype ChartTooltipProps = RechartsTooltipProps\ntype ChartTooltipContentProps = React.ComponentProps<'div'> & Partial<RechartsTooltipContentProps>\ntype ChartLegendProps = RechartsLegendProps\ntype ChartLegendContentProps = React.ComponentProps<'div'> & RechartsDefaultLegendContentProps\ntype ChartTooltipLabelProps = React.ComponentProps<'p'>\ntype ChartTooltipNameProps = React.ComponentProps<'p'>\ntype ChartTooltipPayloadProps = React.ComponentProps<'div'>\ntype ChartLegendPayloadProps = React.ComponentProps<'div'>\ntype ChartTooltipIndicatorProps = React.ComponentProps<'div'> & {\n shape?: 'circle' | 'square' | 'diamond' | 'triangle' | 'wye' | 'line'\n}\ntype ChartLinearGradientProps = React.ComponentProps<'defs'> & {\n gradients: {\n id: string\n stopColor: string\n }[]\n}\ntype ChartTooltipIconProps = React.ComponentProps<'div'>\ntype ChartLegendIconProps = React.ComponentProps<'div'>\ntype ChartLegendLabelProps = React.ComponentProps<'p'>\ntype ChartLegendIndicatorProps = React.ComponentProps<'div'> & {\n shape?: 'circle' | 'square' | 'diamond' | 'triangle' | 'wye' | 'line'\n}\ntype ChartTooltipValueProps = React.ComponentProps<'p'>\n\nexport type {\n ChartConfig,\n ChartContainerContextProps,\n ChartContainerProps,\n ChartTooltipProps,\n ChartTooltipContentProps,\n ChartLegendProps,\n ChartLegendContentProps,\n ChartTooltipLabelProps,\n ChartTooltipNameProps,\n ChartTooltipPayloadProps,\n ChartLegendPayloadProps,\n ChartTooltipIndicatorProps,\n ChartLinearGradientProps,\n ChartTooltipIconProps,\n ChartLegendIconProps,\n ChartLegendLabelProps,\n ChartLegendIndicatorProps,\n ChartTooltipValueProps,\n}\nexport { ChartContainerContext, ChartLegendPayloadContext }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ChartContainerContext } from './chart.types'\nimport type { ChartContainerProps } from './chart.types'\n\nexport function ChartContainer({\n id,\n config,\n className,\n children,\n ref,\n ...props\n}: ChartContainerProps) {\n const uniqueId = React.useId(),\n chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`\n\n return (\n <ChartContainerContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center style-text-default--1 [&_.recharts-cartesian-axis-tick_text]:fill-on-surface-muted [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-neutral-container-high [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-container-high [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </ChartContainerContext.Provider>\n )\n}\n","import { Tooltip } from 'recharts'\n\nimport type { ChartTooltipProps } from './chart.types'\n\nexport function ChartTooltip({ content, ...props }: ChartTooltipProps) {\n return <Tooltip content={content} {...props} />\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ChartTooltipContentProps } from './chart.types'\n\nconst ChartTooltipContentContext = React.createContext<ChartTooltipContentProps | undefined>(\n undefined,\n)\n\nfunction ChartTooltipContent({ className, children, ref, ...props }: ChartTooltipContentProps) {\n return (\n <ChartTooltipContentContext.Provider value={props}>\n <div\n className={cn('min-w-[125px] space-y-2xs rounded-lg bg-surface-2 px-xs py-2xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </ChartTooltipContentContext.Provider>\n )\n}\n\nfunction useChartTooltipContent() {\n const context = React.useContext(ChartTooltipContentContext)\n\n if (!context) {\n throw new Error('useChartTooltipContent must be used within a ChartTooltipContentProvider')\n }\n\n return context\n}\n\nexport { ChartTooltipContent, useChartTooltipContent }\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipContent } from './chart-tooltip-content'\nimport type { ChartTooltipLabelProps } from './chart.types'\n\nexport function ChartTooltipLabel({ className, children, ref, ...props }: ChartTooltipLabelProps) {\n const { label } = useChartTooltipContent()\n\n return (\n <p className={cn('style-text-default-0', className)} ref={ref} {...props}>\n {children}\n {label}\n </p>\n )\n}\n","import React from 'react'\nimport type { TooltipPayloadEntry } from 'recharts'\n\nimport { cn } from '@/utils/cn'\n\nimport { useChartTooltipContent } from './chart-tooltip-content'\nimport type { ChartTooltipPayloadProps } from './chart.types'\n\nconst ChartTooltipPayloadContext = React.createContext<TooltipPayloadEntry | undefined>(undefined)\n\nfunction ChartTooltipPayload({ className, children, ref, ...props }: ChartTooltipPayloadProps) {\n const { payload } = useChartTooltipContent()\n\n return (\n <div className={cn('flex flex-col gap-3xs', className)} ref={ref} {...props}>\n {payload?.map((entry) => (\n <ChartTooltipPayloadContext.Provider\n key={String(entry.dataKey ?? entry.name)}\n value={entry}\n >\n <div className=\"flex items-center justify-between gap-2xs\">{children}</div>\n </ChartTooltipPayloadContext.Provider>\n ))}\n </div>\n )\n}\n\nfunction useChartTooltipPayload() {\n const context = React.useContext(ChartTooltipPayloadContext)\n\n if (!context) {\n throw new Error('useChartTooltipPayload must be used within a ChartTooltipPayloadProvider')\n }\n\n return context\n}\n\nexport { ChartTooltipPayload, useChartTooltipPayload }\n","import { Legend } from 'recharts'\n\nimport type { ChartLegendProps } from './chart.types'\n\nexport function ChartLegend({ children, ...props }: ChartLegendProps) {\n return <Legend {...props}>{children}</Legend>\n}\n","import React from 'react'\n\nimport { ChartLegendPayloadContext, ChartContainerContext } from './chart.types'\nimport type { ChartConfig } from './chart.types'\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: unknown, key: string) => {\n if (typeof payload !== 'object' || payload === null) {\n return undefined\n }\n\n if (key in config) {\n return config[key]\n }\n\n if ('name' in payload && typeof payload.name === 'string' && payload.name in config) {\n return config[payload.name]\n }\n\n return undefined\n },\n useChart = () => {\n const context = React.useContext(ChartContainerContext)\n\n if (!context) {\n throw new Error('useChart must be used within a ChartContainerProvider')\n }\n\n return context\n },\n useChartLegendPayload = () => {\n const context = React.useContext(ChartLegendPayloadContext)\n\n if (!context) {\n throw new Error('useChartLegendPayload must be used within a ChartLegendPayloadProvider')\n }\n\n return context\n }\n\nexport { getPayloadConfigFromPayload, useChart, useChartLegendPayload }\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendIconProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendIcon({ className, children, ref, ...props }: ChartLegendIconProps) {\n const { icon: Icon, color } = useChartLegendPayload()\n\n return (\n <div\n style={{\n color,\n }}\n className={cn('shrink-0 [&>svg]:size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n {Icon && <Icon />}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendIndicatorProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendIndicator({\n shape = 'circle',\n className,\n children,\n ref,\n ...props\n}: ChartLegendIndicatorProps) {\n const { color } = useChartLegendPayload()\n\n return (\n <div\n style={{\n backgroundColor: color,\n ...(shape === 'circle' && { borderRadius: '50%' }),\n ...(shape === 'diamond' && { transform: 'rotate(45deg)' }),\n ...(shape === 'triangle' && { clipPath: 'polygon(50% 0%, 0% 100%, 100% 100%)' }),\n ...(shape === 'wye' && {\n clipPath:\n 'polygon(50% 0%, 61.8% 35.4%, 98.5% 35.4%, 69.1% 57.1%, 80.9% 92.5%, 50% 70.7%, 19.1% 92.5%, 30.9% 57.1%, 1.5% 35.4%, 38.2% 35.4%)',\n }),\n ...(shape === 'line' && { borderRadius: '1.5px', maxHeight: '100%', width: '3px' }),\n }}\n className={cn('size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendLabelProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendLabel({ className, children, ref, ...props }: ChartLegendLabelProps) {\n const { label } = useChartLegendPayload()\n\n return (\n <p className={cn('style-text-default--1 capitalize', className)} ref={ref} {...props}>\n {children}\n {label}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { ChartLegendIcon } from './chart-legend-icon'\nimport { ChartLegendIndicator } from './chart-legend-indicator'\nimport { ChartLegendLabel } from './chart-legend-label'\nimport { ChartLegendPayloadContext } from './chart.types'\nimport type { ChartLegendContentProps } from './chart.types'\nimport { getPayloadConfigFromPayload, useChart } from './chart.utils'\n\nexport function ChartLegendContent({\n payload,\n verticalAlign = 'bottom',\n className,\n children,\n ref,\n ...props\n}: ChartLegendContentProps) {\n const { config } = useChart()\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-lg',\n verticalAlign === 'top' && 'mb-md',\n verticalAlign === 'bottom' && 'mt-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n {payload?.map((entry) => {\n let payloadKey = 'value'\n\n if (typeof entry.dataKey === 'string') {\n payloadKey = entry.dataKey\n }\n\n const payloadConfig = getPayloadConfigFromPayload(config, entry, payloadKey)\n\n return (\n <ChartLegendPayloadContext.Provider\n key={String(entry.dataKey ?? entry.value)}\n value={{\n color: payloadConfig?.color,\n icon: payloadConfig?.icon,\n label: payloadConfig?.label,\n }}\n >\n <div className=\"flex items-center gap-2xs\">\n {payloadConfig?.icon && <ChartLegendIcon />}\n {!payloadConfig?.icon && <ChartLegendIndicator />}\n <ChartLegendLabel />\n {children}\n </div>\n </ChartLegendPayloadContext.Provider>\n )\n })}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLinearGradientProps } from './chart.types'\n\nexport function ChartLinearGradient({\n gradients,\n className,\n children,\n ref,\n ...props\n}: ChartLinearGradientProps) {\n return (\n <defs className={cn('', className)} ref={ref} {...props}>\n {gradients.map((gradient) => (\n <linearGradient key={gradient.id} id={gradient.id} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={gradient.stopColor} stopOpacity={0.8} />\n <stop offset=\"95%\" stopColor={gradient.stopColor} stopOpacity={0.1} />\n </linearGradient>\n ))}\n {children}\n </defs>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipIndicatorProps } from './chart.types'\n\nexport function ChartTooltipIndicator({\n shape = 'circle',\n className,\n children,\n ref,\n ...props\n}: ChartTooltipIndicatorProps) {\n const { color } = useChartTooltipPayload()\n\n return (\n <div\n style={{\n backgroundColor: color,\n ...(shape === 'circle' && { borderRadius: '50%' }),\n ...(shape === 'diamond' && { transform: 'rotate(45deg)' }),\n ...(shape === 'triangle' && { clipPath: 'polygon(50% 0%, 0% 100%, 100% 100%)' }),\n ...(shape === 'wye' && {\n clipPath:\n 'polygon(50% 0%, 61.8% 35.4%, 98.5% 35.4%, 69.1% 57.1%, 80.9% 92.5%, 50% 70.7%, 19.1% 92.5%, 30.9% 57.1%, 1.5% 35.4%, 38.2% 35.4%)',\n }),\n ...(shape === 'line' && { borderRadius: '1.5px', maxHeight: '100%', width: '3px' }),\n }}\n className={cn('size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipNameProps } from './chart.types'\n\nexport function ChartTooltipName({ className, children, ref, ...props }: ChartTooltipNameProps) {\n const { name } = useChartTooltipPayload()\n\n return (\n <p\n className={cn(\n 'grow text-left style-text-default--1 text-on-surface-variant capitalize',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {name}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipIconProps } from './chart.types'\nimport { getPayloadConfigFromPayload, useChart } from './chart.utils'\n\nfunction resolveConfigKey(dataKey: unknown): string {\n if (typeof dataKey === 'string') {\n return dataKey\n }\n\n return 'value'\n}\n\nexport function ChartTooltipIcon({ className, children, ref, ...props }: ChartTooltipIconProps) {\n const { config } = useChart(),\n payload = useChartTooltipPayload(),\n payloadConfig = getPayloadConfigFromPayload(config, payload, resolveConfigKey(payload.dataKey)),\n Icon = payloadConfig?.icon\n\n return (\n <div\n style={{\n color: payload.color,\n }}\n className={cn('shrink-0 [&>svg]:size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n {Icon && <Icon />}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipValueProps } from './chart.types'\n\nexport function ChartTooltipValue({ className, children, ref, ...props }: ChartTooltipValueProps) {\n const { value } = useChartTooltipPayload()\n\n return (\n <p className={cn('mx-auto style-text-default--1', className)} ref={ref} {...props}>\n {children}\n {value}\n </p>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport type LabelProps = React.ComponentProps<'label'> & VariantProps<typeof labelVariants>\n\nexport const labelVariants = cva('flex items-center gap-2xs select-none hover:cursor-pointer', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n },\n})\n","import { labelVariants } from './label.types'\nimport type { LabelProps } from './label.types'\n\nexport function Label({ className, ref, size, ...props }: LabelProps) {\n return (\n <label\n className={labelVariants({ className, size })}\n data-slot=\"label\"\n htmlFor={props.htmlFor}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox'\nimport { CheckIcon, MinusIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CheckboxIndicatorProps } from './checkbox.types'\n\nexport function CheckboxIndicator({ className, ...props }: CheckboxIndicatorProps) {\n return (\n <BaseCheckbox.Indicator\n className={cn('flex', className)}\n {...props}\n render={(innerProps, state) => {\n if (state.indeterminate) {\n return <MinusIcon weight=\"bold\" {...innerProps} className=\"text-accent-default\" />\n }\n return <CheckIcon weight=\"bold\" {...innerProps} />\n }}\n />\n )\n}\n","import type { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps, ReactNode } from 'react'\n\nconst checkboxVariants = cva(\n 'group flex size-sm items-center justify-center rounded-sm shadow-2xs outline-2 outline-transparent transition-colors not-indeterminate:text-accent-on-default indeterminate:text-accent-default hover:cursor-pointer hover:outline-accent-border disabled:cursor-not-allowed disabled:hover:cursor-not-allowed data-checked:bg-accent-default [&_svg]:size-xs [&:not([data-checked])]:hover:outline-border-strong',\n {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n inSurface: 'bg-surface-low shadow-none inset-shadow-2xs data-checked:inset-shadow-none',\n },\n },\n },\n)\n\ntype CheckboxRootProps = ComponentProps<typeof BaseCheckbox.Root> & {\n label?: ReactNode\n} & VariantProps<typeof checkboxVariants>\n\ntype CheckboxIndicatorProps = ComponentProps<typeof BaseCheckbox.Indicator>\n\nexport { checkboxVariants, type CheckboxRootProps, type CheckboxIndicatorProps }\n","import { Checkbox as BaseCheckbox } from '@base-ui/react'\nimport { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport { CheckboxIndicator } from './checkbox-indicator'\nimport { checkboxVariants } from './checkbox.types'\nimport type { CheckboxRootProps } from './checkbox.types'\n\nexport function Checkbox({ variant, className, label, id, ref, ...props }: CheckboxRootProps) {\n const generatedId = useId(),\n hasLabel = label !== undefined && label !== null\n let checkboxId = id\n if (checkboxId === undefined && hasLabel) {\n checkboxId = generatedId\n }\n\n return (\n <div className=\"flex items-center gap-xs\">\n <BaseCheckbox.Root\n className={cn(checkboxVariants({ className, variant }))}\n id={checkboxId}\n ref={ref}\n {...props}\n >\n <CheckboxIndicator />\n </BaseCheckbox.Root>\n {hasLabel && <Label htmlFor={checkboxId}>{label}</Label>}\n </div>\n )\n}\n","import { Checkbox as CheckboxRoot } from './checkbox'\nimport { CheckboxIndicator } from './checkbox-indicator'\n\nconst Checkbox = Object.assign(CheckboxRoot, {\n Indicator: CheckboxIndicator,\n})\n\nexport type { CheckboxIndicatorProps, CheckboxRootProps } from './checkbox.types'\nexport { CheckboxIndicator } from './checkbox-indicator'\n\nexport { Checkbox }\n","import { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CheckboxGroupProps } from './checkbox-group.types'\n\nexport function CheckboxGroup({ className, ref, ...props }: CheckboxGroupProps) {\n const id = React.useId()\n return (\n <BaseCheckboxGroup\n aria-labelledby={id}\n className={cn('flex flex-col items-start gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CodeBlockProps, CodeBlockProviderState, CodeBlockValue } from './code-block.types'\n\nconst CodeBlockContext = React.createContext<CodeBlockProviderState | undefined>(undefined)\n\nfunction CodeBlock({ items, defaultValue, className, ref, ...props }: CodeBlockProps) {\n const [currentValue, setCurrentValue] = React.useState<CodeBlockValue>(defaultValue)\n\n return (\n <CodeBlockContext.Provider value={{ currentValue, items, setCurrentValue }}>\n <div\n className={cn('flex flex-col rounded-xl border border-border bg-surface', className)}\n ref={ref}\n {...props}\n />\n </CodeBlockContext.Provider>\n )\n}\n\nfunction useCodeBlock() {\n const context = React.useContext(CodeBlockContext)\n\n if (!context) {\n throw new Error('useCodeBlock must be used within a CodeBlock')\n }\n\n return context\n}\n\nexport { CodeBlock, useCodeBlock }\n","import { cn } from '@/utils/cn'\n\nimport type { CodeBlockActionsProps } from './code-block.types'\n\nexport function CodeBlockActions({ className, ref, ...props }: CodeBlockActionsProps) {\n return (\n <div\n className={cn('absolute top-3xs right-3xs flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { CheckIcon, CopyIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockCopyProps } from './code-block.types'\n\nconst COPY_TIMEOUT = 2000,\n COPY_STATUS_ICON = {\n false: <CopyIcon weight=\"bold\" className=\"animate-in zoom-in\" />,\n true: <CheckIcon weight=\"bold\" className=\"animate-in zoom-in\" />,\n }\n\nexport function CodeBlockCopy({ className, children, ref, ...props }: CodeBlockCopyProps) {\n const { currentValue } = useCodeBlock(),\n [copied, setCopied] = React.useState(false),\n handleClick = async () => {\n try {\n await navigator.clipboard.writeText(currentValue.content)\n setCopied(true)\n setTimeout(() => setCopied(false), COPY_TIMEOUT)\n } catch (error) {\n console.error('Failed to copy text:', error)\n }\n }\n\n return (\n <Button\n aria-label=\"Copy code\"\n onClick={handleClick}\n size=\"iconMedium\"\n variant=\"ghost\"\n tone=\"neutral\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {COPY_STATUS_ICON[`${copied}`]}\n </Button>\n )\n}\n","import { CheckIcon, DownloadIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockDownloadProps } from './code-block.types'\n\nconst DOWNLOAD_TIMEOUT = 2000,\n DOWNLOAD_STATUS_ICON = {\n false: <DownloadIcon weight=\"bold\" className=\"animate-in zoom-in\" />,\n true: <CheckIcon weight=\"bold\" className=\"animate-in zoom-in\" />,\n }\n\nexport function CodeBlockDownload({ className, children, ref, ...props }: CodeBlockDownloadProps) {\n const { currentValue } = useCodeBlock(),\n [downloaded, setDownloaded] = React.useState(false),\n handleClick = async () => {\n try {\n const blob = new Blob([currentValue.content]),\n url = URL.createObjectURL(blob),\n link = document.createElement('a')\n link.href = url\n link.download = currentValue.name\n link.click()\n URL.revokeObjectURL(url)\n\n setDownloaded(true)\n setTimeout(() => setDownloaded(false), DOWNLOAD_TIMEOUT)\n } catch (error) {\n console.error('Failed to download file:', error)\n }\n }\n\n return (\n <Button\n aria-label=\"Download file\"\n onClick={handleClick}\n size=\"iconMedium\"\n variant=\"ghost\"\n tone=\"neutral\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {DOWNLOAD_STATUS_ICON[`${downloaded}`]}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\ntype CodeBlockHeaderProps = React.ComponentProps<'div'>\n\nexport function CodeBlockHeader({ className, ref, ...props }: CodeBlockHeaderProps) {\n return (\n <div\n className={cn(\n 'flex min-h-2xl items-center justify-between border-b border-border p-2xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockNameProps } from './code-block.types'\n\nexport function CodeBlockName({ className, children, ref, ...props }: CodeBlockNameProps) {\n const { currentValue } = useCodeBlock()\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-2xs px-xs style-text-strong-0 text-on-surface-variant [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {currentValue?.icon}\n {currentValue.name}\n </div>\n )\n}\n","import { CaretUpDownIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport {\n Select,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockSelectProps } from './code-block.types'\n\nexport function CodeBlockSelect({ className, children, ref, ...props }: CodeBlockSelectProps) {\n const { currentValue, setCurrentValue, items } = useCodeBlock(),\n handleChange = (value: unknown) => {\n const selectedValue = items.find(({ id }) => id === value)\n if (selectedValue) {\n setCurrentValue(selectedValue)\n }\n }\n\n return (\n <Select value={currentValue.id} onValueChange={handleChange}>\n <SelectTrigger\n aria-label=\"Select snippet\"\n className={cn('', className)}\n ref={ref}\n {...props}\n variant=\"ghost\"\n >\n <SelectValue>\n {(value: keyof typeof items) => items.find((item) => item.id === value)?.label}\n </SelectValue>\n <SelectIcon>\n <CaretUpDownIcon weight=\"bold\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup>\n <SelectList>\n {children}\n <SelectGroup>\n {items.map(({ label, id }) => (\n <SelectItem key={id} value={id}>\n {label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import type { Tabs as BaseTabs } from '@base-ui/react/tabs'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\nimport type React from 'react'\n\ntype TabsPanelProps = ComponentProps<typeof BaseTabs.Panel>\ntype TabsTabProps = ComponentProps<typeof BaseTabs.Tab>\ntype TabsIndicatorProps = ComponentProps<typeof BaseTabs.Indicator>\ntype TabsListProps = ComponentProps<typeof BaseTabs.List>\n\nconst tabsVariants = cva('', {\n compoundVariants: [\n {\n class:\n '[&_[role=presentation]]:bg-brand-default [&_[role=tab]]:data-active:text-brand-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-accent-default [&_[role=tab]]:data-active:text-accent-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-neutral-default [&_[role=tab]]:data-active:text-neutral-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-error-default [&_[role=tab]]:data-active:text-error-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-info-default [&_[role=tab]]:data-active:text-info-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-success-default [&_[role=tab]]:data-active:text-success-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-warning-default [&_[role=tab]]:data-active:text-warning-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:border-brand-border [&_[role=presentation]]:bg-brand-container [&_[role=tab]]:data-active:text-brand-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-accent-border [&_[role=presentation]]:bg-accent-container [&_[role=tab]]:data-active:text-accent-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-neutral-border [&_[role=presentation]]:bg-neutral-container [&_[role=tab]]:data-active:text-neutral-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-error-border [&_[role=presentation]]:bg-error-container [&_[role=tab]]:data-active:text-error-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-info-border [&_[role=presentation]]:bg-info-container [&_[role=tab]]:data-active:text-info-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-success-border [&_[role=presentation]]:bg-success-container [&_[role=tab]]:data-active:text-success-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-warning-border [&_[role=presentation]]:bg-warning-container [&_[role=tab]]:data-active:text-warning-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:bg-brand-default [&_[role=tab]]:data-active:text-brand-default [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-accent-default [&_[role=tab]]:data-active:text-accent-default [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-neutral-default [&_[role=tab]]:data-active:text-neutral-default [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-error-default [&_[role=tab]]:data-active:text-error-default [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-info-default [&_[role=tab]]:data-active:text-info-default [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-success-default [&_[role=tab]]:data-active:text-success-default [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-warning-default [&_[role=tab]]:data-active:text-warning-default [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-lg [&_[role=tab]]:rounded-lg [&_[role=tablist]]:rounded-lg',\n size: 'small',\n variant: 'default',\n },\n {\n class:\n '[&_[role=tab]]:h-lg [&_[role=tab]]:px-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:gap-2xs [&_[role=tablist]]:p-3xs',\n size: 'small',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-xl [&_[role=tab]]:h-xl [&_[role=tab]]:rounded-xl [&_[role=tab]]:px-md [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:gap-xs [&_[role=tablist]]:rounded-xl [&_[role=tablist]]:p-2xs',\n size: 'medium',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-2xl [&_[role=tab]]:h-2xl [&_[role=tab]]:rounded-2xl [&_[role=tab]]:px-lg [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:gap-sm [&_[role=tablist]]:rounded-2xl [&_[role=tablist]]:p-xs',\n size: 'large',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-lg [&_[role=tab]]:h-lg [&_[role=tab]]:px-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:gap-2xs [&_[role=tablist]]:rounded-lg [&_[role=tablist]]:p-3xs',\n size: 'small',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-xl [&_[role=tab]]:h-xl [&_[role=tab]]:px-md [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:gap-xs [&_[role=tablist]]:rounded-xl [&_[role=tablist]]:p-2xs',\n size: 'medium',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-2xl [&_[role=tab]]:h-2xl [&_[role=tab]]:px-lg [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:gap-sm [&_[role=tablist]]:rounded-2xl [&_[role=tablist]]:p-xs',\n size: 'large',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=tab]]:px-lg [&_[role=tab]]:pb-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:h-lg [&_[role=tablist]]:gap-md [&_[role=tablist]]:border-b-2 **:[[role=presentation]]:bottom-[-3px] **:[[role=presentation]]:h-[2px]',\n size: 'small',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=tab]]:px-xl [&_[role=tab]]:pb-xs [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:h-xl [&_[role=tablist]]:gap-lg [&_[role=tablist]]:border-b-3 **:[[role=presentation]]:bottom-[-4px] **:[[role=presentation]]:h-[3px]',\n size: 'medium',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=tab]]:px-2xl [&_[role=tab]]:pb-2xs [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:h-2xl [&_[role=tablist]]:gap-xl [&_[role=tablist]]:border-b-4 **:[[role=presentation]]:bottom-[-5px] **:[[role=presentation]]:h-[4px]',\n size: 'large',\n variant: 'underline',\n },\n ],\n defaultVariants: {\n fill: true,\n size: 'medium',\n tone: 'brand',\n variant: 'default',\n },\n variants: {\n fill: {\n false: '[&_[role=tablist]]:w-fit',\n true: '[&_[role=tab]]:grow [&_[role=tablist]]:w-full',\n },\n size: {\n large: '',\n medium: '',\n small: '',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n default: 'space-y-xs [&_[role=presentation]]:top-1/2 [&_[role=tablist]]:bg-surface-low',\n ghost: 'space-y-2xs [&_[role=presentation]]:top-1/2 [&_[role=presentation]]:border',\n underline: 'space-y-xs [&_[role=tablist]]:border-border',\n },\n },\n})\n\ntype TabsProps = React.ComponentProps<typeof BaseTabs.Root> & VariantProps<typeof tabsVariants>\ntype TabsTabValue = TabsTabProps['value']\n\nexport type {\n TabsProps,\n TabsTabValue,\n TabsPanelProps,\n TabsTabProps,\n TabsIndicatorProps,\n TabsListProps,\n}\nexport { tabsVariants }\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsProps } from '.'\nimport { tabsVariants } from './tabs.types'\n\nexport function Tabs({ variant, size, tone, fill, className, ref, ...props }: TabsProps) {\n return (\n <SwitchTabs.Root\n className={cn(tabsVariants({ fill, size, tone, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsIndicatorProps } from './tabs.types'\n\nexport function TabsIndicator({ className, ...props }: TabsIndicatorProps) {\n return (\n <SwitchTabs.Indicator\n className={cn(\n 'absolute left-[0px] z-[-1] h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) -translate-y-1/2 transition-all duration-300',\n className,\n )}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsListProps } from './tabs.types'\n\nexport function TabsList({ className, ...props }: TabsListProps) {\n return <SwitchTabs.List className={cn('relative z-0 flex', className)} {...props} />\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsPanelProps } from './tabs.types'\n\nexport function TabsPanel({ className, ...props }: TabsPanelProps) {\n return (\n <SwitchTabs.Panel\n className={cn('relative flex grow items-center justify-start overflow-auto p-3xs', className)}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsTabProps } from './tabs.types'\n\nexport function TabsTab({ className, ...props }: TabsTabProps) {\n return (\n <SwitchTabs.Tab\n className={cn(\n 'inline-flex items-center justify-center gap-xs text-center break-keep whitespace-nowrap text-on-surface transition-colors duration-300 outline-none select-none hover:cursor-pointer focus-visible:relative focus-visible:before:absolute focus-visible:before:outline',\n className,\n )}\n {...props}\n />\n )\n}\n","import { Tabs as TabsRoot } from './tabs'\nimport { TabsIndicator } from './tabs-indicator'\nimport { TabsList } from './tabs-list'\nimport { TabsPanel } from './tabs-panel'\nimport { TabsTab } from './tabs-tab'\n\nconst Tabs = Object.assign(TabsRoot, {\n Indicator: TabsIndicator,\n List: TabsList,\n Panel: TabsPanel,\n Tab: TabsTab,\n})\n\nexport type {\n TabsIndicatorProps,\n TabsListProps,\n TabsPanelProps,\n TabsProps,\n TabsTabProps,\n TabsTabValue,\n} from './tabs.types'\nexport { TabsIndicator } from './tabs-indicator'\nexport { TabsList } from './tabs-list'\nexport { TabsPanel } from './tabs-panel'\nexport { TabsTab } from './tabs-tab'\n\nexport { Tabs }\n","import { cn } from '@/utils/cn'\n\nimport { Tabs, TabsIndicator, TabsList, TabsTab } from '../tabs'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockTabsProps } from './code-block.types'\n\nexport function CodeBlockTabs({ className, children, ref, ...props }: CodeBlockTabsProps) {\n const { currentValue, items, setCurrentValue } = useCodeBlock(),\n handleOnValueChange = (value: string) => {\n const selectedValue = items.find((item) => item.id === value)\n if (selectedValue) {\n setCurrentValue(selectedValue)\n }\n }\n\n return (\n <Tabs\n value={currentValue.id}\n onValueChange={handleOnValueChange}\n className={cn('', className)}\n variant=\"ghost\"\n ref={ref}\n {...props}\n >\n <TabsList>\n {items.map(({ id, label }) => (\n <TabsTab key={id} value={id}>\n {label}\n </TabsTab>\n ))}\n <TabsIndicator />\n </TabsList>\n {children}\n </Tabs>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockWindowProps } from './code-block.types'\n\nexport function CodeBlockWindow({ className, children, ref, ...props }: CodeBlockWindowProps) {\n const { currentValue } = useCodeBlock()\n\n return (\n <div\n className={cn('relative overflow-auto rounded-lg px-md py-sm', className)}\n ref={ref}\n {...props}\n >\n {children}\n <div dangerouslySetInnerHTML={{ __html: currentValue.content }} />\n </div>\n )\n}\n","import { CodeBlock as CodeBlockRoot } from './code-block'\nimport { CodeBlockActions } from './code-block-actions'\nimport { CodeBlockCopy } from './code-block-copy'\nimport { CodeBlockDownload } from './code-block-download'\nimport { CodeBlockHeader } from './code-block-header'\nimport { CodeBlockName } from './code-block-name'\nimport { CodeBlockSelect } from './code-block-select'\nimport { CodeBlockTabs } from './code-block-tabs'\nimport { CodeBlockWindow } from './code-block-window'\n\nconst CodeBlock = Object.assign(CodeBlockRoot, {\n Actions: CodeBlockActions,\n Copy: CodeBlockCopy,\n Download: CodeBlockDownload,\n Header: CodeBlockHeader,\n Name: CodeBlockName,\n Select: CodeBlockSelect,\n Tabs: CodeBlockTabs,\n Window: CodeBlockWindow,\n})\n\nexport type {\n CodeBlockProps,\n CodeBlockActionsProps,\n CodeBlockCopyProps,\n CodeBlockDownloadProps,\n CodeBlockHeaderGroupProps,\n CodeBlockNameProps,\n CodeBlockProviderState,\n CodeBlockSelectProps,\n CodeBlockTabsProps,\n CodeBlockWindowProps,\n CodeBlockValue,\n} from './code-block.types'\nexport { CodeBlockActions } from './code-block-actions'\nexport { CodeBlockCopy } from './code-block-copy'\nexport { CodeBlockDownload } from './code-block-download'\nexport { CodeBlockHeader } from './code-block-header'\nexport { CodeBlockName } from './code-block-name'\nexport { CodeBlockSelect } from './code-block-select'\nexport { CodeBlockTabs } from './code-block-tabs'\nexport { CodeBlockWindow } from './code-block-window'\n\nexport { CodeBlock }\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CollapsibleProps } from './collapsible.types'\n\nexport function Collapsible({ className, ref, ...props }: CollapsibleProps) {\n return (\n <BaseCollapsible.Root\n className={cn('flex min-h-xl w-full flex-col justify-center gap-xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CollapsiblePanelProps } from './collapsible.types'\n\nexport function CollapsiblePanel({ className, ref, ...props }: CollapsiblePanelProps) {\n return (\n <BaseCollapsible.Panel\n className={cn(\n 'mb-3xs ml-md flex h-(--collapsible-panel-height) flex-col justify-end gap-3xs overflow-hidden border-l border-border-strong pl-sm transition-all duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 [&[hidden]:not([hidden=\"until-found\"])]:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\nimport { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { CollapsibleTriggerProps } from './collapsible.types'\n\nexport function CollapsibleTrigger({\n className,\n children,\n ref,\n ...props\n}: CollapsibleTriggerProps) {\n return (\n <BaseCollapsible.Trigger\n render={(renderProps) => (\n <Button\n {...renderProps}\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('group/trigger', className)}\n ref={ref}\n {...props}\n >\n {children}\n <CaretRightIcon\n weight=\"bold\"\n className=\"ml-auto transition-all ease-out group-data-panel-open/trigger:rotate-90\"\n />\n </Button>\n )}\n />\n )\n}\n","import { Collapsible as CollapsibleRoot } from './collapsible'\nimport { CollapsiblePanel } from './collapsible-panel'\nimport { CollapsibleTrigger } from './collapsible-trigger'\n\nconst Collapsible = Object.assign(CollapsibleRoot, {\n Panel: CollapsiblePanel,\n Trigger: CollapsibleTrigger,\n})\n\nexport type {\n CollapsibleProps,\n CollapsibleTriggerProps,\n CollapsiblePanelProps,\n} from './collapsible.types'\nexport { CollapsiblePanel } from './collapsible-panel'\nexport { CollapsibleTrigger } from './collapsible-trigger'\n\nexport { Collapsible }\n","import type { Slider as BaseSlider } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport type ColorChannelSliderProps = React.ComponentProps<typeof BaseSlider.Root> &\n VariantProps<typeof colorChannelSliderVariants> & {\n trackStyle: string[]\n }\n\nexport const colorChannelSliderVariants = cva('flex flex-col gap-xs', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large:\n \"[&_[data-slot='slider-thumb']]:size-lg [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-lg [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-md [&_[data-slot='slider-track'][data-orientation='vertical']]:w-xs\",\n medium:\n \"[&_[data-slot='slider-thumb']]:size-md [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-md [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-sm [&_[data-slot='slider-track'][data-orientation='vertical']]:w-2xs\",\n small:\n \"[&_[data-slot='slider-thumb']]:size-sm [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-sm [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-3xs\",\n },\n },\n})\n","import { Slider as BaseSlider } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { colorChannelSliderVariants } from './color-channel-slider.types'\nimport type { ColorChannelSliderProps } from './color-channel-slider.types'\n\nconst PRIMARY_THUMB_INDEX = 0\n\nexport function ColorChannelSlider({\n size,\n trackStyle,\n className,\n children,\n 'aria-label': ariaLabel = 'Color value',\n ref,\n ...props\n}: ColorChannelSliderProps) {\n const hasTransparency = trackStyle.some(\n (color: string) => color.includes('rgba') || color.includes('hsla') || color.includes('/'),\n ),\n baseGradient = `linear-gradient(to right, ${trackStyle.join(', ')})`,\n checkerboard =\n 'linear-gradient(45deg, #d4d4d8 25%, transparent 25%, transparent 75%, #d4d4d8 75%, #d4d4d8)'\n let backgroundImage = baseGradient,\n backgroundPosition = 'auto',\n backgroundSize = 'auto'\n if (hasTransparency) {\n backgroundImage = [baseGradient, checkerboard, checkerboard].join(', ')\n backgroundPosition = '0 0, 0 0, 5px 5px'\n backgroundSize = '100% 100%, 10px 10px, 10px 10px'\n }\n\n return (\n <BaseSlider.Root\n className={cn(colorChannelSliderVariants({ size }), className)}\n data-slot=\"slider-root\"\n thumbAlignment=\"edge\"\n ref={ref}\n {...props}\n >\n <BaseSlider.Control className=\"shrink-0 hover:cursor-pointer data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\">\n <BaseSlider.Track\n data-slot=\"slider-track\"\n className={cn('relative size-full rounded-full')}\n style={{\n backgroundColor: '#ffffff',\n backgroundImage,\n backgroundPosition,\n backgroundSize,\n }}\n >\n {children}\n <BaseSlider.Indicator data-slot=\"slider-indicator\" className=\"rounded-full\" />\n <BaseSlider.Thumb\n data-slot=\"slider-thumb\"\n aria-label={ariaLabel}\n className={cn(\n 'absolute aspect-square rounded-full border-white shadow-xs transition-[width,height,opacity] data-dragging:cursor-grabbing hover:[&:not([data-dragging])]:cursor-pointer',\n )}\n render={(thumbProps, state) => (\n <div\n {...thumbProps}\n style={{\n ...thumbProps.style,\n backgroundColor: trackStyle[state.values[PRIMARY_THUMB_INDEX]],\n }}\n />\n )}\n />\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n )\n}\n","import chroma from 'chroma-js'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { ColorChannelSlider } from '../color-channel-slider'\nimport type { InputGroup } from '../input-group'\nimport type { SelectTrigger } from '../select'\n\ninterface ColorPickerContextType {\n color: chroma.Color\n setColor: (color: chroma.Color) => void\n hue: number\n saturation: number\n value: number\n alpha: number\n setHue: (hue: number) => void\n setSaturation: (saturation: number) => void\n setValue: (value: number) => void\n setSaturationValue: (saturation: number, value: number) => void\n setAlpha: (alpha: number) => void\n setLightness: (lightness: number) => void\n valueType: ValueType\n setValueType: (valueType: ValueType) => void\n palette: chroma.Color[]\n setPalette: (palette: chroma.Color[]) => void\n addPaletteColor: (color: chroma.Color) => void\n paletteLimit?: number\n}\n\ninterface ColorPickerState {\n hue: number\n saturation: number\n value: number\n alpha: number\n valueType: ValueType\n palette: chroma.Color[]\n}\n\ntype ColorPickerAction =\n | { type: 'set_color'; color: chroma.Color }\n | { type: 'set_hue'; hue: number }\n | { type: 'set_saturation'; saturation: number }\n | { type: 'set_value'; value: number }\n | { type: 'set_saturation_value'; saturation: number; value: number }\n | { type: 'set_alpha'; alpha: number }\n | { type: 'set_lightness'; lightness: number }\n | { type: 'set_value_type'; valueType: ValueType }\n | { type: 'set_palette'; palette: chroma.Color[] }\n | { type: 'add_palette_color'; color: chroma.Color }\n\ntype ColorPickerProps = React.ComponentProps<'div'> &\n VariantProps<typeof colorPickerVariants> & {\n value?: string\n onValueChange?: (color: string) => void\n defaultColor?: string\n palette?: string[]\n defaultPalette?: string[]\n onPaletteChange?: (palette: string[]) => void\n paletteLimit?: number\n defaultValueType?: ValueTypeValue\n }\n\nconst colorPickerVariants = cva('flex flex-col space-y-sm', {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'rounded-xl bg-surface p-md shadow-2xs',\n ghost: '',\n outline: 'rounded-xl border border-border p-md',\n },\n },\n }),\n colorPickerSwatchVariants = cva(\n 'overflow-hidden border border-border hover:cursor-pointer focus:outline-2 focus:outline-offset-2',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'size-lg rounded-xl',\n medium: 'size-md rounded-lg',\n small: 'size-sm rounded-md',\n },\n },\n },\n ),\n RGB_CHANNEL_COUNT = 3,\n DECIMAL_RADIX = 10,\n VALUE_TYPES: ValueType[] = [\n {\n getValue: (color: chroma.Color) => color.rgb(),\n label: 'RGB',\n parseValue: (value: string) => {\n const rgbChannels = value\n .split(',')\n .map((channelText) => parseInt(channelText.trim(), DECIMAL_RADIX))\n if (\n rgbChannels.length === RGB_CHANNEL_COUNT &&\n rgbChannels.every((channel) => !Number.isNaN(channel))\n ) {\n const [red, green, blue] = rgbChannels\n return chroma.rgb(red, green, blue)\n }\n return undefined\n },\n value: 'rgb',\n },\n {\n getValue: (color: chroma.Color) => color.css(),\n label: 'CSS',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'css',\n },\n {\n getValue: (color: chroma.Color) => color.hex('rgb'),\n label: 'HEX',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hex',\n },\n {\n getValue: (color: chroma.Color) => color.hsl(),\n label: 'HSL',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hsl',\n },\n {\n getValue: (color: chroma.Color) => color.hsv(),\n label: 'HSV',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hsv',\n },\n ]\ninterface ValueType {\n label: string\n value: string\n getValue: (color: chroma.Color) => string | number[]\n parseValue: (value: string) => chroma.Color | undefined\n}\n\ntype ValueTypeValue = 'rgb' | 'css' | 'hex' | 'hsl' | 'hsv'\n\ntype ColorPickerInputProps = React.ComponentProps<typeof InputGroup> & {\n showPopover?: boolean\n showTransparencyField?: boolean\n}\ntype ColorPickerAreaProps = React.ComponentProps<'div'>\ntype ColorPickerHueSliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerLightnessSliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerTransparencySliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerValueTypeProps = React.ComponentProps<typeof SelectTrigger>\ntype ColorPickerRowProps = React.ComponentProps<'div'>\ntype ColorPickerGroupProps = React.ComponentProps<'div'>\ntype ColorPickerLabelProps = React.ComponentProps<'span'>\ntype ColorPickerPaletteListChild = (props: { color: string; index: number }) => React.ReactNode\n\ntype ColorPickerPaletteListProps = React.ComponentProps<'div'>\ntype ColorPickerPaletteSwatchProps = Omit<React.ComponentProps<'button'>, 'color'> &\n VariantProps<typeof colorPickerSwatchVariants> & {\n color: string\n }\ntype ColorPickerPaletteAddProps = React.ComponentProps<'button'>\ntype ColorPickerPaletteLimitProps = React.ComponentProps<'span'>\n\nexport type {\n ColorPickerContextType,\n ColorPickerState,\n ColorPickerAction,\n ColorPickerProps,\n ValueType,\n ValueTypeValue,\n ColorPickerInputProps,\n ColorPickerAreaProps,\n ColorPickerHueSliderProps,\n ColorPickerLightnessSliderProps,\n ColorPickerTransparencySliderProps,\n ColorPickerValueTypeProps,\n ColorPickerRowProps,\n ColorPickerGroupProps,\n ColorPickerLabelProps,\n ColorPickerPaletteListChild,\n ColorPickerPaletteListProps,\n ColorPickerPaletteSwatchProps,\n ColorPickerPaletteAddProps,\n ColorPickerPaletteLimitProps,\n}\nexport { colorPickerVariants, colorPickerSwatchVariants, VALUE_TYPES }\n","import chroma from 'chroma-js'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { colorPickerVariants, VALUE_TYPES } from './color-picker.types'\nimport type {\n ColorPickerAction,\n ColorPickerContextType,\n ColorPickerProps,\n ColorPickerState,\n} from './color-picker.types'\n\nconst MIN_COLOR_CHANNEL = 0,\n FIRST_VALUE_TYPE_INDEX = 0,\n ColorPickerContext = React.createContext<ColorPickerContextType | undefined>(undefined),\n normalizeToColor = (value: string | chroma.Color, fallback: chroma.Color): chroma.Color => {\n try {\n if (typeof value === 'string') {\n return chroma(value.trim())\n }\n\n return chroma(value)\n } catch {\n return fallback\n }\n },\n getValidChannel = (channel: number | undefined, fallback: number): number => {\n if (channel === undefined || Number.isNaN(channel)) {\n return fallback\n }\n return channel\n },\n updateColorState = (\n { saturation: previousSaturation, ...state }: ColorPickerState,\n color: chroma.Color,\n ): ColorPickerState => {\n const [nextHue, nextSaturation, nextValue] = color.hsv()\n let saturation = previousSaturation\n if (nextValue !== MIN_COLOR_CHANNEL) {\n saturation = getValidChannel(nextSaturation, previousSaturation)\n }\n\n return {\n ...state,\n alpha: color.alpha(),\n hue: getValidChannel(nextHue, state.hue),\n saturation,\n value: nextValue,\n }\n },\n updateSimpleState = (state: ColorPickerState, action: ColorPickerAction): ColorPickerState => {\n switch (action.type) {\n case 'set_hue': {\n return { ...state, hue: action.hue }\n }\n case 'set_saturation': {\n return { ...state, saturation: action.saturation }\n }\n case 'set_value': {\n return { ...state, value: action.value }\n }\n case 'set_saturation_value': {\n return { ...state, saturation: action.saturation, value: action.value }\n }\n case 'set_alpha': {\n return { ...state, alpha: action.alpha }\n }\n case 'set_lightness': {\n return { ...state, value: action.lightness }\n }\n case 'set_value_type': {\n return { ...state, valueType: action.valueType }\n }\n default: {\n return state\n }\n }\n },\n colorPickerReducer = (state: ColorPickerState, action: ColorPickerAction): ColorPickerState => {\n switch (action.type) {\n case 'set_color': {\n return updateColorState(state, action.color)\n }\n case 'set_palette': {\n return { ...state, palette: action.palette }\n }\n case 'add_palette_color': {\n return { ...state, palette: [...state.palette, action.color] }\n }\n default: {\n return updateSimpleState(state, action)\n }\n }\n }\n\nfunction ColorPicker({\n variant,\n value: controlledValue,\n defaultColor,\n palette: controlledPalette,\n defaultPalette,\n onPaletteChange,\n paletteLimit,\n defaultValueType,\n onValueChange,\n className,\n ref,\n ...props\n}: ColorPickerProps) {\n const [state, dispatch] = React.useReducer(\n colorPickerReducer,\n { controlledPalette, controlledValue, defaultColor, defaultPalette, defaultValueType },\n ({\n controlledValue: initialControlledValue,\n controlledPalette: initialControlledPalette,\n defaultColor: initialDefaultColor,\n defaultPalette: initialDefaultPalette,\n defaultValueType: initialDefaultValueType,\n }): ColorPickerState => {\n const initialColor = normalizeToColor(\n initialControlledValue ?? initialDefaultColor ?? '#ffffff',\n chroma('#ffffff'),\n ),\n [initialHue, initialSaturation, initialValue] = initialColor.hsv()\n\n return {\n alpha: initialColor.alpha(),\n hue: getValidChannel(initialHue, MIN_COLOR_CHANNEL),\n palette: (initialControlledPalette ?? initialDefaultPalette ?? []).map((colorOption) =>\n chroma(colorOption),\n ),\n saturation: getValidChannel(initialSaturation, MIN_COLOR_CHANNEL),\n value: initialValue,\n valueType:\n VALUE_TYPES.find((typeOption) => typeOption.value === initialDefaultValueType) ??\n VALUE_TYPES[FIRST_VALUE_TYPE_INDEX],\n }\n },\n ),\n {\n hue: internalHue,\n saturation: internalSaturation,\n value: internalValue,\n alpha: internalAlpha,\n valueType,\n palette,\n } = state,\n color = chroma.hsv(internalHue, internalSaturation, internalValue).alpha(internalAlpha),\n hue = internalHue,\n saturation = internalSaturation,\n value = internalValue,\n alpha = internalAlpha,\n lastSyncedColorRef = React.useRef<string | undefined>(undefined),\n lastSyncedPaletteRef = React.useRef<string | undefined>(undefined),\n setColor = (nextColor: chroma.Color) => {\n dispatch({ color: nextColor, type: 'set_color' })\n onValueChange?.(nextColor.hex())\n },\n setHue = (nextHue: number) => {\n dispatch({ hue: nextHue, type: 'set_hue' })\n onValueChange?.(chroma.hsv(nextHue, saturation, value).alpha(alpha).hex())\n },\n setSaturation = (nextSaturation: number) => {\n dispatch({ saturation: nextSaturation, type: 'set_saturation' })\n onValueChange?.(chroma.hsv(hue, nextSaturation, value).alpha(alpha).hex())\n },\n setValue = (nextValue: number) => {\n dispatch({ type: 'set_value', value: nextValue })\n onValueChange?.(chroma.hsv(hue, saturation, nextValue).alpha(alpha).hex())\n },\n setSaturationValue = (nextSaturation: number, nextValue: number) => {\n dispatch({ saturation: nextSaturation, type: 'set_saturation_value', value: nextValue })\n onValueChange?.(chroma.hsv(hue, nextSaturation, nextValue).alpha(alpha).hex())\n },\n setAlpha = (nextAlpha: number) => setColor(color.alpha(nextAlpha)),\n setLightness = (nextLightness: number) => setColor(color.set('hsl.l', nextLightness)),\n setValueType = (nextValueType: ColorPickerState['valueType']) =>\n dispatch({ type: 'set_value_type', valueType: nextValueType }),\n setPalette = (nextPalette: chroma.Color[]) => {\n lastSyncedPaletteRef.current = nextPalette\n .map((paletteColor) => paletteColor.hex('rgba'))\n .join('|')\n dispatch({ palette: nextPalette, type: 'set_palette' })\n onPaletteChange?.(nextPalette.map((paletteColor) => paletteColor.hex()))\n },\n addPaletteColor = (nextColor: chroma.Color) => {\n if (paletteLimit && palette.length >= paletteLimit) {\n return\n }\n\n const nextPalette = [...palette, nextColor]\n lastSyncedPaletteRef.current = nextPalette\n .map((paletteColor) => paletteColor.hex('rgba'))\n .join('|')\n dispatch({ color: nextColor, type: 'add_palette_color' })\n onPaletteChange?.(nextPalette.map((paletteColor) => paletteColor.hex()))\n }\n\n React.useEffect(() => {\n if (controlledValue === undefined) {\n return\n }\n\n const nextColor = normalizeToColor(controlledValue, color),\n nextKey = nextColor.hex('rgba')\n\n if (nextKey === lastSyncedColorRef.current) {\n return\n }\n\n lastSyncedColorRef.current = nextKey\n\n if (nextKey !== color.hex('rgba')) {\n dispatch({ color: nextColor, type: 'set_color' })\n }\n }, [controlledValue, color])\n\n React.useEffect(() => {\n if (controlledPalette === undefined) {\n return\n }\n\n const parsedPalette = controlledPalette.map((colorOption) => chroma(colorOption)),\n nextKey = parsedPalette.map((paletteColor) => paletteColor.hex('rgba')).join('|')\n\n if (nextKey === lastSyncedPaletteRef.current) {\n return\n }\n\n lastSyncedPaletteRef.current = nextKey\n dispatch({ palette: parsedPalette, type: 'set_palette' })\n }, [controlledPalette])\n\n return (\n <ColorPickerContext.Provider\n value={{\n addPaletteColor,\n alpha,\n color,\n hue,\n palette,\n paletteLimit,\n saturation,\n setAlpha,\n setColor,\n setHue,\n setLightness,\n setPalette,\n setSaturation,\n setSaturationValue,\n setValue,\n setValueType,\n value,\n valueType,\n }}\n >\n <div className={cn(colorPickerVariants({ variant }), className)} ref={ref} {...props} />\n </ColorPickerContext.Provider>\n )\n}\n\nfunction useColorPicker() {\n const context = React.useContext(ColorPickerContext)\n\n if (!context) {\n throw new Error('useColorPicker must be used within a ColorPicker')\n }\n\n return context\n}\n\nexport { ColorPicker, useColorPicker }\n","import chroma from 'chroma-js'\n\nimport { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerAreaProps } from './color-picker.types'\n\nconst PERCENTAGE_SCALE = 100,\n MIN_NORMALIZED_VALUE = 0,\n MAX_NORMALIZED_VALUE = 1\n\nexport function ColorPickerArea({ className, ref, ...props }: ColorPickerAreaProps) {\n const { color, hue, saturation, value, setSaturationValue } = useColorPicker(),\n hueColor = chroma.hsv(hue, MAX_NORMALIZED_VALUE, MAX_NORMALIZED_VALUE).hex(),\n updateColor = (event: React.PointerEvent<HTMLDivElement>) => {\n const bounds = event.currentTarget.getBoundingClientRect(),\n nextSaturation = Math.min(\n Math.max((event.clientX - bounds.left) / bounds.width, MIN_NORMALIZED_VALUE),\n MAX_NORMALIZED_VALUE,\n ),\n nextValue = Math.min(\n Math.max(\n MAX_NORMALIZED_VALUE - (event.clientY - bounds.top) / bounds.height,\n MIN_NORMALIZED_VALUE,\n ),\n MAX_NORMALIZED_VALUE,\n )\n\n setSaturationValue(nextSaturation, nextValue)\n },\n handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n event.currentTarget.setPointerCapture(event.pointerId)\n updateColor(event)\n }\n\n return (\n <div\n {...props}\n ref={ref}\n className={cn(\n 'relative aspect-square grow touch-none rounded-lg active:cursor-grabbing',\n className,\n )}\n style={{\n background: `\n linear-gradient(to top, black, transparent),\n linear-gradient(to right, white, ${hueColor})\n `,\n ...props.style,\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n updateColor(event)\n }\n }}\n >\n <div\n className=\"pointer-events-none absolute size-md -translate-x-1/2 -translate-y-1/2 rounded-full border-3 border-white\"\n style={{\n backgroundColor: color.hex(),\n left: `${saturation * PERCENTAGE_SCALE}%`,\n top: `${(MAX_NORMALIZED_VALUE - value) * PERCENTAGE_SCALE}%`,\n }}\n />\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerGroupProps } from './color-picker.types'\n\nexport function ColorPickerGroup({ className, ref, ...props }: ColorPickerGroupProps) {\n return <div className={cn('flex flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import chroma from 'chroma-js'\n\nconst HSL_SATURATION = 1,\n HSL_LIGHTNESS = 0.5,\n HUE_TRACK_LENGTH = 361,\n SATURATION_TRACK_LENGTH = 101,\n LIGHTNESS_TRACK_LENGTH = 101,\n TRANSPARENCY_TRACK_LENGTH = 101,\n TRACK_DIVISIONS = 100,\n getHueTrack = () =>\n Array.from({ length: HUE_TRACK_LENGTH }, (_value, hue) =>\n chroma.hsl(hue, HSL_SATURATION, HSL_LIGHTNESS).hex(),\n ),\n getTransparencyTrack = (baseColor: string) =>\n Array.from({ length: TRANSPARENCY_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .alpha(index / TRACK_DIVISIONS)\n .css(),\n ),\n getSaturationTrack = (baseColor: string) =>\n Array.from({ length: SATURATION_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .set('hsl.s', index / TRACK_DIVISIONS)\n .css(),\n ),\n getLightnessTrack = (baseColor: string) =>\n Array.from({ length: LIGHTNESS_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .set('hsl.l', index / TRACK_DIVISIONS)\n .css(),\n )\n\nexport { getHueTrack, getTransparencyTrack, getSaturationTrack, getLightnessTrack }\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getHueTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerHueSliderProps } from './color-picker.types'\n\nconst HUE_VALUE_INDEX = 0\n\nexport function ColorPickerHueSlider({ className, ref, ...props }: ColorPickerHueSliderProps) {\n const { hue, setHue } = useColorPicker(),\n handleChange = (value: number | readonly number[]) => {\n if (typeof value === 'number') {\n setHue(value)\n return\n }\n\n setHue(value[HUE_VALUE_INDEX])\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Hue\"\n {...props}\n min={0}\n max={360}\n value={hue}\n onValueChange={handleChange}\n trackStyle={getHueTrack()}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { inputVariants } from '../input/input.types'\nimport type { InputGroupProps } from './input-group.types'\n\nexport function InputGroup({ variant, size, className, ref, ...props }: InputGroupProps) {\n return <div className={cn(inputVariants({ size, variant }), className)} ref={ref} {...props} />\n}\n","import type { Input as BaseInput } from '@base-ui/react/input'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { inputVariants } from '../input/input.types'\nimport type { Separator } from '../separator'\n\nconst inputGroupAddonVariants = cva(\n 'inline-flex items-center gap-2xs text-on-surface-variant not-first:pl-2xs group-aria-invalid:text-error-on-container',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1 [&>svg]:size-md',\n medium: 'style-text-default-0 [&>svg]:size-sm',\n small: 'style-text-default--1 [&>svg]:size-xs',\n },\n },\n },\n)\n\ntype InputGroupAddonProps = React.ComponentProps<'div'> &\n VariantProps<typeof inputGroupAddonVariants>\ntype InputGroupInputProps = Omit<React.ComponentProps<typeof BaseInput>, 'size'> &\n VariantProps<typeof inputVariants>\ntype InputGroupProps = React.ComponentProps<'div'> & VariantProps<typeof inputVariants>\ntype InputGroupSeparatorProps = React.ComponentProps<typeof Separator>\n\nexport type {\n InputGroupAddonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupSeparatorProps,\n}\nexport { inputGroupAddonVariants }\n","import { cn } from '@/utils/cn'\n\nimport { inputGroupAddonVariants } from './input-group.types'\nimport type { InputGroupAddonProps } from './input-group.types'\n\nexport function InputGroupAddon({ size, className, ref, ...props }: InputGroupAddonProps) {\n return <div className={cn(inputGroupAddonVariants({ size }), className)} ref={ref} {...props} />\n}\n","import { Input as BaseInput } from '@base-ui/react/input'\nimport { useRef, useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputGroupInputProps } from './input-group.types'\n\nconst DEFAULT_COLOR = '#000000'\n\nfunction getStringValue(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value\n }\n return undefined\n}\n\nfunction getColorValue(\n isControlled: boolean,\n controlledValue: unknown,\n uncontrolledValue: string,\n): string {\n if (isControlled) {\n return getStringValue(controlledValue) || DEFAULT_COLOR\n }\n return uncontrolledValue || DEFAULT_COLOR\n}\n\nfunction getColorInputProps(isControlled: boolean, colorValue: string) {\n if (isControlled) {\n return { value: colorValue }\n }\n return { defaultValue: colorValue }\n}\n\nexport function InputGroupInput({\n size = 'medium',\n className,\n ref,\n ...props\n}: InputGroupInputProps) {\n const inputRef = useRef<HTMLInputElement>(null),\n [uncontrolledColorValue, setUncontrolledColorValue] = useState<string>(\n getStringValue(props.defaultValue) || getStringValue(props.value) || DEFAULT_COLOR,\n )\n\n if (props.type === 'color') {\n const isControlled = props.value !== undefined,\n colorValue = getColorValue(isControlled, props.value, uncontrolledColorValue),\n { onChange, defaultValue: _defaultValue, value: _value, ...colorProps } = props,\n handleColorChange: NonNullable<typeof onChange> = (event) => {\n if (!isControlled) {\n setUncontrolledColorValue(event.currentTarget.value)\n }\n\n onChange?.(event)\n },\n handleColorRef = (node: HTMLInputElement | null) => {\n inputRef.current = node\n\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: node })\n }\n }\n\n return (\n <button\n aria-label=\"Open color picker\"\n className={cn(\n 'relative flex size-full items-center justify-start hover:cursor-pointer',\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'absolute top-1/2 left-0 aspect-square h-7/12 -translate-y-1/2',\n size === 'small' && 'rounded-md',\n size === 'medium' && 'rounded-lg',\n size === 'large' && 'rounded-xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute top-lg\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n <p\n className={cn(\n 'text-left',\n size === 'small' && 'pr-xs pl-lg style-text-default--1',\n size === 'medium' && 'pl-[calc(var(--dawn-spacing-lg)+6px)] style-text-default-0',\n size === 'large' && 'pl-2xl style-text-default-1',\n )}\n >\n {colorValue}\n </p>\n </button>\n )\n }\n\n return (\n <BaseInput\n className={cn(\n 'w-full grow text-ellipsis outline-none placeholder:opacity-60 disabled:cursor-not-allowed',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Separator as BaseSeparator } from '@base-ui/react/separator'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const separatorVariants = cva('relative shrink-0 rounded-full', {\n compoundVariants: [\n {\n className: 'h-[8px]',\n orientation: 'horizontal',\n weight: 'thick',\n },\n {\n className: 'h-[4px]',\n orientation: 'horizontal',\n weight: 'medium',\n },\n {\n className: 'h-[2px]',\n orientation: 'horizontal',\n weight: 'thin',\n },\n {\n className: 'h-px',\n orientation: 'horizontal',\n weight: 'thinnest',\n },\n {\n className: 'w-[8px]',\n orientation: 'vertical',\n weight: 'thick',\n },\n {\n className: 'w-[4px]',\n orientation: 'vertical',\n weight: 'medium',\n },\n {\n className: 'w-[2px]',\n orientation: 'vertical',\n weight: 'thin',\n },\n {\n className: 'w-px',\n orientation: 'vertical',\n weight: 'thinnest',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n style: 'rounded',\n variant: 'default',\n weight: 'thinnest',\n },\n variants: {\n orientation: {\n horizontal: 'w-full',\n vertical: 'h-full',\n },\n style: {\n rounded: 'rounded-full',\n square: 'rounded-none',\n },\n variant: {\n default: 'bg-neutral-border',\n strong: 'bg-neutral-border-strong',\n },\n weight: {\n medium: '[&_[data-label]]:style-text-prose--1',\n thick: '[&_[data-label]]:style-text-prose-0',\n thin: '[&_[data-label]]:style-text-prose--2',\n thinnest: '[&_[data-label]]:style-text-prose--2',\n },\n },\n})\n\nexport type SeparatorProps = Omit<React.ComponentProps<typeof BaseSeparator>, 'style'> &\n VariantProps<typeof separatorVariants> & {\n labelClassName?: string\n }\n","import { Separator as BaseSeparator } from '@base-ui/react/separator'\n\nimport { cn } from '@/utils/cn'\n\nimport { separatorVariants } from './separator.types'\nimport type { SeparatorProps } from './separator.types'\n\nexport function Separator({\n orientation,\n weight,\n style,\n variant,\n children,\n className,\n labelClassName,\n ref,\n ...props\n}: SeparatorProps) {\n return (\n <BaseSeparator\n className={cn(\n 'relative',\n separatorVariants({ orientation, style, variant, weight }),\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n <span\n data-label\n className={cn(\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-surface-background px-2xs whitespace-nowrap text-on-surface-variant',\n labelClassName,\n )}\n >\n {children}\n </span>\n </BaseSeparator>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Separator } from '../separator'\nimport type { InputGroupSeparatorProps } from './input-group.types'\n\nexport function InputGroupSeparator({ className, ref, ...props }: InputGroupSeparatorProps) {\n return <Separator className={cn('h-2/4', className)} ref={ref} {...props} />\n}\n","import { InputGroup as InputGroupRoot } from './input-group'\nimport { InputGroupAddon } from './input-group-addon'\nimport { InputGroupInput } from './input-group-input'\nimport { InputGroupSeparator } from './input-group-separator'\n\nconst InputGroup = Object.assign(InputGroupRoot, {\n Addon: InputGroupAddon,\n Input: InputGroupInput,\n Separator: InputGroupSeparator,\n})\n\nexport type {\n InputGroupAddonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupSeparatorProps,\n} from './input-group.types'\nexport { InputGroupAddon } from './input-group-addon'\nexport { InputGroupInput } from './input-group-input'\nexport { InputGroupSeparator } from './input-group-separator'\n\nexport { InputGroup }\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport type { PopoverProps } from './popover.types'\n\nexport function Popover({ ...props }: PopoverProps) {\n return <BasePopover.Root {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { PopoverButtonProps } from './popover.types'\n\nexport function PopoverButton({\n variant,\n tone,\n className,\n children,\n ref,\n ...props\n}: PopoverButtonProps) {\n if (variant === 'ghost' && tone === 'neutral') {\n return (\n <Button\n variant={variant}\n tone={tone}\n className={cn('hover:bg-neutral-container-high!', className)}\n ref={ref}\n {...props}\n >\n {children}\n </Button>\n )\n }\n\n return (\n <Button variant={variant} tone={tone} className={cn('', className)} ref={ref} {...props}>\n {children}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { PopoverContentProps } from './popover.types'\n\nexport function PopoverContent({ className, ref, ...props }: PopoverContentProps) {\n return <div className={cn('space-y-3xs', className)} ref={ref} {...props} />\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverDescriptionProps } from './popover.types'\n\nexport function PopoverDescription({ className, ref, ...props }: PopoverDescriptionProps) {\n return (\n <BasePopover.Description\n className={cn('style-text-prose--1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { PopoverHeaderProps } from './popover.types'\n\nexport function PopoverHeader({ className, ref, ...props }: PopoverHeaderProps) {\n return <div className={cn('flex flex-col pb-xs', className)} ref={ref} {...props} />\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Button } from '..'\n\nconst popoverPanelVariants = cva(\n 'relative z-99 h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) overflow-hidden rounded-2xl text-on-surface transition-[width,height,opacity,scale] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:scale-90 data-ending-style:opacity-0 data-instant:transition-none data-starting-style:scale-90 data-starting-style:opacity-0',\n {\n defaultVariants: {\n elevation: 'medium',\n },\n variants: {\n elevation: {\n high: 'bg-surface-3 shadow-lg',\n low: 'bg-surface shadow-sm',\n medium: 'bg-surface-2 shadow-md',\n },\n },\n },\n ),\n popoverHandle = BasePopover.createHandle<React.ComponentType>()\n\ntype PopoverProps = React.ComponentProps<typeof BasePopover.Root>\ntype PopoverTriggerProps = React.ComponentProps<typeof BasePopover.Trigger>\ntype PopoverPanelProps = React.ComponentProps<typeof BasePopover.Positioner> &\n VariantProps<typeof popoverPanelVariants>\ntype PopoverTitleProps = React.ComponentProps<typeof BasePopover.Title>\ntype PopoverDescriptionProps = React.ComponentProps<typeof BasePopover.Description>\ntype PopoverHeaderProps = React.ComponentProps<'div'>\ntype PopoverContentProps = React.ComponentProps<'div'>\ntype PopoverButtonProps = React.ComponentProps<typeof Button>\n\nexport type {\n PopoverProps,\n PopoverTriggerProps,\n PopoverPanelProps,\n PopoverTitleProps,\n PopoverDescriptionProps,\n PopoverHeaderProps,\n PopoverContentProps,\n PopoverButtonProps,\n}\nexport { popoverHandle, popoverPanelVariants }\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '../../utils/cn'\nimport { popoverPanelVariants } from './popover.types'\nimport type { PopoverPanelProps } from './popover.types'\n\nexport function PopoverPanel({ elevation, className, ref, children, ...props }: PopoverPanelProps) {\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner\n className={cn(\n 'h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none',\n )}\n ref={ref}\n sideOffset={8}\n {...props}\n >\n <BasePopover.Popup className={popoverPanelVariants({ className, elevation })}>\n <BasePopover.Arrow className=\"flex transition-[left] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180\" />\n <BasePopover.Viewport\n className={cn(\n \"relative h-(--popup-height,auto) w-(--popup-width,auto) max-w-full overflow-clip p-[1rem] transition-[width,height] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] **:data-current:w-[calc(var(--popup-width)-2rem)] **:data-current:translate-x-0 **:data-current:opacity-100 **:data-current:transition-[translate,opacity] **:data-current:duration-[350ms,175ms] **:data-current:ease-[cubic-bezier(0.22,1,0.36,1)] **:data-previous:w-[calc(var(--popup-width)-2rem)] **:data-previous:translate-x-0 **:data-previous:opacity-100 **:data-previous:transition-[translate,opacity] **:data-previous:duration-[350ms,175ms] **:data-previous:ease-[cubic-bezier(0.22,1,0.36,1)] **:data-[activation-direction~='left']:data-previous:data-ending-style:translate-x-1/2 **:data-[activation-direction~='left']:data-previous:data-ending-style:opacity-0 **:data-[activation-direction~='left']:data-current:data-starting-style:-translate-x-1/2 **:data-[activation-direction~='left']:data-current:data-starting-style:opacity-0 **:data-[activation-direction~='right']:data-previous:data-ending-style:-translate-x-1/2 **:data-[activation-direction~='right']:data-previous:data-ending-style:opacity-0 **:data-[activation-direction~='right']:data-current:data-starting-style:translate-x-1/2 **:data-[activation-direction~='right']:data-current:data-starting-style:opacity-0\",\n className,\n )}\n >\n {children}\n </BasePopover.Viewport>\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n )\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverTitleProps } from './popover.types'\n\nexport function PopoverTitle({ className, ref, ...props }: PopoverTitleProps) {\n return (\n <BasePopover.Title\n className={cn('flex items-center gap-2xs style-text-strong-0 [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverTriggerProps } from './popover.types'\n\nexport function PopoverTrigger({ className, children, ref, ...props }: PopoverTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BasePopover.Trigger className={cn('px-xs', className)} ref={ref} render={render} {...props} />\n )\n}\n","import { Popover as PopoverRoot } from './popover'\nimport { PopoverButton } from './popover-button'\nimport { PopoverContent } from './popover-content'\nimport { PopoverDescription } from './popover-description'\nimport { PopoverHeader } from './popover-header'\nimport { PopoverPanel } from './popover-panel'\nimport { PopoverTitle } from './popover-title'\nimport { PopoverTrigger } from './popover-trigger'\n\nconst Popover = Object.assign(PopoverRoot, {\n Button: PopoverButton,\n Content: PopoverContent,\n Description: PopoverDescription,\n Header: PopoverHeader,\n Panel: PopoverPanel,\n Title: PopoverTitle,\n Trigger: PopoverTrigger,\n})\n\nexport type {\n PopoverButtonProps,\n PopoverContentProps,\n PopoverDescriptionProps,\n PopoverHeaderProps,\n PopoverPanelProps,\n PopoverProps,\n PopoverTitleProps,\n PopoverTriggerProps,\n} from './popover.types'\nexport { PopoverButton } from './popover-button'\nexport { PopoverDescription } from './popover-description'\nexport { PopoverPanel } from './popover-panel'\nexport { PopoverTitle } from './popover-title'\nexport { PopoverTrigger } from './popover-trigger'\nexport { PopoverHeader } from './popover-header'\nexport { PopoverContent } from './popover-content'\nexport { popoverHandle } from './popover.types'\n\nexport { Popover }\n","import { PercentIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { Popover, PopoverTrigger, PopoverContent, PopoverPanel } from '../popover'\nimport { Separator } from '../separator'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerInputProps } from './color-picker.types'\n\nconst TRANSPARENCY_MULTIPLIER = 100\n\nexport function ColorPickerInput({\n showPopover = false,\n showTransparencyField = true,\n className,\n children,\n ref,\n ...props\n}: ColorPickerInputProps) {\n const { color, setColor, valueType } = useColorPicker(),\n [inputValue, setInputValue] = React.useState<string>(String(valueType.getValue(color))),\n [transparency, setTransparency] = React.useState<string>(\n Math.round(color.alpha() * TRANSPARENCY_MULTIPLIER).toString(),\n ),\n [prevColor, setPrevColor] = React.useState(color),\n [prevValueType, setPrevValueType] = React.useState(valueType),\n handleValueChange = (value: string) => {\n setInputValue(value)\n },\n handleTransparencyChange = (value: string) => {\n setTransparency(value)\n },\n handleValueBlur = () => {\n const newColor = valueType.parseValue(inputValue)\n if (newColor) {\n setColor(newColor)\n }\n },\n handleTransparencyBlur = () => {\n const alpha = parseFloat(transparency)\n if (!Number.isNaN(alpha)) {\n setColor(color.alpha(alpha / TRANSPARENCY_MULTIPLIER))\n }\n },\n handleValueKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleValueBlur()\n }\n },\n handleTransparencyKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleTransparencyBlur()\n }\n }\n\n if (color !== prevColor || valueType !== prevValueType) {\n setPrevColor(color)\n setPrevValueType(valueType)\n setInputValue(String(valueType.getValue(color)))\n setTransparency(Math.round(color.alpha() * TRANSPARENCY_MULTIPLIER).toString())\n }\n\n return (\n <InputGroup variant=\"secondary\" className={cn('', className)} ref={ref} {...props}>\n {showPopover && (\n <Popover>\n <PopoverTrigger aria-label=\"Open color picker\" nativeButton={false}>\n <InputGroupAddon\n style={{\n backgroundColor: color.hex(),\n }}\n className=\"aspect-square h-1/2 rounded-lg hover:cursor-pointer\"\n />\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverContent className=\"flex w-[300px] flex-col gap-sm\">{children}</PopoverContent>\n </PopoverPanel>\n </Popover>\n )}\n {!showPopover && (\n <InputGroupAddon\n style={{\n backgroundColor: color.hex(),\n }}\n className=\"aspect-square size-md rounded-lg\"\n />\n )}\n <InputGroupInput\n aria-label=\"Color value\"\n onBlur={handleValueBlur}\n onKeyDown={handleValueKeyDown}\n onValueChange={handleValueChange}\n value={inputValue}\n className=\"uppercase\"\n />\n {showTransparencyField && (\n <>\n <Separator orientation=\"vertical\" className=\"h-md\" />\n <InputGroupAddon>\n <PercentIcon weight=\"bold\" />\n </InputGroupAddon>\n <InputGroupInput\n aria-label=\"Transparency percentage\"\n type=\"number\"\n min={0}\n max={100}\n value={transparency}\n onValueChange={handleTransparencyChange}\n onBlur={handleTransparencyBlur}\n onKeyDown={handleTransparencyKeyDown}\n className=\"w-xl\"\n />\n </>\n )}\n </InputGroup>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerLabelProps } from './color-picker.types'\n\nexport function ColorPickerLabel({ className, ref, ...props }: ColorPickerLabelProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getLightnessTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerLightnessSliderProps } from './color-picker.types'\n\nconst MIN_LIGHTNESS = 0,\n MAX_LIGHTNESS = 100,\n LIGHTNESS_SCALE = 100,\n FIRST_VALUE_INDEX = 0\n\nfunction getSliderValue(value: number | readonly number[]): number {\n if (typeof value === 'number') {\n return value\n }\n return value[FIRST_VALUE_INDEX]\n}\n\nexport function ColorPickerLightnessSlider({\n className,\n ref,\n ...props\n}: ColorPickerLightnessSliderProps) {\n const { color, setColor } = useColorPicker(),\n hslLightness = color.get('hsl.l'),\n lightness = hslLightness || MIN_LIGHTNESS,\n handleChange = (value: number | readonly number[]) => {\n setColor(color.set('hsl.l', getSliderValue(value) / LIGHTNESS_SCALE))\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Lightness\"\n {...props}\n min={MIN_LIGHTNESS}\n max={MAX_LIGHTNESS}\n value={lightness * LIGHTNESS_SCALE}\n onValueChange={handleChange}\n trackStyle={getLightnessTrack(color.hex())}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { PlusIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerPaletteAddProps } from './color-picker.types'\n\nexport function ColorPickerPaletteAdd({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteAddProps) {\n const { color, addPaletteColor } = useColorPicker(),\n handleClick = () => {\n addPaletteColor(color)\n }\n\n return (\n <button\n type=\"button\"\n aria-label=\"Add current color to palette\"\n onClick={handleClick}\n className={cn(\n 'flex size-md items-center justify-center rounded-lg border border-border-strong text-border-strong hover:cursor-pointer [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n <PlusIcon weight=\"bold\" />\n </button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerPaletteLimitProps } from './color-picker.types'\n\nexport function ColorPickerPaletteLimit({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteLimitProps) {\n const { palette, paletteLimit } = useColorPicker(),\n isAtLimit = paletteLimit && palette.length >= paletteLimit\n\n return (\n Boolean(paletteLimit) && (\n <span\n className={cn(\n 'style-text-prose--2 text-on-surface-variant',\n isAtLimit && 'text-error-default',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {palette.length} / {paletteLimit}\n </span>\n )\n )\n}\n","import chroma from 'chroma-js'\n\nimport { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport { colorPickerSwatchVariants } from './color-picker.types'\nimport type { ColorPickerPaletteSwatchProps } from './color-picker.types'\n\nexport function ColorPickerPaletteSwatch({\n size,\n color,\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteSwatchProps) {\n const { setColor } = useColorPicker(),\n handleClick = () => {\n setColor(chroma(color))\n }\n\n return (\n <button\n type=\"button\"\n aria-label={`Select color ${color}`}\n onClick={handleClick}\n className={cn(colorPickerSwatchVariants({ size }), className)}\n ref={ref}\n style={{\n color,\n }}\n {...props}\n >\n {children}\n <div className=\"size-full\" style={{ backgroundColor: color }} />\n </button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nimport type { ColorPickerPaletteListProps } from './color-picker.types'\n\nconst DEFAULT_OCCURRENCE = 0,\n OCCURRENCE_INCREMENT = 1\n\nexport function ColorPickerPaletteList({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteListProps) {\n const { palette } = useColorPicker(),\n occurrences = new Map<string, number>()\n\n return (\n <div\n className={cn('flex flex-wrap items-center justify-start gap-2xs', className)}\n ref={ref}\n {...props}\n >\n {palette.map((color) => {\n const value = color.hex('rgba'),\n occurrence = occurrences.get(value) ?? DEFAULT_OCCURRENCE\n occurrences.set(value, occurrence + OCCURRENCE_INCREMENT)\n\n return (\n <ColorPickerPaletteSwatch\n key={`${value}-${occurrence}`}\n color={color.css()}\n size=\"medium\"\n />\n )\n })}\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerRowProps } from './color-picker.types'\n\nexport function ColorPickerRow({ className, ref, ...props }: ColorPickerRowProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getTransparencyTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerTransparencySliderProps } from './color-picker.types'\n\nconst FIRST_VALUE_INDEX = 0,\n ALPHA_PERCENTAGE_SCALE = 100\n\nfunction getSliderValue(value: number | readonly number[]): number {\n if (typeof value === 'number') {\n return value\n }\n return value[FIRST_VALUE_INDEX]\n}\n\nexport function ColorPickerTransparencySlider({\n className,\n ref,\n ...props\n}: ColorPickerTransparencySliderProps) {\n const { color, setColor } = useColorPicker(),\n alpha = color.alpha(),\n handleChange = (value: number | readonly number[]) => {\n const nextAlpha = getSliderValue(value)\n setColor(color.alpha(nextAlpha / ALPHA_PERCENTAGE_SCALE))\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Transparency\"\n {...props}\n min={0}\n max={ALPHA_PERCENTAGE_SCALE}\n value={alpha * ALPHA_PERCENTAGE_SCALE}\n onValueChange={handleChange}\n trackStyle={getTransparencyTrack(color.hex())}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { CaretUpDownIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useColorPicker } from './color-picker'\nimport { VALUE_TYPES } from './color-picker.types'\nimport type { ColorPickerValueTypeProps } from './color-picker.types'\n\nconst [defaultValueType] = VALUE_TYPES\n\nexport function ColorPickerValueType({\n className,\n children,\n ref,\n ...props\n}: ColorPickerValueTypeProps) {\n const { valueType, setValueType } = useColorPicker(),\n handleChange = (value: unknown) => {\n setValueType(VALUE_TYPES.find((type) => type.value === value) ?? defaultValueType)\n }\n\n return (\n <Select value={valueType.value} onValueChange={handleChange}>\n <SelectTrigger\n aria-label=\"Color value format\"\n variant=\"secondary\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <SelectValue>\n {(value: string) => VALUE_TYPES.find((type) => type.value === value)?.label ?? value}\n </SelectValue>\n <SelectIcon>\n <CaretUpDownIcon weight=\"bold\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup sideOffset={8}>\n <SelectList>\n {VALUE_TYPES.map(({ label, value }) => (\n <SelectItem key={label} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import { ColorPicker as ColorPickerRoot } from './color-picker'\nimport { ColorPickerArea } from './color-picker-area'\nimport { ColorPickerGroup } from './color-picker-group'\nimport { ColorPickerHueSlider } from './color-picker-hue-slider'\nimport { ColorPickerInput } from './color-picker-input'\nimport { ColorPickerLabel } from './color-picker-label'\nimport { ColorPickerLightnessSlider } from './color-picker-lightness-slider'\nimport { ColorPickerPaletteAdd } from './color-picker-palette-add'\nimport { ColorPickerPaletteLimit } from './color-picker-palette-limit'\nimport { ColorPickerPaletteList } from './color-picker-palette-list'\nimport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nimport { ColorPickerRow } from './color-picker-row'\nimport { ColorPickerTransparencySlider } from './color-picker-transparency-slider'\nimport { ColorPickerValueType } from './color-picker-value-type'\n\nconst ColorPicker = Object.assign(ColorPickerRoot, {\n Area: ColorPickerArea,\n Group: ColorPickerGroup,\n HueSlider: ColorPickerHueSlider,\n Input: ColorPickerInput,\n Label: ColorPickerLabel,\n LightnessSlider: ColorPickerLightnessSlider,\n PaletteAdd: ColorPickerPaletteAdd,\n PaletteLimit: ColorPickerPaletteLimit,\n PaletteList: ColorPickerPaletteList,\n PaletteSwatch: ColorPickerPaletteSwatch,\n Row: ColorPickerRow,\n TransparencySlider: ColorPickerTransparencySlider,\n ValueType: ColorPickerValueType,\n})\n\nexport { ColorPickerArea } from './color-picker-area'\nexport { ColorPickerGroup } from './color-picker-group'\nexport { ColorPickerHueSlider } from './color-picker-hue-slider'\nexport { ColorPickerInput } from './color-picker-input'\nexport { ColorPickerLabel } from './color-picker-label'\nexport { ColorPickerPaletteLimit } from './color-picker-palette-limit'\nexport { ColorPickerPaletteList } from './color-picker-palette-list'\nexport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nexport { ColorPickerRow } from './color-picker-row'\nexport { ColorPickerTransparencySlider } from './color-picker-transparency-slider'\nexport { ColorPickerValueType } from './color-picker-value-type'\nexport { ColorPickerLightnessSlider } from './color-picker-lightness-slider'\n\nexport type {\n ColorPickerProps,\n ColorPickerPaletteAddProps,\n ColorPickerState,\n ColorPickerAction,\n ColorPickerAreaProps,\n ColorPickerContextType,\n ColorPickerGroupProps,\n ColorPickerHueSliderProps,\n ColorPickerInputProps,\n ColorPickerLabelProps,\n ColorPickerPaletteLimitProps,\n ColorPickerPaletteListProps,\n ColorPickerPaletteSwatchProps,\n ColorPickerRowProps,\n ColorPickerTransparencySliderProps,\n ColorPickerValueTypeProps,\n ColorPickerLightnessSliderProps,\n} from './color-picker.types'\n\nexport { ColorPicker }\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxProps } from './combobox.types'\n\nexport function Combobox({ ...props }: ComboboxProps) {\n return <BaseCombobox.Root {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport { XIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { ComboboxChipProps } from './combobox.types'\n\nexport function ComboboxChip({ className, children, ref, ...props }: ComboboxChipProps) {\n return (\n <BaseCombobox.Chip\n className={cn(\n 'inline-flex h-lg items-center justify-center gap-xs rounded-lg bg-neutral-container pr-3xs pl-xs style-text-default-0 text-neutral-on-container',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n <BaseCombobox.ChipRemove\n aria-label=\"Remove\"\n render={(innerProps) => (\n <Button\n aria-label=\"Remove\"\n onClick={() => innerProps.onClick}\n variant=\"ghost\"\n tone=\"error\"\n size=\"iconExtraSmall\"\n >\n <XIcon className=\"size-sm\" weight=\"bold\" />\n </Button>\n )}\n />\n </BaseCombobox.Chip>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxChipsProps } from './combobox.types'\n\nexport function ComboboxChips({ className, ref, ...props }: ComboboxChipsProps) {\n return (\n <BaseCombobox.Chips\n data-chips\n className={cn('group flex flex-wrap items-center gap-2xs empty:hidden', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxCollectionProps } from './combobox.types'\n\nexport function ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <BaseCombobox.Collection {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport type { ComboboxEmptyProps } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nexport function ComboboxEmpty({ className, ref, ...props }: ComboboxEmptyProps) {\n return (\n <BaseCombobox.Empty\n className={cn(\n 'max-h-[min(23rem,var(--available-height))] scroll-py-[0.5rem] overflow-y-auto overscroll-contain p-xs empty:m-[0px] empty:p-[0px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxGroupProps } from './combobox.types'\n\nexport function ComboboxGroup({ className, ref, ...props }: ComboboxGroupProps) {\n return <BaseCombobox.Group className={cn('block pb-3xs', className)} ref={ref} {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxGroupLabelProps } from './combobox.types'\n\nexport function ComboboxGroupLabel({ className, ref, ...props }: ComboboxGroupLabelProps) {\n return (\n <BaseCombobox.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 my-[0px] mr-[0px] -ml-2xs bg-surface-2 px-sm pt-2xs pb-3xs style-text-strong--2 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport { CaretDownIcon, XIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { InputGroup, InputGroupAddon } from '../input-group'\nimport { Separator } from '../separator'\nimport type { ComboboxInputProps } from './combobox.types'\n\nfunction getChipsMinHeightClass(size: ComboboxInputProps['size']): string {\n if (size === 'small') {\n return '[&:has([data-chips]:not(:empty))]:min-h-lg'\n }\n if (size === 'large') {\n return '[&:has([data-chips]:not(:empty))]:min-h-2xl'\n }\n return '[&:has([data-chips]:not(:empty))]:min-h-xl'\n}\n\nfunction getTriggerVariant(isOpen: boolean): 'fill' | 'ghost' {\n if (isOpen) {\n return 'fill'\n }\n return 'ghost'\n}\n\nexport function ComboboxInput({\n inline = false,\n variant,\n size = 'medium',\n className,\n children,\n ref,\n ...props\n}: ComboboxInputProps) {\n const id = React.useId(),\n chipsMinHeightClass = getChipsMinHeightClass(size)\n\n if (inline) {\n return (\n <div className=\"h-(--input-container-height) py-2xs pr-2xs\">\n <BaseCombobox.Input\n className={cn(\n 'h-xl w-full rounded-lg bg-surface-low px-sm outline-border transition-all not-active:outline-1 focus-within:outline-2 hover:outline-2 focus:caret-brand-default focus:outline-brand-border data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',\n 'placeholder:opacity-60',\n 'disabled:cursor-not-allowed',\n 'text-ellipsis',\n className,\n )}\n id={id}\n ref={ref}\n {...props}\n />\n </div>\n )\n }\n\n return (\n <InputGroup\n variant={variant}\n size={size}\n className={cn(\n 'flex-col items-start justify-center [&:has([data-chips]:empty)>[role=separator]]:hidden [&:has([data-chips]:h-fit)]:flex [&:has([data-chips]:h-fit)]:flex-wrap [&:has([data-chips]:h-fit)]:py-xs [&:has([data-chips]:not(:empty))]:h-auto [&:has([data-chips]:not(:empty))]:rounded-xl [&:not(:has([data-chips]))>[role=separator]]:hidden',\n chipsMinHeightClass,\n className,\n )}\n >\n {children}\n <Separator weight=\"thinnest\" />\n <BaseCombobox.InputGroup className=\"relative flex w-full items-center justify-between [&>input]:pr-[2rem] has-[.combobox-clear]:[&>input]:pr-[calc(0.5rem+1.5rem*2)]\">\n <BaseCombobox.Input\n className={cn(\n 'w-full text-ellipsis outline-none placeholder:opacity-60 disabled:cursor-not-allowed',\n className,\n )}\n id={id}\n ref={ref}\n {...props}\n />\n <InputGroupAddon>\n <BaseCombobox.Clear\n aria-label=\"Clear selection\"\n keepMounted\n render={({ onClick }) => (\n <Button\n aria-label=\"Clear selection\"\n onClick={onClick}\n size=\"iconExtraSmall\"\n variant=\"ghost\"\n tone=\"error\"\n >\n <XIcon weight=\"bold\" />\n </Button>\n )}\n />\n <BaseCombobox.Trigger\n aria-label=\"Open popup\"\n render={({ onClick }, state) => (\n <Button\n aria-label=\"Open popup\"\n onClick={onClick}\n size=\"iconExtraSmall\"\n variant={getTriggerVariant(state.open)}\n tone=\"brand\"\n >\n <CaretDownIcon weight=\"bold\" />\n </Button>\n )}\n />\n </InputGroupAddon>\n </BaseCombobox.InputGroup>\n </InputGroup>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxItemProps } from './combobox.types'\n\nexport function ComboboxItem({ className, children, ref, ...props }: ComboboxItemProps) {\n return (\n <BaseCombobox.Item\n className={cn(\n 'mr-2xs grid cursor-default grid-cols-[1fr_0.75rem] items-center gap-xs rounded-md px-2xs py-3xs style-text-default-0 transition-colors duration-100 select-none group-data-[side=none]:pr-xs group-data-[side=none]:leading-lg first-of-type:mt-2xs last-of-type:mb-2xs hover:cursor-pointer data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container data-highlighted:before:absolute data-highlighted:before:inset-x-3xs data-highlighted:before:inset-y-[0px] data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-selected:bg-neutral-default data-selected:text-neutral-on-default pointer-coarse:py-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1\">{children}</span>\n <BaseCombobox.ItemIndicator className=\"col-start-2 place-self-end self-center\">\n <CheckIcon className=\"size-sm\" weight=\"bold\" />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxListProps } from './combobox.types'\n\nexport function ComboboxList({ className, ref, ...props }: ComboboxListProps) {\n return (\n <BaseCombobox.List\n className={cn(\n 'max-h-[min(calc(23rem-var(--input-container-height,0rem)),calc(var(--available-height)-var(--input-container-height,0rem)))] scroll-py-[0.5rem] space-y-3xs overflow-y-auto overscroll-contain data-empty:p-[0px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxPopupProps } from './combobox.types'\n\nexport function ComboboxPopup({ className, children, ref, ...props }: ComboboxPopupProps) {\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner className={cn('', className)} ref={ref} sideOffset={20} {...props}>\n <BaseCombobox.Popup className=\"max-h-[23rem] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) rounded-xl bg-surface-2 pl-2xs shadow-md transition-[transform,scale,opacity] duration-100 [--input-container-height:4rem] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0\">\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxStatusProps } from './combobox.types'\n\nexport function ComboboxStatus({ className, ref, ...props }: ComboboxStatusProps) {\n return (\n <BaseCombobox.Status\n className={cn(\n 'flex items-center gap-2xs p-xs style-text-prose--1 text-on-surface-variant empty:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport { CaretUpDownIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxTriggerProps } from './combobox.types'\n\nfunction getPlaceholderLabel(placeholder: ComboboxTriggerProps['placeholder']): string | undefined {\n if (typeof placeholder === 'string') {\n return placeholder\n }\n return undefined\n}\n\nexport function ComboboxTrigger({\n placeholder,\n className,\n children,\n ref,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <BaseCombobox.Trigger\n aria-label={getPlaceholderLabel(placeholder)}\n className={cn(\n 'inline-flex h-xl items-center justify-between gap-xl rounded-xl bg-surface pr-sm pl-md style-text-default-0 outline-2 outline-transparent transition-all hover:cursor-pointer hover:outline-border data-popup-open:outline-brand-border',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseCombobox.Value placeholder={<span className=\"opacity-70\">{placeholder}</span>} />\n <BaseCombobox.Icon>\n <CaretUpDownIcon />\n </BaseCombobox.Icon>\n {children}\n </BaseCombobox.Trigger>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxValueProps } from './combobox.types'\n\nexport function ComboboxValue({ ...props }: ComboboxValueProps) {\n return <BaseCombobox.Value {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport type { Virtualizer } from '@tanstack/react-virtual'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { inputVariants } from '../input/input.types'\n\ntype ComboboxEmptyProps = React.ComponentProps<typeof BaseCombobox.Empty>\ntype ComboboxInputProps = Omit<React.ComponentProps<typeof BaseCombobox.Input>, 'size'> &\n VariantProps<typeof inputVariants> & {\n inline?: boolean\n }\ntype ComboboxItemProps = React.ComponentProps<typeof BaseCombobox.Item>\ntype ComboboxListProps = React.ComponentProps<typeof BaseCombobox.List>\ntype ComboboxPopupProps = React.ComponentProps<typeof BaseCombobox.Positioner>\ntype ComboboxProps = React.ComponentProps<typeof BaseCombobox.Root>\ntype ComboboxChipsProps = React.ComponentProps<typeof BaseCombobox.Chips>\ntype ComboboxChipProps = React.ComponentProps<typeof BaseCombobox.Chip>\ntype ComboboxValueProps = React.ComponentProps<typeof BaseCombobox.Value>\ntype ComboboxTriggerProps = React.ComponentProps<typeof BaseCombobox.Trigger> & {\n placeholder?: string\n}\ntype ComboboxGroupProps = React.ComponentProps<typeof BaseCombobox.Group>\ntype ComboboxGroupLabelProps = React.ComponentProps<typeof BaseCombobox.GroupLabel>\ntype ComboboxCollectionProps = React.ComponentProps<typeof BaseCombobox.Collection>\ntype ComboboxStatusProps = React.ComponentProps<typeof BaseCombobox.Status>\ntype ComboboxVirtualizedListProps<TItem> = Omit<React.ComponentProps<'div'>, 'children'> & {\n open: boolean\n virtualizerRef?: React.RefObject<Virtualizer<HTMLDivElement, HTMLDivElement> | null>\n estimateSize?: number\n overscan?: number\n children?: React.ReactNode | ((item: TItem) => React.ReactNode)\n}\nconst { useFilter } = BaseCombobox,\n { useFilteredItems } = BaseCombobox\n\nexport type {\n ComboboxEmptyProps,\n ComboboxInputProps,\n ComboboxItemProps,\n ComboboxListProps,\n ComboboxPopupProps,\n ComboboxProps,\n ComboboxChipsProps,\n ComboboxChipProps,\n ComboboxValueProps,\n ComboboxTriggerProps,\n ComboboxGroupProps,\n ComboboxGroupLabelProps,\n ComboboxCollectionProps,\n ComboboxStatusProps,\n ComboboxVirtualizedListProps,\n}\nexport { useFilter, useFilteredItems }\n","import { useVirtualizer } from '@tanstack/react-virtual'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ComboboxItem } from './combobox-item'\nimport { useFilteredItems } from './combobox.types'\nimport type { ComboboxVirtualizedListProps } from './combobox.types'\n\nconst DEFAULT_ESTIMATE_SIZE = 32,\n DEFAULT_OVERSCAN = 20,\n PADDING = 8,\n FIRST_POSITION = 1\ntype TotalSizeStyle = React.CSSProperties & { '--total-size': string }\n\nfunction renderItem<TItem>(\n children: React.ReactNode | ((item: TItem) => React.ReactNode),\n item: TItem,\n) {\n if (typeof children === 'function') {\n return children(item)\n }\n return children\n}\n\nexport function ComboboxVirtualizedList<TItem>({\n open,\n virtualizerRef,\n estimateSize = DEFAULT_ESTIMATE_SIZE,\n overscan = DEFAULT_OVERSCAN,\n className,\n children,\n ...props\n}: ComboboxVirtualizedListProps<TItem>) {\n const filteredItems = useFilteredItems<TItem>(),\n // oxlint-disable-next-line unicorn(no-null)\n scrollElementRef = React.useRef<HTMLDivElement | null>(null),\n // oxlint-disable-next-line react/incompatible-library\n virtualizer = useVirtualizer<HTMLDivElement, HTMLDivElement>({\n count: filteredItems.length,\n directDomUpdates: true,\n enabled: open,\n estimateSize: () => estimateSize,\n getScrollElement: () => scrollElementRef.current,\n overscan,\n paddingEnd: PADDING,\n paddingStart: PADDING,\n scrollPaddingEnd: PADDING,\n scrollPaddingStart: PADDING,\n }),\n handleScrollElementRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n scrollElementRef.current = element\n if (element) {\n virtualizer.measure()\n }\n },\n [virtualizer],\n ),\n totalSize = virtualizer.getTotalSize(),\n totalSizeStyle: TotalSizeStyle = { '--total-size': `${totalSize}px` }\n\n React.useEffect(() => {\n if (virtualizerRef) {\n virtualizerRef.current = virtualizer\n }\n }, [virtualizer, virtualizerRef])\n\n return (\n <div\n role=\"presentation\"\n ref={handleScrollElementRef}\n style={totalSizeStyle}\n className={cn(\n 'h-[min(22.5rem,var(--total-size))] max-h-(--available-height) scroll-py-3xs overflow-auto overscroll-contain',\n className,\n )}\n {...props}\n >\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: totalSize }}>\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const item = filteredItems[virtualItem.index]\n if (!item) {\n return undefined\n }\n\n return (\n <ComboboxItem\n key={virtualItem.key}\n index={virtualItem.index}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n value={item}\n aria-setsize={filteredItems.length}\n aria-posinset={virtualItem.index + FIRST_POSITION}\n className=\"first-of-type:mt-0!\"\n style={{\n left: 0,\n position: 'absolute',\n top: 0,\n transform: `translateY(${virtualItem.start}px)`,\n width: '100%',\n }}\n >\n {renderItem(children, item)}\n </ComboboxItem>\n )\n })}\n </div>\n </div>\n )\n}\n","import { Combobox as ComboboxRoot } from './combobox'\nimport { ComboboxChip } from './combobox-chip'\nimport { ComboboxChips } from './combobox-chips'\nimport { ComboboxCollection } from './combobox-collection'\nimport { ComboboxEmpty } from './combobox-empty'\nimport { ComboboxGroup } from './combobox-group'\nimport { ComboboxGroupLabel } from './combobox-group-label'\nimport { ComboboxInput } from './combobox-input'\nimport { ComboboxItem } from './combobox-item'\nimport { ComboboxList } from './combobox-list'\nimport { ComboboxPopup } from './combobox-popup'\nimport { ComboboxStatus } from './combobox-status'\nimport { ComboboxTrigger } from './combobox-trigger'\nimport { ComboboxValue } from './combobox-value'\nimport { ComboboxVirtualizedList } from './combobox-virtualized-list'\n\nconst Combobox = Object.assign(ComboboxRoot, {\n Chip: ComboboxChip,\n Chips: ComboboxChips,\n Collection: ComboboxCollection,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n Input: ComboboxInput,\n Item: ComboboxItem,\n List: ComboboxList,\n Popup: ComboboxPopup,\n Status: ComboboxStatus,\n Trigger: ComboboxTrigger,\n Value: ComboboxValue,\n VirtualizedList: ComboboxVirtualizedList,\n})\n\nexport type {\n ComboboxChipProps,\n ComboboxChipsProps,\n ComboboxCollectionProps,\n ComboboxEmptyProps,\n ComboboxGroupLabelProps,\n ComboboxGroupProps,\n ComboboxInputProps,\n ComboboxItemProps,\n ComboboxListProps,\n ComboboxPopupProps,\n ComboboxProps,\n ComboboxStatusProps,\n ComboboxTriggerProps,\n ComboboxValueProps,\n ComboboxVirtualizedListProps,\n} from './combobox.types'\nexport { ComboboxChip } from './combobox-chip'\nexport { ComboboxChips } from './combobox-chips'\nexport { ComboboxCollection } from './combobox-collection'\nexport { ComboboxEmpty } from './combobox-empty'\nexport { ComboboxGroup } from './combobox-group'\nexport { ComboboxGroupLabel } from './combobox-group-label'\nexport { ComboboxInput } from './combobox-input'\nexport { ComboboxItem } from './combobox-item'\nexport { ComboboxList } from './combobox-list'\nexport { ComboboxPopup } from './combobox-popup'\nexport { ComboboxStatus } from './combobox-status'\nexport { ComboboxTrigger } from './combobox-trigger'\nexport { ComboboxValue } from './combobox-value'\nexport { ComboboxVirtualizedList } from './combobox-virtualized-list'\nexport { useFilter, useFilteredItems } from './combobox.types'\n\nexport { Combobox }\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport type { ContextMenuProps } from './context-menu.types'\n\nexport function ContextMenu({ ...props }: ContextMenuProps) {\n return <BaseContextMenu.Root {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuCheckboxItemProps } from './context-menu.types'\n\nexport function ContextMenuCheckboxItem({\n className,\n children,\n ref,\n ...props\n}: ContextMenuCheckboxItemProps) {\n return (\n <BaseContextMenu.CheckboxItem\n className={cn(\n 'relative z-0 grid cursor-default grid-cols-[1fr_2rem] items-center px-xs py-3xs style-text-default-0 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1\">{children}</span>\n <BaseContextMenu.CheckboxItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <CheckIcon className=\"size-sm\" weight=\"bold\" />\n </BaseContextMenu.CheckboxItemIndicator>\n </BaseContextMenu.CheckboxItem>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuGroupProps } from './context-menu.types'\n\nexport function ContextMenuGroup({ className, ref, ...props }: ContextMenuGroupProps) {\n return <BaseContextMenu.Group className={cn('', className)} ref={ref} {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuGroupLabelProps } from './context-menu.types'\n\nexport function ContextMenuGroupLabel({ className, ref, ...props }: ContextMenuGroupLabelProps) {\n return (\n <BaseContextMenu.GroupLabel\n className={cn(\n 'cursor-default px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype ContextMenuProps = React.ComponentProps<typeof BaseContextMenu.Root>\ntype ContextMenuTriggerProps = React.ComponentProps<typeof BaseContextMenu.Trigger>\ntype ContextMenuPopupProps = React.ComponentProps<typeof BaseContextMenu.Popup>\ntype ContextMenuSeparatorProps = React.ComponentProps<typeof BaseContextMenu.Separator>\ntype ContextMenuSubmenuProps = React.ComponentProps<typeof BaseContextMenu.SubmenuRoot>\ntype ContextMenuShortcutProps = React.ComponentProps<'div'>\ntype ContextMenuGroupProps = React.ComponentProps<typeof BaseContextMenu.Group>\ntype ContextMenuGroupLabelProps = React.ComponentProps<typeof BaseContextMenu.GroupLabel>\ntype ContextMenuCheckboxItemProps = React.ComponentProps<typeof BaseContextMenu.CheckboxItem> &\n VariantProps<typeof contextMenuItemVariants>\ntype ContextMenuRadioItemProps = React.ComponentProps<typeof BaseContextMenu.RadioItem> &\n VariantProps<typeof contextMenuItemVariants>\ntype ContextMenuRadioGroupProps = React.ComponentProps<typeof BaseContextMenu.RadioGroup>\n\nconst contextMenuItemVariants = cva(\n 'relative z-0 flex cursor-default items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container',\n },\n },\n },\n ),\n contextMenuSubmenuTriggerVariants = cva(\n 'relative z-0 flex cursor-default items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container data-popup-open:text-accent-on-container data-popup-open:before:bg-accent-container data-highlighted:data-popup-open:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container data-popup-open:text-brand-on-container data-popup-open:before:bg-brand-container data-highlighted:data-popup-open:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container data-popup-open:text-error-on-container data-popup-open:before:bg-error-container data-highlighted:data-popup-open:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container data-popup-open:text-info-on-container data-popup-open:before:bg-info-container data-highlighted:data-popup-open:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high data-popup-open:text-neutral-on-container data-popup-open:before:bg-neutral-container-high data-highlighted:data-popup-open:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container data-popup-open:text-success-on-container data-popup-open:before:bg-success-container data-highlighted:data-popup-open:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container data-popup-open:text-warning-on-container data-popup-open:before:bg-warning-container data-highlighted:data-popup-open:before:bg-warning-container',\n },\n },\n },\n )\n\ntype ContextMenuItemProps = React.ComponentProps<typeof BaseContextMenu.Item> &\n VariantProps<typeof contextMenuItemVariants>\n\ntype ContextMenuSubmenuTriggerProps = React.ComponentProps<typeof BaseContextMenu.SubmenuTrigger> &\n VariantProps<typeof contextMenuSubmenuTriggerVariants>\n\nexport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuPopupProps,\n ContextMenuSeparatorProps,\n ContextMenuSubmenuProps,\n ContextMenuShortcutProps,\n ContextMenuGroupProps,\n ContextMenuGroupLabelProps,\n ContextMenuCheckboxItemProps,\n ContextMenuRadioItemProps,\n ContextMenuRadioGroupProps,\n ContextMenuItemProps,\n ContextMenuSubmenuTriggerProps,\n}\nexport { contextMenuItemVariants, contextMenuSubmenuTriggerVariants }\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { contextMenuItemVariants } from './context-menu.types'\nimport type { ContextMenuItemProps } from './context-menu.types'\n\nexport function ContextMenuItem({\n className,\n tone,\n children,\n ref,\n ...props\n}: ContextMenuItemProps) {\n return (\n <BaseContextMenu.Item\n className={cn(contextMenuItemVariants({ tone }), className)}\n nativeButton\n ref={ref}\n render={(renderProps) => (\n <button\n type=\"button\"\n {...renderProps}\n className={cn('w-full gap-2xs [&>svg]:size-sm', renderProps.className)}\n >\n {children}\n </button>\n )}\n {...props}\n />\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuPopupProps } from './context-menu.types'\n\nexport function ContextMenuPopup({ className, ref, ...props }: ContextMenuPopupProps) {\n return (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner>\n <BaseContextMenu.Popup\n className={cn(\n 'z-99 flex w-[calc(100%+var(--spacing-xl))] origin-(--transform-origin) translate-x-[-calc(var(--spacing-xl)/2)] flex-col gap-3xs rounded-xl bg-surface-2 p-3xs py-2xs shadow-md transition-[transform,scale,opacity] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuRadioGroupProps } from './context-menu.types'\n\nexport function ContextMenuRadioGroup({ className, ref, ...props }: ContextMenuRadioGroupProps) {\n return <BaseContextMenu.RadioGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuRadioItemProps } from './context-menu.types'\n\nexport function ContextMenuRadioItem({\n className,\n children,\n ref,\n ...props\n}: ContextMenuRadioItemProps) {\n return (\n <BaseContextMenu.RadioItem\n className={cn(\n 'relative z-0 grid cursor-default grid-cols-[1fr_2rem] items-center px-xs py-3xs style-text-default-0 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 min-w-3xl\">{children}</span>\n <BaseContextMenu.RadioItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <CheckIcon className=\"size-sm\" weight=\"bold\" />\n </BaseContextMenu.RadioItemIndicator>\n </BaseContextMenu.RadioItem>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuSeparatorProps } from './context-menu.types'\n\nexport function ContextMenuSeparator({ className, ref, ...props }: ContextMenuSeparatorProps) {\n return (\n <BaseContextMenu.Separator\n className={cn('mx-2xs my-3xs h-px bg-border-strong', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ContextMenuShortcutProps } from './context-menu.types'\n\nexport function ContextMenuShortcut({ className, ref, ...props }: ContextMenuShortcutProps) {\n return (\n <div\n className={cn('ml-auto inline-flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport type { ContextMenuSubmenuProps } from './context-menu.types'\n\nexport function ContextMenuSubmenu({ ...props }: ContextMenuSubmenuProps) {\n return <BaseContextMenu.SubmenuRoot {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\nimport { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { contextMenuSubmenuTriggerVariants } from './context-menu.types'\nimport type { ContextMenuSubmenuTriggerProps } from './context-menu.types'\n\nexport function ContextMenuSubmenuTrigger({\n className,\n children,\n ref,\n tone,\n ...props\n}: ContextMenuSubmenuTriggerProps) {\n return (\n <BaseContextMenu.SubmenuTrigger\n className={cn(contextMenuSubmenuTriggerVariants({ tone }), className)}\n ref={ref}\n {...props}\n >\n <span className=\"flex min-w-3xl items-center gap-2xs pr-2xl\">{children}</span>\n <CaretRightIcon className=\"ml-auto size-xs shrink-0 self-center\" weight=\"bold\" />\n </BaseContextMenu.SubmenuTrigger>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuTriggerProps } from './context-menu.types'\n\nexport function ContextMenuTrigger({ className, ref, ...props }: ContextMenuTriggerProps) {\n return (\n <BaseContextMenu.Trigger\n className={cn('flex min-w-0 flex-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { ContextMenu as ContextMenuRoot } from './context-menu'\nimport { ContextMenuCheckboxItem } from './context-menu-checkbox-item'\nimport { ContextMenuGroup } from './context-menu-group'\nimport { ContextMenuGroupLabel } from './context-menu-group-label'\nimport { ContextMenuItem } from './context-menu-item'\nimport { ContextMenuPopup } from './context-menu-popup'\nimport { ContextMenuRadioGroup } from './context-menu-radio-group'\nimport { ContextMenuRadioItem } from './context-menu-radio-item'\nimport { ContextMenuSeparator } from './context-menu-separator'\nimport { ContextMenuShortcut } from './context-menu-shortcut'\nimport { ContextMenuSubmenu } from './context-menu-submenu'\nimport { ContextMenuSubmenuTrigger } from './context-menu-submenu-trigger'\nimport { ContextMenuTrigger } from './context-menu-trigger'\n\nconst ContextMenu = Object.assign(ContextMenuRoot, {\n CheckboxItem: ContextMenuCheckboxItem,\n Group: ContextMenuGroup,\n GroupLabel: ContextMenuGroupLabel,\n Item: ContextMenuItem,\n Popup: ContextMenuPopup,\n RadioGroup: ContextMenuRadioGroup,\n RadioItem: ContextMenuRadioItem,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Submenu: ContextMenuSubmenu,\n SubmenuTrigger: ContextMenuSubmenuTrigger,\n Trigger: ContextMenuTrigger,\n})\n\nexport type {\n ContextMenuCheckboxItemProps,\n ContextMenuGroupLabelProps,\n ContextMenuGroupProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuShortcutProps,\n ContextMenuItemProps,\n ContextMenuPopupProps,\n ContextMenuProps,\n ContextMenuSeparatorProps,\n ContextMenuSubmenuProps,\n ContextMenuSubmenuTriggerProps,\n ContextMenuTriggerProps,\n} from './context-menu.types'\nexport { ContextMenuCheckboxItem } from './context-menu-checkbox-item'\nexport { ContextMenuGroup } from './context-menu-group'\nexport { ContextMenuGroupLabel } from './context-menu-group-label'\nexport { ContextMenuRadioGroup } from './context-menu-radio-group'\nexport { ContextMenuRadioItem } from './context-menu-radio-item'\nexport { ContextMenuShortcut } from './context-menu-shortcut'\nexport { ContextMenuItem } from './context-menu-item'\nexport { ContextMenuPopup } from './context-menu-popup'\nexport { ContextMenuSeparator } from './context-menu-separator'\nexport { ContextMenuSubmenu } from './context-menu-submenu'\nexport { ContextMenuSubmenuTrigger } from './context-menu-submenu-trigger'\nexport { ContextMenuTrigger } from './context-menu-trigger'\n\nexport { ContextMenu }\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport type { DialogProps } from './dialog.types'\n\nexport function Dialog({ ...props }: DialogProps) {\n return <BaseDialog.Root {...props} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\nimport { XIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DialogCloseProps } from './dialog.types'\n\nexport function DialogClose({ className, ref, ...props }: DialogCloseProps) {\n return (\n <BaseDialog.Close\n className={cn('absolute top-2xs right-2xs', className)}\n ref={ref}\n {...props}\n render={\n <Button aria-label=\"Close\" variant=\"ghost\" size=\"iconExtraSmall\" tone=\"error\">\n <XIcon weight=\"bold\" />\n </Button>\n }\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogContentProps } from './dialog.types'\n\nexport function DialogContent({ className, ref, ...props }: DialogContentProps) {\n return <div className={cn('flex h-full flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogDescriptionProps } from './dialog.types'\n\nexport function DialogDescription({ className, ref, ...props }: DialogDescriptionProps) {\n return (\n <BaseDialog.Description\n data-slot=\"dialog-description\"\n className={cn('style-text-prose-0 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogFooterProps } from './dialog.types'\n\nexport function DialogFooter({ className, ref, ...props }: DialogFooterProps) {\n return (\n <div\n className={cn('flex w-full items-center justify-end gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogHeaderProps } from './dialog.types'\n\nexport function DialogHeader({ className, ref, ...props }: DialogHeaderProps) {\n return (\n <div\n className={cn(\n 'grid auto-rows-min items-center gap-x-sm has-data-[slot=dialog-description]:grid-rows-[auto_auto] has-data-[slot=dialog-icon]:grid-cols-[auto_1fr] has-data-[slot=dialog-description]:**:data-[slot=dialog-icon]:row-span-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogIconProps } from './dialog.types'\n\nexport function DialogIcon({ className, ref, ...props }: DialogIconProps) {\n return (\n <div\n data-slot=\"dialog-icon\"\n className={cn('row-span-2 self-start [&>svg]:size-xl [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogPopupProps } from './dialog.types'\n\nexport function DialogPopup({ className, children, ref, ...props }: DialogPopupProps) {\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop\n className=\"fixed inset-[0px] z-998 min-h-dvh transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-[-webkit-touch-callout:none]:absolute\"\n style={{ WebkitBackdropFilter: 'blur(16px)', backdropFilter: 'blur(16px)' }}\n />\n <BaseDialog.Popup\n className={cn(\n 'fixed top-1/2 left-1/2 z-999 flex max-w-[calc(100vw-3rem)] min-w-1/6 -translate-1/2 flex-col gap-sm overflow-hidden rounded-3xl bg-surface-2 p-md shadow-lg transition-all duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogTitleProps } from './dialog.types'\n\nexport function DialogTitle({ className, ref, ...props }: DialogTitleProps) {\n return (\n <BaseDialog.Title\n data-slot=\"dialog-title\"\n className={cn('style-text-strong-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogTriggerProps } from './dialog.types'\n\nexport function DialogTrigger({ className, children, ref, ...props }: DialogTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseDialog.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\nimport type { ComponentProps } from 'react'\n\ntype DialogProps = ComponentProps<typeof BaseDialog.Root>\n\ntype DialogTriggerProps = ComponentProps<typeof BaseDialog.Trigger>\n\ntype DialogPopupProps = ComponentProps<typeof BaseDialog.Popup>\n\ntype DialogTitleProps = ComponentProps<typeof BaseDialog.Title>\n\ntype DialogDescriptionProps = ComponentProps<typeof BaseDialog.Description>\n\ntype DialogCloseProps = ComponentProps<typeof BaseDialog.Close>\ntype DialogContentProps = React.ComponentProps<'div'>\ntype DialogHeaderProps = React.ComponentProps<'div'>\ntype DialogFooterProps = React.ComponentProps<'div'>\ntype DialogIconProps = React.ComponentProps<'div'>\nconst DialogHelper = BaseDialog\n\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPopupProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n DialogContentProps,\n DialogHeaderProps,\n DialogFooterProps,\n DialogIconProps,\n}\nexport { DialogHelper }\n","import { Dialog as DialogRoot } from './dialog'\nimport { DialogClose } from './dialog-close'\nimport { DialogContent } from './dialog-content'\nimport { DialogDescription } from './dialog-description'\nimport { DialogFooter } from './dialog-footer'\nimport { DialogHeader } from './dialog-header'\nimport { DialogIcon } from './dialog-icon'\nimport { DialogPopup } from './dialog-popup'\nimport { DialogTitle } from './dialog-title'\nimport { DialogTrigger } from './dialog-trigger'\n\nconst Dialog = Object.assign(DialogRoot, {\n Close: DialogClose,\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Icon: DialogIcon,\n Popup: DialogPopup,\n Title: DialogTitle,\n Trigger: DialogTrigger,\n})\n\nexport type {\n DialogCloseProps,\n DialogDescriptionProps,\n DialogFooterProps,\n DialogHeaderProps,\n DialogIconProps,\n DialogPopupProps,\n DialogProps,\n DialogTitleProps,\n DialogTriggerProps,\n} from './dialog.types'\nexport { DialogClose } from './dialog-close'\nexport { DialogContent } from './dialog-content'\nexport { DialogDescription } from './dialog-description'\nexport { DialogFooter } from './dialog-footer'\nexport { DialogHeader } from './dialog-header'\nexport { DialogIcon } from './dialog-icon'\nexport { DialogPopup } from './dialog-popup'\nexport { DialogTitle } from './dialog-title'\nexport { DialogTrigger } from './dialog-trigger'\nexport { DialogHelper } from './dialog.types'\n\nexport { Dialog }\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport type { DrawerProps } from './drawer.types'\n\nexport function Drawer({ ...props }: DrawerProps) {\n return <BaseDrawer.Root {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerCloseProps } from './drawer.types'\n\nexport function DrawerClose({ className, ref, ...props }: DrawerCloseProps) {\n return <BaseDrawer.Close className={cn('shrink-0', className)} ref={ref} {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerContentProps } from './drawer.types'\n\nexport function DrawerContent({ className, ref, ...props }: DrawerContentProps) {\n return (\n <BaseDrawer.Content\n className={cn('mx-auto w-full max-w-[32rem] space-y-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerDescriptionProps } from './drawer.types'\n\nexport function DrawerDescription({ className, ref, ...props }: DrawerDescriptionProps) {\n return (\n <BaseDrawer.Description\n className={cn('style-text-prose-0 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DrawerHeaderProps } from './drawer.types'\n\nexport function DrawerHeader({ className, ref, ...props }: DrawerHeaderProps) {\n return (\n <div className={cn('flex items-start justify-between pb-sm', className)} ref={ref} {...props} />\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerPopupProps } from './drawer.types'\n\nconst backdropClassName =\n 'fixed inset-0 min-h-dvh bg-scrim opacity-[calc(var(--backdrop-opacity)*(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] [--backdrop-opacity:0.2] [--bleed:3rem] data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*0.4s)] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute dark:[--backdrop-opacity:0.7]',\n viewportClassName = cn(\n 'fixed inset-0 flex',\n // Down (bottom sheet) - default\n 'items-end justify-center',\n // Up (top sheet)\n 'has-[[data-swipe-direction=up]]:items-start has-[[data-swipe-direction=up]]:justify-center',\n // Right (right drawer)\n 'has-[[data-swipe-direction=right]]:items-center has-[[data-swipe-direction=right]]:justify-end',\n // Left (left drawer)\n 'has-[[data-swipe-direction=left]]:items-center has-[[data-swipe-direction=left]]:justify-start',\n ),\n popupClassName = cn(\n // Base styles (shared by all directions)\n 'touch-auto overflow-y-auto overscroll-contain bg-surface-background p-md outline outline-border-strong transition-transform duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*0.4s)] data-swiping:select-none',\n\n // Down (bottom sheet) - default, shadow goes up\n 'mb-[-3rem] max-h-[calc(80vh+3rem)] w-full transform-[translateY(var(--drawer-swipe-movement-y))] rounded-t-2xl pb-[calc(1.5rem+env(safe-area-inset-bottom,0)+3rem)] shadow-[0_-8px_24px_var(--color-shadow)] data-ending-style:transform-[translateY(calc(100%-3rem+2px))] data-starting-style:transform-[translateY(calc(100%-3rem+2px))]',\n\n // Up (top sheet) - shadow goes down\n 'data-[swipe-direction=up]:mt-[-3rem] data-[swipe-direction=up]:mb-0 data-[swipe-direction=up]:rounded-t-none data-[swipe-direction=up]:rounded-b-2xl data-[swipe-direction=up]:pt-[calc(1.5rem+env(safe-area-inset-top,0)+3rem)] data-[swipe-direction=up]:pb-md data-[swipe-direction=up]:shadow-[0_8px_24px_var(--color-shadow)] data-[swipe-direction=up]:data-ending-style:transform-[translateY(calc(-100%+3rem-2px))] data-[swipe-direction=up]:data-starting-style:transform-[translateY(calc(-100%+3rem-2px))]',\n\n // Right (right drawer) - shadow goes left\n 'data-[swipe-direction=right]:mr-[-3rem] data-[swipe-direction=right]:mb-0 data-[swipe-direction=right]:h-full data-[swipe-direction=right]:max-h-dvh data-[swipe-direction=right]:w-[23rem] data-[swipe-direction=right]:max-w-[calc(100vw-3rem)] data-[swipe-direction=right]:transform-[translateX(var(--drawer-swipe-movement-x))] data-[swipe-direction=right]:rounded-none data-[swipe-direction=right]:rounded-l-2xl data-[swipe-direction=right]:pr-[4.5rem] data-[swipe-direction=right]:pb-md data-[swipe-direction=right]:shadow-[-8px_0_24px_var(--color-shadow)] data-[swipe-direction=right]:data-ending-style:transform-[translateX(calc(100%-3rem+2px))] data-[swipe-direction=right]:data-starting-style:transform-[translateX(calc(100%-3rem+2px))]',\n\n // Left (left drawer) - shadow goes right\n 'data-[swipe-direction=left]:mb-0 data-[swipe-direction=left]:ml-[-3rem] data-[swipe-direction=left]:h-full data-[swipe-direction=left]:max-h-dvh data-[swipe-direction=left]:w-[23rem] data-[swipe-direction=left]:max-w-[calc(100vw-3rem)] data-[swipe-direction=left]:transform-[translateX(var(--drawer-swipe-movement-x))] data-[swipe-direction=left]:rounded-none data-[swipe-direction=left]:rounded-r-2xl data-[swipe-direction=left]:pb-md data-[swipe-direction=left]:pl-[4.5rem] data-[swipe-direction=left]:shadow-[8px_0_24px_var(--color-shadow)] data-[swipe-direction=left]:data-ending-style:transform-[translateX(calc(-100%+3rem-2px))] data-[swipe-direction=left]:data-starting-style:transform-[translateX(calc(-100%+3rem-2px))]',\n )\n\nexport function DrawerPopup({ className, children, ref, ...props }: DrawerPopupProps) {\n return (\n <BaseDrawer.Portal>\n <BaseDrawer.Backdrop className={backdropClassName} />\n <BaseDrawer.Viewport className={viewportClassName}>\n <BaseDrawer.Popup className={cn(popupClassName, className)} ref={ref} {...props}>\n {children}\n </BaseDrawer.Popup>\n </BaseDrawer.Viewport>\n </BaseDrawer.Portal>\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport type { DrawerProviderProps } from './drawer.types'\n\nexport function DrawerProvider({ children, ...props }: DrawerProviderProps) {\n return (\n <BaseDrawer.Provider {...props}>\n <BaseDrawer.IndentBackground />\n <BaseDrawer.Indent>{children}</BaseDrawer.Indent>\n </BaseDrawer.Provider>\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerTitleProps } from './drawer.types'\n\nexport function DrawerTitle({ className, ref, ...props }: DrawerTitleProps) {\n return <BaseDrawer.Title className={cn('style-text-strong-1', className)} ref={ref} {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerTriggerProps } from './drawer.types'\n\nexport function DrawerTrigger({ className, children, ref, ...props }: DrawerTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseDrawer.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n}\n","import { Drawer as DrawerRoot } from './drawer'\nimport { DrawerClose } from './drawer-close'\nimport { DrawerContent } from './drawer-content'\nimport { DrawerDescription } from './drawer-description'\nimport { DrawerHeader } from './drawer-header'\nimport { DrawerPopup } from './drawer-popup'\nimport { DrawerProvider } from './drawer-provider'\nimport { DrawerTitle } from './drawer-title'\nimport { DrawerTrigger } from './drawer-trigger'\n\nconst Drawer = Object.assign(DrawerRoot, {\n Close: DrawerClose,\n Content: DrawerContent,\n Description: DrawerDescription,\n Header: DrawerHeader,\n Popup: DrawerPopup,\n Provider: DrawerProvider,\n Title: DrawerTitle,\n Trigger: DrawerTrigger,\n})\n\nexport type {\n DrawerProps,\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerProviderProps,\n DrawerTriggerProps,\n DrawerPopupProps,\n DrawerTitleProps,\n DrawerHeaderProps,\n} from './drawer.types'\nexport { DrawerClose } from './drawer-close'\nexport { DrawerContent } from './drawer-content'\nexport { DrawerDescription } from './drawer-description'\nexport { DrawerProvider } from './drawer-provider'\nexport { DrawerTrigger } from './drawer-trigger'\nexport { DrawerPopup } from './drawer-popup'\nexport { DrawerTitle } from './drawer-title'\nexport { DrawerHeader } from './drawer-header'\n\nexport { Drawer }\n","import React from 'react'\n\nimport type { DropzoneContextProps } from './dropzone.types'\n\nconst BYTES_PER_UNIT = 1000,\n FIRST_UNIT_INDEX = 0,\n UNIT_STEP = 1,\n LAST_UNIT_OFFSET = 1,\n NO_DECIMALS = 0,\n SINGLE_DECIMAL = 1,\n EMPTY_LENGTH = 0,\n PATTERN_START = 0,\n WILDCARD_SUFFIX_LENGTH = 1,\n formatFileSize = (bytes: number): string => {\n if (bytes < BYTES_PER_UNIT) {\n return `${bytes} B`\n }\n\n const units = ['KB', 'MB', 'GB', 'TB']\n let size = bytes / BYTES_PER_UNIT,\n unitIndex = FIRST_UNIT_INDEX,\n decimals = NO_DECIMALS\n\n while (size >= BYTES_PER_UNIT && unitIndex < units.length - LAST_UNIT_OFFSET) {\n size /= BYTES_PER_UNIT\n unitIndex += UNIT_STEP\n }\n\n if (!Number.isInteger(size)) {\n decimals = SINGLE_DECIMAL\n }\n\n return `${size.toFixed(decimals)}${units[unitIndex]}`\n },\n getFileKey = (file: File): string => `${file.name}-${file.size}-${file.lastModified}`,\n isFileTypeAccepted = (file: File, acceptedFileTypes: string[]): boolean => {\n if (acceptedFileTypes.length === EMPTY_LENGTH) {\n return true\n }\n\n const fileName = file.name.toLowerCase(),\n fileType = file.type.toLowerCase()\n\n return acceptedFileTypes.some((accepted) => {\n const pattern = accepted.toLowerCase()\n\n if (pattern.startsWith('.')) {\n return fileName.endsWith(pattern)\n }\n\n if (pattern.endsWith('/*')) {\n return fileType.startsWith(pattern.slice(PATTERN_START, -WILDCARD_SUFFIX_LENGTH))\n }\n\n return fileType === pattern\n })\n },\n DropzoneContext = React.createContext<DropzoneContextProps | undefined>(undefined),\n useDropzone = () => {\n const context = React.useContext(DropzoneContext)\n\n if (!context) {\n throw new Error('useDropzone must be used within a DropzoneProvider')\n }\n\n return context\n }\n\nexport { DropzoneContext, formatFileSize, getFileKey, isFileTypeAccepted, useDropzone }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DropzoneProps } from './dropzone.types'\nimport { DropzoneContext, formatFileSize, getFileKey, isFileTypeAccepted } from './dropzone.utils'\n\nconst SINGLE_FILE = 1,\n FIRST_INDEX = 0,\n EMPTY = 0,\n MIN_PROGRESS = 0,\n MAX_PROGRESS = 100,\n defaultMaxFilesErrorLabel = (max: number) => {\n let suffix = 's'\n if (max === SINGLE_FILE) {\n suffix = ''\n }\n return `You can select up to ${max} file${suffix}.`\n },\n defaultMaxFileSizeErrorLabel = (fileName: string, max: string) =>\n `\"${fileName}\" exceeds the maximum size of ${max}.`,\n defaultFileTypeErrorLabel = (fileName: string) => `\"${fileName}\" is not an accepted file type.`,\n resolveAcceptedTypes = (accept: string | undefined) => {\n if (typeof accept !== 'string') {\n return []\n }\n return accept\n .split(',')\n .map((value) => value.trim())\n .filter(Boolean)\n },\n toFileArray = (fileList: FileList | null) => {\n if (!fileList) {\n return []\n }\n return [...fileList]\n },\n formatOptionalSize = (size: number | undefined) => {\n if (size === undefined) {\n return undefined\n }\n return formatFileSize(size)\n }\n\nexport function Dropzone({\n maxFiles,\n maxFileSize,\n maxFilesErrorLabel = defaultMaxFilesErrorLabel,\n maxFileSizeErrorLabel = defaultMaxFileSizeErrorLabel,\n fileTypeErrorLabel = defaultFileTypeErrorLabel,\n onUpload,\n ref,\n className,\n children,\n onChange,\n onConfirm,\n ...props\n}: DropzoneProps) {\n const inputRef = React.useRef<HTMLInputElement | null>(null),\n filesRef = React.useRef<File[]>([]),\n [isHovering, setIsHovering] = React.useState(false),\n [files, setFiles] = React.useState<File[]>([]),\n [fileError, setFileError] = React.useState<string | undefined>(undefined),\n [fileProgress, setFileProgress] = React.useState<Record<string, number>>({}),\n acceptedFileTypes = resolveAcceptedTypes(props.accept),\n formattedMaxFileSize = formatOptionalSize(maxFileSize),\n syncInputFiles = React.useCallback((nextFiles: File[]) => {\n if (!inputRef.current) {\n return\n }\n\n const dataTransfer = new DataTransfer()\n nextFiles.forEach((file) => dataTransfer.items.add(file))\n inputRef.current.files = dataTransfer.files\n }, []),\n getNextFiles = (incomingFiles: File[]) => {\n if (!props.multiple) {\n return incomingFiles.slice(FIRST_INDEX, SINGLE_FILE)\n }\n\n const mergedFiles = [...filesRef.current, ...incomingFiles],\n dedupedFiles = mergedFiles.filter(\n (file, index, source) =>\n source.findIndex(\n (item) =>\n item.name === file.name &&\n item.size === file.size &&\n item.lastModified === file.lastModified,\n ) === index,\n )\n\n return dedupedFiles\n },\n startUploads = (newFiles: File[]) => {\n newFiles.forEach((file) => {\n const key = getFileKey(file)\n\n if (!onUpload) {\n setFileProgress((previous) => ({ ...previous, [key]: MAX_PROGRESS }))\n return\n }\n\n setFileProgress((previous) => ({ ...previous, [key]: MIN_PROGRESS }))\n void onUpload(file, (percent) => {\n setFileProgress((previous) => ({\n ...previous,\n [key]: Math.max(MIN_PROGRESS, Math.min(MAX_PROGRESS, percent)),\n }))\n })\n })\n },\n commitFiles = (previousFiles: File[], acceptedFiles: File[]) => {\n const previousKeys = new Set(previousFiles.map(getFileKey)),\n addedFiles = acceptedFiles.filter((file) => !previousKeys.has(getFileKey(file)))\n filesRef.current = acceptedFiles\n setFiles(acceptedFiles)\n syncInputFiles(acceptedFiles)\n startUploads(addedFiles)\n },\n partitionBySize = (candidateFiles: File[]) => {\n if (maxFileSize === undefined) {\n return { acceptedFiles: candidateFiles, oversizedFiles: [] as File[] }\n }\n\n return {\n acceptedFiles: candidateFiles.filter((file) => file.size <= maxFileSize),\n oversizedFiles: candidateFiles.filter((file) => file.size > maxFileSize),\n }\n },\n processFiles = (candidateFiles: File[]) => {\n const invalidTypeFiles = candidateFiles.filter(\n (file) => !isFileTypeAccepted(file, acceptedFileTypes),\n ),\n { oversizedFiles, acceptedFiles } = partitionBySize(candidateFiles)\n\n if (invalidTypeFiles.length > EMPTY) {\n return {\n acceptedFiles: undefined,\n error: fileTypeErrorLabel(invalidTypeFiles[FIRST_INDEX].name),\n }\n }\n\n if (maxFiles !== undefined && acceptedFiles.length > maxFiles) {\n return {\n acceptedFiles: undefined,\n error: maxFilesErrorLabel(maxFiles),\n }\n }\n\n if (oversizedFiles.length > EMPTY && maxFileSize !== undefined) {\n return {\n acceptedFiles,\n error: maxFileSizeErrorLabel(\n oversizedFiles[FIRST_INDEX].name,\n formatFileSize(maxFileSize),\n ),\n }\n }\n\n return { acceptedFiles, error: undefined }\n },\n applyAcceptedFiles = (candidateFiles: File[]) => {\n const previousFiles = filesRef.current,\n nextFiles = getNextFiles(candidateFiles),\n { acceptedFiles, error } = processFiles(nextFiles)\n\n if (acceptedFiles) {\n commitFiles(previousFiles, acceptedFiles)\n }\n\n return { acceptedFiles, error, previousFiles }\n },\n removeFile = (fileToRemove: File) => {\n const removedKey = getFileKey(fileToRemove)\n\n setFiles((previousFiles) => {\n const nextFiles = previousFiles.filter((file) => file !== fileToRemove)\n filesRef.current = nextFiles\n syncInputFiles(nextFiles)\n return nextFiles\n })\n setFileProgress((previous) => {\n const next = { ...previous }\n delete next[removedKey]\n return next\n })\n setFileError(undefined)\n },\n handleFiles = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { acceptedFiles, error, previousFiles } = applyAcceptedFiles(\n toFileArray(event.target.files),\n )\n\n setFileError(error)\n if (!acceptedFiles) {\n syncInputFiles(previousFiles)\n return\n }\n\n onChange?.(event)\n },\n handleDragOver = (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault()\n setIsHovering(true)\n },\n handleDragLeave = () => {\n setIsHovering(false)\n },\n handleDrop = (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault()\n const { acceptedFiles, error } = applyAcceptedFiles([...event.dataTransfer.files])\n\n setFileError(error)\n if (!acceptedFiles) {\n setIsHovering(false)\n return\n }\n\n inputRef.current?.dispatchEvent(new Event('change', { bubbles: true }))\n setIsHovering(false)\n }\n\n React.useEffect(() => {\n filesRef.current = files\n }, [files])\n\n return (\n <DropzoneContext.Provider\n value={{\n acceptedFileTypes,\n fileError,\n fileProgress,\n files,\n handleDragLeave,\n handleDragOver,\n handleDrop,\n handleFiles,\n inputRef,\n isHovering,\n maxFileSize: formattedMaxFileSize,\n maxFiles,\n onConfirm,\n onUpload,\n props,\n removeFile,\n setFiles,\n }}\n >\n <div className={cn('space-y-md', className)} ref={ref}>\n {children}\n </div>\n </DropzoneContext.Provider>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneActionsProps } from './dropzone.types'\n\nexport function DropzoneActions({ className, ref, ...props }: DropzoneActionsProps) {\n return <div className={cn('flex items-center gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneClearProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nconst EMPTY_FILE_COUNT = 0\n\nexport function DropzoneClear({ className, ref, ...props }: DropzoneClearProps) {\n const { files, setFiles } = useDropzone()\n\n return (\n <Button\n disabled={files.length === EMPTY_FILE_COUNT}\n onClick={() => setFiles([])}\n tone=\"error\"\n variant=\"outline\"\n className={cn('w-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneConfirmProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nconst EMPTY_FILE_COUNT = 0\n\nexport function DropzoneConfirm({ className, ref, ...props }: DropzoneConfirmProps) {\n const { files, onConfirm } = useDropzone(),\n handleClick = () => {\n if (onConfirm) {\n onConfirm(files)\n }\n }\n return (\n <Button\n disabled={files.length === EMPTY_FILE_COUNT}\n onClick={handleClick}\n className={cn('w-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DropzoneContainerProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneContainer({\n className,\n children,\n ...containerProps\n}: DropzoneContainerProps) {\n const {\n fileError,\n handleDragLeave,\n handleDragOver,\n handleDrop,\n handleFiles,\n inputRef,\n isHovering,\n props,\n } = useDropzone(),\n inputId = useId(),\n isDisabled = props.disabled ?? false\n\n return (\n <>\n {/* Drag-and-drop has no keyboard equivalent; the label/input and Dropzone.Trigger provide the accessible path. */}\n {/* oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <label\n htmlFor={inputId}\n aria-disabled={isDisabled}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n className={cn(\n 'flex size-full items-center justify-center rounded-xl border-2 border-brand-border bg-surface py-2xl transition-all outline-none',\n !isDisabled && 'cursor-pointer',\n isHovering && 'ring-8 ring-brand-border-strong/20',\n fileError && 'border-error-border',\n isDisabled && 'cursor-not-allowed opacity-50',\n className,\n )}\n {...containerProps}\n >\n <div className=\"flex flex-col items-center justify-center gap-lg\">{children}</div>\n </label>\n <input\n {...props}\n id={inputId}\n hidden\n onChange={handleFiles}\n onClick={(event) => {\n event.currentTarget.value = ''\n }}\n ref={inputRef}\n type=\"file\"\n />\n </>\n )\n}\n","import { WarningCircleIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DropzoneErrorProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneError({ className, children, ref, ...props }: DropzoneErrorProps) {\n const { fileError } = useDropzone()\n\n if (!fileError && !children) {\n return undefined\n }\n\n return (\n <p\n className={cn('flex items-center gap-2xs style-text-strong--1 text-error-default', className)}\n ref={ref}\n role=\"alert\"\n {...props}\n >\n <WarningCircleIcon weight=\"bold\" />\n {children ?? fileError}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFileLimitProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFileLimit({ className, children, ref, ...props }: DropzoneFileLimitProps) {\n const { files, maxFiles } = useDropzone()\n\n if (maxFiles === undefined) {\n return undefined\n }\n\n return (\n <span\n className={cn('style-text-default--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {files.length}/{maxFiles}\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFileSizeLimitProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFileSizeLimit({\n className,\n children,\n ref,\n ...props\n}: DropzoneFileSizeLimitProps) {\n const { maxFileSize } = useDropzone()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {maxFileSize}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesProps } from './dropzone.types'\n\nexport function DropzoneFiles({ className, ref, ...props }: DropzoneFilesProps) {\n return <div className={cn('flex flex-col gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesHeaderProps } from './dropzone.types'\n\nexport function DropzoneFilesHeader({ className, ref, ...props }: DropzoneFilesHeaderProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Meter as BaseMeter } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype MeterProps = React.ComponentProps<typeof BaseMeter.Root> & VariantProps<typeof meterVariants>\ntype MeterLabelProps = React.ComponentProps<typeof BaseMeter.Label>\ntype MeterValueProps = React.ComponentProps<typeof BaseMeter.Value>\ntype MeterTrackProps = React.ComponentProps<typeof BaseMeter.Track>\ntype MeterIndicatorProps = React.ComponentProps<typeof BaseMeter.Indicator>\ntype MeterHeaderProps = React.ComponentProps<'div'>\ntype MeterFooterProps = React.ComponentProps<'div'>\ntype MeterSubtitleProps = React.ComponentProps<'span'>\n\nconst meterVariants = cva('', {\n defaultVariants: {\n orientation: 'vertical',\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n orientation: {\n horizontal:\n 'flex items-center justify-between gap-xs [&_[data-track]]:w-full [&_button]:shrink-0',\n vertical: 'flex flex-col space-y-3xs',\n },\n size: {\n large: '[&_[data-track]]:h-xs',\n medium: '[&_[data-track]]:h-2xs',\n small: '[&_[data-track]]:h-3xs',\n },\n tone: {\n accent: '[&_[data-indicator]]:bg-accent-default',\n brand: '[&_[data-indicator]]:bg-brand-default',\n error: '[&_[data-indicator]]:bg-error-default',\n info: '[&_[data-indicator]]:bg-info-default',\n neutral: '[&_[data-indicator]]:bg-neutral-default',\n success: '[&_[data-indicator]]:bg-success-default',\n warning: '[&_[data-indicator]]:bg-warning-default',\n },\n },\n})\n\nexport { meterVariants }\nexport type {\n MeterProps,\n MeterLabelProps,\n MeterValueProps,\n MeterTrackProps,\n MeterIndicatorProps,\n MeterHeaderProps,\n MeterFooterProps,\n MeterSubtitleProps,\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { meterVariants } from './meter.types'\nimport type { MeterProps } from './meter.types'\n\nexport function Meter({ orientation, size, tone, className, ref, ...props }: MeterProps) {\n return (\n <BaseMeter.Root\n className={cn(meterVariants({ className, orientation, size, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterFooterProps } from './meter.types'\n\nexport function MeterFooter({ className, ref, ...props }: MeterFooterProps) {\n return <div className={cn('flex items-center justify-between', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterHeaderProps } from './meter.types'\n\nexport function MeterHeader({ className, ref, ...props }: MeterHeaderProps) {\n return <div className={cn('flex items-center justify-between', className)} ref={ref} {...props} />\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterIndicatorProps } from './meter.types'\n\nexport function MeterIndicator({ className, ref, ...props }: MeterIndicatorProps) {\n return (\n <BaseMeter.Indicator\n data-indicator\n className={cn('rounded-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterLabelProps } from './meter.types'\n\nexport function MeterLabel({ className, ref, ...props }: MeterLabelProps) {\n return (\n <BaseMeter.Label\n className={cn(\n 'flex items-center gap-2xs style-text-strong--1 text-on-surface [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterSubtitleProps } from './meter.types'\n\nexport function MeterSubtitle({ className, ref, ...props }: MeterSubtitleProps) {\n return (\n <span\n className={cn(\n 'text-left style-text-prose--2 whitespace-nowrap text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterTrackProps } from './meter.types'\n\nexport function MeterTrack({ className, ref, ...props }: MeterTrackProps) {\n return (\n <BaseMeter.Track\n className={cn('w-full self-center rounded-full bg-surface-low inset-shadow-2xs', className)}\n data-track\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterValueProps } from './meter.types'\n\nexport function MeterValue({ className, ref, ...props }: MeterValueProps) {\n return (\n <BaseMeter.Value\n className={cn('ml-auto text-right style-text-prose--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as MeterRoot } from './meter'\nimport { MeterFooter } from './meter-footer'\nimport { MeterHeader } from './meter-header'\nimport { MeterIndicator } from './meter-indicator'\nimport { MeterLabel } from './meter-label'\nimport { MeterSubtitle } from './meter-subtitle'\nimport { MeterTrack } from './meter-track'\nimport { MeterValue } from './meter-value'\n\nconst Meter = Object.assign(MeterRoot, {\n Footer: MeterFooter,\n Header: MeterHeader,\n Indicator: MeterIndicator,\n Label: MeterLabel,\n Subtitle: MeterSubtitle,\n Track: MeterTrack,\n Value: MeterValue,\n})\n\nexport type {\n MeterHeaderProps,\n MeterIndicatorProps,\n MeterLabelProps,\n MeterProps,\n MeterTrackProps,\n MeterValueProps,\n MeterFooterProps,\n MeterSubtitleProps,\n} from './meter.types'\nexport { MeterHeader } from './meter-header'\nexport { MeterIndicator } from './meter-indicator'\nexport { MeterLabel } from './meter-label'\nexport { MeterTrack } from './meter-track'\nexport { MeterValue } from './meter-value'\nexport { MeterFooter } from './meter-footer'\nexport { MeterSubtitle } from './meter-subtitle'\nexport { Meter }\n","import { CheckIcon, FileArrowUpIcon, TrashIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Meter, MeterFooter, MeterIndicator, MeterTrack, MeterValue } from '../meter'\nimport type { DropzoneFilesListProps } from './dropzone.types'\nimport { formatFileSize, getFileKey, useDropzone } from './dropzone.utils'\n\nconst NO_PROGRESS = 0,\n COMPLETE_PROGRESS = 100\n\nexport function DropzoneFilesList({ className, children, ref, ...props }: DropzoneFilesListProps) {\n const { files, fileProgress, removeFile, onUpload } = useDropzone()\n\n return (\n <ul className={cn('flex flex-col gap-xs', className)} ref={ref} {...props}>\n {files.map((file) => {\n const fileKey = getFileKey(file),\n progress = fileProgress[fileKey] ?? NO_PROGRESS,\n isUploading = progress >= NO_PROGRESS && progress < COMPLETE_PROGRESS,\n isUploaded = progress >= COMPLETE_PROGRESS\n\n let meterTone: 'success' | 'brand' = 'brand'\n if (isUploaded) {\n meterTone = 'success'\n }\n\n return (\n <li\n key={fileKey}\n className={cn(\n 'flex items-center justify-between gap-lg rounded-xl border bg-surface px-md py-sm',\n isUploading && 'border-border',\n isUploaded && 'border-border',\n )}\n >\n {isUploading && (\n <div className=\"flex items-center justify-center rounded-full bg-brand-container p-xs\">\n <FileArrowUpIcon className=\"size-md text-brand-on-container\" />\n </div>\n )}\n {isUploaded && (\n <div className=\"flex items-center justify-center rounded-full bg-success-container p-xs\">\n <CheckIcon className=\"size-md text-success-on-container\" />\n </div>\n )}\n <div className=\"flex w-full flex-col justify-between gap-3xs\">\n <span className=\"style-text-default-0\">{file.name}</span>\n {onUpload && (\n <Meter orientation=\"vertical\" tone={meterTone} value={progress}>\n <MeterTrack>\n <MeterIndicator />\n </MeterTrack>\n <MeterFooter>\n <span className=\"style-text-prose--1 text-on-surface-variant\">\n {formatFileSize(file.size)}\n </span>\n <MeterValue />\n </MeterFooter>\n </Meter>\n )}\n {!onUpload && (\n <span className=\"style-text-prose--1 text-on-surface-variant\">\n {formatFileSize(file.size)}\n </span>\n )}\n </div>\n <Button variant=\"ghost\" tone=\"error\" onClick={() => removeFile(file)}>\n <TrashIcon weight=\"bold\" />\n </Button>\n </li>\n )\n })}\n {children}\n </ul>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesTitleProps } from './dropzone.types'\n\nexport function DropzoneFilesTitle({ className, ref, ...props }: DropzoneFilesTitleProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFormatsProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFormats({ className, children, ref, ...props }: DropzoneFormatsProps) {\n const { acceptedFileTypes } = useDropzone()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {acceptedFileTypes.join(', ')}\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneHeadingProps } from './dropzone.types'\n\nexport function DropzoneHeading({ className, ref, ...props }: DropzoneHeadingProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneIconProps } from './dropzone.types'\n\nexport function DropzoneIcon({ className, ref, ...props }: DropzoneIconProps) {\n return (\n <div\n className={cn(\n 'rounded-full bg-brand-container p-sm [&>svg]:size-lg [&>svg]:text-brand-on-container',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneInfoProps } from './dropzone.types'\n\nexport function DropzoneInfo({ className, ref, ...props }: DropzoneInfoProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneSubtitleProps } from './dropzone.types'\n\nexport function DropzoneSubtitle({ className, ref, ...props }: DropzoneSubtitleProps) {\n return <span className={cn('text-on-surface-variant', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneTriggerProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneTrigger({ className, ref, ...props }: DropzoneTriggerProps) {\n const { inputRef } = useDropzone(),\n handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n inputRef.current?.click()\n }\n\n return (\n <Button\n variant=\"link\"\n onClick={handleClick}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dropzone as DropzoneRoot } from './dropzone'\nimport { DropzoneActions } from './dropzone-actions'\nimport { DropzoneClear } from './dropzone-clear'\nimport { DropzoneConfirm } from './dropzone-confirm'\nimport { DropzoneContainer } from './dropzone-container'\nimport { DropzoneError } from './dropzone-error'\nimport { DropzoneFileLimit } from './dropzone-file-limit'\nimport { DropzoneFileSizeLimit } from './dropzone-file-size-limit'\nimport { DropzoneFiles } from './dropzone-files'\nimport { DropzoneFilesHeader } from './dropzone-files-header'\nimport { DropzoneFilesList } from './dropzone-files-list'\nimport { DropzoneFilesTitle } from './dropzone-files-title'\nimport { DropzoneFormats } from './dropzone-formats'\nimport { DropzoneHeading } from './dropzone-heading'\nimport { DropzoneIcon } from './dropzone-icon'\nimport { DropzoneInfo } from './dropzone-info'\nimport { DropzoneSubtitle } from './dropzone-subtitle'\nimport { DropzoneTrigger } from './dropzone-trigger'\n\nconst Dropzone = Object.assign(DropzoneRoot, {\n Actions: DropzoneActions,\n Clear: DropzoneClear,\n Confirm: DropzoneConfirm,\n Container: DropzoneContainer,\n Error: DropzoneError,\n FileLimit: DropzoneFileLimit,\n FileSizeLimit: DropzoneFileSizeLimit,\n Files: DropzoneFiles,\n FilesHeader: DropzoneFilesHeader,\n FilesList: DropzoneFilesList,\n FilesTitle: DropzoneFilesTitle,\n Formats: DropzoneFormats,\n Heading: DropzoneHeading,\n Icon: DropzoneIcon,\n Info: DropzoneInfo,\n Subtitle: DropzoneSubtitle,\n Trigger: DropzoneTrigger,\n})\n\nexport type {\n DropzoneProps,\n DropzoneContainerProps,\n DropzoneErrorProps,\n DropzoneActionsProps,\n DropzoneClearProps,\n DropzoneConfirmProps,\n DropzoneFilesListProps,\n DropzoneFileLimitProps,\n DropzoneFilesHeaderProps,\n DropzoneFilesProps,\n DropzoneFilesTitleProps,\n DropzoneFileSizeLimitProps,\n DropzoneFormatsProps,\n DropzoneHeadingProps,\n DropzoneIconProps,\n DropzoneSubtitleProps,\n DropzoneTriggerProps,\n DropzoneInfoProps,\n} from './dropzone.types'\nexport { DropzoneContainer } from './dropzone-container'\nexport { DropzoneError } from './dropzone-error'\nexport { DropzoneFilesList as DropzoneFileList } from './dropzone-files-list'\nexport { DropzoneFileSizeLimit } from './dropzone-file-size-limit'\nexport { DropzoneFormats } from './dropzone-formats'\nexport { DropzoneHeading } from './dropzone-heading'\nexport { DropzoneIcon } from './dropzone-icon'\nexport { DropzoneSubtitle } from './dropzone-subtitle'\nexport { DropzoneTrigger } from './dropzone-trigger'\nexport { DropzoneInfo } from './dropzone-info'\nexport { DropzoneFiles } from './dropzone-files'\nexport { DropzoneFilesHeader } from './dropzone-files-header'\nexport { DropzoneFilesTitle } from './dropzone-files-title'\nexport { DropzoneActions } from './dropzone-actions'\nexport { DropzoneConfirm } from './dropzone-confirm'\nexport { DropzoneClear } from './dropzone-clear'\n\nexport { Dropzone }\n","import { cn } from '@/utils/cn'\n\nimport type { FieldProps } from './field.types'\n\nexport function Field({ className, children, ref, ...props }: FieldProps) {\n return (\n <div className={cn('flex flex-col gap-2xs', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { createFormHookContexts } from '@tanstack/react-form'\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts()\n","import { Checkbox } from '../checkbox'\nimport { useFieldContext } from '../form/form-contexts'\nimport { Label } from '../label'\nimport type { FieldCheckboxProps } from './field.types'\n\nexport function FieldCheckbox({ ...props }: FieldCheckboxProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <div className=\"flex items-center gap-xs\">\n <Checkbox\n checked={field.state.value}\n id={field.name}\n name={field.name}\n onCheckedChange={(checked) => field.handleChange(checked)}\n {...props}\n />\n {props.label && <Label htmlFor={field.name}>{props.label}</Label>}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldDescriptionProps } from './field.types'\n\nexport function FieldDescription({ className, ref, ...props }: FieldDescriptionProps) {\n return (\n <p\n className={cn('style-text-prose--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport type { FieldErrorProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldErrors({ className, children, ref, ...props }: FieldErrorProps) {\n const field = useFieldContext()\n\n if (field.state.meta.errors.length === NO_ERRORS) {\n return undefined\n }\n\n return (\n <ul className={cn('space-y-3xs', className)} ref={ref} {...props}>\n {field.state.meta.errors.map((error) => (\n <li\n className=\"flex items-center gap-2xs style-text-strong--1 text-error-default\"\n key={error.message}\n >\n {error.message}\n </li>\n ))}\n {children}\n </ul>\n )\n}\n","import { Input as BaseInput } from '@base-ui/react/input'\nimport { UploadIcon, XIcon } from '@phosphor-icons/react'\nimport { useRef, useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { formatFileSize, inputVariants } from './input.types'\nimport type { InputProps } from './input.types'\n\nconst DEFAULT_COLOR = '#000000',\n EMPTY_FILE_COUNT = 0,\n SINGLE_FILE_COUNT = 1,\n defaultFileUploadButtonIcon = <UploadIcon weight=\"bold\" />,\n defaultFilesSelectedLabel = (count: number) => `${count} files selected`,\n defaultMaxFilesErrorLabel = (maxFiles: number) => {\n if (maxFiles === SINGLE_FILE_COUNT) {\n return `You can select up to ${maxFiles} file.`\n }\n return `You can select up to ${maxFiles} files.`\n },\n defaultMaxFileSizeErrorLabel = (fileName: string, maxFileSize: string) =>\n `\"${fileName}\" exceeds the maximum size of ${maxFileSize}.`\n\nfunction getStringValue(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value\n }\n return undefined\n}\n\nfunction getColorValue(\n isControlled: boolean,\n controlledValue: unknown,\n uncontrolledValue: string,\n): string {\n if (isControlled) {\n return getStringValue(controlledValue) || DEFAULT_COLOR\n }\n return uncontrolledValue || DEFAULT_COLOR\n}\n\nfunction getColorInputProps(isControlled: boolean, colorValue: string) {\n if (isControlled) {\n return { value: colorValue }\n }\n return { defaultValue: colorValue }\n}\n\nfunction getFileValidationError(\n files: File[],\n options: {\n maxFiles: number | undefined\n maxFileSize: number | undefined\n maxFilesErrorLabel: NonNullable<InputProps['maxFilesErrorLabel']>\n maxFileSizeErrorLabel: NonNullable<InputProps['maxFileSizeErrorLabel']>\n },\n): string | undefined {\n const { maxFiles, maxFileSize, maxFilesErrorLabel, maxFileSizeErrorLabel } = options,\n oversizedFile = files.find((file) => maxFileSize !== undefined && file.size > maxFileSize)\n if (maxFiles !== undefined && files.length > maxFiles) {\n return maxFilesErrorLabel(maxFiles)\n }\n\n if (oversizedFile && maxFileSize !== undefined) {\n return maxFileSizeErrorLabel(oversizedFile.name, formatFileSize(maxFileSize))\n }\n return undefined\n}\n\nfunction getFileStatus(options: {\n fileError: string | undefined\n selectedFiles: File[]\n placeholder: InputProps['placeholder']\n filesSelectedLabel: (count: number) => string\n}) {\n const { fileError, selectedFiles, placeholder, filesSelectedLabel } = options\n if (fileError) {\n return <span className=\"style-text-prose-0 text-error-default\">{fileError}</span>\n }\n if (selectedFiles.length === EMPTY_FILE_COUNT) {\n return <span className=\"style-text-prose-0 text-on-surface-variant\">{placeholder}</span>\n }\n if (selectedFiles.length === SINGLE_FILE_COUNT) {\n return selectedFiles.at(EMPTY_FILE_COUNT)?.name\n }\n return filesSelectedLabel(selectedFiles.length)\n}\n\nexport function Input({\n fileUploadButtonIcon = defaultFileUploadButtonIcon,\n fileUploadButtonLabel,\n maxFiles,\n maxFileSize,\n clearFilesLabel = 'Remove files',\n filesSelectedLabel = defaultFilesSelectedLabel,\n maxFilesErrorLabel = defaultMaxFilesErrorLabel,\n maxFileSizeErrorLabel = defaultMaxFileSizeErrorLabel,\n compact,\n variant,\n size,\n className,\n ref,\n ...props\n}: InputProps) {\n const inputRef = useRef<HTMLInputElement>(null),\n [uncontrolledColorValue, setUncontrolledColorValue] = useState<string>(\n getStringValue(props.defaultValue) || getStringValue(props.value) || DEFAULT_COLOR,\n ),\n [selectedFiles, setSelectedFiles] = useState<File[]>([]),\n [fileError, setFileError] = useState<string | undefined>(undefined)\n\n if (props.type === 'color') {\n const isControlled = props.value !== undefined,\n colorValue = getColorValue(isControlled, props.value, uncontrolledColorValue),\n { onChange, defaultValue: _defaultValue, value: _value, ...colorProps } = props,\n handleColorChange: NonNullable<typeof onChange> = (event) => {\n if (!isControlled) {\n setUncontrolledColorValue(event.currentTarget.value)\n }\n\n onChange?.(event)\n },\n handleColorRef = (node: HTMLInputElement | null) => {\n inputRef.current = node\n\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: node })\n }\n }\n\n if (compact) {\n return (\n <button\n aria-label=\"Open color picker\"\n className={cn(\n 'relative outline-2 outline-transparent transition-colors focus-within:outline-border hover:cursor-pointer',\n size === 'small' && 'size-lg -outline-offset-2',\n size === 'medium' && 'size-xl -outline-offset-4',\n size === 'large' && 'size-2xl -outline-offset-6',\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'size-full',\n size === 'small' && 'rounded-lg',\n size === 'medium' && 'rounded-xl',\n size === 'large' && 'rounded-2xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n </button>\n )\n }\n\n return (\n <button\n aria-label=\"Open color picker\"\n className={cn(\n 'relative flex hover:cursor-pointer',\n inputVariants({ size, variant }),\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'absolute top-1/2 left-xs aspect-square h-7/12 -translate-y-1/2',\n size === 'small' && 'rounded-md',\n size === 'medium' && 'rounded-lg',\n size === 'large' && 'rounded-xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute top-lg\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n <p\n className={cn(\n 'text-left',\n size === 'small' && 'pr-2xs pl-lg style-text-default--1',\n size === 'medium' && 'pl-lg style-text-default-0',\n size === 'large' && 'pl-xl style-text-default-1',\n )}\n >\n {colorValue}\n </p>\n </button>\n )\n }\n\n if (props.type === 'file') {\n const { onChange, ...fileProps } = props,\n clearFiles = () => {\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n\n setSelectedFiles([])\n setFileError(undefined)\n },\n handleFileChange: NonNullable<typeof onChange> = (event) => {\n const input = event.currentTarget,\n files = [...(input.files ?? [])],\n validationError = getFileValidationError(files, {\n maxFileSize,\n maxFileSizeErrorLabel,\n maxFiles,\n maxFilesErrorLabel,\n })\n if (validationError) {\n setSelectedFiles([])\n setFileError(validationError)\n input.value = ''\n return\n }\n\n setFileError(undefined)\n setSelectedFiles(files)\n onChange?.(event)\n }\n\n return (\n <div className=\"flex items-center justify-between gap-lg\">\n <div className=\"flex items-center gap-xs\">\n <Button variant=\"soft\" tone=\"neutral\" onClick={() => inputRef.current?.click()}>\n {fileUploadButtonIcon}\n {fileUploadButtonLabel}\n </Button>\n <BaseInput ref={inputRef} {...fileProps} hidden onChange={handleFileChange} />\n <p className=\"style-text-default-0\">\n {getFileStatus({\n fileError,\n filesSelectedLabel,\n placeholder: props.placeholder,\n selectedFiles,\n })}\n </p>\n </div>\n <Button\n aria-label={clearFilesLabel}\n size=\"iconMedium\"\n variant=\"ghost\"\n tone=\"error\"\n onClick={clearFiles}\n >\n <XIcon weight=\"bold\" />\n </Button>\n </div>\n )\n }\n\n return (\n <BaseInput className={cn(inputVariants({ size, variant }), className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { Input } from '../input'\nimport type { FieldInputProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInput({ className, ref, ...props }: FieldInputProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <Input\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { InputGroup } from '../input-group'\nimport type { FieldInputGroupProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInputGroup({ className, ref, ...props }: FieldInputGroupProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <InputGroup\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { InputGroupInput } from '../input-group'\nimport type { FieldInputGroupInputProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInputGroupInput({ className, ref, ...props }: FieldInputGroupInputProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <InputGroupInput\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Checkbox } from '../checkbox'\nimport type { Input } from '../input'\nimport type { InputGroup, InputGroupInput } from '../input-group'\nimport type { Radio, RadioGroup } from '../radio-group'\nimport type { Select } from '../select'\nimport type { Slider } from '../slider'\nimport type { Switch } from '../switch'\nimport type { TextArea } from '../text-area'\nimport type { Toggle } from '../toggle'\n\ntype FieldDescriptionProps = React.ComponentProps<'p'>\ntype FieldErrorProps = React.ComponentProps<'ul'>\ntype FieldInputGroupProps = React.ComponentProps<typeof InputGroup>\ntype FieldInputGroupInputProps = React.ComponentProps<typeof InputGroupInput>\ntype FieldInputProps = React.ComponentProps<typeof Input>\ntype FieldLabelProps = React.ComponentProps<'div'> &\n VariantProps<typeof fieldLabelVariants> & {\n showRequired?: boolean\n }\ntype FieldSelectProps = React.ComponentProps<typeof Select>\ntype FieldSliderProps = React.ComponentProps<typeof Slider>\ntype FieldTextAreaProps = React.ComponentProps<typeof TextArea>\ntype FieldCheckboxProps = React.ComponentProps<typeof Checkbox>\ntype FieldRadioProps = React.ComponentProps<typeof Radio>\ntype FieldRadioGroupProps = React.ComponentProps<typeof RadioGroup>\ntype FieldSwitchProps = React.ComponentProps<typeof Switch>\ntype FieldToggleProps = React.ComponentProps<typeof Toggle>\ntype FieldProps = React.ComponentProps<'div'>\ntype FieldSetProps = React.ComponentProps<'div'>\ntype FieldRowProps = React.ComponentProps<'div'>\n\nexport const fieldLabelVariants = cva('whitespace-nowrap', {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n variant: {\n primary: 'text-on-surface',\n secondary: 'text-on-surface-variant',\n },\n },\n})\n\nexport type {\n FieldDescriptionProps,\n FieldErrorProps,\n FieldInputGroupProps,\n FieldInputGroupInputProps,\n FieldInputProps,\n FieldLabelProps,\n FieldSelectProps,\n FieldSliderProps,\n FieldTextAreaProps,\n FieldCheckboxProps,\n FieldRadioProps,\n FieldRadioGroupProps,\n FieldSwitchProps,\n FieldToggleProps,\n FieldProps,\n FieldSetProps,\n FieldRowProps,\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { fieldLabelVariants } from './field.types'\nimport type { FieldLabelProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldLabel({\n size,\n variant,\n showRequired = false,\n className,\n children,\n ref,\n ...props\n}: FieldLabelProps) {\n const field = useFieldContext(),\n fieldName = field.name\n .replace(/(?<letter>[A-Z])/g, ' $<letter>')\n .replace(/^./, (str) => str.toUpperCase()),\n isInvalid = field.state.meta.errors.length > NO_ERRORS\n\n return (\n <div\n className={cn(\n fieldLabelVariants({ size, variant }),\n className,\n isInvalid && 'text-error-default',\n )}\n ref={ref}\n {...props}\n >\n {children || fieldName}\n {showRequired && <span className=\"ml-3xs text-error-default\">*</span>}\n </div>\n )\n}\n","import type { Radio as BaseRadio, RadioGroup as BaseRadioGroup } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst radioVariants = cva(\n 'group flex size-sm shrink-0 items-center justify-center rounded-full outline outline-transparent transition-all hover:outline-border-strong data-checked:bg-brand-default data-checked:outline-brand-border-strong data-disabled:opacity-50',\n {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n inSurface: 'bg-surface-low inset-shadow-2xs',\n },\n },\n },\n)\n\ntype RadioProps = React.ComponentProps<typeof BaseRadio.Root> & VariantProps<typeof radioVariants>\ntype RadioGroupProps = React.ComponentProps<typeof BaseRadioGroup>\n\nexport type { RadioProps, RadioGroupProps }\nexport { radioVariants }\n","import { Radio as BaseRadio } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport { radioVariants } from './radio-group.types'\nimport type { RadioProps } from './radio-group.types'\n\nexport function Radio({ variant, className, children, ref, ...props }: RadioProps) {\n return (\n <Label htmlFor={props.id}>\n <BaseRadio.Root className={cn(radioVariants({ className, variant }))} ref={ref} {...props}>\n <BaseRadio.Indicator\n data-indicator\n className=\"size-2xs origin-center scale-0 rounded-full bg-surface shadow-2xs transition-transform duration-200 ease-out data-checked:scale-100\"\n />\n </BaseRadio.Root>\n {children}\n </Label>\n )\n}\n","import { RadioGroup as BaseRadioGroup } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { RadioGroupProps } from './radio-group.types'\n\nexport function RadioGroup({ className, ref, ...props }: RadioGroupProps) {\n const id = React.useId()\n\n return (\n <BaseRadioGroup\n aria-labelledby={id}\n className={cn('flex flex-col items-start gap-2xs data-disabled:opacity-50', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Radio } from './radio'\nimport { RadioGroup as RadioGroupRoot } from './radio-group'\n\nconst RadioGroup = Object.assign(RadioGroupRoot, {\n Radio,\n})\n\nexport type { RadioGroupProps, RadioProps } from './radio-group.types'\nexport { Radio } from './radio'\n\nexport { RadioGroup }\n","import { useFieldContext } from '../form/form-contexts'\nimport { Radio } from '../radio-group'\nimport type { FieldRadioProps } from './field.types'\n\nexport function FieldRadio({ ...props }: FieldRadioProps) {\n const field = useFieldContext<string>()\n\n return (\n <Radio\n {...props}\n onChange={(event) => {\n if (event.target instanceof HTMLInputElement) {\n field.handleChange(event.target.value)\n }\n }}\n value={field.state.value}\n />\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { RadioGroup } from '../radio-group'\nimport type { FieldRadioGroupProps } from './field.types'\n\nexport function FieldRadioGroup({ ...props }: FieldRadioGroupProps) {\n const field = useFieldContext<string>()\n\n return (\n <RadioGroup\n name={field.name}\n onValueChange={(value) => field.handleChange(String(value))}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldRowProps } from './field.types'\n\nexport function FieldRow({ className, ref, ...props }: FieldRowProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { CaretUpDownIcon } from '@phosphor-icons/react'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { Select, SelectIcon, SelectList, SelectPopup, SelectTrigger, SelectValue } from '../select'\nimport type { FieldSelectProps } from './field.types'\n\nexport function FieldSelect({ children, ...props }: FieldSelectProps) {\n const field = useFieldContext()\n\n return (\n <Select value={field.state.value} onValueChange={(value) => field.setValue(value)} {...props}>\n <SelectTrigger aria-label={field.name}>\n <SelectValue />\n <SelectIcon>\n <CaretUpDownIcon weight=\"bold\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup alignItemWithTrigger={false} sideOffset={8}>\n <SelectList>{children}</SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldSetProps } from './field.types'\n\nexport function FieldSet({ className, ref, ...props }: FieldSetProps) {\n return <div className={cn('flex w-full flex-col gap-2xs', className)} ref={ref} {...props} />\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport type { TooltipProps } from './tooltip.types'\n\nexport function Tooltip({ ...props }: TooltipProps) {\n return (\n <BaseTooltip.Provider>\n <BaseTooltip.Root {...props} />\n </BaseTooltip.Provider>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TooltipContentProps } from './tooltip.types'\n\nconst DEFAULT_ALIGN_OFFSET = 0,\n DEFAULT_SIDE_OFFSET = 5\n\nexport function TooltipContent({\n side = 'top',\n alignOffset = DEFAULT_ALIGN_OFFSET,\n sideOffset = DEFAULT_SIDE_OFFSET,\n className,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner side={side} alignOffset={alignOffset} sideOffset={sideOffset}>\n <BaseTooltip.Popup\n className={cn(\n 'z-50 w-fit origin-(--transform-origin) animate-in rounded-md bg-surface-2 px-xs py-3xs text-sm text-balance shadow-md fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport type { TooltipTriggerProps } from './tooltip.types'\n\nexport function TooltipTrigger({ children, ...props }: TooltipTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseTooltip.Trigger render={render} {...props} />\n}\n","import { Tooltip as TooltipRoot } from './tooltip'\nimport { TooltipContent } from './tooltip-context'\nimport { TooltipTrigger } from './tooltip-trigger'\n\nconst Tooltip = Object.assign(TooltipRoot, {\n Content: TooltipContent,\n Trigger: TooltipTrigger,\n})\n\nexport type { TooltipContentProps, TooltipProps, TooltipTriggerProps } from './tooltip.types'\nexport { TooltipContent } from './tooltip-context'\nexport { TooltipTrigger } from './tooltip-trigger'\n\nexport { Tooltip }\n","import { Slider as BaseSlider } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip'\nimport type { SliderThumbProps } from './slider.types'\n\nexport function SliderThumb({ className, ref, hide, ...props }: SliderThumbProps) {\n const [isHovering, setIsHovering] = React.useState(false),\n [isDragging, setIsDragging] = React.useState(false),\n thumbRef = React.useRef<HTMLDivElement>(null),\n setRefs = React.useCallback(\n (node: HTMLDivElement | null) => {\n thumbRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ;(ref as { current: HTMLDivElement | null }).current = node\n }\n },\n [ref],\n )\n React.useEffect(() => {\n if (!thumbRef.current) {\n return undefined\n }\n const node = thumbRef.current,\n update = () => setIsDragging(node.hasAttribute('data-dragging')),\n observer = new MutationObserver(update)\n update()\n observer.observe(node, { attributeFilter: ['data-dragging'], attributes: true })\n return () => observer.disconnect()\n }, [])\n\n return (\n <Tooltip open={isHovering || isDragging} disabled={hide}>\n <TooltipTrigger delay={0}>\n <BaseSlider.Thumb\n data-slot=\"slider-thumb\"\n className={cn(\n 'absolute aspect-square rounded-full bg-surface transition-[width,height,opacity] outline-none data-dragging:cursor-grabbing data-dragging:shadow-sm hover:[&:not([data-dragging])]:cursor-pointer',\n className,\n )}\n onPointerEnter={() => setIsHovering(true)}\n onPointerLeave={() => setIsHovering(false)}\n ref={setRefs}\n {...props}\n />\n </TooltipTrigger>\n <TooltipContent sideOffset={10}>\n <BaseSlider.Value />\n </TooltipContent>\n </Tooltip>\n )\n}\n","import type { Slider as BaseSlider } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst sliderVariants = cva('flex h-lg w-full items-center', {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n \"[&_[data-slot='slider-thumb']]:size-md [&_[data-slot='slider-thumb']]:border-3 [&_[data-slot='slider-thumb'][data-dragging]]:size-lg [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-xs\",\n medium:\n \"[&_[data-slot='slider-thumb']]:size-sm [&_[data-slot='slider-thumb']]:border-2 [&_[data-slot='slider-thumb'][data-dragging]]:size-md [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-2xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-2xs\",\n small:\n \"[&_[data-slot='slider-thumb']]:size-xs [&_[data-slot='slider-thumb']]:border [&_[data-slot='slider-thumb'][data-dragging]]:size-sm [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-3xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-3xs\",\n },\n tone: {\n accent:\n \"[&_[data-slot='slider-thumb']]:border-accent-default [&_[data-slot=slider-indicator]]:bg-accent-default [&_[data-slot=slider-track]]:bg-accent-container-high\",\n brand:\n \"[&_[data-slot='slider-thumb']]:border-brand-default [&_[data-slot=slider-indicator]]:bg-brand-default [&_[data-slot=slider-track]]:bg-brand-container-high\",\n error:\n \"[&_[data-slot='slider-thumb']]:border-error-default [&_[data-slot=slider-indicator]]:bg-error-default [&_[data-slot=slider-track]]:bg-error-container-high\",\n info: \"[&_[data-slot='slider-thumb']]:border-info-default [&_[data-slot=slider-indicator]]:bg-info-default [&_[data-slot=slider-track]]:bg-info-container-high\",\n neutral:\n \"[&_[data-slot='slider-thumb']]:border-neutral-default [&_[data-slot=slider-indicator]]:bg-neutral-default [&_[data-slot=slider-track]]:bg-neutral-container-high\",\n success:\n \"[&_[data-slot='slider-thumb']]:border-success-default [&_[data-slot=slider-indicator]]:bg-success-default [&_[data-slot=slider-track]]:bg-success-container-high\",\n warning:\n \"[&_[data-slot='slider-thumb']]:border-warning-default [&_[data-slot=slider-indicator]]:bg-warning-default [&_[data-slot=slider-track]]:bg-warning-container-high\",\n },\n },\n})\n\ntype SliderProps = ComponentProps<typeof BaseSlider.Root> &\n VariantProps<typeof sliderVariants> & {\n showIndicator?: boolean\n showThumbOnHover?: boolean\n showTooltip?: boolean\n }\ntype SliderThumbProps = ComponentProps<typeof BaseSlider.Thumb> & {\n hide?: boolean\n}\n\nexport type { SliderProps, SliderThumbProps }\nexport { sliderVariants }\n","import { Slider as BaseSlider } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { SliderThumb } from './slider-thumb'\nimport { sliderVariants } from './slider.types'\nimport type { SliderProps } from './slider.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction resolveThumbValues(\n value: SliderProps['value'],\n defaultValue: SliderProps['defaultValue'],\n min: number,\n): number[] {\n if (typeof value === 'number') {\n return [value]\n }\n if (Array.isArray(value)) {\n return [...value]\n }\n if (typeof defaultValue === 'number') {\n return [defaultValue]\n }\n if (Array.isArray(defaultValue)) {\n return [...defaultValue]\n }\n return [min]\n}\n\nexport function Slider({\n size,\n tone,\n defaultValue,\n min = MIN_DEFAULT,\n max = MAX_DEFAULT,\n step = STEP_DEFAULT,\n showIndicator = true,\n showTooltip = true,\n showThumbOnHover = true,\n value,\n onValueChange,\n className,\n 'aria-label': ariaLabel = 'Slider',\n ref,\n ...props\n}: SliderProps) {\n const thumbValues = resolveThumbValues(value, defaultValue, min)\n\n return (\n <BaseSlider.Root\n className={cn(sliderVariants({ size, tone }), className)}\n defaultValue={defaultValue}\n data-slot=\"slider-root\"\n max={max}\n min={min}\n onValueChange={onValueChange}\n ref={ref}\n step={step}\n value={value}\n {...props}\n >\n <BaseSlider.Control className=\"shrink-0 hover:cursor-pointer data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\">\n <BaseSlider.Track\n data-slot=\"slider-track\"\n className={cn(\n 'relative size-full rounded-full',\n !showThumbOnHover &&\n \"**:data-[slot='slider-thumb']:opacity-0 hover:**:data-[slot='slider-thumb']:opacity-100 active:**:data-[slot='slider-thumb']:opacity-100 data-dragging:**:data-[slot='slider-thumb']:opacity-100\",\n )}\n >\n <BaseSlider.Indicator\n data-slot=\"slider-indicator\"\n className={cn('rounded-full', !showIndicator && 'opacity-0')}\n />\n {[...thumbValues.keys()].map((index) => (\n <SliderThumb aria-label={ariaLabel} index={index} key={index} hide={!showTooltip} />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n )\n}\n","import { Slider as SliderRoot } from './slider'\nimport { SliderThumb } from './slider-thumb'\n\nconst Slider = Object.assign(SliderRoot, {\n Thumb: SliderThumb,\n})\n\nexport type { SliderProps, SliderThumbProps } from './slider.types'\nexport { SliderThumb } from './slider-thumb'\n\nexport { Slider }\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { Slider } from '../slider'\nimport type { FieldSliderProps } from './field.types'\n\nexport function FieldSlider({ className, ref, ...props }: FieldSliderProps) {\n const field = useFieldContext<number | readonly number[]>()\n\n return (\n <Slider\n className={cn('', className)}\n onValueChange={(value) => field.setValue(value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport type { SwitchProps } from './switch.types'\n\nexport function Switch({ label, className, ref, ...props }: SwitchProps) {\n return (\n <div className=\"flex items-center gap-xs\">\n <BaseSwitch.Root\n aria-label={label ?? undefined}\n className={cn(\n 'group relative flex h-md w-xl items-center rounded-full bg-surface-low bg-size-[6.5rem_100%] p-[0.5px] inset-shadow-2xs outline-2 outline-transparent transition-colors ease-[cubic-bezier(0.26,0.75,0.38,0.45)] before:absolute before:rounded-full hover:cursor-pointer hover:not-disabled:outline-accent-border-strong disabled:pointer-events-none disabled:opacity-50 data-checked:bg-accent-default data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseSwitch.Thumb className=\"size-xs translate-x-[8px] rounded-full shadow-2xs transition-transform duration-500 ease-[cubic-bezier(0.68,-0.55,0.27,1.55)] data-checked:size-sm data-checked:translate-x-[28px] data-checked:scale-[1.1] data-checked:bg-accent-on-default data-unchecked:bg-accent-default\" />\n </BaseSwitch.Root>\n {label && <Label htmlFor={props.id}>{label}</Label>}\n </div>\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { Switch } from '../switch'\nimport type { FieldSwitchProps } from './field.types'\n\nexport function FieldSwitch({ ...props }: FieldSwitchProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <Switch\n checked={field.state.value}\n id={field.name}\n name={field.name}\n onCheckedChange={(checked) => field.handleChange(checked)}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const textAreaVariants = cva(\n 'relative flex resize flex-col overflow-hidden rounded-xl outline outline-transparent transition-[outline] hover:not-focus-within:outline-border-strong data-[disabled=true]:cursor-not-allowed',\n {\n defaultVariants: {\n variant: 'primary',\n },\n variants: {\n variant: {\n primary: 'bg-surface shadow-2xs',\n secondary: 'bg-neutral-container',\n },\n },\n },\n)\n\nexport type TextAreaProps = React.ComponentProps<'textarea'> & VariantProps<typeof textAreaVariants>\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { textAreaVariants } from './text-area.types'\nimport type { TextAreaProps } from './text-area.types'\n\nfunction getValue(\n isControlled: boolean,\n value: TextAreaProps['value'],\n internalValue: string,\n): string {\n if (!isControlled) {\n return internalValue\n }\n if (value === undefined || value === null) {\n return ''\n }\n return String(value)\n}\n\nexport function TextArea({ variant, className, ref, ...props }: TextAreaProps) {\n const isControlled = props.value !== undefined,\n [internalValue, setInternalValue] = React.useState(String(props.defaultValue ?? '')),\n value = getValue(isControlled, props.value, internalValue),\n { maxLength } = props,\n hasMaxLength = typeof maxLength === 'number',\n isMaxLengthExceeded = hasMaxLength && value.length >= maxLength,\n handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value)\n }\n\n props.onChange?.(event)\n }\n\n return (\n <div\n className={cn(\n textAreaVariants({ className, variant }),\n isMaxLengthExceeded && 'outline-error-border-strong',\n !isMaxLengthExceeded && 'focus-within:outline-brand-border-strong',\n )}\n data-disabled={props.disabled || undefined}\n >\n <textarea\n className=\"grow resize-none px-sm py-xs style-text-prose-0 outline-none focus-within:caret-brand-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n ref={ref}\n {...props}\n onChange={handleChange}\n value={value}\n />\n {hasMaxLength && (\n <span\n className={cn(\n 'w-full px-xs py-2xs text-right style-text-default--1 text-on-surface-variant',\n isMaxLengthExceeded && 'text-error-default',\n )}\n >\n {value.length} / {maxLength}\n </span>\n )}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { TextArea } from '../text-area'\nimport type { FieldTextAreaProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldTextArea({ className, ref, ...props }: FieldTextAreaProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <TextArea\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { createContext, useContext } from 'react'\n\ninterface ToggleGroupContextType {\n size?: 'small' | 'medium' | 'large'\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextType | undefined>(undefined),\n useToggleGroupContext = () => {\n const context = useContext(ToggleGroupContext)\n return context\n }\n\nexport { ToggleGroupContext, useToggleGroupContext }\nexport type { ToggleGroupContextType }\n","import type { Toggle, ToggleState } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleVariants = cva(\n 'flex items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer disabled:opacity-70',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n iconLarge: 'size-xl [&>svg]:size-md',\n iconMedium: 'size-lg [&>svg]:size-sm',\n iconSmall: 'size-md [&>svg]:size-xs',\n large: 'h-xl gap-xs px-sm style-text-default-0 [&>svg]:size-md',\n medium: 'h-lg gap-2xs px-xs style-text-default--1 [&>svg]:size-sm',\n small: 'h-md gap-3xs px-2xs style-text-default--2 [&>svg]:size-xs',\n },\n tone: {\n accent:\n 'hover:not-disabled:bg-accent-container hover:not-disabled:text-accent-on-container data-pressed:text-accent-default',\n brand:\n 'hover:not-disabled:bg-brand-container hover:not-disabled:text-brand-on-container data-pressed:text-brand-default',\n error:\n 'hover:not-disabled:bg-error-container hover:not-disabled:text-error-on-container data-pressed:text-error-default',\n info: 'hover:not-disabled:bg-info-container hover:not-disabled:text-info-on-container data-pressed:text-info-default',\n neutral:\n 'hover:not-disabled:bg-neutral-container-high hover:not-disabled:text-neutral-on-container data-pressed:text-neutral-default',\n success:\n 'hover:not-disabled:bg-success-container hover:not-disabled:text-success-on-container data-pressed:text-success-default',\n warning:\n 'hover:not-disabled:bg-warning-container hover:not-disabled:text-warning-on-container data-pressed:text-warning-default',\n },\n },\n },\n)\n\nexport type ToggleProps = Omit<React.ComponentProps<typeof Toggle>, 'children'> &\n VariantProps<typeof toggleVariants> & {\n children?: React.ReactNode | ((state: ToggleState) => React.ReactNode)\n }\n","import { Toggle as BaseToggle } from '@base-ui/react/toggle'\nimport { useContext } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ToggleGroupContext } from '../toggle-group/toggle-group-context'\nimport { toggleVariants } from './toggle.types'\nimport type { ToggleProps } from './toggle.types'\n\nexport function Toggle({ size, tone, className, children, ref, ...props }: ToggleProps) {\n const toggleGroupContext = useContext(ToggleGroupContext),\n effectiveSize = size ?? toggleGroupContext?.size ?? 'medium'\n\n return (\n <BaseToggle\n ref={ref}\n {...props}\n render={(innerProps, state) => (\n <button\n {...innerProps}\n className={cn(toggleVariants({ className, size: effectiveSize, tone }))}\n type=\"button\"\n >\n {typeof children === 'function' && children(state)}\n {typeof children !== 'function' && children}\n </button>\n )}\n />\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { Toggle } from '../toggle'\nimport type { FieldToggleProps } from './field.types'\n\nexport function FieldToggle({ ...props }: FieldToggleProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <Toggle\n id={field.name}\n name={field.name}\n onChange={(_e) => field.handleChange(!field.state.value)}\n pressed={field.state.value}\n {...props}\n />\n )\n}\n","import { Field as FieldRoot } from './field'\nimport { FieldCheckbox } from './field-checkbox'\nimport { FieldDescription } from './field-description'\nimport { FieldErrors } from './field-errors'\nimport { FieldInput } from './field-input'\nimport { FieldInputGroup } from './field-input-group'\nimport { FieldInputGroupInput } from './field-input-group-input'\nimport { FieldLabel } from './field-label'\nimport { FieldRadio } from './field-radio'\nimport { FieldRadioGroup } from './field-radio-group'\nimport { FieldRow } from './field-row'\nimport { FieldSelect } from './field-select'\nimport { FieldSet } from './field-set'\nimport { FieldSlider } from './field-slider'\nimport { FieldSwitch } from './field-switch'\nimport { FieldTextArea } from './field-text-area'\nimport { FieldToggle } from './field-toggle'\n\nconst Field = Object.assign(FieldRoot, {\n Checkbox: FieldCheckbox,\n Description: FieldDescription,\n Errors: FieldErrors,\n Input: FieldInput,\n InputGroup: FieldInputGroup,\n InputGroupInput: FieldInputGroupInput,\n Label: FieldLabel,\n Radio: FieldRadio,\n RadioGroup: FieldRadioGroup,\n Row: FieldRow,\n Select: FieldSelect,\n Set: FieldSet,\n Slider: FieldSlider,\n Switch: FieldSwitch,\n TextArea: FieldTextArea,\n Toggle: FieldToggle,\n})\n\nexport type {\n FieldDescriptionProps,\n FieldErrorProps,\n FieldInputProps,\n FieldLabelProps,\n FieldProps,\n FieldSelectProps,\n FieldSliderProps,\n FieldTextAreaProps,\n FieldCheckboxProps,\n FieldRadioProps,\n FieldRadioGroupProps,\n FieldSwitchProps,\n FieldToggleProps,\n FieldInputGroupInputProps,\n FieldInputGroupProps,\n FieldSetProps,\n FieldRowProps,\n} from './field.types'\nexport { FieldDescription } from './field-description'\nexport { FieldErrors } from './field-errors'\nexport { FieldInput } from './field-input'\nexport { FieldLabel } from './field-label'\nexport { FieldSlider } from './field-slider'\nexport { FieldSelect } from './field-select'\nexport { FieldTextArea } from './field-text-area'\nexport { FieldCheckbox } from './field-checkbox'\nexport { FieldRadio } from './field-radio'\nexport { FieldRadioGroup } from './field-radio-group'\nexport { FieldSwitch } from './field-switch'\nexport { FieldToggle } from './field-toggle'\nexport { FieldInputGroup } from './field-input-group'\nexport { FieldInputGroupInput } from './field-input-group-input'\nexport { FieldSet } from './field-set'\nexport { FieldRow } from './field-row'\n\nexport { Field }\n","import { cn } from '@/utils/cn'\n\ntype FormProps = React.ComponentProps<'form'>\n\nexport function Form({ className, ref, ...props }: FormProps) {\n return <form className={cn('flex flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import { XCircleIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Alert, AlertDescription, AlertIcon } from '../alert'\nimport { useFormContext } from './form-contexts'\nimport type { FormErrorsProps } from './form.types'\n\nconst collectObjectMessages = (value: object, acc: Set<string>) => {\n const { message } = value as { message?: unknown }\n if (typeof message === 'string') {\n acc.add(message)\n return\n }\n Object.values(value).forEach((nestedValue) => collectMessages(nestedValue, acc))\n },\n collectStringMessage = (value: string, acc: Set<string>) => {\n if (value.trim()) {\n acc.add(value)\n }\n },\n collectMessages = (value: unknown, acc: Set<string>) => {\n if (value == undefined) {\n return\n }\n if (typeof value === 'string') {\n collectStringMessage(value, acc)\n return\n }\n if (Array.isArray(value)) {\n value.forEach((inputValue) => collectMessages(inputValue, acc))\n return\n }\n if (typeof value === 'object') {\n collectObjectMessages(value, acc)\n }\n }\n\nexport function FormErrors({ className, children, ref, ...props }: FormErrorsProps) {\n const form = useFormContext()\n\n return (\n <form.Subscribe selector={(state) => [state.errors, state.fieldMeta]}>\n {([errors, fieldMeta]) => {\n const messages = new Set<string>()\n collectMessages(errors, messages)\n Object.values(fieldMeta as Record<string, { errors?: unknown }>).forEach((meta) =>\n collectMessages(meta.errors, messages),\n )\n\n if (!messages.size) {\n return undefined\n }\n\n return (\n <Alert className={cn('', className)} ref={ref} tone=\"error\" {...props}>\n <AlertIcon>\n <XCircleIcon weight=\"duotone\" />\n </AlertIcon>\n {children}\n <AlertDescription>\n <ul>\n {[...messages].map((message) => (\n <li key={message}>{message}</li>\n ))}\n </ul>\n </AlertDescription>\n </Alert>\n )\n }}\n </form.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormFooterProps } from './form.types'\n\nexport function FormFooter({\n orientation = 'horizontal',\n className,\n ref,\n ...props\n}: FormFooterProps) {\n return (\n <div\n className={cn(\n 'flex gap-2xs',\n className,\n orientation === 'horizontal' && 'flex-row',\n orientation === 'vertical' && 'flex-col',\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useFormContext } from './form-contexts'\nimport type { FormResetProps } from './form.types'\n\nexport function FormReset({ className, ref, ...props }: FormResetProps) {\n const form = useFormContext(),\n handleClick = () => {\n form.reset()\n }\n\n return (\n <form.Subscribe selector={(state) => state}>\n {(state) => (\n <Button\n className={cn('w-full', className)}\n disabled={!state.values}\n onClick={handleClick}\n ref={ref}\n variant=\"outline\"\n tone=\"neutral\"\n type=\"reset\"\n {...props}\n />\n )}\n </form.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormSetProps } from './form.types'\n\nexport function FormSet({ className, ref, ...props }: FormSetProps) {\n return <div className={cn('flex flex-col gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormSetContentProps } from './form.types'\n\nexport function FormSetContent({ className, ref, ...props }: FormSetContentProps) {\n return <div className={cn('flex flex-col gap-md', className)} ref={ref} {...props} />\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Button } from '../button'\n\ntype FormProps = React.ComponentProps<'form'>\ntype FormSubmitProps = React.ComponentProps<typeof Button>\ntype FormResetProps = React.ComponentProps<typeof Button>\ntype FormErrorsProps = React.ComponentProps<'div'> & {\n headerLabel?: string\n}\ntype FormSetProps = React.ComponentProps<'div'>\ntype FormSetHeadingProps = React.ComponentProps<'span'> &\n VariantProps<typeof formSetHeadingVariants>\ntype FormSetContentProps = React.ComponentProps<'div'>\ntype FormFooterProps = React.ComponentProps<'div'> & {\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst formSetHeadingVariants = cva('', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-strong-2',\n medium: 'style-text-strong-1',\n small: 'style-text-strong-0',\n },\n },\n})\n\nexport type {\n FormProps,\n FormSubmitProps,\n FormResetProps,\n FormErrorsProps,\n FormSetProps,\n FormSetHeadingProps,\n FormSetContentProps,\n FormFooterProps,\n}\nexport { formSetHeadingVariants }\n","import { cn } from '@/utils/cn'\n\nimport { formSetHeadingVariants } from './form.types'\nimport type { FormSetHeadingProps } from './form.types'\n\nexport function FormSetHeading({ size, className, ref, ...props }: FormSetHeadingProps) {\n return <span className={cn(formSetHeadingVariants({ className, size }))} ref={ref} {...props} />\n}\n","import { CircleNotchIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useFormContext } from './form-contexts'\nimport type { FormSubmitProps } from './form.types'\n\nexport function FormSubmit({ className, children, ref, ...props }: FormSubmitProps) {\n const form = useFormContext()\n\n return (\n <form.Subscribe selector={(state) => state}>\n {(state) => (\n <Button\n className={cn('w-full', className)}\n disabled={state.isSubmitting || !state.canSubmit}\n ref={ref}\n type=\"submit\"\n {...props}\n >\n {state.isSubmitting && <CircleNotchIcon className=\"animate-spin\" weight=\"bold\" />}\n {!state.isSubmitting && children}\n </Button>\n )}\n </form.Subscribe>\n )\n}\n","import { createFormHook } from '@tanstack/react-form'\n\nimport {\n FieldCheckbox,\n FieldDescription,\n FieldErrors,\n FieldInput,\n FieldInputGroup,\n FieldInputGroupInput,\n FieldLabel,\n FieldRadio,\n FieldRadioGroup,\n FieldSelect,\n FieldSet,\n FieldSlider,\n FieldSwitch,\n FieldTextArea,\n FieldToggle,\n} from '../field'\nimport { FieldRow } from '../field/field-row'\nimport { fieldContext, formContext } from './form-contexts'\nimport { FormErrors } from './form-errors'\nimport { FormFooter } from './form-footer'\nimport { FormReset } from './form-reset'\nimport { FormSet } from './form-set'\nimport { FormSetContent } from './form-set-content'\nimport { FormSetHeading } from './form-set-heading'\nimport { FormSubmit } from './form-submit'\n\nexport { fieldContext, formContext, useFieldContext, useFormContext } from './form-contexts'\n\nexport const { useAppForm, withFieldGroup, withForm, useTypedAppFormContext } = createFormHook({\n fieldComponents: {\n FieldCheckbox,\n FieldDescription,\n FieldErrors,\n FieldInput,\n FieldInputGroup,\n FieldInputGroupInput,\n FieldLabel,\n FieldRadio,\n FieldRadioGroup,\n FieldRow,\n FieldSelect,\n FieldSet,\n FieldSlider,\n FieldSwitch,\n FieldTextArea,\n FieldToggle,\n },\n fieldContext,\n formComponents: {\n FormErrors,\n FormFooter,\n FormReset,\n FormSet,\n FormSetContent,\n FormSetHeading,\n FormSubmit,\n },\n formContext,\n})\n","import { Form as FormRoot } from './form'\nimport { FormErrors } from './form-errors'\nimport { FormFooter } from './form-footer'\nimport { FormReset } from './form-reset'\nimport { FormSet } from './form-set'\nimport { FormSetContent } from './form-set-content'\nimport { FormSetHeading } from './form-set-heading'\nimport { FormSubmit } from './form-submit'\n\nconst Form = Object.assign(FormRoot, {\n Errors: FormErrors,\n Footer: FormFooter,\n Reset: FormReset,\n Set: FormSet,\n SetContent: FormSetContent,\n SetHeading: FormSetHeading,\n Submit: FormSubmit,\n})\n\nexport type { FormErrorsProps, FormProps, FormResetProps, FormSubmitProps } from './form.types'\nexport {\n fieldContext,\n formContext,\n useAppForm,\n useFieldContext,\n useFormContext,\n useTypedAppFormContext,\n withFieldGroup,\n withForm,\n} from './form-context'\nexport { FormErrors } from './form-errors'\nexport { FormReset } from './form-reset'\nexport { FormSubmit } from './form-submit'\nexport { FormFooter } from './form-footer'\nexport { FormSet } from './form-set'\nexport { FormSetContent } from './form-set-content'\nexport { FormSetHeading } from './form-set-heading'\n\nexport { Form }\n","import { OTPField } from '@base-ui/react'\nimport { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputOTPProps } from './input-otp.types'\n\nexport function InputOTP({ children, className, id, ref, ...props }: InputOTPProps) {\n const generatedId = useId(),\n fieldId = id ?? generatedId\n return (\n <>\n <label htmlFor={fieldId} className=\"sr-only\">\n One-time password\n </label>\n <OTPField.Root\n id={fieldId}\n className={cn('group flex items-center gap-2xs has-disabled:opacity-30', className)}\n ref={ref}\n {...props}\n >\n {children}\n </OTPField.Root>\n </>\n )\n}\n","import { OTPField } from '@base-ui/react'\nimport { MinusIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputOtpSeparatorProps } from './input-otp.types'\n\nexport function InputOtpSeparator({ className, ref, ...props }: InputOtpSeparatorProps) {\n return (\n <OTPField.Separator\n className={cn('flex items-center justify-center text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n <MinusIcon weight=\"bold\" />\n </OTPField.Separator>\n )\n}\n","import { OTPField } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputOTPSlotProps } from './input-otp.types'\n\nexport function InputOTPSlot({ className, ...props }: InputOTPSlotProps) {\n return (\n <OTPField.Input\n className={cn(\n 'relative h-lg w-md rounded-md bg-surface text-center style-text-default-0 shadow-2xs outline outline-transparent transition-colors hover:outline-border-strong focus:outline-brand-border-strong',\n className,\n )}\n {...props}\n />\n )\n}\n","import { InputOTP as InputOTPRoot } from './input-otp'\nimport { InputOtpSeparator } from './input-otp-separator'\nimport { InputOTPSlot } from './input-otp-slot'\n\nconst InputOTP = Object.assign(InputOTPRoot, {\n Separator: InputOtpSeparator,\n Slot: InputOTPSlot,\n})\n\nexport type { InputOTPProps, InputOTPSlotProps, InputOtpSeparatorProps } from './input-otp.types'\nexport { InputOTPSlot } from './input-otp-slot'\nexport { InputOtpSeparator } from './input-otp-separator'\n\nexport { InputOTP }\n","import { cn } from '@/utils/cn'\n\nimport type { KbdProps } from './kbd.types'\n\nexport function Kbd({ className, ref, ...props }: KbdProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-md items-center justify-center rounded-full bg-neutral-container-high px-2xs align-middle style-text-default--1 whitespace-nowrap text-neutral-on-container select-none has-[svg]:size-md has-[svg]:p-0 [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { KbdGroupProps } from './kbd.types'\n\nexport function KbdGroup({ className, ref, ...props }: KbdGroupProps) {\n return (\n <div\n className={cn('flex items-center justify-center gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Kbd as KbdRoot } from './kbd'\nimport { KbdGroup } from './kbd-group'\n\nconst Kbd = Object.assign(KbdRoot, {\n Group: KbdGroup,\n})\n\nexport type { KbdGroupProps, KbdProps } from './kbd.types'\nexport { KbdGroup } from './kbd-group'\nexport { Kbd }\n","import {\n assignPrototypeAPIs,\n assignTableAPIs,\n functionalUpdate,\n makeStateUpdater,\n} from '@tanstack/react-table'\nimport type {\n Row,\n RowData,\n Table,\n TableFeature,\n TableFeatures,\n Updater,\n} from '@tanstack/react-table'\n\nimport type { RowLockedState, RowVisibilityState } from './layer-tree.types'\n\n/**\n * Base constraint for tree node data types used by layer tree utilities.\n */\ninterface LayerTreeNodeBase {\n id: string\n children?: this[]\n}\n\ntype LayerTreeTable = Table<TableFeatures, RowData>\ntype LayerTreeRow = Row<TableFeatures, RowData>\n\n/**\n * Recursively searches for a node by ID in a nested tree structure.\n *\n * @param nodes - The array of nodes to search through\n * @param nodeId - The ID of the node to find\n * @returns The matching node or `null` if not found\n *\n * @example\n * ```ts\n * const node = findLayerTreeNode(layers, 'layer-001')\n * if (node) console.log(node.name)\n * ```\n */\nconst findLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n nodeId: string,\n ): TData | null => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n return node\n }\n if (node.children?.length) {\n const match = findLayerTreeNode(node.children, nodeId)\n if (match) {\n return match\n }\n }\n }\n // oxlint-disable-next-line unicorn/no-null\n return null\n },\n /**\n * Removes a node from a nested tree structure by ID.\n *\n * @param nodes - The array of nodes to remove from\n * @param nodeId - The ID of the node to remove\n * @returns An object containing the updated tree and the removed node (if found)\n *\n * @example\n * ```ts\n * const { nextNodes, removedNode } = removeLayerTreeNode(layers, 'layer-001')\n * if (removedNode) setLayers(nextNodes)\n * ```\n */\n removeLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n nodeId: string,\n ): { nextNodes: TData[]; removedNode: TData | null } => {\n // oxlint-disable-next-line unicorn/no-null\n let removedNode: TData | null = null\n\n const nextNodes = nodes.flatMap((node) => {\n if (node.id === nodeId) {\n removedNode = node\n return []\n }\n if (!node.children?.length) {\n return [node]\n }\n\n const { nextNodes: nextChildren, removedNode: nestedRemovedNode } = removeLayerTreeNode(\n node.children,\n nodeId,\n )\n if (!nestedRemovedNode) {\n return [node]\n }\n\n removedNode = nestedRemovedNode\n return [{ ...node, children: nextChildren }]\n })\n\n return { nextNodes, removedNode }\n },\n /**\n * Inserts a node as a child of the specified folder node.\n *\n * @param nodes - The array of nodes to search through\n * @param folderId - The ID of the folder to insert into\n * @param nodeToInsert - The node to insert\n * @returns A new tree with the node inserted\n *\n * @example\n * ```ts\n * const newTree = insertLayerTreeNode(layers, 'folder-001', newLayer)\n * setLayers(newTree)\n * ```\n */\n insertLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n folderId: string,\n nodeToInsert: TData,\n ): TData[] =>\n nodes.map((node) => {\n if (node.id === folderId) {\n return { ...node, children: [...(node.children ?? []), nodeToInsert] }\n }\n if (!node.children?.length) {\n return node\n }\n return {\n ...node,\n children: insertLayerTreeNode(node.children, folderId, nodeToInsert),\n }\n }),\n containsLayerTreeNode = (nodes: LayerTreeNodeBase[], nodeId: string) =>\n Boolean(findLayerTreeNode(nodes, nodeId)),\n moveNodeIntoFolder = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n targetId: string,\n ): TData[] => {\n const { nextNodes, removedNode } = removeLayerTreeNode(nodes, sourceId)\n if (!removedNode) {\n return nodes\n }\n return insertLayerTreeNode(nextNodes, targetId, removedNode)\n },\n /**\n * Moves a node from its current position into a target folder.\n * Prevents circular references by checking if target is a descendant of source.\n *\n * @param nodes - The array of nodes\n * @param sourceId - The ID of the node to move\n * @param targetId - The ID of the folder to move into\n * @returns A new tree with the node moved, or the original tree if the move is invalid\n *\n * @example\n * ```ts\n * const newTree = moveLayerTreeNode(layers, 'layer-001', 'folder-002')\n * setLayers(newTree)\n * ```\n */\n moveLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n targetId: string,\n ): TData[] => {\n if (sourceId === targetId) {\n return nodes\n }\n\n const sourceNode = findLayerTreeNode(nodes, sourceId),\n targetNode = findLayerTreeNode(nodes, targetId)\n\n // Target must exist and be a folder (have children array)\n if (!sourceNode || !targetNode?.children) {\n return nodes\n }\n // Prevent circular reference: can't move into own descendant\n if (containsLayerTreeNode(sourceNode.children ?? [], targetId)) {\n return nodes\n }\n\n return moveNodeIntoFolder(nodes, sourceId, targetId)\n },\n /**\n * Moves a node to the root level of the tree.\n *\n * @param nodes - The array of nodes\n * @param sourceId - The ID of the node to move\n * @returns A new tree with the node at root level\n *\n * @example\n * ```ts\n * const newTree = moveLayerTreeNodeToRoot(layers, 'layer-001')\n * setLayers(newTree)\n * ```\n */\n moveLayerTreeNodeToRoot = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n ): TData[] => {\n const { nextNodes, removedNode } = removeLayerTreeNode(nodes, sourceId)\n if (!removedNode) {\n return nodes\n }\n return [...nextNodes, removedNode]\n },\n rowVisibilityFeature: TableFeature = {\n assignRowPrototype: (prototype, table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable\n assignPrototypeAPIs('rowVisibilityFeature', prototype, table, {\n row_getIsVisible: {\n fn: (row) =>\n layerTable.atoms.rowVisibility?.get()?.[row.id] ??\n layerTable.options.getRowVisible?.(row) ??\n true,\n },\n row_toggleVisibility: {\n fn: (row, value?: boolean) => {\n layerTable.options.onRowVisibilityChange?.((old: RowVisibilityState) => ({\n ...old,\n [row.id]: value ?? !(old[row.id] ?? true),\n }))\n },\n },\n })\n },\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable,\n isRowVisible = (row: LayerTreeRow) =>\n layerTable.atoms.rowVisibility?.get()?.[row.id] ??\n layerTable.options.getRowVisible?.(row) ??\n true,\n setRowVisibility = (updater: Updater<RowVisibilityState>) => {\n const safeUpdater: Updater<RowVisibilityState> = (old) => functionalUpdate(updater, old)\n layerTable.options.onRowVisibilityChange?.(safeUpdater)\n },\n getIsAllRowsVisible = () =>\n layerTable.getRowModel().flatRows.every((row) => isRowVisible(row))\n\n assignTableAPIs('rowVisibilityFeature', layerTable, {\n table_getIsAllRowsVisible: {\n fn: () => getIsAllRowsVisible(),\n },\n table_resetRowVisibility: {\n fn: () => setRowVisibility(layerTable.initialState.rowVisibility ?? {}),\n },\n table_setRowVisibility: {\n fn: (updater: Updater<RowVisibilityState>) => setRowVisibility(updater),\n },\n table_toggleAllRowsVisible: {\n fn: (value?: boolean) => {\n const next = value ?? !getIsAllRowsVisible()\n setRowVisibility(() => {\n const state: RowVisibilityState = {}\n for (const row of layerTable.getRowModel().flatRows) {\n state[row.id] = next\n }\n return state\n })\n },\n },\n })\n },\n getDefaultTableOptions: (table) => ({\n enableRowVisibility: true,\n onRowVisibilityChange: makeStateUpdater('rowVisibility', table),\n }),\n getInitialState: (initialState) => ({\n rowVisibility: {},\n ...initialState,\n }),\n },\n rowLockedFeature: TableFeature = {\n assignRowPrototype: (prototype, table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable\n assignPrototypeAPIs('rowLockedFeature', prototype, table, {\n row_getIsLocked: {\n fn: (row) =>\n layerTable.atoms.rowLocked?.get()?.[row.id] ??\n layerTable.options.getRowLocked?.(row) ??\n false,\n },\n row_toggleLocked: {\n fn: (row, value?: boolean) => {\n layerTable.options.onRowLockedChange?.((old: RowLockedState) => ({\n ...old,\n [row.id]: value ?? !(old[row.id] ?? false),\n }))\n },\n },\n })\n },\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable,\n isRowLocked = (row: LayerTreeRow) =>\n layerTable.atoms.rowLocked?.get()?.[row.id] ??\n layerTable.options.getRowLocked?.(row) ??\n false,\n setRowLocked = (updater: Updater<RowLockedState>) => {\n const safeUpdater: Updater<RowLockedState> = (old) => functionalUpdate(updater, old)\n layerTable.options.onRowLockedChange?.(safeUpdater)\n },\n getIsAllRowsLocked = () =>\n layerTable.getRowModel().flatRows.every((row) => isRowLocked(row))\n\n assignTableAPIs('rowLockedFeature', layerTable, {\n table_getIsAllRowsLocked: {\n fn: () => getIsAllRowsLocked(),\n },\n table_resetRowLocked: {\n fn: () => setRowLocked(layerTable.initialState.rowLocked ?? {}),\n },\n table_setRowLocked: {\n fn: (updater: Updater<RowLockedState>) => setRowLocked(updater),\n },\n table_toggleAllRowsLocked: {\n fn: (value?: boolean) => {\n const next = value ?? !getIsAllRowsLocked()\n setRowLocked(() => {\n const state: RowLockedState = {}\n for (const row of layerTable.getRowModel().flatRows) {\n state[row.id] = next\n }\n return state\n })\n },\n },\n })\n },\n getDefaultTableOptions: (table) => ({\n enableRowLocked: true,\n onRowLockedChange: makeStateUpdater('rowLocked', table),\n }),\n getInitialState: (initialState) => ({\n rowLocked: {},\n ...initialState,\n }),\n }\n\nexport {\n findLayerTreeNode,\n insertLayerTreeNode,\n moveLayerTreeNode,\n moveLayerTreeNodeToRoot,\n removeLayerTreeNode,\n rowLockedFeature,\n rowVisibilityFeature,\n type LayerTreeNodeBase,\n}\n","import {\n createExpandedRowModel,\n metaHelper,\n rowExpandingFeature,\n tableFeatures,\n columnFacetingFeature,\n columnFilteringFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n createTableHookContexts,\n filterFn_arrHas,\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_between,\n filterFn_betweenInclusive,\n filterFn_empty,\n filterFn_endsWith,\n filterFn_equals,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_inDateRange,\n filterFn_inNumberRange,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_notEmpty,\n filterFn_startsWith,\n filterFn_weakEquals,\n globalFilteringFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n} from '@tanstack/react-table'\n\nimport { rowLockedFeature, rowVisibilityFeature } from './layer-tree-utils'\nimport type { LayerTreeColumnMeta, LayerTreeTableMeta } from './layer-tree.types'\n\nconst features = tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n columnMeta: metaHelper<LayerTreeColumnMeta>(),\n columnSizingFeature,\n columnVisibilityFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filterFns: {\n arrHas: filterFn_arrHas,\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n empty: filterFn_empty,\n endsWith: filterFn_endsWith,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n inDateRange: filterFn_inDateRange,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n notEmpty: filterFn_notEmpty,\n startsWith: filterFn_startsWith,\n weakEquals: filterFn_weakEquals,\n },\n filteredRowModel: createFilteredRowModel(),\n globalFilteringFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowExpandingFeature,\n rowLockedFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n rowVisibilityFeature,\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n sortedRowModel: createSortedRowModel(),\n tableMeta: metaHelper<LayerTreeTableMeta>(),\n }),\n { tableContext, cellContext, headerContext, useTableContext, useCellContext, useHeaderContext } =\n createTableHookContexts<typeof features>()\n\nexport {\n cellContext,\n features,\n headerContext,\n tableContext,\n useCellContext,\n useHeaderContext,\n useTableContext,\n}\n","import type {\n OnChangeFn,\n Row,\n RowData,\n TableFeature,\n TableFeatures,\n Updater,\n} from '@tanstack/react-table'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport React from 'react'\n\nimport type { Button } from '../button'\nimport type { InputGroup } from '../input-group'\n\ndeclare module '@tanstack/react-table' {\n interface Plugins {\n rowLockedFeature: TableFeature\n rowVisibilityFeature: TableFeature\n }\n\n interface TableState_FeatureMap {\n rowLockedFeature: LayerTreeState_RowLocked\n rowVisibilityFeature: LayerTreeState_RowVisibility\n }\n\n interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeOptions_RowLocked<TData>\n rowVisibilityFeature: LayerTreeOptions_RowVisibility<TData>\n }\n\n interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeTable_RowLocked\n rowVisibilityFeature: LayerTreeTable_RowVisibility\n }\n\n interface Row_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeRow_RowLocked\n rowVisibilityFeature: LayerTreeRow_RowVisibility\n }\n}\n\ntype LayerTreeProps = React.ComponentProps<'div'> & {\n onDNDStart?: (event: { nodeId: string }) => void\n onDNDEnd?: (event: { sourceNodeId: string; targetNodeId: string }) => void\n}\n\ntype LayerTreeBodyProps = React.ComponentProps<'div'>\ntype LayerTreeRowProps = React.ComponentProps<'div'> & {\n rowId: string\n}\n\ntype LayerTreeTriggerCellProps = React.ComponentProps<'button'> & {\n dndDisabled?: boolean\n}\ntype LayerTreeSearchProps = React.ComponentProps<typeof InputGroup> & {\n placeholder?: string\n}\ntype LayerTreeExpandAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeFooterProps = React.ComponentProps<'div'>\ntype LayerTreeSortProps = React.ComponentProps<'button'>\ntype LayerTreeIconCellProps = React.ComponentProps<'div'>\ntype LayerTreeLockedCellProps = React.ComponentProps<typeof Button>\ntype LayerTreeLockedAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeVisibilityCellProps = React.ComponentProps<typeof Button>\ntype LayerTreeVisibilityAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeNodeIconProps = React.ComponentProps<'div'> & {\n icon: React.ElementType\n}\ntype LayerTreeTextCellProps = React.ComponentProps<'span'> &\n VariantProps<typeof layerTreeTextCellVariants>\n\nconst layerTreeTextCellVariants = cva('min-w-0 grow truncate px-2xs', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n },\n }),\n // oxlint-disable-next-line unicorn/no-null\n LayerTreeContext = React.createContext<LayerTreeContextType | null>(null),\n useLayerTree = () => {\n const context = React.useContext<LayerTreeContextType | null>(LayerTreeContext)\n\n if (!context) {\n throw new Error('useLayerTree must be used within a LayerTreeProvider')\n }\n\n return context\n }\n\ninterface LayerTreeColumnMeta {\n fill?: boolean\n}\n\ninterface LayerTreeTableMeta {\n translations?: {\n buttonLabels?: {\n ascending?: string\n descending?: string\n }\n }\n}\n\ntype RowVisibilityState = Record<string, boolean>\n\ninterface LayerTreeState_RowVisibility {\n rowVisibility: RowVisibilityState\n}\n\ninterface LayerTreeOptions_RowVisibility<TData extends RowData = RowData> {\n enableRowVisibility?: boolean\n onRowVisibilityChange?: OnChangeFn<RowVisibilityState>\n getRowVisible?: (row: Row<TableFeatures, TData>) => boolean\n}\n\ninterface LayerTreeTable_RowVisibility {\n setRowVisibility: (updater: Updater<RowVisibilityState>) => void\n resetRowVisibility: () => void\n toggleAllRowsVisible: (value?: boolean) => void\n getIsAllRowsVisible: () => boolean\n}\n\ninterface LayerTreeRow_RowVisibility {\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n}\n\ntype RowLockedState = Record<string, boolean>\n\ninterface LayerTreeState_RowLocked {\n rowLocked: RowLockedState\n}\n\ninterface LayerTreeOptions_RowLocked<TData extends RowData = RowData> {\n enableRowLocked?: boolean\n onRowLockedChange?: OnChangeFn<RowLockedState>\n getRowLocked?: (row: Row<TableFeatures, TData>) => boolean\n}\n\ninterface LayerTreeTable_RowLocked {\n setRowLocked: (updater: Updater<RowLockedState>) => void\n resetRowLocked: () => void\n toggleAllRowsLocked: (value?: boolean) => void\n getIsAllRowsLocked: () => boolean\n}\n\ninterface LayerTreeRow_RowLocked {\n getIsLocked: () => boolean\n toggleLocked: (value?: boolean) => void\n}\n\ntype LayerTreeContextType = LayerTreeProps & {\n draggingNodeId: string | null\n}\n\nexport { LayerTreeContext, layerTreeTextCellVariants, useLayerTree }\nexport type {\n RowLockedState,\n RowVisibilityState,\n LayerTreeContextType,\n LayerTreeState_RowVisibility,\n LayerTreeOptions_RowVisibility,\n LayerTreeTable_RowVisibility,\n LayerTreeRow_RowVisibility,\n LayerTreeState_RowLocked,\n LayerTreeOptions_RowLocked,\n LayerTreeTable_RowLocked,\n LayerTreeRow_RowLocked,\n LayerTreeTableMeta,\n LayerTreeColumnMeta,\n LayerTreeProps,\n LayerTreeBodyProps,\n LayerTreeRowProps,\n LayerTreeTriggerCellProps,\n LayerTreeSearchProps,\n LayerTreeFooterProps,\n LayerTreeSortProps,\n LayerTreeIconCellProps,\n LayerTreeLockedCellProps,\n LayerTreeLockedAllProps,\n LayerTreeVisibilityCellProps,\n LayerTreeVisibilityAllProps,\n LayerTreeNodeIconProps,\n LayerTreeTextCellProps,\n LayerTreeExpandAllProps,\n}\n","// oxlint-disable unicorn/no-null\nimport { Feedback } from '@dnd-kit/dom'\nimport { DragDropProvider, DragOverlay } from '@dnd-kit/react'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useTableContext } from './layer-tree-context'\nimport { LayerTreeContext } from './layer-tree.types'\nimport type { LayerTreeProps } from './layer-tree.types'\n\nconst PARENT_ROW_COUNT = 1\n\nexport function LayerTree({\n onDNDStart: onDragStart,\n onDNDEnd: onDragEnd,\n className,\n children,\n ref,\n ...props\n}: LayerTreeProps) {\n const table = useTableContext(),\n [draggingNodeId, setDraggingNodeId] = React.useState<string | null>(null),\n handleDragStart = ({ operation: { source } }: DragStartEvent) => {\n setDraggingNodeId(source?.data.nodeId ?? null)\n if (onDragStart) {\n onDragStart({ nodeId: source?.data.nodeId ?? '' })\n }\n },\n handleDragEnd = ({ operation: { source, target } }: DragEndEvent) => {\n setDraggingNodeId(null)\n if (onDragEnd) {\n const targetNodeId = target?.data.folderId ?? target?.data.nodeId ?? null\n onDragEnd({\n sourceNodeId: source?.data.nodeId ?? '',\n targetNodeId,\n })\n }\n }\n\n return (\n <DragDropProvider\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n plugins={(defaults) => [...defaults, Feedback.configure({ dropAnimation: null })]}\n >\n <LayerTreeContext.Provider\n value={{\n children,\n className,\n draggingNodeId,\n ref,\n ...props,\n }}\n >\n <div className={cn('flex flex-col justify-between', className)} ref={ref} {...props}>\n {children}\n <DragOverlay>\n {(source) => (\n <div\n className={cn(\n 'relative rounded-md border border-neutral-border bg-neutral-container px-xs py-3xs opacity-80 shadow-md transition-opacity',\n )}\n >\n {table.getRow(String(source.id)).renderValue('name') ?? source.id}\n <Badge className=\"absolute -top-xs -right-xs\" size=\"iconSmall\" tone=\"neutral\">\n {table.getRow(String(source.id))?.subRows.length + PARENT_ROW_COUNT}\n </Badge>\n </div>\n )}\n </DragOverlay>\n </div>\n </LayerTreeContext.Provider>\n </DragDropProvider>\n )\n}\n\nexport { useLayerTree } from './layer-tree.types'\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './layer-tree-context'\nimport type { useTableContext as useRegisteredTableContext } from './layer-tree-table'\nimport type { LayerTreeRowProps } from './layer-tree.types'\n\nconst ROOT_DEPTH = 0,\n FIRST_CELL_INDEX = 0,\n ROW_INDENT_PER_LEVEL = 24,\n EMPTY_LEAF_COUNT = 0,\n VISIBLE_OPACITY = 1,\n HIDDEN_OPACITY = 0.5\n\nexport function LayerTreeRow({ rowId, className, children, ref, ...props }: LayerTreeRowProps) {\n // The registered table hook adds AppCell and FlexRender at runtime.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe\n selector={(state) => ({\n expanded: state.expanded,\n rowSelection: state.rowSelection,\n rowVisibility: state.rowVisibility,\n })}\n >\n {() => {\n const row = table.getRowModel().rows.find((candidate) => candidate.id === rowId),\n indent = (row?.depth ?? ROOT_DEPTH) * ROW_INDENT_PER_LEVEL,\n leafRows = row?.getLeafRows() ?? []\n let isVisible = row?.getIsVisible() ?? true\n\n if (leafRows.length > EMPTY_LEAF_COUNT) {\n isVisible = leafRows.some((leaf) => leaf.getIsVisible())\n }\n\n return (\n <div className={cn('flex w-full items-center gap-3xs', className)} ref={ref} {...props}>\n {children}\n {row?.getVisibleCells().map((cell, cellIndex) => {\n const isFirstCell = cellIndex === FIRST_CELL_INDEX,\n isFill = cell.column.columnDef.meta?.fill ?? cell.column.id === 'name'\n let marginLeft: number | undefined = undefined,\n opacity = HIDDEN_OPACITY\n\n if (isFirstCell) {\n marginLeft = indent\n }\n if (isVisible) {\n opacity = VISIBLE_OPACITY\n }\n\n return (\n <table.AppCell key={cell.id} cell={cell}>\n {(renderedCell) => (\n <div\n style={{\n marginLeft,\n opacity,\n }}\n className={cn(\n 'flex items-center',\n isFill && 'min-w-0 grow gap-3xs',\n !isFill && 'w-fit shrink-0',\n )}\n >\n <table.FlexRender cell={renderedCell} />\n </div>\n )}\n </table.AppCell>\n )\n })}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { useDroppable } from '@dnd-kit/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useTableContext } from './layer-tree-context'\nimport { LayerTreeRow } from './layer-tree-row'\nimport type { LayerTreeBodyProps } from './layer-tree.types'\n\nexport function LayerTreeBody({ className, children, ...props }: LayerTreeBodyProps) {\n const table = useTableContext(),\n { isDropTarget, ref } = useDroppable({\n data: {\n folderId: 'root',\n nodeId: 'root',\n },\n id: 'root-dropzone',\n })\n\n return (\n <table.Subscribe selector={(state) => state}>\n {() => (\n <div className={cn('flex min-h-0 w-full grow flex-col', className)} {...props}>\n {children}\n <div className=\"flex min-h-0 w-full flex-col gap-xs overflow-y-auto\">\n {table.getRowModel().rows.map((row) => (\n <LayerTreeRow key={row.id} rowId={row.id} />\n ))}\n </div>\n <div\n ref={ref}\n className={cn(\n 'grow',\n isDropTarget &&\n 'rounded-lg bg-success-container ring-1 ring-success-default ring-inset',\n )}\n />\n </div>\n )}\n </table.Subscribe>\n )\n}\n","import { FolderOpenIcon, FolderSimpleIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeExpandAllProps } from './layer-tree.types'\n\nexport function LayerTreeExpandAll({ className, ref, ...props }: LayerTreeExpandAllProps) {\n const table = useTableContext(),\n handleClick = () => {\n if (table.getIsSomeRowsExpanded()) {\n table.toggleAllRowsExpanded(false)\n } else {\n table.toggleAllRowsExpanded(true)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.expanded}>\n {() => (\n <Button\n aria-label=\"Expand or collapse all layers\"\n size=\"iconMedium\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={handleClick}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {table.getIsSomeRowsExpanded() && <FolderOpenIcon weight=\"bold\" />}\n {!table.getIsSomeRowsExpanded() && <FolderSimpleIcon weight=\"bold\" />}\n </Button>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { LayerTreeFooterProps } from './layer-tree.types'\n\nexport function LayerTreeFooter({ className, ref, ...props }: LayerTreeFooterProps) {\n return <div className={cn('flex flex-col gap-3xs', className)} ref={ref} {...props} />\n}\n","import { FolderIcon, FolderOpenIcon } from '@phosphor-icons/react'\nimport type { Icon } from '@phosphor-icons/react'\nimport { createElement } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeIconCellProps } from './layer-tree.types'\n\nexport function LayerTreeIconCell({ className, children, ref, ...props }: LayerTreeIconCellProps) {\n const cell = useCellContext<Icon>(),\n table = useTableContext(),\n icon = cell.getValue(),\n { row } = cell,\n hasChildren = row.getCanExpand() && Boolean(row.getLeafRows().length)\n\n return (\n <table.Subscribe selector={(state) => state.expanded}>\n {() => {\n const isExpanded = row.getIsExpanded()\n\n let iconNode: ReactNode = createElement(icon, { weight: 'bold' })\n if (hasChildren && isExpanded) {\n iconNode = <FolderOpenIcon />\n } else if (hasChildren) {\n iconNode = <FolderIcon weight=\"fill\" />\n }\n\n return (\n <div\n className={cn('flex w-fit shrink-0 items-center [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n >\n {children}\n {iconNode}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { LockSimpleIcon, LockSimpleOpenIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeLockedAllProps } from './layer-tree.types'\n\nexport function LayerTreeLockedAll({\n className,\n children,\n ref,\n ...props\n}: LayerTreeLockedAllProps) {\n const table = useTableContext(),\n allRows = table.getCoreRowModel().flatRows,\n handleClick = (isLocked: boolean) => {\n const next = !isLocked\n for (const leafRow of allRows) {\n leafRow.toggleLocked(next)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowLocked}>\n {() => {\n const isLocked = allRows.some((leafRow) => leafRow.getIsLocked())\n\n return (\n <Button\n aria-label=\"Toggle all layers lock\"\n size=\"iconSmall\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isLocked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isLocked && <LockSimpleIcon weight=\"fill\" />}\n {!isLocked && <LockSimpleOpenIcon weight=\"bold\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { LockSimpleIcon, LockSimpleOpenIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeLockedCellProps } from './layer-tree.types'\n\nexport function LayerTreeLockedCell({\n className,\n children,\n ref,\n ...props\n}: LayerTreeLockedCellProps) {\n const cell = useCellContext<boolean>(),\n table = useTableContext(),\n { row } = cell,\n rows = row.getLeafRows(),\n handleClick = (isLocked: boolean) => {\n const next = !isLocked\n for (const leafRow of rows) {\n leafRow.toggleLocked(next)\n }\n }\n\n if (!rows.length) {\n rows.push(row)\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowLocked}>\n {() => {\n const isLocked = rows.every((leafRow) => leafRow.getIsLocked())\n\n return (\n <Button\n aria-label=\"Toggle layer lock\"\n size=\"iconSmall\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isLocked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isLocked && <LockSimpleIcon weight=\"fill\" />}\n {!isLocked && <LockSimpleOpenIcon weight=\"bold\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { FolderIcon, FolderOpenIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useCellContext } from './layer-tree-context'\nimport type { LayerTreeNodeIconProps } from './layer-tree.types'\n\nexport function LayerTreeNodeIcon({\n icon: NodeIcon,\n className,\n children,\n ref,\n ...props\n}: LayerTreeNodeIconProps) {\n const cell = useCellContext(),\n { row } = cell,\n hasChildren = row.getCanExpand() && Boolean(row.getLeafRows().length)\n let nodeIcon = <NodeIcon weight=\"bold\" />\n\n if (hasChildren) {\n nodeIcon = <FolderIcon weight=\"fill\" />\n if (row.getIsExpanded()) {\n nodeIcon = <FolderOpenIcon />\n }\n }\n\n return (\n <div className={cn('', className)} ref={ref} {...props}>\n {children}\n {nodeIcon}\n </div>\n )\n}\n","import { MagnifyingGlassIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeSearchProps } from './layer-tree.types'\n\nexport function LayerTreeSearch({\n placeholder,\n className,\n children,\n ref,\n ...props\n}: LayerTreeSearchProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.globalFilter}>\n {(globalFilter) => (\n <InputGroup className={cn('', className)} ref={ref} {...props}>\n <InputGroupAddon>\n <MagnifyingGlassIcon weight=\"bold\" />\n </InputGroupAddon>\n <InputGroupInput\n placeholder={placeholder}\n onChange={(event) => table.setGlobalFilter(event.target.value)}\n value={globalFilter ?? ''}\n />\n {children}\n </InputGroup>\n )}\n </table.Subscribe>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport type { MenuProps } from './menu.types'\n\nexport function Menu({ ...props }: MenuProps) {\n return <BaseMenu.Root {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuCheckboxItemProps } from './menu.types'\n\nexport function MenuCheckboxItem({ className, children, ref, ...props }: MenuCheckboxItemProps) {\n return (\n <BaseMenu.CheckboxItem\n className={cn(\n 'relative z-0 grid h-lg cursor-default grid-cols-[1fr_2rem] items-center px-xs style-text-default-0 transition-colors outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 flex items-center gap-2xs\">{children}</span>\n <BaseMenu.CheckboxItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <CheckIcon className=\"size-sm\" weight=\"bold\" />\n </BaseMenu.CheckboxItemIndicator>\n </BaseMenu.CheckboxItem>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuGroupProps } from './menu.types'\n\nexport function MenuGroup({ className, ref, ...props }: MenuGroupProps) {\n return <BaseMenu.Group className={cn('', className)} ref={ref} {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuGroupLabelProps } from './menu.types'\n\nexport function MenuGroupLabel({ className, ref, ...props }: MenuGroupLabelProps) {\n return (\n <BaseMenu.GroupLabel\n className={cn(\n 'cursor-default px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype MenuProps = React.ComponentProps<typeof BaseMenu.Root>\ntype MenuTriggerProps = React.ComponentProps<typeof BaseMenu.Trigger>\ntype MenuPopupProps = React.ComponentProps<typeof BaseMenu.Positioner>\ntype MenuSeparatorProps = React.ComponentProps<typeof BaseMenu.Separator>\ntype MenuCheckboxItemProps = React.ComponentProps<typeof BaseMenu.CheckboxItem>\ntype MenuRadioGroupProps = React.ComponentProps<typeof BaseMenu.RadioGroup>\ntype MenuRadioItemProps = React.ComponentProps<typeof BaseMenu.RadioItem>\ntype MenuGroupProps = React.ComponentProps<typeof BaseMenu.Group>\ntype MenuGroupLabelProps = React.ComponentProps<typeof BaseMenu.GroupLabel>\ntype MenuSubmenuProps = React.ComponentProps<typeof BaseMenu.SubmenuRoot>\ntype MenuShortcutProps = React.ComponentProps<'div'>\n\nconst menuItemVariants = cva(\n 'relative z-0 flex h-lg cursor-default items-center px-xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container',\n },\n },\n },\n ),\n menuSubmenuTriggerVariants = cva(\n 'relative z-0 grid h-lg cursor-default grid-cols-[1fr_2rem] items-center px-xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container data-popup-open:text-accent-on-container data-popup-open:before:bg-accent-container data-highlighted:data-popup-open:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container data-popup-open:text-brand-on-container data-popup-open:before:bg-brand-container data-highlighted:data-popup-open:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container data-popup-open:text-error-on-container data-popup-open:before:bg-error-container data-highlighted:data-popup-open:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container data-popup-open:text-info-on-container data-popup-open:before:bg-info-container data-highlighted:data-popup-open:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high data-popup-open:text-neutral-on-container data-popup-open:before:bg-neutral-container-high data-highlighted:data-popup-open:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container data-popup-open:text-success-on-container data-popup-open:before:bg-success-container data-highlighted:data-popup-open:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container data-popup-open:text-warning-on-container data-popup-open:before:bg-warning-container data-highlighted:data-popup-open:before:bg-warning-container',\n },\n },\n },\n )\n\ntype MenuItemProps = React.ComponentProps<typeof BaseMenu.Item> &\n VariantProps<typeof menuItemVariants>\ntype MenuSubmenuTriggerProps = React.ComponentProps<typeof BaseMenu.SubmenuTrigger> &\n VariantProps<typeof menuSubmenuTriggerVariants>\n\nexport type {\n MenuProps,\n MenuTriggerProps,\n MenuPopupProps,\n MenuSeparatorProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuGroupProps,\n MenuGroupLabelProps,\n MenuSubmenuProps,\n MenuShortcutProps,\n MenuItemProps,\n MenuSubmenuTriggerProps,\n}\nexport { menuItemVariants, menuSubmenuTriggerVariants }\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { menuItemVariants } from './menu.types'\nimport type { MenuItemProps } from './menu.types'\n\nexport function MenuItem({ tone, className, children, ref, ...props }: MenuItemProps) {\n return (\n <BaseMenu.Item\n className={cn(menuItemVariants({ tone }), className)}\n nativeButton\n ref={ref}\n render={(renderProps) => (\n <button\n type=\"button\"\n {...renderProps}\n className={cn('w-full gap-2xs [&>svg]:size-sm', renderProps.className)}\n >\n {children}\n </button>\n )}\n {...props}\n />\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuPopupProps } from './menu.types'\n\nexport function MenuPopup({ className, children, ref, ...props }: MenuPopupProps) {\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner\n className={cn('outline-none', className)}\n ref={ref}\n sideOffset={8}\n {...props}\n >\n <BaseMenu.Popup className=\"z-99 min-w-[12rem] origin-(--transform-origin) translate-x-[-calc(var(--spacing-xl)/2)] rounded-lg bg-surface-2 px-3xs py-2xs shadow-md transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\">\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuRadioGroupProps } from './menu.types'\n\nexport function MenuRadioGroup({ className, ref, ...props }: MenuRadioGroupProps) {\n return <BaseMenu.RadioGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { CheckIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuRadioItemProps } from './menu.types'\n\nexport function MenuRadioItem({ className, children, ref, ...props }: MenuRadioItemProps) {\n return (\n <BaseMenu.RadioItem\n className={cn(\n 'relative z-0 grid h-lg cursor-default grid-cols-[1fr_2rem] items-center px-xs style-text-default-0 transition-colors outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 min-w-3xl\">{children}</span>\n <BaseMenu.RadioItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <CheckIcon className=\"size-sm\" weight=\"bold\" />\n </BaseMenu.RadioItemIndicator>\n </BaseMenu.RadioItem>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuSeparatorProps } from './menu.types'\n\nexport function MenuSeparator({ className, ref, ...props }: MenuSeparatorProps) {\n return (\n <BaseMenu.Separator\n className={cn('mx-2xs my-3xs h-px bg-border-strong', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MenuShortcutProps } from './menu.types'\n\nexport function MenuShortcut({ className, ref, ...props }: MenuShortcutProps) {\n return (\n <div\n className={cn('ml-auto inline-flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport type { MenuSubmenuProps } from './menu.types'\n\nexport function MenuSubmenu({ ...props }: MenuSubmenuProps) {\n return <BaseMenu.SubmenuRoot {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { menuSubmenuTriggerVariants } from './menu.types'\nimport type { MenuSubmenuTriggerProps } from './menu.types'\n\nexport function MenuSubmenuTrigger({\n tone,\n className,\n children,\n ref,\n ...props\n}: MenuSubmenuTriggerProps) {\n return (\n <BaseMenu.SubmenuTrigger\n className={cn(menuSubmenuTriggerVariants({ tone }), className)}\n ref={ref}\n {...props}\n >\n <div className=\"col-start-1 flex min-w-3xl items-center gap-2xs pr-2xl [&>svg]:size-sm\">\n {children}\n </div>\n <CaretRightIcon className=\"col-start-2 size-xs place-self-end self-center\" weight=\"bold\" />\n </BaseMenu.SubmenuTrigger>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuTriggerProps } from './menu.types'\n\nexport function MenuTrigger({ className, children, ref, ...props }: MenuTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BaseMenu.Trigger\n className={cn('data-popup-open:pointer-events-none', className)}\n ref={ref}\n render={render}\n {...props}\n />\n )\n}\n","import { Menu as MenuRoot } from './menu'\nimport { MenuCheckboxItem } from './menu-checkbox-item'\nimport { MenuGroup } from './menu-group'\nimport { MenuGroupLabel } from './menu-group-label'\nimport { MenuItem } from './menu-item'\nimport { MenuPopup } from './menu-popup'\nimport { MenuRadioGroup } from './menu-radio-group'\nimport { MenuRadioItem } from './menu-radio-item'\nimport { MenuSeparator } from './menu-separator'\nimport { MenuShortcut } from './menu-shortcut'\nimport { MenuSubmenu } from './menu-submenu'\nimport { MenuSubmenuTrigger } from './menu-submenu-trigger'\nimport { MenuTrigger } from './menu-trigger'\n\nconst Menu = Object.assign(MenuRoot, {\n CheckboxItem: MenuCheckboxItem,\n Group: MenuGroup,\n GroupLabel: MenuGroupLabel,\n Item: MenuItem,\n Popup: MenuPopup,\n RadioGroup: MenuRadioGroup,\n RadioItem: MenuRadioItem,\n Separator: MenuSeparator,\n Shortcut: MenuShortcut,\n Submenu: MenuSubmenu,\n SubmenuTrigger: MenuSubmenuTrigger,\n Trigger: MenuTrigger,\n})\n\nexport type {\n MenuCheckboxItemProps,\n MenuGroupLabelProps,\n MenuGroupProps,\n MenuItemProps,\n MenuPopupProps,\n MenuProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuSeparatorProps,\n MenuShortcutProps,\n MenuSubmenuProps,\n MenuSubmenuTriggerProps,\n MenuTriggerProps,\n} from './menu.types'\nexport { MenuCheckboxItem } from './menu-checkbox-item'\nexport { MenuGroup } from './menu-group'\nexport { MenuGroupLabel } from './menu-group-label'\nexport { MenuItem } from './menu-item'\nexport { MenuPopup } from './menu-popup'\nexport { MenuRadioGroup } from './menu-radio-group'\nexport { MenuRadioItem } from './menu-radio-item'\nexport { MenuSeparator } from './menu-separator'\nexport { MenuShortcut } from './menu-shortcut'\nexport { MenuSubmenu } from './menu-submenu'\nexport { MenuSubmenuTrigger } from './menu-submenu-trigger'\nexport { MenuTrigger } from './menu-trigger'\n\nexport { Menu }\n","import { ArrowsDownUpIcon, SortAscendingIcon, SortDescendingIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Menu,\n MenuCheckboxItem,\n MenuPopup,\n MenuSubmenu,\n MenuSubmenuTrigger,\n MenuTrigger,\n} from '../menu'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeSortProps } from './layer-tree.types'\n\nfunction getColumnHeaderLabel(header: unknown, fallback: string): string {\n if (typeof header === 'string') {\n return header\n }\n return fallback\n}\n\nexport function LayerTreeSort({ className, children, ref, ...props }: LayerTreeSortProps) {\n const table = useTableContext(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending',\n handleSort = (columnId: string, direction: 'asc' | 'desc') => {\n const column = table.getColumn(columnId),\n currentSort = column?.getIsSorted()\n\n if (currentSort === direction) {\n column?.clearSorting()\n return\n }\n\n column?.toggleSorting(direction === 'desc', column.getCanMultiSort())\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props}>\n <Button aria-label=\"Sort layers\" variant=\"ghost\" size=\"iconMedium\" tone=\"neutral\">\n <ArrowsDownUpIcon weight=\"bold\" />\n </Button>\n </MenuTrigger>\n <MenuPopup align=\"end\">\n <table.Subscribe selector={(state) => state.sorting}>\n {() =>\n table\n .getAllColumns()\n .filter((column) => column.getCanSort())\n .map((column) => (\n <MenuSubmenu key={column.id}>\n <MenuSubmenuTrigger>\n {getColumnHeaderLabel(column.columnDef.header, column.id)}\n </MenuSubmenuTrigger>\n <MenuPopup>\n {children}\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'asc'}\n onClick={() => handleSort(column.id, 'asc')}\n >\n <SortDescendingIcon weight=\"bold\" />\n {ascendingLabel}\n </MenuCheckboxItem>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'desc'}\n onClick={() => handleSort(column.id, 'desc')}\n >\n <SortAscendingIcon weight=\"bold\" />\n {descendingLabel}\n </MenuCheckboxItem>\n </MenuPopup>\n </MenuSubmenu>\n ))\n }\n </table.Subscribe>\n </MenuPopup>\n </Menu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './layer-tree-context'\nimport { layerTreeTextCellVariants } from './layer-tree.types'\nimport type { LayerTreeTextCellProps } from './layer-tree.types'\n\nexport function LayerTreeTextCell({\n size,\n className,\n children,\n ref,\n ...props\n}: LayerTreeTextCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <span className={cn(layerTreeTextCellVariants({ className, size }))} ref={ref} {...props}>\n {children}\n {cell.getValue()}\n </span>\n )\n}\n","import { useDraggable, useDroppable } from '@dnd-kit/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useCellContext } from './layer-tree-context'\nimport { useLayerTree } from './layer-tree.types'\nimport type { LayerTreeTriggerCellProps } from './layer-tree.types'\n\nexport function LayerTreeTriggerCell({\n className,\n children,\n dndDisabled,\n onClick,\n ...props\n}: LayerTreeTriggerCellProps) {\n const cell = useCellContext<string>(),\n { draggingNodeId } = useLayerTree(),\n { row } = cell,\n hasChildren = row.getCanExpand(),\n isSelected = row.getIsSelected(),\n { ref: draggableRef, isDragging } = useDraggable({\n data: {\n isFolder: hasChildren,\n nodeId: row.id,\n },\n disabled: dndDisabled,\n id: row.id,\n }),\n { ref: droppableRef, isDropTarget } = useDroppable({\n data: {\n folderId: row.id,\n isFolder: hasChildren,\n nodeId: row.id,\n },\n disabled: dndDisabled || !hasChildren,\n id: `folder:${row.id}`,\n }),\n setNodeRef = (element: Element | null) => {\n draggableRef(element)\n droppableRef(element)\n },\n selectRow = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!row.getCanSelect()) {\n return\n }\n if (!event.shiftKey) {\n cell.table.resetRowSelection()\n }\n row.getToggleSelectedHandler()({ shiftKey: event.shiftKey, target: { checked: true } })\n },\n handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n if (event.defaultPrevented) {\n return\n }\n if (hasChildren) {\n row.toggleExpanded()\n return\n }\n selectRow(event)\n },\n isAncestorDragging = (() => {\n if (!draggingNodeId) {\n return false\n }\n let parent = row.getParentRow()\n while (parent) {\n if (parent.id === draggingNodeId) {\n return true\n }\n parent = parent.getParentRow()\n }\n return false\n })()\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n 'flex h-lg min-w-0 grow items-center justify-start gap-2xs truncate rounded-lg px-2xs style-text-default-0 transition-all hover:cursor-pointer [&>svg]:size-sm [&>svg]:shrink-0',\n hasChildren &&\n isDropTarget &&\n 'bg-success-container text-success-on-container ring ring-success-border',\n isSelected && 'bg-neutral-default text-neutral-on-default',\n !isSelected && 'hover:bg-neutral-container hover:text-neutral-on-container',\n (isDragging || isAncestorDragging) && 'opacity-60',\n className,\n )}\n ref={setNodeRef}\n {...props}\n >\n {children}\n {cell.getValue()}\n </button>\n )\n}\n","import { EyeClosedIcon, EyeIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeVisibilityAllProps } from './layer-tree.types'\n\nexport function LayerTreeVisibilityAll({\n className,\n children,\n ref,\n ...props\n}: LayerTreeVisibilityAllProps) {\n const table = useTableContext(),\n allRows = table.getCoreRowModel().flatRows,\n handleClick = (isVisible: boolean) => {\n const next = !isVisible\n for (const leafRow of allRows) {\n leafRow.toggleVisibility(next)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowVisibility}>\n {() => {\n const isVisible = allRows.some((leafRow) => leafRow.getIsVisible())\n\n return (\n <Button\n aria-label=\"Toggle all layers visibility\"\n size=\"iconSmall\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isVisible)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isVisible && <EyeIcon weight=\"bold\" />}\n {!isVisible && <EyeClosedIcon weight=\"bold\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { EyeClosedIcon, EyeIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeVisibilityCellProps } from './layer-tree.types'\n\nexport function LayerTreeVisibilityCell({\n className,\n children,\n ref,\n ...props\n}: LayerTreeVisibilityCellProps) {\n const cell = useCellContext<boolean>(),\n table = useTableContext(),\n { row } = cell,\n rows = row.getLeafRows(),\n handleClick = (isVisible: boolean) => {\n const next = !isVisible\n for (const leafRow of rows) {\n leafRow.toggleVisibility(next)\n }\n }\n\n if (!rows.length) {\n rows.push(row)\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowVisibility}>\n {() => {\n const isVisible = rows.some((leafRow) => leafRow.getIsVisible())\n\n return (\n <Button\n aria-label=\"Toggle layer visibility\"\n size=\"iconSmall\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isVisible)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isVisible && <EyeIcon weight=\"bold\" />}\n {!isVisible && <EyeClosedIcon weight=\"bold\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { createTableHook } from '@tanstack/react-table'\n\nimport { LayerTree } from './layer-tree'\nimport { LayerTreeBody } from './layer-tree-body'\nimport { features, cellContext, headerContext, tableContext } from './layer-tree-context'\nimport { LayerTreeExpandAll } from './layer-tree-expand-all'\nimport { LayerTreeFooter } from './layer-tree-footer'\nimport { LayerTreeIconCell } from './layer-tree-icon-cell'\nimport { LayerTreeLockedAll } from './layer-tree-locked-all'\nimport { LayerTreeLockedCell } from './layer-tree-locked-cell'\nimport { LayerTreeNodeIcon } from './layer-tree-node-icon'\nimport { LayerTreeRow } from './layer-tree-row'\nimport { LayerTreeSearch } from './layer-tree-search'\nimport { LayerTreeSort } from './layer-tree-sort'\nimport { LayerTreeTextCell } from './layer-tree-text-cell'\nimport { LayerTreeTriggerCell } from './layer-tree-trigger-cell'\nimport { LayerTreeVisibilityAll } from './layer-tree-visibility-all'\nimport { LayerTreeVisibilityCell } from './layer-tree-visibility-cell'\n\nconst { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext } =\n createTableHook({\n cellComponents: {\n LayerTreeIconCell,\n LayerTreeLockedCell,\n LayerTreeNodeIcon,\n LayerTreeTextCell,\n LayerTreeTriggerCell,\n LayerTreeVisibilityCell,\n },\n cellContext,\n features,\n headerComponents: {},\n headerContext,\n tableComponents: {\n LayerTree,\n LayerTreeBody,\n LayerTreeExpandAll,\n LayerTreeFooter,\n LayerTreeLockedAll,\n LayerTreeRow,\n LayerTreeSearch,\n LayerTreeSort,\n LayerTreeVisibilityAll,\n },\n tableContext,\n })\n\nexport { createAppColumnHelper, useAppTable, useCellContext, useHeaderContext, useTableContext }\n\nexport { features } from './layer-tree-context'\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype NavBarProps = React.ComponentProps<'div'> & VariantProps<typeof navBarVariants>\ntype NavBarItemProps = React.ComponentProps<'button'> &\n VariantProps<typeof navBarItemVariants> & {\n isActive?: boolean\n }\ntype NavBarItemIconProps = React.ComponentProps<'div'>\ntype NavBarItemLabelProps = React.ComponentProps<'span'>\n\nconst navBarVariants = cva('flex h-fit items-center justify-between', {\n compoundVariants: [\n {\n className: 'rounded-xl',\n size: 'small',\n variant: 'floating',\n },\n {\n className: 'rounded-2xl',\n size: 'medium',\n variant: 'floating',\n },\n {\n className: 'rounded-3xl',\n size: 'large',\n variant: 'floating',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:size-xl [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-xl',\n itemOrientation: 'vertical',\n size: 'small',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:size-2xl [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-2xl',\n itemOrientation: 'vertical',\n size: 'medium',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:size-3xl [&_[data-nav-bar-item]]:gap-2xs [&_[data-nav-bar-item]]:rounded-3xl',\n itemOrientation: 'vertical',\n size: 'large',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-lg [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-lg [&_[data-nav-bar-item]]:px-xs',\n itemOrientation: 'horizontal',\n size: 'small',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-xl [&_[data-nav-bar-item]]:gap-2xs [&_[data-nav-bar-item]]:rounded-xl [&_[data-nav-bar-item]]:px-sm',\n itemOrientation: 'horizontal',\n size: 'medium',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-2xl [&_[data-nav-bar-item]]:gap-xs [&_[data-nav-bar-item]]:rounded-2xl [&_[data-nav-bar-item]]:px-md',\n itemOrientation: 'horizontal',\n size: 'large',\n },\n ],\n defaultVariants: {\n itemOrientation: 'vertical',\n size: 'medium',\n variant: 'outline',\n },\n variants: {\n itemOrientation: {\n horizontal: '[&_[data-nav-bar-item]]:flex-row',\n vertical: '[&_[data-nav-bar-item]]:flex-col',\n },\n size: {\n large: 'gap-sm p-md [&_span]:style-text-default-0 [&_svg]:size-lg',\n medium: 'gap-xs p-sm [&_span]:style-text-default--1 [&_svg]:size-md',\n small: 'gap-2xs p-xs [&_span]:style-text-default--2 [&_svg]:size-sm',\n },\n variant: {\n floating: 'absolute bottom-md w-fit max-w-15/16 overflow-x-auto bg-surface shadow-2xs',\n outline: 'w-full border border-border bg-surface-background',\n },\n },\n }),\n navBarItemVariants = cva(\n 'flex aspect-square items-center justify-center transition-all disabled:pointer-events-none disabled:opacity-50 data-[active=false]:hover:cursor-pointer data-[active=false]:active:scale-95 [&>svg]:shrink-0',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default hover:bg-accent-container hover:text-accent-on-container data-[active=true]:bg-accent-container data-[active=true]:text-accent-on-container',\n brand:\n 'text-brand-default hover:bg-brand-container hover:text-brand-on-container data-[active=true]:bg-brand-container data-[active=true]:text-brand-on-container',\n error:\n 'text-error-default hover:bg-error-container hover:text-error-on-container data-[active=true]:bg-error-container data-[active=true]:text-error-on-container',\n info: 'text-info-default hover:bg-info-container hover:text-info-on-container data-[active=true]:bg-info-container data-[active=true]:text-info-on-container',\n neutral:\n 'text-neutral-default hover:bg-neutral-container hover:text-neutral-on-container data-[active=true]:bg-neutral-container data-[active=true]:text-neutral-on-container',\n success:\n 'text-success-default hover:bg-success-container hover:text-success-on-container data-[active=true]:bg-success-container data-[active=true]:text-success-on-container',\n warning:\n 'text-warning-default hover:bg-warning-container hover:text-warning-on-container data-[active=true]:bg-warning-container data-[active=true]:text-warning-on-container',\n },\n },\n },\n )\n\nexport { navBarVariants, navBarItemVariants }\nexport type { NavBarProps, NavBarItemProps, NavBarItemIconProps, NavBarItemLabelProps }\n","import { cn } from '@/utils/cn'\n\nimport { navBarVariants } from './nav-bar.types'\nimport type { NavBarProps } from './nav-bar.types'\n\nexport function NavBar({ itemOrientation, size, variant, className, ref, ...props }: NavBarProps) {\n return (\n <div\n className={cn(navBarVariants({ itemOrientation, size, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { navBarItemVariants } from './nav-bar.types'\nimport type { NavBarItemProps } from './nav-bar.types'\n\nexport function NavBarItem({ isActive = false, tone, className, ref, ...props }: NavBarItemProps) {\n return (\n <button\n type=\"button\"\n data-active={isActive}\n data-nav-bar-item\n className={cn(navBarItemVariants({ tone }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { NavBarItemIconProps } from './nav-bar.types'\n\nexport function NavBarItemIcon({ className, ref, ...props }: NavBarItemIconProps) {\n return <div className={cn('', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { NavBarItemLabelProps } from './nav-bar.types'\n\nexport function NavBarItemLabel({ className, ref, ...props }: NavBarItemLabelProps) {\n return <span className={cn('', className)} ref={ref} {...props} />\n}\n","import { NavBar as NavBarRoot } from './nav-bar'\nimport { NavBarItem } from './nav-bar-item'\nimport { NavBarItemIcon } from './nav-bar-item-icon'\nimport { NavBarItemLabel } from './nav-bar-item-label'\n\nconst NavBar = Object.assign(NavBarRoot, {\n Item: NavBarItem,\n ItemIcon: NavBarItemIcon,\n ItemLabel: NavBarItemLabel,\n})\n\nexport type {\n NavBarProps,\n NavBarItemIconProps,\n NavBarItemProps,\n NavBarItemLabelProps,\n} from './nav-bar.types'\nexport { NavBarItem } from './nav-bar-item'\nexport { NavBarItemIcon } from './nav-bar-item-icon'\nexport { NavBarItemLabel } from './nav-bar-item-label'\n\nexport { NavBar }\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuProps } from './navigation-menu.types'\n\nexport function NavigationMenu({ className, ref, ...props }: NavigationMenuProps) {\n return <BaseNavigationMenu.Root className={cn('min-w-max', className)} ref={ref} {...props} />\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuContentProps } from './navigation-menu.types'\n\nexport function NavigationMenuContent({ className, ref, ...props }: NavigationMenuContentProps) {\n return (\n <BaseNavigationMenu.Content\n className={cn(\n 'h-full w-[calc(100vw-40px)] rounded-xl bg-surface p-2xs transition-[opacity,transform,translate] duration-(--duration) ease-(--easing) data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:data-[activation-direction=left]:translate-x-[50%] data-starting-style:data-[activation-direction=left]:translate-x-[-50%] data-ending-style:data-[activation-direction=right]:translate-x-[-50%] data-starting-style:data-[activation-direction=right]:translate-x-[50%] min-[500px]:w-max min-[500px]:max-w-[400px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuIconProps } from './navigation-menu.types'\n\nexport function NavigationMenuIcon({ className, ref, ...props }: NavigationMenuIconProps) {\n return (\n <BaseNavigationMenu.Icon\n className={cn(\n 'transition-transform duration-200 ease-[ease] data-popup-open:rotate-180',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuItemProps } from './navigation-menu.types'\n\nexport function NavigationMenuItem({ className, ref, ...props }: NavigationMenuItemProps) {\n return <BaseNavigationMenu.Item className={cn('', className)} ref={ref} {...props} />\n}\n","import type { NavigationMenu } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype NavigationMenuProps = React.ComponentProps<typeof NavigationMenu.Root>\ntype NavigationMenuListProps = React.ComponentProps<typeof NavigationMenu.List>\ntype NavigationMenuItemProps = React.ComponentProps<typeof NavigationMenu.Item>\ntype NavigationMenuTriggerProps = React.ComponentProps<typeof NavigationMenu.Trigger> &\n VariantProps<typeof navigationMenuTriggerVariants> & { isActive?: boolean }\ntype NavigationMenuIconProps = React.ComponentProps<typeof NavigationMenu.Icon>\ntype NavigationMenuContentProps = React.ComponentProps<typeof NavigationMenu.Content>\ntype NavigationMenuPopupProps = React.ComponentProps<typeof NavigationMenu.Positioner>\n\nconst navigationMenuTriggerVariants = cva(\n 'flex items-center justify-center rounded-full bg-transparent no-underline transition-colors select-none hover:cursor-pointer focus-visible:outline-2 focus-visible:-outline-offset-1',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'neutral',\n },\n variants: {\n size: {\n large: 'h-2xl gap-xs px-md style-text-default-2 [&>svg]:size-md',\n medium: 'h-xl gap-2xs px-sm style-text-default-0 [&>svg]:size-sm',\n small: 'h-lg gap-3xs px-xs style-text-default--1 [&>svg]:size-xs',\n },\n tone: {\n accent:\n 'text-accent-default data-popup-open:bg-accent-container data-popup-open:text-accent-on-container',\n brand:\n 'text-brand-default data-popup-open:bg-brand-container data-popup-open:text-brand-on-container',\n error:\n 'text-error-default data-popup-open:bg-error-container data-popup-open:text-error-on-container',\n info: 'text-info-default data-popup-open:bg-info-container data-popup-open:text-info-on-container',\n neutral:\n 'text-neutral-default data-popup-open:bg-neutral-container data-popup-open:text-neutral-on-container',\n success:\n 'text-success-default data-popup-open:bg-success-container data-popup-open:text-success-on-container',\n warning:\n 'text-warning-default data-popup-open:bg-warning-container data-popup-open:text-warning-on-container',\n },\n },\n },\n ),\n navigationMenuLinkVariants = cva(\n 'rounded-lg px-sm py-xs transition-colors hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent: 'text-accent-on-container hover:bg-accent-container',\n brand: 'text-brand-on-container hover:bg-brand-container',\n error: 'text-error-on-container hover:bg-error-container',\n info: 'text-info-on-container hover:bg-info-container',\n neutral: 'text-neutral-on-container hover:bg-neutral-container',\n success: 'text-success-on-container hover:bg-success-container',\n warning: 'text-warning-on-container hover:bg-warning-container',\n },\n },\n },\n )\n\ntype NavigationMenuLinkProps = VariantProps<typeof navigationMenuLinkVariants> &\n React.ComponentProps<'div'>\n\nexport type {\n NavigationMenuProps,\n NavigationMenuListProps,\n NavigationMenuItemProps,\n NavigationMenuTriggerProps,\n NavigationMenuIconProps,\n NavigationMenuContentProps,\n NavigationMenuPopupProps,\n NavigationMenuLinkProps,\n}\nexport { navigationMenuLinkVariants, navigationMenuTriggerVariants }\n","import { cn } from '@/utils/cn'\n\nimport { navigationMenuLinkVariants } from './navigation-menu.types'\nimport type { NavigationMenuLinkProps } from './navigation-menu.types'\n\nexport function NavigationMenuLink({ tone, className, ref, ...props }: NavigationMenuLinkProps) {\n return (\n <div\n className={cn(\n navigationMenuLinkVariants({\n className,\n tone,\n }),\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuListProps } from './navigation-menu.types'\n\nexport function NavigationMenuList({ className, ref, ...props }: NavigationMenuListProps) {\n return (\n <BaseNavigationMenu.List\n className={cn('relative flex gap-px', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuPopupProps } from './navigation-menu.types'\n\nexport function NavigationMenuPopup({\n className,\n children,\n ref,\n ...props\n}: NavigationMenuPopupProps) {\n return (\n <BaseNavigationMenu.Portal>\n <BaseNavigationMenu.Positioner\n sideOffset={10}\n collisionPadding={{ bottom: 5, left: 20, right: 20, top: 5 }}\n collisionAvoidance={{ side: 'none' }}\n className={cn(\n 'h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute data-instant:transition-none data-[side=bottom]:before:inset-x-0 data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:h-2xs data-[side=left]:before:inset-y-0 data-[side=left]:before:right-[-10px] data-[side=left]:before:w-2xs data-[side=right]:before:inset-y-0 data-[side=right]:before:left-[-10px] data-[side=right]:before:w-2xs data-[side=top]:before:inset-x-0 data-[side=top]:before:bottom-[-10px] data-[side=top]:before:h-2xs',\n className,\n )}\n ref={ref}\n style={{\n ['--duration' as string]: '0.35s',\n ['--easing' as string]: 'cubic-bezier(0.22, 1, 0.36, 1)',\n }}\n {...props}\n >\n <BaseNavigationMenu.Popup className=\"relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-xl shadow-md transition-[opacity,transform,width,height,scale] duration-(--duration) ease-(--easing) outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-ending-style:ease-[ease] data-starting-style:scale-90 data-starting-style:opacity-0\">\n <BaseNavigationMenu.Arrow className=\"relative block overflow-clip transition-[left,right] duration-(--duration) ease-(--easing) before:absolute before:bottom-0 before:left-1/2 before:block before:size-[calc(6px*sqrt(2))] before:-translate-x-1/2 before:translate-y-1/2 before:rotate-45 before:border before:content-[''] data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180\" />\n <BaseNavigationMenu.Viewport className=\"relative size-full overflow-hidden\" />\n {children}\n </BaseNavigationMenu.Popup>\n </BaseNavigationMenu.Positioner>\n </BaseNavigationMenu.Portal>\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { navigationMenuTriggerVariants } from './navigation-menu.types'\nimport type { NavigationMenuTriggerProps } from './navigation-menu.types'\n\nexport function NavigationMenuTrigger({\n size,\n tone,\n className,\n ref,\n ...props\n}: NavigationMenuTriggerProps) {\n return (\n <BaseNavigationMenu.Trigger\n className={cn(navigationMenuTriggerVariants({ size, tone }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as NavigationMenuRoot } from './navigation-menu'\nimport { NavigationMenuContent } from './navigation-menu-content'\nimport { NavigationMenuIcon } from './navigation-menu-icon'\nimport { NavigationMenuItem } from './navigation-menu-item'\nimport { NavigationMenuLink } from './navigation-menu-link'\nimport { NavigationMenuList } from './navigation-menu-list'\nimport { NavigationMenuPopup } from './navigation-menu-popup'\nimport { NavigationMenuTrigger } from './navigation-menu-trigger'\n\nconst NavigationMenu = Object.assign(NavigationMenuRoot, {\n Content: NavigationMenuContent,\n Icon: NavigationMenuIcon,\n Item: NavigationMenuItem,\n Link: NavigationMenuLink,\n List: NavigationMenuList,\n Popup: NavigationMenuPopup,\n Trigger: NavigationMenuTrigger,\n})\n\nexport type {\n NavigationMenuContentProps,\n NavigationMenuIconProps,\n NavigationMenuItemProps,\n NavigationMenuLinkProps,\n NavigationMenuListProps,\n NavigationMenuPopupProps,\n NavigationMenuProps,\n NavigationMenuTriggerProps,\n} from './navigation-menu.types'\n\nexport { NavigationMenuContent } from './navigation-menu-content'\nexport { NavigationMenuIcon } from './navigation-menu-icon'\nexport { NavigationMenuItem } from './navigation-menu-item'\nexport { NavigationMenuLink } from './navigation-menu-link'\nexport { NavigationMenuList } from './navigation-menu-list'\nexport { NavigationMenuPopup } from './navigation-menu-popup'\nexport { NavigationMenuTrigger } from './navigation-menu-trigger'\n\nexport { NavigationMenu }\n","import type { NumberField as BaseNumberField } from '@base-ui/react/number-field'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const numberFieldVariants = cva(\n 'flex flex-col gap-3xs data-disabled:cursor-not-allowed data-disabled:opacity-50 [&_[role=\"group\"]]:rounded-full [&_[role=\"group\"]]:outline [&_[role=\"group\"]]:outline-transparent [&_[role=\"group\"]]:transition-all aria-invalid:[&_[role=\"group\"]]:bg-error-container aria-invalid:[&_[role=\"group\"]]:outline-error-border aria-invalid:[&_[role=\"group\"]]:focus-within:outline-error-border-strong aria-invalid:[&_[role=\"group\"]]:not-focus-within:hover:outline-error-border data-[disabled]:[&_[role=\"group\"]]:cursor-not-allowed data-[invalid]:[&_[role=\"group\"]]:bg-error-container data-[invalid]:[&_[role=\"group\"]]:outline-error-border data-[invalid]:[&_[role=\"group\"]]:focus-within:outline-error-border-strong data-[invalid]:[&_[role=\"group\"]]:not-focus-within:hover:outline-error-border aria-invalid:[&_input]:text-error-on-container aria-invalid:[&_input]:caret-error-border-strong data-invalid:[&_input]:text-error-on-container data-invalid:[&_input]:caret-error-border-strong',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: '[&_[role=\"group\"]]:h-2xl [&_input]:style-text-default-1',\n medium: '[&_[role=\"group\"]]:h-xl [&_input]:style-text-default-0',\n small: '[&_[role=\"group\"]]:h-lg [&_input]:style-text-default--1',\n },\n variant: {\n ghost: '',\n primary: '[&_[role=\"group\"]]:bg-surface [&_[role=\"group\"]]:shadow-2xs',\n secondary: '[&_[role=\"group\"]]:bg-neutral-container',\n },\n },\n },\n)\n\nexport type NumberFieldTypesProps = React.ComponentProps<typeof BaseNumberField.Root> &\n VariantProps<typeof numberFieldVariants> & {\n label?: string\n disableInput?: boolean\n }\n","import { NumberField as BaseNumberField } from '@base-ui/react/number-field'\nimport { MinusIcon, PlusIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { numberFieldVariants } from './number-field.types'\nimport type { NumberFieldTypesProps } from './number-field.types'\n\nfunction getCurrentValue(value: number | null | undefined, uncontrolledValue: number | undefined) {\n if (typeof value === 'number' || value === null) {\n return value\n }\n return uncontrolledValue\n}\n\nfunction getInvalidAttribute(isInvalid: boolean): string | undefined {\n if (isInvalid) {\n return ''\n }\n return undefined\n}\n\nfunction getInputLabel(label: React.ReactNode): string {\n if (typeof label === 'string') {\n return label\n }\n return 'Number value'\n}\n\nfunction NumberField({\n size,\n variant,\n children,\n label,\n disableInput: disabledInput = false,\n className,\n ref,\n ...props\n}: NumberFieldTypesProps) {\n const id = React.useId(),\n {\n min,\n max,\n value,\n defaultValue,\n onValueChange,\n 'aria-invalid': ariaInvalid,\n ...restProps\n } = props,\n [uncontrolledValue, setUncontrolledValue] = React.useState<number | undefined>(() => {\n if (typeof defaultValue === 'number') {\n return defaultValue\n }\n\n return undefined\n }),\n currentValue = getCurrentValue(value, uncontrolledValue),\n isOutOfRange =\n typeof currentValue === 'number' &&\n ((typeof min === 'number' && currentValue < min) ||\n (typeof max === 'number' && currentValue > max)),\n mergedAriaInvalid = Boolean(ariaInvalid || isOutOfRange),\n handleValueChange: NumberFieldTypesProps['onValueChange'] = (...args) => {\n const [nextValue] = args\n\n if (typeof value !== 'number' && value !== null) {\n setUncontrolledValue(nextValue ?? undefined)\n }\n\n onValueChange?.(...args)\n },\n getButtonSize = () => {\n switch (size) {\n case 'small': {\n return 'iconSmall'\n }\n case 'medium': {\n return 'iconMedium'\n }\n case 'large': {\n return 'iconLarge'\n }\n default: {\n return 'iconMedium'\n }\n }\n }\n\n return (\n <BaseNumberField.Root\n className={cn(numberFieldVariants({ className, size, variant }))}\n ref={ref}\n aria-invalid={mergedAriaInvalid}\n data-invalid={getInvalidAttribute(mergedAriaInvalid)}\n defaultValue={defaultValue}\n id={id}\n max={max}\n min={min}\n onValueChange={handleValueChange}\n value={value}\n {...restProps}\n >\n {label && (\n <BaseNumberField.ScrubArea className=\"cursor-ew-resize\">\n <label className=\"cursor-ew-resize style-text-default--1\" htmlFor={id}>\n {label}\n </label>\n <BaseNumberField.ScrubAreaCursor>\n <CursorGrowIcon />\n </BaseNumberField.ScrubAreaCursor>\n </BaseNumberField.ScrubArea>\n )}\n <BaseNumberField.Group className=\"relative flex w-full items-center gap-3xs\">\n <BaseNumberField.Decrement\n render={(stepperProps) => (\n <Button\n {...stepperProps}\n tone=\"error\"\n variant=\"ghost\"\n size={getButtonSize()}\n className=\"shrink-0 rounded-r-none\"\n >\n <MinusIcon weight=\"bold\" />\n </Button>\n )}\n />\n <BaseNumberField.Input\n aria-label={getInputLabel(label)}\n disabled={disabledInput}\n className={cn('w-full text-center focus:outline-none', children && 'text-right')}\n />\n {children && (\n <div\n className={cn(\n 'w-full text-left text-on-surface-variant',\n size === 'small' && 'style-text-default--1',\n size === 'medium' && 'style-text-default-0',\n size === 'large' && 'style-text-default-1',\n )}\n >\n {children}\n </div>\n )}\n <BaseNumberField.Increment\n render={(stepperProps) => (\n <Button\n {...stepperProps}\n tone=\"success\"\n variant=\"ghost\"\n size={getButtonSize()}\n className=\"shrink-0 rounded-l-none\"\n >\n <PlusIcon weight=\"bold\" />\n </Button>\n )}\n />\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n )\n}\n\nfunction CursorGrowIcon(props: React.ComponentProps<'svg'>) {\n return (\n <svg\n fill=\"black\"\n height=\"14\"\n stroke=\"white\"\n viewBox=\"0 0 24 14\"\n width=\"26\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <title>Resize cursor</title>\n <path d=\"M19.5 5.5L6.49737 5.51844V2L1 6.9999L6.5 12L6.49737 8.5L19.5 8.5V12L25 6.9999L19.5 2V5.5Z\" />\n </svg>\n )\n}\n\nexport { NumberField }\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport type { PreviewCardProps } from './preview-card.types'\n\nexport function PreviewCard({ ...props }: PreviewCardProps) {\n return <BasePreviewCard.Root {...props} />\n}\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PreviewCardPopupProps } from './preview-card.types'\n\nexport function PreviewCardPopup({ className, children, ref, ...props }: PreviewCardPopupProps) {\n return (\n <BasePreviewCard.Portal>\n <BasePreviewCard.Positioner className={cn('', className)} ref={ref} {...props}>\n <BasePreviewCard.Popup className=\"relative h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) rounded-xl bg-surface shadow-md transition-[transform,opacity] duration-100 ease-out data-ending-style:transform-[scale(0.98)] data-ending-style:opacity-0 data-starting-style:transform-[scale(0.98)] data-starting-style:opacity-0\">\n {children}\n </BasePreviewCard.Popup>\n </BasePreviewCard.Positioner>\n </BasePreviewCard.Portal>\n )\n}\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PreviewCardTriggerProps } from './preview-card.types'\n\nexport function PreviewCardTrigger({ className, ref, ...props }: PreviewCardTriggerProps) {\n return <BasePreviewCard.Trigger className={cn('', className)} ref={ref} {...props} />\n}\n","import { PreviewCard as PreviewCardRoot } from './preview-card'\nimport { PreviewCardPopup } from './preview-card-popup'\nimport { PreviewCardTrigger } from './preview-card-trigger'\n\nconst PreviewCard = Object.assign(PreviewCardRoot, {\n Popup: PreviewCardPopup,\n Trigger: PreviewCardTrigger,\n})\n\nexport type {\n PreviewCardPopupProps,\n PreviewCardProps,\n PreviewCardTriggerProps,\n} from './preview-card.types'\nexport { PreviewCardPopup } from './preview-card-popup'\nexport { PreviewCardTrigger } from './preview-card-trigger'\n\nexport { PreviewCard }\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileProps } from './profile.types'\n\nexport function Profile({ className, ref, ...props }: ProfileProps) {\n return (\n <div\n className={cn('flex w-full items-center gap-sm rounded-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileActionProps } from './profile.types'\n\nexport function ProfileAction({ className, ref, ...props }: ProfileActionProps) {\n return (\n <div\n className={cn('ml-auto text-on-surface-variant [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileContentProps } from './profile.types'\n\nexport function ProfileContent({ compact, className, ref, ...props }: ProfileContentProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-start justify-start gap-3xs',\n compact && 'hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileNameProps } from './profile.types'\n\nexport function ProfileName({ className, ref, ...props }: ProfileNameProps) {\n return (\n <span\n className={cn('flex items-center gap-xs style-text-default-0 [&>svg]:size-md', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileSubnameProps } from './profile.types'\n\nexport function ProfileSubname({ className, ref, ...props }: ProfileSubnameProps) {\n return (\n <span\n className={cn('style-text-default--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Profile as ProfileRoot } from './profile'\nimport { ProfileAction } from './profile-action'\nimport { ProfileContent } from './profile-content'\nimport { ProfileName } from './profile-name'\nimport { ProfileSubname } from './profile-subname'\n\nconst Profile = Object.assign(ProfileRoot, {\n Action: ProfileAction,\n Content: ProfileContent,\n Name: ProfileName,\n Subname: ProfileSubname,\n})\n\nexport type {\n ProfileProps,\n ProfileNameProps,\n ProfileSubnameProps,\n ProfileActionProps,\n ProfileContentProps,\n} from './profile.types'\nexport { ProfileName } from './profile-name'\nexport { ProfileSubname } from './profile-subname'\nexport { ProfileAction } from './profile-action'\nexport { ProfileContent } from './profile-content'\n\nexport { Profile }\n","import { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ProgressProps } from './progress.types'\n\nconst CURRENT_CHILD_DECREMENT = 1,\n CURRENT_CHILD_INCREMENT = 2\n\nexport function Progress({ currentIndex, className, ref, ...props }: ProgressProps) {\n const uid = useId().replace(/:/g, ''),\n scope = `progress-${uid}`,\n current = currentIndex * CURRENT_CHILD_INCREMENT - CURRENT_CHILD_DECREMENT\n\n return (\n <>\n <style>\n {`\n\t\t .${scope} > :nth-child(${current}) > :first-child {\n\t\t\tbackground-color: var(--color-accent-container);\n\t\t\tborder: 1px solid var(--color-accent-border-strong);\n\t\t\tcolor: var(--color-accent-on-container);\n\t\t }\n\t\t .${scope} > :nth-child(-n+${current - CURRENT_CHILD_DECREMENT}) > :first-child {\n\t\t\tbackground-color: var(--color-accent-default);\n\t\t\tborder: none;\n\t\t\tcolor: var(--color-accent-on-default);\n\t\t\tbox-shadow: none;\n\t\t }\n\t\t`}\n </style>\n\n <div\n className={cn('flex w-full items-center justify-center gap-2xs', scope, className)}\n ref={ref}\n {...props}\n />\n </>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressBarProps } from './progress.types'\n\nexport function ProgressBar({ className, ref, ...props }: ProgressBarProps) {\n return (\n <div className=\"w-full\">\n <div\n className={cn(\n 'h-3xs w-full grow rounded-full bg-accent-default/20 transition-colors ease-in-out',\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressDescriptionProps } from './progress.types'\n\nexport function ProgressDescription({\n className,\n children,\n ref,\n ...props\n}: ProgressDescriptionProps) {\n return (\n <span\n data-slot=\"progress-description\"\n className={cn('block text-center style-text-prose--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressTitleProps } from './progress.types'\n\nexport function ProgressTitle({ className, children, ref, ...props }: ProgressTitleProps) {\n return (\n <span\n data-slot=\"progress-title\"\n className={cn('block text-center style-text-strong--2 text-on-surface', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { Children, isValidElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ProgressDescription } from './progress-description'\nimport { ProgressTitle } from './progress-title'\nimport type { ProgressIndicatorProps } from './progress.types'\n\nconst META_TYPES = new Set<unknown>([ProgressTitle, ProgressDescription]),\n EMPTY = 0\n\nexport function ProgressIndicator({ className, children, ref, ...props }: ProgressIndicatorProps) {\n const items = Children.toArray(children),\n isMeta = (child: (typeof items)[number]) => isValidElement(child) && META_TYPES.has(child.type),\n meta = items.filter(isMeta),\n inner = items.filter((child) => !isMeta(child))\n\n return (\n <div className=\"relative flex shrink-0 flex-col items-center\">\n <div\n className={cn(\n 'flex size-md shrink-0 flex-col items-center justify-center rounded-full border border-neutral-border bg-neutral-container text-center style-text-default--2 text-accent-default transition-colors ease-in-out [&_svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n {inner}\n </div>\n {meta.length > EMPTY && (\n <div className=\"absolute top-full left-1/2 flex w-3xl -translate-x-1/2 translate-y-2xs flex-col gap-3xs\">\n {meta}\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressLabelProps } from './progress.types'\n\nexport function ProgressLabel({ className, children, ref, ...props }: ProgressLabelProps) {\n return (\n <span\n data-slot=\"progress-label\"\n className={cn('inline-flex items-center justify-center', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { Progress as ProgressRoot } from './progress'\nimport { ProgressBar } from './progress-bar'\nimport { ProgressDescription } from './progress-description'\nimport { ProgressIndicator } from './progress-indicator'\nimport { ProgressLabel } from './progress-label'\nimport { ProgressTitle } from './progress-title'\n\nconst Progress = Object.assign(ProgressRoot, {\n Bar: ProgressBar,\n Description: ProgressDescription,\n Indicator: ProgressIndicator,\n Label: ProgressLabel,\n Title: ProgressTitle,\n})\n\nexport type {\n ProgressBarProps,\n ProgressDescriptionProps,\n ProgressIndicatorProps,\n ProgressLabelProps,\n ProgressProps,\n ProgressTitleProps,\n} from './progress.types'\nexport { ProgressBar } from './progress-bar'\nexport { ProgressDescription } from './progress-description'\nexport { ProgressIndicator } from './progress-indicator'\nexport { ProgressLabel } from './progress-label'\nexport { ProgressTitle } from './progress-title'\nexport { Progress }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const radarPingVariants = cva('absolute top-[0px] right-[0px] flex', {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large: '-mt-xs -mr-xs style-text-default-0 [&_[data-dot]]:size-lg',\n medium: '-mt-2xs -mr-2xs style-text-default--1 [&_[data-dot]]:size-md',\n small: '-mt-3xs -mr-3xs style-text-default--2 [&_[data-dot]]:size-sm',\n },\n tone: {\n accent: '[&_[data-dot]]:bg-accent-default [&_[data-radar-ping]]:bg-accent-default',\n brand: '[&_[data-dot]]:bg-brand-default [&_[data-radar-ping]]:bg-brand-default',\n error: '[&_[data-dot]]:bg-error-default [&_[data-radar-ping]]:bg-error-default',\n info: '[&_[data-dot]]:bg-info-default [&_[data-radar-ping]]:bg-info-default',\n neutral: '[&_[data-dot]]:bg-neutral-default [&_[data-radar-ping]]:bg-neutral-default',\n success: '[&_[data-dot]]:bg-success-default [&_[data-radar-ping]]:bg-success-default',\n warning: '[&_[data-dot]]:bg-warning-default [&_[data-radar-ping]]:bg-warning-default',\n },\n },\n})\n\nexport type RadarPingProps = React.ComponentProps<'div'> &\n VariantProps<typeof radarPingVariants> & {\n hidePing?: boolean\n }\n","import { cn } from '@/utils/cn'\n\nimport { radarPingVariants } from './radar-ping.types'\nimport type { RadarPingProps } from './radar-ping.types'\n\nexport function RadarPing({\n hidePing = false,\n tone = 'brand',\n size = 'medium',\n className,\n children,\n ref,\n ...props\n}: RadarPingProps) {\n return (\n <div className={cn(radarPingVariants({ className, size, tone }))} ref={ref} {...props}>\n {!hidePing && (\n <span\n className=\"absolute inline-flex size-full animate-ping rounded-full opacity-75\"\n data-radar-ping\n />\n )}\n <span\n className=\"relative flex items-center justify-center rounded-full text-surface\"\n data-dot\n >\n {children}\n </span>\n </div>\n )\n}\n","import { Separator as BaseResizableSeparator } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeableHandleProps } from './resizeable.types'\n\nexport function ResizeableHandle({\n withHandle = false,\n className,\n ...props\n}: ResizeableHandleProps) {\n return (\n <BaseResizableSeparator\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-[0px] after:left-1/2 after:w-px after:-translate-x-1/2 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full after:aria-[orientation=horizontal]:left-[0px] after:aria-[orientation=horizontal]:h-px after:aria-[orientation=horizontal]:w-full after:aria-[orientation=horizontal]:translate-x-[0px] after:aria-[orientation=horizontal]:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n data-slot=\"resizable-handle\"\n {...props}\n >\n {withHandle && <div className=\"z-10 flex h-md w-3xs shrink-0 rounded-lg bg-border-strong\" />}\n </BaseResizableSeparator>\n )\n}\n","import { Panel as BaseResizablePanel } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeablePanelProps } from './resizeable.types'\n\nexport function ResizeablePanel({ className, ...props }: ResizeablePanelProps) {\n return <BaseResizablePanel className={cn('', className)} data-slot=\"resizable-panel\" {...props} />\n}\n","import { Group as BaseResizableGroup } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeablePanelGroupProps } from './resizeable.types'\n\nexport function ResizeablePanelGroup({ className, ...props }: ResizeablePanelGroupProps) {\n return (\n <BaseResizableGroup\n className={cn('flex h-full aria-[orientation=vertical]:flex-col', className)}\n data-slot=\"resizable-panel-group\"\n {...props}\n />\n )\n}\n","import type { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nexport const scrollAreaVariants = cva('overflow-hidden rounded-xl', {\n defaultVariants: {\n orientation: 'vertical',\n variant: 'default',\n },\n variants: {\n orientation: {\n horizontal: 'h-full',\n vertical: '',\n },\n variant: {\n default:\n 'bg-surface-low **:data-viewport:rounded-xl **:data-viewport:bg-surface-low **:data-viewport:p-sm **:data-viewport:inset-shadow-2xs **:data-viewport:before:pointer-events-none **:data-viewport:before:absolute **:data-viewport:before:top-0 **:data-viewport:before:left-0 **:data-viewport:before:block **:data-viewport:before:h-[min(40px,var(--scroll-area-overflow-y-start))] **:data-viewport:before:w-full **:data-viewport:before:bg-linear-to-b **:data-viewport:before:from-shadow **:data-viewport:before:to-transparent **:data-viewport:before:transition-[height] **:data-viewport:before:duration-100 **:data-viewport:before:ease-out **:data-viewport:before:content-[\"\"] **:data-viewport:before:[--scroll-area-overflow-y-start:inherit] **:data-viewport:after:pointer-events-none **:data-viewport:after:absolute **:data-viewport:after:bottom-0 **:data-viewport:after:left-0 **:data-viewport:after:block **:data-viewport:after:h-[min(40px,var(--scroll-area-overflow-y-end,40px))] **:data-viewport:after:w-full **:data-viewport:after:bg-linear-to-t **:data-viewport:after:from-shadow **:data-viewport:after:to-transparent **:data-viewport:after:transition-[height] **:data-viewport:after:duration-100 **:data-viewport:after:ease-out **:data-viewport:after:content-[\"\"] **:data-viewport:after:[--scroll-area-overflow-y-end:inherit]',\n ghost: '',\n outline: 'border border-border **:data-viewport:p-sm',\n },\n },\n})\n\nexport type ScrollAreaProps = ComponentProps<typeof BaseScrollArea.Root> &\n VariantProps<typeof scrollAreaVariants>\n","import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\n\nimport { cn } from '@/utils/cn'\n\nimport { scrollAreaVariants } from './scroll-area.types'\nimport type { ScrollAreaProps } from './scroll-area.types'\n\nexport function ScrollArea({\n orientation,\n variant,\n className,\n children,\n ref,\n ...props\n}: ScrollAreaProps) {\n return (\n <BaseScrollArea.Root\n className={cn(className, scrollAreaVariants({ orientation, variant }))}\n ref={ref}\n {...props}\n >\n <BaseScrollArea.Viewport\n data-viewport\n tabIndex={0}\n className={cn(\n 'flex h-full gap-xs overscroll-contain',\n orientation === 'horizontal' && 'flex-row pb-md',\n orientation === 'vertical' && 'flex-col',\n )}\n >\n {children}\n </BaseScrollArea.Viewport>\n <BaseScrollArea.Scrollbar\n data-scrollbar\n className={cn(\n 'ml-sm opacity-0 transition-opacity delay-300 hover:cursor-pointer data-hovering:opacity-100 data-hovering:delay-0 data-hovering:duration-75 data-scrolling:opacity-100 data-scrolling:delay-0 data-scrolling:duration-75',\n orientation === 'vertical' && 'my-2xs mr-3xs w-2xs',\n orientation === 'horizontal' && 'mx-xs mb-xs h-2xs',\n )}\n orientation={orientation!}\n >\n <BaseScrollArea.Thumb className=\"size-full rounded-full bg-accent-default shadow-xs\" />\n </BaseScrollArea.Scrollbar>\n <BaseScrollArea.Corner />\n </BaseScrollArea.Root>\n )\n}\n","import React from 'react'\n\ninterface Device {\n name: 'mobile' | 'tablet' | 'desktop'\n query: string\n}\n\nconst devices: Device[] = [\n { name: 'mobile', query: '(max-width: 767px), (orientation: landscape) and (max-height: 500px)' },\n { name: 'tablet', query: '(min-width: 768px) and (max-width: 1023px)' },\n { name: 'desktop', query: '(min-width: 1024px)' },\n]\n\nfunction getInitialMatch(query: string): boolean {\n if (typeof globalThis.matchMedia !== 'function') {\n return false\n }\n return globalThis.matchMedia(query).matches\n}\n\nexport function useMediaQuery(deviceName: Device['name']) {\n const device = devices.find((candidate) => candidate.name === deviceName)!,\n [matches, setMatches] = React.useState(() => getInitialMatch(device.query))\n\n React.useEffect(() => {\n const media = globalThis.matchMedia(device.query),\n update = () => setMatches(media.matches)\n\n update()\n\n media.addEventListener('change', update)\n\n return () => media.removeEventListener('change', update)\n }, [device])\n\n return matches\n}\n","import type { Theme, ThemeValue } from './theme.types'\n\nconst THEME_STORAGE_KEY = 'dawn-ui-theme',\n DEFAULT_THEME: ThemeValue = 'light',\n getThemeByValue = (value: ThemeValue, themes: Theme[]): Theme | undefined =>\n themes.find((themeItem) => themeItem.value === value)\n\nexport { THEME_STORAGE_KEY, DEFAULT_THEME, getThemeByValue }\n","import { createContext, useContext, useEffect, useState } from 'react'\n\nimport { DEFAULT_THEME, THEME_STORAGE_KEY } from './theme.constants.ts'\nimport type { ThemeProviderProps, ThemeProviderState, ThemeValue } from './theme.types.ts'\n\nconst initialState: ThemeProviderState = {\n setTheme: () => undefined,\n theme: 'system',\n },\n ThemeProviderContext = createContext<ThemeProviderState>(initialState)\n\nfunction getStoredTheme(storageKey: string, fallback: ThemeValue): ThemeValue {\n const stored = localStorage.getItem(storageKey)\n if (stored === 'light' || stored === 'dark' || stored === 'system') {\n return stored\n }\n return fallback\n}\n\nfunction ThemeProvider({\n children,\n defaultTheme = DEFAULT_THEME,\n storageKey = THEME_STORAGE_KEY,\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<ThemeValue>(() => getStoredTheme(storageKey, defaultTheme))\n\n useEffect(() => {\n const root = globalThis.document.documentElement\n root.setAttribute('data-theme', theme)\n localStorage.setItem(storageKey, theme)\n }, [theme, storageKey])\n\n return (\n <ThemeProviderContext.Provider {...props} value={{ setTheme, theme }}>\n {children}\n </ThemeProviderContext.Provider>\n )\n}\n\nfunction useTheme() {\n const context = useContext(ThemeProviderContext)\n\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n\n return context\n}\n\nexport { ThemeProvider, useTheme }\n","import React from 'react'\n\nimport { useMediaQuery } from '@/hooks'\nimport { cn } from '@/utils/cn'\n\ntype SidebarContextProps = React.ComponentProps<'div'> & {\n id: string\n defaultOpen?: boolean\n trigger?: () => void\n open?: boolean\n setOpen?: (open: boolean) => void\n isMobile?: boolean\n side?: 'left' | 'right'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}\n\n// 7 days in seconds\nconst SIDEBAR_COOKIE_MAX_AGE_SECONDS = 604_800,\n // oxlint-disable-next-line unicorn/no-null\n SidebarContext = React.createContext<SidebarContextProps | null>(null),\n useSidebar = () => {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider')\n }\n return context\n }\n\nfunction resolveOpenState(\n value: boolean | ((open: boolean) => boolean),\n previous: boolean,\n): boolean {\n if (typeof value === 'function') {\n return value(previous)\n }\n return value\n}\n\nfunction SidebarProvider({\n id,\n defaultOpen = true,\n side = 'left',\n collapsible = 'icon',\n className,\n ref,\n ...props\n}: SidebarContextProps) {\n const cookieName = `sidebar-state-${id}`,\n [openState, setOpenState] = React.useState<boolean>(defaultOpen),\n isMobile = useMediaQuery('mobile'),\n setOpen = (value: boolean | ((open: boolean) => boolean)) => {\n setOpenState((prev) => {\n const nextOpen = resolveOpenState(value, prev)\n\n document.cookie = [\n `${cookieName}=${encodeURIComponent(String(nextOpen))}`,\n 'path=/',\n `max-age=${SIDEBAR_COOKIE_MAX_AGE_SECONDS}`,\n 'samesite=lax',\n ].join('; ')\n\n return nextOpen\n })\n },\n trigger = () => setOpen((prev) => !prev)\n\n let effectiveCollapsible = collapsible\n if (isMobile) {\n effectiveCollapsible = 'offcanvas'\n }\n\n return (\n <SidebarContext.Provider\n value={{\n collapsible: effectiveCollapsible,\n defaultOpen,\n id,\n isMobile,\n open: openState,\n setOpen,\n side,\n trigger,\n }}\n >\n <div\n className={cn(\n 'relative size-full min-h-0',\n side === 'left' && 'flex flex-row',\n side === 'right' && 'flex flex-row-reverse',\n className,\n )}\n ref={ref}\n {...props}\n />\n </SidebarContext.Provider>\n )\n}\n\nexport { SidebarProvider, useSidebar }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarProps } from './sidebar.types'\n\nconst DEFAULT_SIDEBAR_WIDTH = 400\n\ninterface SidebarLayoutProps {\n collapsible?: 'offcanvas' | 'icon' | 'none'\n open?: boolean\n isMobile?: boolean\n width: string | number\n}\n\nfunction getOffcanvasWidth(\n open: boolean | undefined,\n isMobile: boolean | undefined,\n fullWidth: React.CSSProperties,\n): React.CSSProperties {\n if (!open) {\n return { width: '0px' }\n }\n if (isMobile) {\n return { width: '33.333333%' }\n }\n return fullWidth\n}\n\nfunction getIconWidth(\n open: boolean | undefined,\n isMobile: boolean | undefined,\n fullWidth: React.CSSProperties,\n): React.CSSProperties {\n if (open) {\n return fullWidth\n }\n if (isMobile) {\n return { width: '0px' }\n }\n return { width: '80px' }\n}\n\nfunction getWidthStyle({\n collapsible,\n open,\n isMobile,\n width,\n}: SidebarLayoutProps): React.CSSProperties {\n const fullWidth: React.CSSProperties = { width: `${width}px` }\n if (collapsible === 'offcanvas') {\n return getOffcanvasWidth(open, isMobile, fullWidth)\n }\n if (collapsible === 'icon') {\n return getIconWidth(open, isMobile, fullWidth)\n }\n return fullWidth\n}\n\nfunction getGapClasses({ collapsible, open }: SidebarLayoutProps) {\n if (collapsible === 'none') {\n return 'gap-lg'\n }\n if (open) {\n return 'gap-lg'\n }\n return 'gap-sm'\n}\n\nfunction getPositionClasses({ collapsible, open, isMobile }: SidebarLayoutProps) {\n if ((collapsible === 'offcanvas' || collapsible === 'icon') && !open && isMobile) {\n return 'absolute z-50 -translate-x-full'\n }\n\n if ((collapsible === 'offcanvas' || collapsible === 'icon') && open && isMobile) {\n return 'absolute z-50'\n }\n\n return ''\n}\n\nexport function Sidebar({\n tone = 'primary',\n width = DEFAULT_SIDEBAR_WIDTH,\n className,\n ...props\n}: SidebarProps) {\n const { open, setOpen, isMobile, collapsible, side } = useSidebar(),\n sidebarRef = React.useRef<HTMLDivElement>(null),\n layout: SidebarLayoutProps = { collapsible, isMobile, open, width }\n\n React.useEffect(() => {\n const handleOutsideClick = (event: MouseEvent) => {\n if (\n sidebarRef.current &&\n event.target instanceof Node &&\n !sidebarRef.current.contains(event.target) &&\n isMobile &&\n open &&\n setOpen\n ) {\n setOpen(false)\n }\n }\n\n document.addEventListener('click', handleOutsideClick)\n\n return () => {\n document.removeEventListener('click', handleOutsideClick)\n }\n }, [open, setOpen, isMobile])\n\n return (\n <div\n className={cn(\n 'sticky left-[0px] flex h-full max-h-dvh min-h-0 shrink-0 flex-col overflow-hidden border-border bg-surface transition-[width,transform] duration-300 ease-in-out',\n className,\n tone === 'primary' && 'bg-surface-background',\n tone === 'secondary' && 'bg-surface',\n tone === 'ghost' && 'bg-transparent',\n getGapClasses(layout),\n getPositionClasses(layout),\n collapsible === 'offcanvas' && !open && 'border-none',\n open && 'p-md',\n collapsible === 'icon' && !open && 'py-md',\n isMobile && 'border-none',\n side === 'left' && 'border-r',\n side === 'right' && 'border-l',\n )}\n ref={sidebarRef}\n style={getWidthStyle(layout)}\n {...props}\n />\n )\n}\n","import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\n\nimport { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarContentProps } from './sidebar.types'\n\nexport function SidebarContent({ className, children, ref, ...props }: SidebarContentProps) {\n const { open } = useSidebar()\n\n return (\n <BaseScrollArea.Root\n className={cn(\n 'min-h-0 flex-1 overflow-hidden rounded-xl transition-all duration-300 ease-in-out',\n !open && 'w-fit self-center',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseScrollArea.Viewport\n className={cn(\n 'flex h-full scrollbar-none flex-col items-center divide-y divide-border overflow-y-auto overscroll-contain [&::-webkit-scrollbar]:hidden',\n 'before:pointer-events-none before:absolute before:top-0 before:left-0 before:block before:h-[min(40px,var(--scroll-area-overflow-y-start))] before:w-full before:bg-linear-to-b before:from-shadow/35 before:to-transparent before:transition-[height] before:duration-100 before:ease-out before:content-[\"\"] before:[--scroll-area-overflow-y-start:inherit]',\n 'after:pointer-events-none after:absolute after:bottom-0 after:left-0 after:block after:h-[min(40px,var(--scroll-area-overflow-y-end,40px))] after:w-full after:bg-linear-to-t after:from-shadow/35 after:to-transparent after:transition-[height] after:duration-100 after:ease-out after:content-[\"\"] after:[--scroll-area-overflow-y-end:inherit]',\n open && 'gap-md',\n !open && 'gap-xs px-3xs pt-3xs',\n )}\n >\n {children}\n </BaseScrollArea.Viewport>\n </BaseScrollArea.Root>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarFooterProps } from './sidebar.types'\n\nexport function SidebarFooter({ className, children, ref, ...props }: SidebarFooterProps) {\n const { open, collapsible } = useSidebar(),\n isExpanded = collapsible === 'none' || open\n return (\n <div\n className={cn(\n 'flex shrink-0 animate-in items-center truncate p-3xs transition-all duration-300 ease-in-out',\n open && 'justify-start fade-in-0',\n !open && 'justify-center self-center fade-out-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children(isExpanded)}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarGroupProps } from './sidebar.types'\n\nexport function SidebarGroup({ className, ref, ...props }: SidebarGroupProps) {\n return (\n <div\n className={cn('flex w-full flex-col items-start gap-3xs not-last-of-type:pb-md', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarGroupContentProps } from './sidebar.types'\n\nexport function SidebarGroupContent({ className, ref, ...props }: SidebarGroupContentProps) {\n return <div className={cn('flex w-full flex-col gap-3xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarGroupLabelProps } from './sidebar.types'\n\nexport function SidebarGroupLabel({ className, ref, ...props }: SidebarGroupLabelProps) {\n const { open, collapsible } = useSidebar(),\n showLabel = collapsible === 'none' || open\n\n if (!showLabel) {\n return undefined\n }\n\n return (\n <span\n className={cn(\n 'inline-flex h-md w-full items-center justify-between truncate pr-3xs pl-sm style-text-default--1 text-on-surface-variant transition-all duration-200 ease-out',\n collapsible !== 'none' && open && 'animate-in fade-in-0 slide-in-from-left-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarHeaderProps } from './sidebar.types'\n\nexport function SidebarHeader({ className, children, ref, ...props }: SidebarHeaderProps) {\n const { open, collapsible } = useSidebar(),\n isExpanded = collapsible === 'none' || open\n\n return (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-start gap-xs truncate style-text-strong-1 transition-all duration-200 ease-out',\n !open && 'self-center',\n open && 'h-2xl pr-3xs pl-xs',\n open && 'justify-between',\n collapsible !== 'none' && 'animate-in',\n isExpanded && 'fade-in-0',\n !isExpanded && 'fade-out-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children(isExpanded)}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarMenuProps } from './sidebar.types'\n\nexport function SidebarMenu({ className, ref, ...props }: SidebarMenuProps) {\n return (\n <div\n className={cn('flex w-full flex-col items-start gap-3xs p-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuBadgeProps } from './sidebar.types'\n\nexport function SidebarMenuBadge({ className, ref, ...props }: SidebarMenuBadgeProps) {\n const { open } = useSidebar()\n\n return <Badge className={cn(!open && 'hidden', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuButtonProps } from './sidebar.types'\n\nexport function SidebarMenuButton({ isActive, className, ref, ...props }: SidebarMenuButtonProps) {\n const { open, collapsible } = useSidebar(),\n showText = collapsible === 'none' || open\n\n return (\n <button\n type=\"button\"\n data-active={String(Boolean(isActive))}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2xs rounded-xl border border-transparent style-text-default-0 whitespace-nowrap transition-all duration-200 ease-out select-none active:scale-95 disabled:pointer-events-none disabled:opacity-50 [&>svg]:shrink-0',\n isActive && 'pointer-events-none bg-surface text-on-surface shadow-2xs',\n !isActive &&\n 'text-neutral-default hover:bg-neutral-container hover:text-neutral-on-container',\n isActive && !open && 'bg-neutral-container',\n !showText && 'mx-auto',\n !open && 'size-xl justify-center *:hidden [&>svg]:block',\n open && 'h-xl w-full pl-sm',\n collapsible !== 'none' && open && 'animate-in fade-in-0 slide-in-from-left-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Children, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Collapsible } from '../collapsible'\nimport { Popover } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsibleProps } from './sidebar.types'\n\nconst hasActiveDescendant = (children: ReactNode): boolean =>\n Children.toArray(children).some((child) => {\n if (!isValidElement<{ isActive?: boolean; children?: ReactNode }>(child)) {\n return false\n }\n\n return child.props.isActive === true || hasActiveDescendant(child.props.children)\n })\n\nexport function SidebarMenuCollapsible({\n className,\n children,\n ref,\n ...props\n}: SidebarMenuCollapsibleProps) {\n const { open } = useSidebar()\n\n if (!open) {\n return <Popover>{children}</Popover>\n }\n\n return (\n <Collapsible\n defaultOpen={hasActiveDescendant(children)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n </Collapsible>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { CollapsiblePanel } from '../collapsible'\nimport { PopoverContent, PopoverPanel } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsiblePanelProps } from './sidebar.types'\n\nexport function SidebarMenuCollapsiblePanel({\n className,\n children,\n ref,\n ...props\n}: SidebarMenuCollapsiblePanelProps) {\n const { open } = useSidebar()\n\n if (!open) {\n return (\n <PopoverPanel side=\"right\" className=\"w-fit bg-surface p-[0.5rem_0.5rem]\">\n <PopoverContent className=\"flex gap-3xs\">{children}</PopoverContent>\n </PopoverPanel>\n )\n }\n\n return (\n <CollapsiblePanel className={cn('py-3xs', className)} ref={ref} {...props}>\n {children}\n </CollapsiblePanel>\n )\n}\n","import { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { CollapsibleTrigger } from '../collapsible'\nimport { PopoverTrigger } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsibleTriggerProps } from './sidebar.types'\n\nexport function SidebarMenuCollapsibleTrigger({\n className,\n children,\n ref,\n style: _style,\n ...props\n}: SidebarMenuCollapsibleTriggerProps) {\n const { open, collapsible } = useSidebar(),\n showText = collapsible === 'none' || open\n\n if (!open) {\n return (\n <PopoverTrigger>\n <button\n type=\"button\"\n className={cn(\n 'flex size-xl items-center justify-center rounded-full shadow-none! transition-colors *:hidden hover:cursor-pointer hover:bg-neutral-container hover:text-neutral-on-container data-popup-open:bg-neutral-container [&>svg]:block',\n )}\n >\n {children}\n <CaretRightIcon\n weight=\"bold\"\n className=\"absolute right-2xs size-xs text-on-surface-variant\"\n />\n </button>\n </PopoverTrigger>\n )\n }\n\n return (\n <CollapsibleTrigger\n variant=\"ghost\"\n className={cn(\n 'inline-flex! w-full! animate-in! justify-start! overflow-hidden! text-left! whitespace-nowrap! fade-in-0! slide-in-from-left-2! [&>svg]:size-sm! [&>svg]:flex-none [&>svg]:shrink-0',\n !showText && 'mx-auto',\n !open && 'size-xl *:hidden [&>svg]:block',\n open && 'h-xl pl-sm',\n collapsible !== 'none' && open && 'animate-in slide-in-from-left-2',\n className,\n )}\n ref={ref}\n style={{ justifyContent: 'flex-start' }}\n {...props}\n >\n <span className=\"flex shrink-0 items-center gap-2xs [&>svg]:size-sm\">{children}</span>\n </CollapsibleTrigger>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarMenuItemProps } from './sidebar.types'\n\nexport function SidebarMenuItem({ className, ref, ...props }: SidebarMenuItemProps) {\n return (\n <div\n className={cn('flex h-xl w-full items-center justify-between gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarToggleProps } from './sidebar.types'\n\nfunction renderToggleChildren(children: SidebarToggleProps['children'], open?: boolean) {\n if (typeof children === 'function') {\n return children(open)\n }\n return children\n}\n\nexport function SidebarToggle({ className, children, ref, ...props }: SidebarToggleProps) {\n const { trigger, open, collapsible } = useSidebar(),\n handleClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (trigger) {\n trigger()\n }\n }\n\n if (!trigger || collapsible === 'none') {\n return undefined\n }\n\n return (\n <Button\n aria-label=\"Toggle sidebar\"\n className={cn('shrink-0 border-none', className)}\n ref={ref}\n size=\"iconMedium\"\n variant=\"ghost\"\n onClick={handleClick}\n {...props}\n >\n {renderToggleChildren(children, open)}\n </Button>\n )\n}\n","export const getStoredSidebarOpen = (id: string, fallback: boolean) => {\n if (typeof document === 'undefined') {\n return fallback\n }\n const match = new RegExp(`(?:^|; )sidebar-state-${id}=(?<value>[^;]*)`).exec(document.cookie)\n if (!match) {\n return fallback\n }\n return decodeURIComponent(match.groups?.value ?? '') === 'true'\n}\n","import { Sidebar as SidebarRoot } from './sidebar'\nimport { SidebarContent } from './sidebar-content'\nimport { SidebarFooter } from './sidebar-footer'\nimport { SidebarGroup } from './sidebar-group'\nimport { SidebarGroupContent } from './sidebar-group-content'\nimport { SidebarGroupLabel } from './sidebar-group-label'\nimport { SidebarHeader } from './sidebar-header'\nimport { SidebarMenu } from './sidebar-menu'\nimport { SidebarMenuBadge } from './sidebar-menu-badge'\nimport { SidebarMenuButton } from './sidebar-menu-button'\nimport { SidebarMenuCollapsible } from './sidebar-menu-collapsible'\nimport { SidebarMenuCollapsiblePanel } from './sidebar-menu-collapsible-panel'\nimport { SidebarMenuCollapsibleTrigger } from './sidebar-menu-collapsible-trigger'\nimport { SidebarMenuItem } from './sidebar-menu-item'\nimport { SidebarProvider } from './sidebar-provider'\nimport { SidebarToggle } from './sidebar-toggle'\n\nconst Sidebar = Object.assign(SidebarRoot, {\n Content: SidebarContent,\n Footer: SidebarFooter,\n Group: SidebarGroup,\n GroupContent: SidebarGroupContent,\n GroupLabel: SidebarGroupLabel,\n Header: SidebarHeader,\n Menu: SidebarMenu,\n MenuBadge: SidebarMenuBadge,\n MenuButton: SidebarMenuButton,\n MenuCollapsible: SidebarMenuCollapsible,\n MenuCollapsiblePanel: SidebarMenuCollapsiblePanel,\n MenuCollapsibleTrigger: SidebarMenuCollapsibleTrigger,\n MenuItem: SidebarMenuItem,\n Provider: SidebarProvider,\n Toggle: SidebarToggle,\n})\n\nexport type {\n SidebarContentProps,\n SidebarFooterProps,\n SidebarGroupContentProps,\n SidebarGroupLabelProps,\n SidebarGroupProps,\n SidebarHeaderProps,\n SidebarMenuButtonProps,\n SidebarMenuProps,\n SidebarProps,\n SidebarToggleProps,\n SidebarMenuBadgeProps,\n SidebarMenuCollapsiblePanelProps,\n SidebarMenuCollapsibleProps,\n SidebarMenuCollapsibleTriggerProps,\n SidebarMenuItemProps,\n} from './sidebar.types'\nexport { SidebarContent } from './sidebar-content'\nexport { SidebarFooter } from './sidebar-footer'\nexport { SidebarGroup } from './sidebar-group'\nexport { SidebarGroupContent } from './sidebar-group-content'\nexport { SidebarGroupLabel } from './sidebar-group-label'\nexport { SidebarHeader } from './sidebar-header'\nexport { SidebarMenu } from './sidebar-menu'\nexport { SidebarProvider, useSidebar } from './sidebar-provider'\nexport { SidebarToggle } from './sidebar-toggle'\nexport { SidebarMenuBadge } from './sidebar-menu-badge'\nexport { SidebarMenuButton } from './sidebar-menu-button'\nexport { SidebarMenuCollapsible } from './sidebar-menu-collapsible'\nexport { SidebarMenuCollapsiblePanel } from './sidebar-menu-collapsible-panel'\nexport { SidebarMenuCollapsibleTrigger } from './sidebar-menu-collapsible-trigger'\nexport { SidebarMenuItem } from './sidebar-menu-item'\nexport { getStoredSidebarOpen } from './sidebar.utils'\n\nexport { Sidebar }\n","import { cn } from '@/utils/cn'\n\nimport type { SliderDescriptionProps } from './slider-group.types'\n\nexport function SliderDescription({ className, ref, ...props }: SliderDescriptionProps) {\n return (\n <p\n data-slot=\"slider-description\"\n className={cn('style-text-prose--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { createContext, useContext, useState } from 'react'\n\nimport type { SliderGroupContextValue } from './slider-group.types'\n\nconst FIRST_THUMB_INDEX = 0,\n SliderGroupContext = createContext<SliderGroupContextValue | undefined>(undefined),\n useSliderGroupContext = () => useContext(SliderGroupContext),\n getPrimaryValue = (value: number[] | undefined, min: number): number =>\n value?.[FIRST_THUMB_INDEX] ?? min,\n withPrimaryValue = (value: number[] | undefined, next: number): number[] => {\n const result = [...(value ?? [])]\n result[FIRST_THUMB_INDEX] = next\n return result\n },\n areNumberArraysEqual = (first?: number[], second?: number[]) =>\n first === second ||\n (first !== undefined &&\n second !== undefined &&\n first.length === second.length &&\n first.every((item, index) => item === second[index])),\n // Keeps a referentially-stable array while its contents are unchanged, so a new\n // Literal each render can't masquerade as a value change (which loops Base UI's controlled Slider).\n useStableNumberArray = (next: number[] | undefined) => {\n const [stable, setStable] = useState(next)\n if (!areNumberArraysEqual(stable, next)) {\n setStable(next)\n return next\n }\n return stable\n }\n\nexport {\n SliderGroupContext,\n useSliderGroupContext,\n getPrimaryValue,\n withPrimaryValue,\n areNumberArraysEqual,\n useStableNumberArray,\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { SliderGroupContext, useStableNumberArray } from './slider-group-context'\nimport type { SliderGroupProps, SliderGroupConfig } from './slider-group.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction toArray(value: number | readonly number[] | undefined): number[] | undefined {\n if (value === undefined) {\n return undefined\n }\n if (typeof value === 'number') {\n return [value]\n }\n return [...value]\n}\n\nfunction getControlledValue(\n isControlled: boolean,\n valueProp: SliderGroupProps['value'],\n internalValue: number[] | undefined,\n): number[] | undefined {\n if (isControlled) {\n return toArray(valueProp)\n }\n return internalValue\n}\n\nfunction mergeConfig(\n prev: { min: number; max: number; step: number },\n incoming: SliderGroupConfig,\n) {\n if (prev.min === incoming.min && prev.max === incoming.max && prev.step === incoming.step) {\n return prev\n }\n return { max: incoming.max, min: incoming.min, step: incoming.step }\n}\n\nexport function SliderGroup({\n className,\n ref,\n defaultValue,\n value: valueProp,\n onValueChange,\n ...props\n}: SliderGroupProps) {\n const isControlled = valueProp !== undefined,\n [internalValue, setInternalValue] = React.useState<number[] | undefined>(() =>\n toArray(defaultValue),\n ),\n [config, setConfig] = React.useState({\n max: MAX_DEFAULT,\n min: MIN_DEFAULT,\n step: STEP_DEFAULT,\n }),\n value = useStableNumberArray(getControlledValue(isControlled, valueProp, internalValue)),\n setValue = (next: number[]) => {\n if (!isControlled) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n registerConfig = (incoming: SliderGroupConfig) => {\n setConfig((prev) => mergeConfig(prev, incoming))\n if (incoming.defaultValue !== undefined) {\n setInternalValue((prev) => prev ?? toArray(incoming.defaultValue))\n }\n },\n context = {\n max: config.max,\n min: config.min,\n registerConfig,\n setValue,\n step: config.step,\n value,\n }\n\n return (\n <SliderGroupContext.Provider value={context}>\n <div\n data-slot=\"slider-group\"\n className={cn(\n 'flex w-full flex-wrap items-center gap-x-sm',\n '**:data-[slot=slider-label]:basis-full',\n '**:data-[slot=slider-root]:flex-1',\n '**:data-[slot=slider-description]:basis-full',\n className,\n )}\n ref={ref}\n {...props}\n />\n </SliderGroupContext.Provider>\n )\n}\n","import React from 'react'\n\nimport { Slider } from '../slider'\nimport { useSliderGroupContext, useStableNumberArray } from './slider-group-context'\nimport type { SliderGroupContextValue, SliderGroupSliderProps } from './slider-group.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction toSingleNumber(input: number | readonly number[] | undefined): number | undefined {\n if (typeof input === 'number') {\n return input\n }\n return undefined\n}\n\nfunction toNumberArray(next: number | readonly number[]): number[] {\n if (typeof next === 'number') {\n return [next]\n }\n return [...next]\n}\n\nfunction resolveInitialValue(\n defaultValue: SliderGroupSliderProps['defaultValue'],\n value: SliderGroupSliderProps['value'],\n min: number,\n): number[] {\n if (Array.isArray(defaultValue)) {\n return [...defaultValue]\n }\n return [toSingleNumber(value) ?? toSingleNumber(defaultValue) ?? min]\n}\n\nfunction getGroupValue(\n group: SliderGroupContextValue | undefined,\n fallback: number[],\n): number[] | undefined {\n if (!group) {\n return undefined\n }\n return group.value ?? fallback\n}\n\n// The group-bound Slider: it reads/writes the shared value from SliderGroup and\n// Publishes its min/max/step so siblings (SliderInput, SliderValue) stay in sync.\nexport function SliderGroupSlider({\n min = MIN_DEFAULT,\n max = MAX_DEFAULT,\n step = STEP_DEFAULT,\n defaultValue,\n value,\n onValueChange,\n ...props\n}: SliderGroupSliderProps) {\n const group = useSliderGroupContext(),\n groupValue = useStableNumberArray(\n getGroupValue(group, resolveInitialValue(defaultValue, value, min)),\n ),\n handleValueChange = (\n ...args: Parameters<NonNullable<SliderGroupSliderProps['onValueChange']>>\n ) => {\n const [next] = args\n group?.setValue(toNumberArray(next))\n onValueChange?.(...args)\n }\n\n React.useEffect(() => {\n group?.registerConfig({ defaultValue, max, min, step })\n }, [group, min, max, step, defaultValue])\n\n return (\n <Slider\n min={min}\n max={max}\n step={step}\n value={groupValue}\n onValueChange={handleValueChange}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SliderIconProps } from './slider-group.types'\n\nexport function SliderIcon({ className, ref, ...props }: SliderIconProps) {\n return (\n <div\n data-slot=\"slider-icon\"\n className={cn('[&>svg]:size-sm [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Input } from '../input'\nimport { getPrimaryValue, useSliderGroupContext, withPrimaryValue } from './slider-group-context'\nimport type { SliderInputProps } from './slider-group.types'\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value))\n}\n\nexport function SliderInput({ className, ref, ...props }: SliderInputProps) {\n const group = useSliderGroupContext(),\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const raw = event.target.value,\n parsed = Number(raw)\n if (raw === '' || Number.isNaN(parsed) || !group) {\n return\n }\n group.setValue(withPrimaryValue(group.value, clamp(parsed, group.min, group.max)))\n }\n\n if (!group) {\n return undefined\n }\n\n return (\n <Input\n aria-label=\"Value\"\n data-slot=\"slider-input\"\n className={cn('w-[4rem]', className)}\n ref={ref}\n {...props}\n type=\"number\"\n min={group.min}\n max={group.max}\n step={group.step}\n value={getPrimaryValue(group.value, group.min)}\n onChange={handleChange}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SliderLabelProps } from './slider-group.types'\n\nexport function SliderLabel({ className, ref, ...props }: SliderLabelProps) {\n return (\n <span\n data-slot=\"slider-label\"\n className={cn('style-text-default-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { getPrimaryValue, useSliderGroupContext } from './slider-group-context'\nimport type { SliderValueProps } from './slider-group.types'\n\nexport function SliderValue({ className, children, ref, ...props }: SliderValueProps) {\n const group = useSliderGroupContext()\n if (!group) {\n return undefined\n }\n\n return (\n <span\n data-slot=\"slider-value\"\n className={cn('min-w-lg text-right style-text-default--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children}\n {getPrimaryValue(group.value, group.min)}\n </span>\n )\n}\n","import { SliderDescription } from './slider-description'\nimport { SliderGroup as SliderGroupRoot } from './slider-group'\nimport { SliderGroupSlider } from './slider-group-slider'\nimport { SliderIcon } from './slider-icon'\nimport { SliderInput } from './slider-input'\nimport { SliderLabel } from './slider-label'\nimport { SliderValue } from './slider-value'\n\nconst SliderGroup = Object.assign(SliderGroupRoot, {\n Description: SliderDescription,\n Icon: SliderIcon,\n Input: SliderInput,\n Label: SliderLabel,\n Slider: SliderGroupSlider,\n Value: SliderValue,\n})\n\nexport { SliderGroupSlider } from './slider-group-slider'\nexport { SliderInput } from './slider-input'\nexport { SliderValue } from './slider-value'\nexport { SliderLabel } from './slider-label'\nexport { SliderDescription } from './slider-description'\nexport { SliderIcon } from './slider-icon'\nexport { useSliderGroupContext } from './slider-group-context'\nexport type {\n SliderGroupProps,\n SliderGroupSliderProps,\n SliderInputProps,\n SliderValueProps,\n SliderLabelProps,\n SliderDescriptionProps,\n SliderIconProps,\n} from './slider-group.types'\n\nexport { SliderGroup }\n","import type { Column, RowData, TableFeature, TableFeatures } from '@tanstack/react-table'\nimport type { VariantProps } from 'class-variance-authority'\nimport { z } from 'zod'\n\nimport type { BadgeProps } from '../badge'\nimport type { Button } from '../button'\nimport type { Checkbox } from '../checkbox'\nimport type { inputVariants } from '../input/input.types'\nimport type { MenuTrigger } from '../menu'\nimport type { features } from './table-feature-context'\nimport type { Table_ViewMode, TableOptions_ViewMode, TableState_ViewMode } from './table.utils'\n\ntype TableFirstPageProps = React.ComponentProps<typeof Button>\ntype TableFooterProps = React.ComponentProps<'tfoot'>\ntype TableHeaderProps = React.ComponentProps<'thead'>\ntype TableLastPageProps = React.ComponentProps<typeof Button>\ntype TablePaginationProps = React.ComponentProps<'div'> & {\n truncateFrom?: number\n truncateTo?: number\n}\ntype TableNextPageProps = React.ComponentProps<typeof Button>\ntype TableResultsProps = Omit<React.ComponentProps<'div'>, 'children'> & {\n children: (start: number, end: number, totalRows: number) => React.ReactElement\n}\ntype TablePreviousPageProps = React.ComponentProps<typeof Button>\ntype TableRefreshProps = React.ComponentProps<typeof Button>\ntype TableSearchProps = React.ComponentProps<'input'> & VariantProps<typeof inputVariants>\ntype TableColumnToggleProps = React.ComponentProps<typeof MenuTrigger>\ntype TableRowProps = React.ComponentProps<'tr'>\ntype TableBodyProps = React.ComponentProps<'tbody'> & {\n showDivider?: boolean\n}\ntype TableNavProps = React.ComponentProps<'div'> & {\n sticky?: boolean\n}\ntype TableContentProps = React.ComponentProps<'div'>\ntype TablePagingProps = React.ComponentProps<'div'> & {\n min?: number\n max?: number\n}\ntype TableContainerProps = React.ComponentProps<'div'>\ntype TableToolbarProps = React.ComponentProps<'div'> & {\n sticky?: boolean\n}\ntype TableViewModeToggleProps = Omit<React.ComponentProps<typeof Button>, 'children'> & {\n children: (isGridView: boolean) => React.ReactNode\n}\ntype TableFilterMenuProps = React.ComponentProps<'button'>\ntype TableFilterListProps = React.ComponentProps<'div'>\ntype TableDateFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableDateFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableStringFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableStringFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableNumberFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableNumberFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterOption = string | number | boolean\ntype TableSelectFilterValue = TableSelectFilterOption[]\n\ntype TableSortChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\n\ntype TableSortMenuProps = React.ComponentProps<typeof MenuTrigger>\ntype TableChangeViewProps = React.ComponentProps<typeof Button>\ntype TableCheckboxCellProps = React.ComponentProps<typeof Checkbox>\ntype TableSelectHeaderProps = React.ComponentProps<typeof Checkbox>\ntype TableTextCellProps = React.ComponentProps<'span'>\ntype TableDateCellProps = React.ComponentProps<'span'>\ntype TableNumberCellProps = React.ComponentProps<'span'>\ntype TableImageCellProps = React.ComponentProps<'img'>\ntype TableViewportProps = React.ComponentProps<'table'>\ntype TableSortListProps = React.ComponentProps<'div'>\ntype TableBadgeCellProps = Omit<BadgeProps, 'tone'> & {\n tone?: BadgeProps['tone'] | ((value: string) => BadgeProps['tone'])\n}\n\nconst stringFilterOperators = [\n 'equals',\n 'notEquals',\n 'contains',\n 'notContains',\n 'startsWith',\n 'endsWith',\n ] as const,\n numberFilterOperators = ['equals', 'notEquals', 'greaterThan', 'lessThan', 'between'] as const,\n dateFilterOperators = ['equals', 'notEquals', 'greaterThan', 'lessThan', 'between'] as const,\n defaultFilterOperatorLabels = {\n between: 'Is between',\n contains: 'Contains',\n endsWith: 'Ends with',\n equals: 'Is',\n greaterThan: 'Is greater than',\n lessThan: 'Is less than',\n notContains: 'Does not contain',\n notEquals: 'Is not',\n startsWith: 'Starts with',\n } satisfies Record<FilterOperator, string>,\n dateFilterSchema = z.object({\n filterOperator: z.enum(dateFilterOperators),\n filterValueFrom: z.union([z.literal(''), z.iso.date()]),\n filterValueTo: z.union([z.literal(''), z.iso.date()]),\n }),\n stringFilterSchema = z.object({\n filterOperator: z.enum(stringFilterOperators),\n filterValue: z.string(),\n }),\n numberFilterSchema = z.object({\n filterOperator: z.enum(numberFilterOperators),\n filterValueFrom: z.string(),\n filterValueTo: z.string(),\n })\n\ntype DateFilterOperator = (typeof dateFilterOperators)[number]\ntype StringFilterOperator = (typeof stringFilterOperators)[number]\ntype NumberFilterOperator = (typeof numberFilterOperators)[number]\ntype FilterOperator = StringFilterOperator | NumberFilterOperator\n\ntype ViewMode = 'list' | 'grid'\n\ninterface TableColumnMeta {\n filterVariant?: 'range' | 'select' | 'date' | 'string' | 'number'\n}\n\ninterface TableMeta {\n translations?: {\n filterOperatorLabels?: Partial<Record<FilterOperator, string>>\n buttonLabels?: {\n reset?: string\n apply?: string\n ascending?: string\n descending?: string\n }\n }\n}\n\ndeclare module '@tanstack/react-table' {\n interface Plugins {\n viewModePlugin: TableFeature\n }\n\n interface TableState_FeatureMap {\n viewModePlugin: TableState_ViewMode\n }\n\n interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n viewModePlugin: TableOptions_ViewMode\n }\n\n interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n viewModePlugin: Table_ViewMode\n }\n}\n\nexport {\n dateFilterOperators,\n dateFilterSchema,\n defaultFilterOperatorLabels,\n numberFilterOperators,\n numberFilterSchema,\n stringFilterOperators,\n stringFilterSchema,\n type DateFilterOperator,\n type FilterOperator,\n type NumberFilterOperator,\n type StringFilterOperator,\n type TableBadgeCellProps,\n type TableBodyProps,\n type TableChangeViewProps,\n type TableCheckboxCellProps,\n type TableColumnMeta,\n type TableColumnToggleProps,\n type TableContainerProps,\n type TableContentProps,\n type TableDateCellProps,\n type TableDateFilterChipProps,\n type TableDateFilterFormProps,\n type TableFilterListProps,\n type TableFilterMenuProps,\n type TableFirstPageProps,\n type TableFooterProps,\n type TableHeaderProps,\n type TableImageCellProps,\n type TableLastPageProps,\n type TableNavProps,\n type TableNextPageProps,\n type TableNumberCellProps,\n type TableNumberFilterChipProps,\n type TableNumberFilterFormProps,\n type TablePaginationProps,\n type TablePagingProps,\n type TablePreviousPageProps,\n type TableRefreshProps,\n type TableResultsProps,\n type TableRowProps,\n type TableSearchProps,\n type TableSelectFilterChipProps,\n type TableSelectFilterFormProps,\n type TableSelectFilterOption,\n type TableSelectFilterValue,\n type TableSelectHeaderProps,\n type TableSortChipProps,\n type TableSortListProps,\n type TableSortMenuProps,\n type TableStringFilterChipProps,\n type TableStringFilterFormProps,\n type TableTextCellProps,\n type TableToolbarProps,\n type TableViewportProps,\n type TableViewModeToggleProps,\n type TableMeta,\n type ViewMode,\n}\n","import {\n constructFilterFn,\n functionalUpdate,\n makeStateUpdater,\n assignTableAPIs,\n} from '@tanstack/react-table'\nimport type { OnChangeFn, TableFeature, Updater } from '@tanstack/react-table'\n\nimport type {\n DateFilterOperator,\n NumberFilterOperator,\n StringFilterOperator,\n TableSelectFilterOption,\n TableSelectFilterValue,\n ViewMode,\n} from './table.types'\n\ninterface DateFilterValue {\n operator: DateFilterOperator\n date: [string, string]\n}\n\ninterface StringFilterValue {\n operator: StringFilterOperator\n value: string\n}\n\ninterface NumberFilterValue {\n operator: NumberFilterOperator\n number: [string, string]\n}\n\ninterface ResolvedDateFilterValue {\n operator: DateFilterOperator\n from: number | undefined\n to: number | undefined\n}\n\ninterface ResolvedNumberFilterValue {\n operator: NumberFilterOperator\n from: number | undefined\n to: number | undefined\n}\n\ninterface TableState_ViewMode {\n viewMode: ViewMode\n}\n\ninterface TableOptions_ViewMode {\n enableViewModeToggle?: boolean\n onViewModeChange?: OnChangeFn<ViewMode>\n}\n\ninterface Table_ViewMode {\n setViewMode: (updater: Updater<ViewMode>) => void\n toggleViewMode: (value?: ViewMode) => void\n}\n\nfunction getColumnHeaderLabel(column: { id: string; columnDef: { header?: unknown } }): string {\n const { header } = column.columnDef\n if (typeof header === 'string' && header !== '') {\n return header\n }\n return column.id\n}\n\n// oxlint-disable-next-line typescript/no-unnecessary-type-parameters\nfunction asFilterValue<TValue>(value: unknown): TValue {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n return value as TValue\n}\n\nconst ZERO = 0,\n FIRST_RANGE_INDEX = 0,\n SECOND_RANGE_INDEX = 1,\n getDateTimestamp = (date: Date): number =>\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n selectFilterFn = constructFilterFn({\n autoRemove: (value: TableSelectFilterValue) => !value?.length,\n filter: (dataValue: TableSelectFilterOption, filterValue: TableSelectFilterValue) =>\n filterValue.includes(dataValue),\n }),\n parseToTimestamp = (value: string): number | undefined => {\n if (!value) {\n return undefined\n }\n const parsed = new Date(value)\n if (Number.isNaN(parsed.getTime())) {\n return undefined\n }\n return getDateTimestamp(parsed)\n },\n normalizeDataValue = (value: unknown): number => {\n if (value instanceof Date) {\n return getDateTimestamp(value)\n }\n if (typeof value === 'number') {\n return getDateTimestamp(new Date(value))\n }\n if (typeof value === 'string') {\n return parseToTimestamp(value) ?? ZERO\n }\n return ZERO\n },\n dateFilterFn = constructFilterFn({\n autoRemove: (value: DateFilterValue) =>\n !value || (!value.date[FIRST_RANGE_INDEX] && !value.date[SECOND_RANGE_INDEX]),\n filter: (dataValue: number, filterValue: ResolvedDateFilterValue) => {\n const { operator, from, to } = filterValue\n\n switch (operator) {\n case 'equals': {\n return from !== undefined && dataValue === from\n }\n\n case 'notEquals': {\n return from !== undefined && dataValue !== from\n }\n\n case 'greaterThan': {\n return from !== undefined && dataValue > from\n }\n\n case 'lessThan': {\n return from !== undefined && dataValue < from\n }\n\n case 'between': {\n return from !== undefined && to !== undefined && dataValue >= from && dataValue <= to\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: normalizeDataValue,\n resolveFilterValue: (value: DateFilterValue): ResolvedDateFilterValue => ({\n from: parseToTimestamp(value.date[FIRST_RANGE_INDEX]),\n operator: value.operator,\n to: parseToTimestamp(value.date[SECOND_RANGE_INDEX]),\n }),\n }),\n stringFilterFn = constructFilterFn({\n autoRemove: (value: StringFilterValue) => !value || value.value === '',\n filter: (dataValue: string, filterValue: StringFilterValue) => {\n const { operator, value } = filterValue,\n normalizedDataValue = dataValue.toLocaleLowerCase(),\n normalizedFilterValue = value.toLocaleLowerCase()\n\n switch (operator) {\n case 'equals': {\n return normalizedDataValue === normalizedFilterValue\n }\n\n case 'notEquals': {\n return normalizedDataValue !== normalizedFilterValue\n }\n\n case 'contains': {\n return normalizedDataValue.includes(normalizedFilterValue)\n }\n\n case 'notContains': {\n return !normalizedDataValue.includes(normalizedFilterValue)\n }\n\n case 'startsWith': {\n return normalizedDataValue.startsWith(normalizedFilterValue)\n }\n\n case 'endsWith': {\n return normalizedDataValue.endsWith(normalizedFilterValue)\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: (value: unknown) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value)\n }\n return ''\n },\n }),\n parseToNumber = (value: string): number | undefined => {\n if (value.trim() === '') {\n return undefined\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed)) {\n return undefined\n }\n return parsed\n },\n numberFilterFn = constructFilterFn({\n autoRemove: (value: NumberFilterValue) =>\n !value || (value.number[FIRST_RANGE_INDEX] === '' && value.number[SECOND_RANGE_INDEX] === ''),\n filter: (dataValue: number, filterValue: ResolvedNumberFilterValue) => {\n const { operator, from, to } = filterValue\n\n switch (operator) {\n case 'equals': {\n return from !== undefined && dataValue === from\n }\n\n case 'notEquals': {\n return from !== undefined && dataValue !== from\n }\n\n case 'greaterThan': {\n return from !== undefined && dataValue > from\n }\n\n case 'lessThan': {\n return from !== undefined && dataValue < from\n }\n\n case 'between': {\n return (from === undefined || dataValue >= from) && (to === undefined || dataValue <= to)\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: (value: unknown) => Number(value),\n resolveFilterValue: (value: NumberFilterValue): ResolvedNumberFilterValue => {\n const from = parseToNumber(value.number[FIRST_RANGE_INDEX]),\n to = parseToNumber(value.number[SECOND_RANGE_INDEX])\n\n if (from !== undefined && to !== undefined && from > to) {\n return { from: to, operator: value.operator, to: from }\n }\n\n return { from, operator: value.operator, to }\n },\n }),\n viewModePlugin: TableFeature = {\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const options = table.options as TableOptions_ViewMode\n assignTableAPIs('viewModePlugin', table, {\n table_setViewMode: {\n fn: (updater: Updater<ViewMode>) => {\n const safeUpdater: Updater<ViewMode> = (old) => {\n const newState = functionalUpdate(updater, old)\n return newState\n }\n return options.onViewModeChange?.(safeUpdater)\n },\n },\n table_toggleViewMode: {\n fn: (value?: ViewMode) => {\n const safeUpdater: Updater<ViewMode> = (old) => {\n if (value) {\n return value\n }\n if (old === 'list') {\n return 'grid'\n }\n return 'list'\n }\n return options.onViewModeChange?.(safeUpdater)\n },\n },\n })\n },\n\n getDefaultTableOptions: (table) => ({\n enableViewModeToggle: true,\n onViewModeChange: makeStateUpdater('viewMode', table),\n }),\n\n getInitialState: (initialState) => ({\n viewMode: 'list',\n ...initialState,\n }),\n }\n\nexport {\n asFilterValue,\n dateFilterFn,\n getColumnHeaderLabel,\n numberFilterFn,\n selectFilterFn,\n stringFilterFn,\n viewModePlugin,\n type DateFilterValue,\n type NumberFilterValue,\n type StringFilterValue,\n type TableOptions_ViewMode,\n type TableState_ViewMode,\n type Table_ViewMode,\n}\n","import {\n columnFacetingFeature,\n columnFilteringFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n createTableHookContexts,\n filterFn_arrHas,\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_between,\n filterFn_betweenInclusive,\n filterFn_empty,\n filterFn_endsWith,\n filterFn_equals,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_inDateRange,\n filterFn_inNumberRange,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_notEmpty,\n filterFn_startsWith,\n filterFn_weakEquals,\n globalFilteringFeature,\n metaHelper,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n tableFeatures,\n} from '@tanstack/react-table'\n\nimport type { TableColumnMeta, TableMeta } from './table.types'\nimport {\n dateFilterFn,\n numberFilterFn,\n selectFilterFn,\n stringFilterFn,\n viewModePlugin,\n} from './table.utils'\n\nconst features = tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n columnMeta: metaHelper<TableColumnMeta>(),\n columnSizingFeature,\n columnVisibilityFeature,\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filterFns: {\n arrHas: filterFn_arrHas,\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n date: dateFilterFn,\n empty: filterFn_empty,\n endsWith: filterFn_endsWith,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n inDateRange: filterFn_inDateRange,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n notEmpty: filterFn_notEmpty,\n number: numberFilterFn,\n select: selectFilterFn,\n startsWith: filterFn_startsWith,\n string: stringFilterFn,\n weakEquals: filterFn_weakEquals,\n },\n filteredRowModel: createFilteredRowModel(),\n globalFilteringFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n sortedRowModel: createSortedRowModel(),\n tableMeta: metaHelper<TableMeta>(),\n viewModePlugin,\n }),\n { tableContext, cellContext, headerContext, useTableContext, useCellContext, useHeaderContext } =\n createTableHookContexts<typeof features>()\n\nexport {\n cellContext,\n features,\n headerContext,\n tableContext,\n useCellContext,\n useHeaderContext,\n useTableContext,\n}\n","import { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useCellContext } from './table-feature-context'\nimport type { TableBadgeCellProps } from './table.types'\n\nfunction resolveTone(tone: TableBadgeCellProps['tone'], value: string) {\n if (typeof tone === 'function') {\n return tone(value)\n }\n return tone\n}\n\nexport function TableBadgeCell({ className, children, ref, tone, ...props }: TableBadgeCellProps) {\n const cell = useCellContext<string>(),\n value = cell.getValue(),\n resolvedTone = resolveTone(tone, value)\n\n return (\n <Badge variant=\"soft\" className={cn('', className)} ref={ref} tone={resolvedTone} {...props}>\n {children}\n {value}\n </Badge>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableBodyProps } from './table.types'\n\nfunction getRowBackgroundColor(isSelected: boolean): string {\n if (isSelected) {\n return 'var(--color-neutral-container-high)'\n }\n return 'transparent'\n}\n\nexport function TableBody({ showDivider = true, className, ref, ...props }: TableBodyProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe selector={(state) => state}>\n {(state) => {\n if (state.viewMode === 'grid') {\n return (\n <ul\n className={cn(\n 'grid auto-rows-fr grid-cols-[repeat(auto-fill,minmax(252px,1fr))] gap-sm overflow-y-auto',\n className,\n )}\n >\n {table.getRowModel().rows.map((row) => (\n <li key={row.id} className=\"min-w-0\">\n {row.getVisibleCells().map((cell) => (\n <table.AppCell cell={cell} key={cell.id}>\n {(renderedCell) => (\n <div className=\"w-full\">\n <table.FlexRender cell={renderedCell} />\n </div>\n )}\n </table.AppCell>\n ))}\n </li>\n ))}\n </ul>\n )\n }\n return (\n <tbody\n className={cn(showDivider && 'divide-y divide-border', 'overflow-y-auto', className)}\n ref={ref}\n {...props}\n >\n {table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n style={{\n backgroundColor: getRowBackgroundColor(row.getIsSelected()),\n }}\n >\n {row.getVisibleCells().map((cell) => (\n <table.AppCell cell={cell} key={cell.id}>\n {(renderedCell) => (\n // oxlint-disable-next-line jsx-a11y/control-has-associated-label\n <td\n style={{\n width: renderedCell.column.getSize(),\n }}\n className={cn('h-xl px-xs first:rounded-l-xl last:rounded-r-xl', className)}\n >\n <table.FlexRender cell={renderedCell} />\n </td>\n )}\n </table.AppCell>\n ))}\n </tr>\n ))}\n </tbody>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Checkbox } from '../checkbox'\nimport { useCellContext, useTableContext } from './table-feature-context'\nimport type { TableCheckboxCellProps } from './table.types'\n\nexport function TableCheckboxCell({ className, ref, ...props }: TableCheckboxCellProps) {\n const cell = useCellContext(),\n table = useTableContext(),\n { row } = cell\n\n return (\n <table.Subscribe selector={(state) => state.rowSelection}>\n {() => (\n <Checkbox\n aria-label=\"Select row\"\n checked={\n row.getIsSelected() || (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected())\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onCheckedChange={(checked) => row.toggleSelected(checked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Menu, MenuCheckboxItem, MenuPopup, MenuTrigger } from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TableColumnToggleProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableColumnToggle({ className, ref, ...props }: TableColumnToggleProps) {\n const table = useTableContext(),\n handleToggleColumn = (columnId: string) => {\n table.getColumn(columnId)?.toggleVisibility()\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup>\n {table.getAllColumns().flatMap((column) => {\n if (!column.getCanHide()) {\n return []\n }\n\n return (\n <MenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={() => handleToggleColumn(column.id)}\n >\n {getColumnHeaderLabel(column)}\n </MenuCheckboxItem>\n )\n })}\n </MenuPopup>\n </Menu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableContainerProps } from './table.types'\n\nexport function TableContainer({ className, ref, ...props }: TableContainerProps) {\n return <div className={cn('flex flex-col gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableDateCellProps } from './table.types'\n\nexport function TableDateCell({ className, children, ref, ...props }: TableDateCellProps) {\n const cell = useCellContext<Date>()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {cell.getValue().toLocaleDateString()}\n </span>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport { dateFilterOperators, dateFilterSchema, defaultFilterOperatorLabels } from './table.types'\nimport type { TableDateFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { DateFilterValue } from './table.utils'\n\nconst FROM_DATE_INDEX = 0,\n TO_DATE_INDEX = 1\n\nexport function TableDateFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableDateFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<DateFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'equals',\n filterValueFrom: currentFilter?.date[FROM_DATE_INDEX] ?? '',\n filterValueTo: currentFilter?.date[TO_DATE_INDEX] ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n date: [value.filterValueFrom, value.filterValueTo],\n operator: value.filterOperator,\n } satisfies DateFilterValue)\n },\n validators: {\n onSubmit: dateFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset()\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.FormErrors />\n <form.FormSet>\n <form.FormSetHeading>\n <form.FormSetContent>\n <Field>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.FieldErrors />\n <field.FieldRadioGroup>\n {dateFilterOperators.map((operator) => (\n <field.FieldSet key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <>\n <form.AppField name=\"filterValueFrom\">\n {(valueField) => (\n <Field>\n <valueField.FieldErrors />\n <valueField.FieldInput type=\"date\" variant=\"secondary\" />\n </Field>\n )}\n </form.AppField>\n {operator === 'between' && (\n <form.AppField name=\"filterValueTo\">\n {(valueField) => (\n <Field>\n <valueField.FieldErrors />\n <valueField.FieldInput type=\"date\" variant=\"secondary\" />\n </Field>\n )}\n </form.AppField>\n )}\n </>\n )}\n </field.FieldSet>\n ))}\n </field.FieldRadioGroup>\n </Field>\n )}\n </form.AppField>\n </Field>\n </form.FormSetContent>\n </form.FormSetHeading>\n </form.FormSet>\n <form.FormFooter>\n <form.FormReset>{buttonLabels.reset}</form.FormReset>\n <form.FormSubmit>{buttonLabels.apply}</form.FormSubmit>\n </form.FormFooter>\n </form.AppForm>\n </Form>\n )\n}\n","import { FunnelIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Popover,\n PopoverTrigger,\n PopoverPanel,\n PopoverHeader,\n PopoverContent,\n PopoverTitle,\n} from '../popover'\nimport { TableDateFilterForm } from './table-date-filter-form'\nimport { useTableContext } from './table-feature-context'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableDateFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { DateFilterValue } from './table.utils'\n\nconst FIRST_DATE_INDEX = 0,\n LAST_DATE_INDEX = 1\n\nfunction getDateFilterLabel(date: DateFilterValue['date'] | string): string {\n if (Array.isArray(date)) {\n if (date[LAST_DATE_INDEX] !== '') {\n return date.join(' - ')\n }\n return date[FIRST_DATE_INDEX]\n }\n return date\n}\n\nexport function TableDateFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableDateFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<DateFilterValue>(column.getFilterValue())\n\n return (\n <Popover key={column.id}>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <FunnelIcon />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{getDateFilterLabel(columnFilter.date)}</span>\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n <PopoverContent>\n {children}\n <TableDateFilterForm column={column} />\n </PopoverContent>\n </PopoverHeader>\n </PopoverPanel>\n </Popover>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport {\n defaultFilterOperatorLabels,\n numberFilterOperators,\n numberFilterSchema,\n} from './table.types'\nimport type { TableNumberFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { NumberFilterValue } from './table.utils'\n\nconst FROM_VALUE_INDEX = 0,\n TO_VALUE_INDEX = 1\n\nexport function TableNumberFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableNumberFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<NumberFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'equals',\n filterValueFrom: currentFilter?.number[FROM_VALUE_INDEX] ?? '',\n filterValueTo: currentFilter?.number[TO_VALUE_INDEX] ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n number: [value.filterValueFrom, value.filterValueTo],\n operator: value.filterOperator,\n } satisfies NumberFilterValue)\n },\n validators: {\n onSubmit: numberFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset({ filterOperator: 'equals', filterValueFrom: '', filterValueTo: '' })\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.FormErrors />\n <form.FormSet>\n <form.FormSetContent>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.FieldErrors />\n <field.FieldRadioGroup>\n {numberFilterOperators.map((operator) => (\n <field.FieldSet key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <>\n <form.AppField name=\"filterValueFrom\">\n {(valueField) => (\n <Field>\n <valueField.FieldErrors />\n <valueField.FieldInput\n aria-label={`${column.id} filter value`}\n type=\"number\"\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n {operator === 'between' && (\n <form.AppField name=\"filterValueTo\">\n {(valueField) => (\n <Field>\n <valueField.FieldErrors />\n <valueField.FieldInput\n aria-label={`${column.id} maximum filter value`}\n type=\"number\"\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n )}\n </>\n )}\n </field.FieldSet>\n ))}\n </field.FieldRadioGroup>\n </Field>\n )}\n </form.AppField>\n </form.FormSetContent>\n </form.FormSet>\n <form.FormFooter>\n <form.FormReset>{buttonLabels.reset}</form.FormReset>\n <form.FormSubmit>{buttonLabels.apply}</form.FormSubmit>\n </form.FormFooter>\n </form.AppForm>\n </Form>\n )\n}\n","import { FunnelIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterForm } from './table-number-filter-form'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableNumberFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { NumberFilterValue } from './table.utils'\n\nconst FIRST_RANGE_INDEX = 0\n\nfunction getFilterDisplayValue(filterValue: NumberFilterValue): string {\n if (filterValue.operator === 'between') {\n return filterValue.number.filter(Boolean).join(' - ')\n }\n return filterValue.number[FIRST_RANGE_INDEX]\n}\n\nexport function TableNumberFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableNumberFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<NumberFilterValue>(column.getFilterValue()),\n filterValue = getFilterDisplayValue(columnFilter)\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <FunnelIcon />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{filterValue}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableNumberFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import { CaretUpDownIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\nimport { useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Form, FormFooter } from '../form'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTitle,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useTableContext } from './table-feature-context'\nimport type {\n TableSelectFilterFormProps,\n TableSelectFilterOption,\n TableSelectFilterValue,\n} from './table.types'\n\nconst EMPTY_FILTER_COUNT = 0,\n isSelectFilterOption = (value: unknown): value is TableSelectFilterOption =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean',\n isSelectFilterValue = (value: unknown): value is TableSelectFilterValue =>\n Array.isArray(value) && value.every(isSelectFilterOption),\n getSelectValueLabel = (value: unknown): string => {\n if (isSelectFilterValue(value)) {\n return value.map(String).join(', ')\n }\n return 'Select values'\n }\n\nexport function TableSelectFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSelectFilterFormProps<TData>) {\n const table = useTableContext(),\n currentFilter = column.getFilterValue(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n [filterValue, setFilterValue] = useState<TableSelectFilterValue>(() => {\n if (isSelectFilterValue(currentFilter)) {\n return currentFilter\n }\n return []\n }),\n options = [...column.getFacetedUniqueValues().keys()]\n .filter(isSelectFilterOption)\n .toSorted((left, right) => String(left).localeCompare(String(right)))\n\n return (\n <Form\n className={cn('', className)}\n onReset={() => {\n column.setFilterValue(undefined)\n setFilterValue([])\n }}\n onSubmit={(event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (filterValue.length > EMPTY_FILTER_COUNT) {\n column.setFilterValue(filterValue)\n }\n }}\n ref={ref}\n {...props}\n >\n {children}\n <Select\n multiple\n value={filterValue}\n onValueChange={(value) => {\n if (isSelectFilterValue(value)) {\n setFilterValue(value)\n }\n }}\n >\n <SelectTrigger aria-label={`${column.id} filter value`} variant=\"secondary\">\n <SelectValue placeholder=\"Select values\">\n {(value) => getSelectValueLabel(value)}\n </SelectValue>\n <SelectIcon>\n <CaretUpDownIcon weight=\"bold\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup alignItemWithTrigger={false} sideOffset={8}>\n <SelectList>\n {options.map((option) => (\n <SelectItem key={`${typeof option}:${String(option)}`} value={option}>\n <SelectTitle>{String(option)}</SelectTitle>\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n <FormFooter>\n <Button className=\"w-full\" tone=\"neutral\" type=\"reset\" variant=\"outline\">\n {buttonLabels.reset}\n </Button>\n <Button\n className=\"w-full\"\n disabled={filterValue.length === EMPTY_FILTER_COUNT}\n type=\"submit\"\n >\n {buttonLabels.apply}\n </Button>\n </FormFooter>\n </Form>\n )\n}\n","import { FunnelIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { TableSelectFilterForm } from './table-select-filter-form'\nimport type { TableSelectFilterChipProps, TableSelectFilterValue } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\n\nexport function TableSelectFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSelectFilterChipProps<TData>) {\n const columnFilter = asFilterValue<TableSelectFilterValue>(column.getFilterValue()),\n header = getColumnHeaderLabel(column)\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <FunnelIcon />\n <span>{header}</span>\n <span className=\"font-light lowercase\">{columnFilter.map(String).join(', ')}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{header}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableSelectFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport {\n defaultFilterOperatorLabels,\n stringFilterOperators,\n stringFilterSchema,\n} from './table.types'\nimport type { TableStringFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { StringFilterValue } from './table.utils'\n\nexport function TableStringFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableStringFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<StringFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'contains',\n filterValue: currentFilter?.value ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n operator: value.filterOperator,\n value: value.filterValue,\n } satisfies StringFilterValue)\n },\n validators: {\n onSubmit: stringFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset({ filterOperator: 'contains', filterValue: '' })\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.FormErrors />\n <form.FormSet>\n <form.FormSetContent>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.FieldErrors />\n <field.FieldRadioGroup>\n {stringFilterOperators.map((operator) => (\n <field.FieldSet key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <form.AppField name=\"filterValue\">\n {(valueField) => (\n <Field>\n <valueField.FieldErrors />\n <valueField.FieldInput\n aria-label={`${column.id} filter value`}\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n )}\n </field.FieldSet>\n ))}\n </field.FieldRadioGroup>\n </Field>\n )}\n </form.AppField>\n </form.FormSetContent>\n </form.FormSet>\n <form.FormFooter>\n <form.FormReset>{buttonLabels.reset}</form.FormReset>\n <form.FormSubmit>{buttonLabels.apply}</form.FormSubmit>\n </form.FormFooter>\n </form.AppForm>\n </Form>\n )\n}\n","import { FunnelIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { useTableContext } from './table-feature-context'\nimport { TableStringFilterForm } from './table-string-filter-form'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableStringFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { StringFilterValue } from './table.utils'\n\nexport function TableStringFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableStringFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<StringFilterValue>(column.getFilterValue())\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <FunnelIcon />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{columnFilter.value}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableStringFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { TableDateFilterChip } from './table-date-filter-chip'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterChip } from './table-number-filter-chip'\nimport { TableSelectFilterChip } from './table-select-filter-chip'\nimport { TableStringFilterChip } from './table-string-filter-chip'\nimport type { TableFilterListProps } from './table.types'\n\nexport function TableFilterList({ className, children, ref, ...props }: TableFilterListProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.columnFilters}>\n {() => {\n if (!table.getAllColumns().some((column) => column.getIsFiltered())) {\n return undefined\n }\n\n return (\n <div className={cn('flex flex-wrap items-center gap-xs', className)} ref={ref} {...props}>\n {children}\n {table.getAllColumns().map((column) => {\n if (!column.getIsFiltered()) {\n return undefined\n }\n\n switch (column.columnDef.meta?.filterVariant) {\n case 'date': {\n return <TableDateFilterChip key={column.id} column={column} />\n }\n case 'number': {\n return <TableNumberFilterChip key={column.id} column={column} />\n }\n case 'select': {\n return <TableSelectFilterChip key={column.id} column={column} />\n }\n case 'string': {\n return <TableStringFilterChip key={column.id} column={column} />\n }\n default: {\n return undefined\n }\n }\n })}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Menu, MenuItem, MenuPopup, MenuTrigger } from '../menu'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { TableDateFilterForm } from './table-date-filter-form'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterForm } from './table-number-filter-form'\nimport { TableSelectFilterForm } from './table-select-filter-form'\nimport { TableStringFilterForm } from './table-string-filter-form'\nimport type { TableFilterMenuProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableFilterMenu({ className, ref, ...props }: TableFilterMenuProps) {\n const table = useTableContext()\n\n return (\n <Menu modal={false}>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup align=\"end\" className=\"\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanFilter())\n .map((column) => {\n const { filterVariant } = column.columnDef.meta ?? {}\n\n return (\n <Popover key={column.id}>\n <PopoverTrigger nativeButton={false}>\n <MenuItem closeOnClick={false}>{getColumnHeaderLabel(column)}</MenuItem>\n </PopoverTrigger>\n <PopoverPanel\n side=\"inline-end\"\n align=\"start\"\n className={cn('', className)}\n onKeyDownCapture={(event) => event.stopPropagation()}\n >\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n {(() => {\n switch (filterVariant) {\n case 'date': {\n return <TableDateFilterForm column={column} />\n }\n case 'number': {\n return <TableNumberFilterForm column={column} />\n }\n case 'select': {\n return <TableSelectFilterForm column={column} />\n }\n case 'string': {\n return <TableStringFilterForm column={column} />\n }\n default: {\n return undefined\n }\n }\n })()}\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n })}\n </MenuPopup>\n </Menu>\n )\n}\n","import { CaretLineLeftIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TableFirstPageProps } from './table.types'\n\nconst DEFAULT_PAGE_INDEX = 0\n\nexport function TableFirstPage({ className, children, ref, ...props }: TableFirstPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.setPageIndex(DEFAULT_PAGE_INDEX)\n }\n\n return (\n <Button\n aria-label=\"Go to first page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanPreviousPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"ghost\"\n tone=\"neutral\"\n {...props}\n >\n {children}\n <CaretLineLeftIcon weight=\"bold\" />\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableFooterProps } from './table.types'\n\nexport function TableFooter({ className, children, ref, ...props }: TableFooterProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <tfoot className={cn('', className)} ref={ref} {...props}>\n {children}\n {table.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <table.AppFooter header={header} key={header.id}>\n {(footer) => (\n // oxlint-disable-next-line jsx-a11y/control-has-associated-label\n <td\n style={{\n width: footer.getSize(),\n }}\n colSpan={footer.colSpan}\n >\n <table.FlexRender footer={footer} />\n </td>\n )}\n </table.AppFooter>\n ))}\n </tr>\n ))}\n </tfoot>\n )\n}\n","import { FunnelSimpleIcon, SortAscendingIcon, SortDescendingIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableHeaderProps } from './table.types'\n\nexport function TableHeader({ className, children, ref, ...props }: TableHeaderProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe selector={(state) => state}>\n {(state) => {\n if (state.viewMode === 'grid') {\n return undefined\n }\n return (\n <thead className={cn('bg-neutral-container')} ref={ref} {...props}>\n {children}\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <table.AppHeader\n header={header}\n key={header.id}\n selector={(tableState) => tableState.sorting}\n >\n {(renderHeader) => {\n const sorting = renderHeader.column.getIsSorted()\n return (\n <th\n style={{\n width: renderHeader.getSize(),\n }}\n className={cn(\n 'container p-xs text-left style-text-default-0 text-neutral-on-container-muted transition-colors first:rounded-l-xl last:rounded-r-xl',\n renderHeader.column.getCanSort() &&\n 'hover:cursor-pointer hover:bg-neutral-container-high hover:*:text-neutral-on-container',\n renderHeader.isPlaceholder && 'cursor-default',\n className,\n )}\n colSpan={renderHeader.colSpan}\n key={renderHeader.id}\n onClick={renderHeader.column.getToggleSortingHandler()}\n >\n {!renderHeader.isPlaceholder && (\n <div\n className={cn(\n 'flex items-center justify-between gap-2xs whitespace-nowrap [&_svg]:size-sm',\n renderHeader.column.getCanSort() &&\n 'select-none hover:cursor-pointer',\n )}\n >\n <div className=\"flex items-center gap-2xs\">\n <table.FlexRender header={renderHeader} />\n </div>\n {sorting === 'asc' && <SortDescendingIcon weight=\"bold\" />}\n {sorting === 'desc' && <SortAscendingIcon weight=\"bold\" />}\n {!sorting && renderHeader.column.getCanSort() && (\n <FunnelSimpleIcon weight=\"bold\" />\n )}\n </div>\n )}\n </th>\n )\n }}\n </table.AppHeader>\n ))}\n </tr>\n ))}\n </thead>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableImageCellProps } from './table.types'\n\nexport function TableImageCell({ className, ref, ...props }: TableImageCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <img\n alt=\"\"\n src={cell.getValue()}\n className={cn('my-xs size-xl', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { CaretLineRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TableLastPageProps } from './table.types'\n\nconst LAST_PAGE_OFFSET = 1\n\nexport function TableLastPage({ className, children, ref, ...props }: TableLastPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.setPageIndex(table.getPageCount() - LAST_PAGE_OFFSET)\n }\n\n return (\n <Button\n aria-label=\"Go to last page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanNextPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"ghost\"\n tone=\"neutral\"\n {...props}\n >\n {children}\n <CaretLineRightIcon weight=\"bold\" />\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableNavProps } from './table.types'\n\nexport function TableNav({ sticky = false, className, ref, ...props }: TableNavProps) {\n return (\n <div\n className={cn(\n 'flex w-full items-center justify-between gap-md',\n sticky && 'sticky bottom-0 z-10 bg-inherit',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { CaretRightIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TableNextPageProps } from './table.types'\n\nexport function TableNextPage({ className, children, ref, ...props }: TableNextPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.nextPage()\n }\n\n return (\n <Button\n aria-label=\"Go to next page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanNextPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"ghost\"\n tone=\"neutral\"\n {...props}\n >\n {children}\n <CaretRightIcon weight=\"bold\" />\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableNumberCellProps } from './table.types'\n\nexport function TableNumberCell({ className, children, ref, ...props }: TableNumberCellProps) {\n const cell = useCellContext<number>()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {cell.getValue().toLocaleString()}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TablePaginationProps } from './table.types'\n\nexport function TablePagination({ className, ref, ...props }: TablePaginationProps) {\n return (\n <div\n className={cn('inline-flex items-center justify-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { DotsThreeIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Menu, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuTrigger } from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TablePagingProps } from './table.types'\n\nconst DEFAULT_VISIBLE_START_PAGES = 3,\n DEFAULT_VISIBLE_END_PAGES = 1,\n FIRST_PAGE_INDEX = 0,\n PAGE_NUMBER_OFFSET = 1,\n PAGE_INDEX_INCREMENT = 1,\n MORE_PAGES_MAX_HEIGHT = 200\n\nfunction getLeadingPageIndexes(minimumPages: number, totalPages: number): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = FIRST_PAGE_INDEX;\n pageIndex < minimumPages && pageIndex < totalPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n pageIndexes.push(pageIndex)\n }\n return pageIndexes\n}\n\nfunction getOverflowPageIndexes(\n minimumPages: number,\n maximumPages: number,\n totalPages: number,\n): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = minimumPages;\n pageIndex < totalPages - maximumPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n pageIndexes.push(pageIndex)\n }\n return pageIndexes\n}\n\nfunction getTrailingPageIndexes(\n minimumPages: number,\n maximumPages: number,\n totalPages: number,\n): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = totalPages - maximumPages;\n pageIndex < totalPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n if (pageIndex >= minimumPages) {\n pageIndexes.push(pageIndex)\n }\n }\n return pageIndexes\n}\n\nfunction getPageButtonVariant(pageIndex: number, selectedPageIndex: number): 'fill' | 'ghost' {\n if (pageIndex === selectedPageIndex) {\n return 'fill'\n }\n return 'ghost'\n}\n\nexport function TablePaging({\n min = DEFAULT_VISIBLE_START_PAGES,\n max = DEFAULT_VISIBLE_END_PAGES,\n className,\n children,\n ref,\n ...props\n}: TablePagingProps) {\n const table = useTableContext(),\n handleClick = (pageIndex: number) => {\n table.setPageIndex(pageIndex)\n }\n\n return (\n <table.Subscribe selector={(state) => state.pagination}>\n {(pagination) => {\n const totalPages = table.getPageCount(),\n leadingPageIndexes = getLeadingPageIndexes(min, totalPages),\n overflowPageIndexes = getOverflowPageIndexes(min, max, totalPages),\n trailingPageIndexes = getTrailingPageIndexes(min, max, totalPages)\n\n return (\n <div className={cn('flex items-center gap-3xs', className)} ref={ref} {...props}>\n {children}\n {leadingPageIndexes.map((pageIndex) => (\n <Button\n key={`page-${pageIndex}`}\n tone=\"neutral\"\n size=\"iconMedium\"\n variant={getPageButtonVariant(pageIndex, pagination.pageIndex)}\n className=\"shrink-0\"\n onClick={() => handleClick(pageIndex)}\n >\n {pageIndex + PAGE_NUMBER_OFFSET}\n </Button>\n ))}\n {totalPages > min + max && (\n <Menu>\n <MenuTrigger>\n <Button\n aria-label=\"Show more pages\"\n tone=\"neutral\"\n size=\"iconMedium\"\n variant=\"ghost\"\n className=\"shrink-0\"\n >\n <DotsThreeIcon weight=\"bold\" />\n </Button>\n </MenuTrigger>\n <MenuPopup align=\"center\">\n <MenuRadioGroup\n value={pagination.pageIndex}\n onValueChange={handleClick}\n className=\"overflow-y-auto\"\n style={{ maxHeight: `${MORE_PAGES_MAX_HEIGHT}px` }}\n >\n {overflowPageIndexes.map((pageIndex) => (\n <MenuRadioItem key={pageIndex} value={pageIndex} closeOnClick>\n {pageIndex + PAGE_NUMBER_OFFSET}\n </MenuRadioItem>\n ))}\n </MenuRadioGroup>\n </MenuPopup>\n </Menu>\n )}\n {trailingPageIndexes.map((pageIndex) => (\n <Button\n key={`last-page-${pageIndex}`}\n tone=\"neutral\"\n size=\"iconMedium\"\n variant={getPageButtonVariant(pageIndex, pagination.pageIndex)}\n className=\"shrink-0\"\n onClick={() => handleClick(pageIndex)}\n >\n {pageIndex + PAGE_NUMBER_OFFSET}\n </Button>\n ))}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { CaretLeftIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TablePreviousPageProps } from './table.types'\n\nexport function TablePreviousPage({ className, children, ref, ...props }: TablePreviousPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.previousPage()\n }\n\n return (\n <Button\n aria-label=\"Go to previous page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanPreviousPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"ghost\"\n tone=\"neutral\"\n {...props}\n >\n {children}\n <CaretLeftIcon weight=\"bold\" />\n </Button>\n )\n}\n","import { MagnifyingGlassIcon } from '@phosphor-icons/react'\nimport type { ChangeEvent } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { useTableContext } from './table-feature-context'\nimport type { TableSearchProps } from './table.types'\n\nexport function TableSearch({ className, ref, ...props }: TableSearchProps) {\n const table = useTableContext(),\n handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n table.setGlobalFilter(event.target.value)\n }\n\n return (\n <table.Subscribe selector={(state) => state.globalFilter}>\n {(globalFilter) => (\n <InputGroup>\n <InputGroupAddon>\n <MagnifyingGlassIcon weight=\"bold\" />\n </InputGroupAddon>\n <InputGroupInput\n className={cn('', className)}\n onChange={handleChange}\n ref={ref}\n value={globalFilter ?? ''}\n {...props}\n />\n </InputGroup>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Checkbox } from '../checkbox'\nimport { useTableContext } from './table-feature-context'\nimport type { TableSelectHeaderProps } from './table.types'\n\nexport function TableSelectHeader({ className, ref, ...props }: TableSelectHeaderProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.rowSelection}>\n {() => {\n const allRowsSelected = table.getIsAllRowsSelected()\n\n return (\n <Checkbox\n aria-label=\"Select all rows\"\n checked={allRowsSelected}\n indeterminate={!allRowsSelected && table.getIsSomeRowsSelected()}\n onCheckedChange={(checked) => table.toggleAllRowsSelected(checked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )\n }}\n </table.Subscribe>\n )\n}\n","import { SortAscendingIcon, SortDescendingIcon } from '@phosphor-icons/react'\n\nimport { cn } from '@/utils/cn'\n\nimport {\n Menu,\n MenuCheckboxItem,\n MenuPopup,\n MenuSubmenu,\n MenuSubmenuTrigger,\n MenuTrigger,\n} from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TableSortMenuProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableSortMenu({ className, ref, ...props }: TableSortMenuProps) {\n const table = useTableContext(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending',\n handleSort = (columnId: string, direction: 'asc' | 'desc') => {\n const column = table.getColumn(columnId),\n currentSort = column?.getIsSorted()\n\n if (currentSort === direction) {\n column?.clearSorting()\n return\n }\n\n column?.toggleSorting(direction === 'desc', column.getCanMultiSort())\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup align=\"end\">\n <table.Subscribe selector={(state) => state.sorting}>\n {() =>\n table\n .getAllColumns()\n .filter((column) => column.getCanSort())\n .map((column) => (\n <MenuSubmenu key={column.id}>\n <MenuSubmenuTrigger>{getColumnHeaderLabel(column)}</MenuSubmenuTrigger>\n <MenuPopup>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'asc'}\n onClick={() => handleSort(column.id, 'asc')}\n >\n <SortDescendingIcon weight=\"bold\" />\n {ascendingLabel}\n </MenuCheckboxItem>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'desc'}\n onClick={() => handleSort(column.id, 'desc')}\n >\n <SortAscendingIcon weight=\"bold\" />\n {descendingLabel}\n </MenuCheckboxItem>\n </MenuPopup>\n </MenuSubmenu>\n ))\n }\n </table.Subscribe>\n </MenuPopup>\n </Menu>\n )\n}\n","import { SortAscendingIcon, SortDescendingIcon } from '@phosphor-icons/react'\nimport type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport { TableSortMenu } from './table-sort-menu'\nimport type { TableSortChipProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableSortChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSortChipProps<TData>) {\n const table = useTableContext(),\n columnSort = column.getIsSorted(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending'\n\n if (!columnSort) {\n return undefined\n }\n\n return (\n <TableSortMenu className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n {columnSort === 'asc' && <SortDescendingIcon />}\n {columnSort === 'desc' && <SortAscendingIcon />}\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {columnSort === 'asc' && ascendingLabel}\n {columnSort === 'desc' && descendingLabel}\n </span>\n {children}\n </Button>\n </TableSortMenu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './table-feature-context'\nimport { TableSortChip } from './table-sort-chip'\nimport type { TableSortListProps } from './table.types'\n\nexport function TableSortList({ className, children, ref, ...props }: TableSortListProps) {\n const table = useTableContext()\n\n if (!table.getAllColumns().some((column) => column.getIsSorted())) {\n return undefined\n }\n\n return (\n <table.Subscribe selector={(state) => state.sorting}>\n {() => (\n <div className={cn('flex flex-wrap items-center gap-xs', className)} ref={ref} {...props}>\n {children}\n {table.getAllColumns().map((column) => {\n if (!column.getIsSorted()) {\n return undefined\n }\n\n return <TableSortChip key={column.id} column={column} />\n })}\n </div>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableTextCellProps } from './table.types'\n\nexport function TableTextCell({ className, children, ref, ...props }: TableTextCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {cell.getValue()}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableToolbarProps } from './table.types'\n\nexport function TableToolbar({ sticky = false, className, ref, ...props }: TableToolbarProps) {\n return (\n <div\n className={cn('flex items-center gap-3xs', sticky && 'sticky top-0 z-10', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TableViewModeToggleProps } from './table.types'\n\nexport function TableViewModeToggle({\n className,\n children,\n ref,\n ...props\n}: TableViewModeToggleProps) {\n const table = useTableContext(),\n isGridView = table.state.viewMode === 'grid',\n handleClick = () => {\n table.toggleViewMode()\n }\n\n return (\n <Button onClick={handleClick} className={cn('shrink-0', className)} ref={ref} {...props}>\n {children(isGridView)}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './table-feature-context'\nimport type { TableViewportProps } from './table.types'\n\nexport function TableViewport({ className, children, ref, ...props }: TableViewportProps) {\n const table = useTableContext(),\n isGridView = table.state.viewMode === 'grid'\n\n if (isGridView) {\n return (\n <div className={cn('size-full', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n }\n\n return (\n <table className={cn('size-full', className)} ref={ref} {...props}>\n {children}\n </table>\n )\n}\n","import { createTableHook } from '@tanstack/react-table'\n\nimport { TableBadgeCell } from './table-badge-cell'\nimport { TableBody } from './table-body'\nimport { TableCheckboxCell } from './table-checkbox-cell'\nimport { TableColumnToggle } from './table-column-toggle'\nimport { TableContainer } from './table-container'\nimport { TableDateCell } from './table-date-cell'\nimport { cellContext, features, headerContext, tableContext } from './table-feature-context'\nimport { TableFilterList } from './table-filter-list'\nimport { TableFilterMenu } from './table-filter-menu'\nimport { TableFirstPage } from './table-first-page'\nimport { TableFooter } from './table-footer'\nimport { TableHeader } from './table-header'\nimport { TableImageCell } from './table-image-cell'\nimport { TableLastPage } from './table-last-page'\nimport { TableNav } from './table-nav'\nimport { TableNextPage } from './table-next-page'\nimport { TableNumberCell } from './table-number-cell'\nimport { TablePagination } from './table-pagination'\nimport { TablePaging } from './table-paging'\nimport { TablePreviousPage } from './table-previous-page'\nimport { TableSearch } from './table-search'\nimport { TableSelectHeader } from './table-select-header'\nimport { TableSortList } from './table-sort-list'\nimport { TableSortMenu } from './table-sort-menu'\nimport { TableTextCell } from './table-text-cell'\nimport { TableToolbar } from './table-toolbar'\nimport { TableViewModeToggle } from './table-view-mode-toggle'\nimport { TableViewport } from './table-viewport'\n\nconst { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext } =\n createTableHook({\n cellComponents: {\n TableBadgeCell,\n TableCheckboxCell,\n TableDateCell,\n TableImageCell,\n TableNumberCell,\n TableTextCell,\n },\n cellContext,\n features,\n getRowId: (row, index, parent) => {\n if (row.id !== undefined && row.id !== null) {\n return row.id\n }\n if (parent) {\n return `${parent.id}.${index}`\n }\n return String(index)\n },\n headerComponents: { TableSelectHeader },\n headerContext,\n tableComponents: {\n TableBody,\n TableColumnToggle,\n TableContainer,\n TableFilterList,\n TableFilterMenu,\n TableFirstPage,\n TableFooter,\n TableHeader,\n TableLastPage,\n TableNav,\n TableNextPage,\n TablePagination,\n TablePaging,\n TablePreviousPage,\n TableSearch,\n TableSortList,\n TableSortMenu,\n TableToolbar,\n TableViewModeToggle,\n TableViewport,\n },\n tableContext,\n })\n\nexport { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext }\n","import { useTableContext } from './table-feature-context'\nimport type { TableResultsProps } from './table.types'\n\nconst EMPTY_ROW_COUNT = 0,\n PAGE_NUMBER_OFFSET = 1\n\nfunction getPageStart(totalRows: number, pageIndex: number, pageSize: number): number {\n if (totalRows === EMPTY_ROW_COUNT) {\n return EMPTY_ROW_COUNT\n }\n return pageIndex * pageSize + PAGE_NUMBER_OFFSET\n}\n\nfunction getPageEnd(start: number, pageSize: number, totalRows: number): number {\n if (totalRows === EMPTY_ROW_COUNT) {\n return EMPTY_ROW_COUNT\n }\n return Math.min(start + pageSize - PAGE_NUMBER_OFFSET, totalRows)\n}\n\nexport function TableResults({ children }: TableResultsProps) {\n const table = useTableContext(),\n { pageIndex } = table.state.pagination,\n { pageSize } = table.state.pagination,\n totalRows = table.getFilteredRowModel().rows.length,\n start = getPageStart(totalRows, pageIndex, pageSize),\n end = getPageEnd(start, pageSize, totalRows)\n\n return children(start, end, totalRows)\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AnchoredToastItemProps } from './toast.types'\n\nexport function AnchoredToastItem({ className, ref, toast, ...props }: AnchoredToastItemProps) {\n return (\n <BaseToast.Root\n className={cn(\n 'group flex w-max origin-(--transform-origin) flex-col rounded-full bg-surface px-sm py-2xs shadow-lg transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n toast={toast}\n {...props}\n >\n <BaseToast.Arrow className=\"data-[side=bottom]:-top-3xs data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:-bottom-3xs data-[side=top]:rotate-180\" />\n <BaseToast.Content>\n <BaseToast.Description className=\"style-text-default--1\" />\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport type { ToastManagerAddOptions } from '@base-ui/react/toast'\nimport type { Icon } from '@phosphor-icons/react'\n\nimport type { ToastVariant } from './toast.types'\n\ntype ToastAddOptions = ToastManagerAddOptions<object> & {\n icon?: Icon\n variant?: ToastVariant\n}\n\nconst createToastManager = () => {\n const manager = BaseToast.createToastManager(),\n add = (options: ToastAddOptions) =>\n manager.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return {\n ...manager,\n add,\n }\n },\n useToastManager = () => {\n const toast = BaseToast.useToastManager(),\n add = (options: ToastAddOptions) =>\n toast.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return { add, toasts: toast.toasts }\n }\n\nexport { createToastManager, useToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { AnchoredToastItem } from './anchored-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { AnchoredToastProps } from './toast.types'\n\nexport function AnchoredToasts({ className, ref, ...props }: AnchoredToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Anchored notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <BaseToast.Positioner\n className=\"z-[calc(1000-var(--toast-index))]\"\n key={toast.id}\n toast={toast}\n >\n <AnchoredToastItem toast={toast} />\n </BaseToast.Positioner>\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport {\n CheckCircleIcon,\n InfoIcon,\n WarningCircleIcon,\n WarningIcon,\n XIcon,\n} from '@phosphor-icons/react'\nimport type { Icon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Separator } from '../separator'\nimport type { StackToastItemProps, ToastVariant } from './toast.types'\n\nconst DEFAULT_DURATION = 10_000,\n RING_RADIUS = 14,\n RING_DIAMETER = RING_RADIUS + RING_RADIUS,\n RING_CIRCUMFERENCE = Math.PI * RING_DIAMETER\n\nfunction getVariantBgColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'bg-brand-default'\n }\n case 'accent': {\n return 'bg-accent-default'\n }\n case 'neutral': {\n return 'bg-neutral-default'\n }\n case 'error': {\n return 'bg-error-default'\n }\n case 'info': {\n return 'bg-info-default'\n }\n case 'success': {\n return 'bg-success-default'\n }\n case 'warning': {\n return 'bg-warning-default'\n }\n default: {\n return 'bg-neutral-default'\n }\n }\n}\n\nfunction getVariantBorderColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'border-brand-border-strong'\n }\n case 'accent': {\n return 'border-accent-border-strong'\n }\n case 'neutral': {\n return 'border-neutral-border-strong'\n }\n case 'error': {\n return 'border-error-border-strong'\n }\n case 'info': {\n return 'border-info-border-strong'\n }\n case 'success': {\n return 'border-success-border-strong'\n }\n case 'warning': {\n return 'border-warning-border-strong'\n }\n default: {\n return 'border-neutral-border-strong'\n }\n }\n}\n\nfunction getVariantIcon(variant: ToastVariant | undefined, icon?: Icon) {\n if (icon) {\n return React.createElement(icon, { weight: 'fill' })\n }\n switch (variant) {\n case 'error': {\n return <WarningCircleIcon weight=\"fill\" />\n }\n case 'success': {\n return <CheckCircleIcon weight=\"fill\" />\n }\n case 'warning': {\n return <WarningIcon weight=\"fill\" />\n }\n default: {\n return <InfoIcon weight=\"fill\" />\n }\n }\n}\n\nexport function StackToastItem({ className, ref, toast, ...props }: StackToastItemProps) {\n const duration = toast.timeout ?? DEFAULT_DURATION,\n variant = toast.data?.variant,\n icon = toast.data?.icon\n\n return (\n <BaseToast.Root\n className={cn(\n \"absolute right-[0px] bottom-[0px] left-auto z-[calc(1000-var(--toast-index))] mr-[0px] flex h-2xl origin-bottom transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] items-center justify-center gap-xs overflow-hidden rounded-full border bg-surface bg-clip-padding pr-sm shadow-lg select-none [--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] after:absolute after:top-full after:left-[0px] after:w-full after:content-[''] data-ending-style:opacity-0 data-expanded:h-(--toast-height) data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)))] data-limited:opacity-0 data-starting-style:transform-[translateY(150%)] data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:transform-[translateY(150%)]\",\n className,\n getVariantBorderColor(variant),\n )}\n key={toast.id}\n ref={ref}\n toast={toast}\n {...props}\n >\n <div\n className={cn(\n 'flex aspect-square size-2xl items-center justify-center [&>svg]:size-lg [&>svg]:text-on-surface-inverse',\n getVariantBgColor(variant),\n )}\n >\n {getVariantIcon(variant, icon)}\n </div>\n <BaseToast.Content className=\"flex items-center justify-center gap-xs overflow-hidden pl-2xs transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100\">\n <div>\n <BaseToast.Title className=\"style-text-strong--1\" />\n <BaseToast.Description className=\"style-text-prose--1 whitespace-nowrap text-on-surface-variant\" />\n </div>\n <div className=\"ml-xl flex h-lg grow items-center justify-center gap-xs\">\n <BaseToast.Action\n render={({ onClick, children }) => (\n <Button\n data-testid=\"toast-action-button\"\n onClick={onClick}\n size=\"small\"\n tone={toast.data?.variant}\n variant=\"soft\"\n >\n {children}\n </Button>\n )}\n />\n {toast.actionProps && (\n <Separator variant=\"strong\" orientation=\"vertical\" weight=\"thinnest\" />\n )}\n <BaseToast.Close\n aria-label=\"Close\"\n className=\"relative flex size-sm items-center justify-center rounded-full bg-transparent p-xs text-on-surface-variant transition-colors hover:cursor-pointer hover:bg-error-container hover:text-error-on-container\"\n >\n <span className=\"pointer-events-none absolute inset-[0px] z-10 flex items-center justify-center\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\" className=\"block -rotate-90\">\n <style>{`\n @keyframes toast-drain-${toast.id} {\n from { stroke-dashoffset: 0; }\n to { stroke-dashoffset: ${RING_CIRCUMFERENCE}; }\n }\n `}</style>\n <circle\n cx=\"16\"\n cy=\"16\"\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray={RING_CIRCUMFERENCE}\n strokeLinecap=\"round\"\n className=\"text-error-border-strong\"\n style={{\n animation: `toast-drain-${toast.id} ${duration}ms linear forwards`,\n }}\n />\n </svg>\n </span>\n\n <XIcon className=\"size-sm shrink-0\" weight=\"bold\" />\n </BaseToast.Close>\n </div>\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { StackToastItem } from './stack-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { StackToastProps } from './toast.types'\n\nexport function StackToasts({ className, ref, ...props }: StackToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <StackToastItem key={toast.id} toast={toast} />\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { createToastManager } from './toast-manager'\n\nconst anchoredToastManager = createToastManager(),\n stackToastManager = createToastManager()\n\nexport { anchoredToastManager, stackToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToasts } from './stack-toasts'\nimport { anchoredToastManager, stackToastManager } from './toast-managers'\nimport type { ToastProviderProps } from './toast.types'\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n return (\n <>\n <BaseToast.Provider timeout={10_000} toastManager={anchoredToastManager}>\n <AnchoredToasts />\n </BaseToast.Provider>\n <BaseToast.Provider timeout={10_000} toastManager={stackToastManager}>\n <StackToasts />\n </BaseToast.Provider>\n {children}\n </>\n )\n}\n","import { AnchoredToastItem } from './anchored-toast-item'\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToastItem } from './stack-toast-item'\nimport { StackToasts } from './stack-toasts'\nimport { ToastProvider } from './toast-provider'\n\nconst Toast = Object.assign(ToastProvider, {\n AnchoredToastItem,\n AnchoredToasts,\n StackToastItem,\n StackToasts,\n})\n\nexport { Toast }\n","import type { ToggleGroup } from '@base-ui/react/toggle-group'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleGroupVariants = cva(\n 'group flex w-fit items-center justify-center gap-3xs rounded-full',\n {\n compoundVariants: [\n {\n className: 'h-lg px-3xs',\n size: 'small',\n variant: 'default',\n },\n {\n className: 'h-xl px-2xs',\n size: 'medium',\n variant: 'default',\n },\n {\n className: 'h-2xl px-xs',\n size: 'large',\n variant: 'default',\n },\n ],\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n size: {\n large: '',\n medium: '',\n small: '',\n },\n variant: {\n default: 'bg-surface-low',\n ghost: 'bg-transparent',\n },\n },\n },\n)\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup> &\n VariantProps<typeof toggleGroupVariants>\n","import { ToggleGroup as BaseToggleGroup } from '@base-ui/react/toggle-group'\n\nimport { cn } from '@/utils/cn'\n\nimport { ToggleGroupContext } from './toggle-group-context'\nimport { toggleGroupVariants } from './toggle-group.types'\nimport type { ToggleGroupProps } from './toggle-group.types'\n\nexport function ToggleGroup({\n size = 'medium',\n variant,\n className,\n ref,\n ...props\n}: ToggleGroupProps) {\n const displaySize = size ?? 'medium'\n return (\n <ToggleGroupContext.Provider value={{ size: displaySize }}>\n <BaseToggleGroup\n className={cn(toggleGroupVariants({ className, size: displaySize, variant }))}\n data-size={displaySize}\n ref={ref}\n {...props}\n />\n </ToggleGroupContext.Provider>\n )\n}\n"],"mappings":"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GAAG,SAAyB;CACtE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,wEACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACZA,SAAgB,WAAW,EAAE,WAAW,KAAK,GAAG,SAA0B;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,0GACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACVA,MAAM,QAAQ,OAAO,OAAOC,SAAW;CACrC,QAAQ;CACR,aAAa;CACb,MAAM;CACN,OAAO;AACT,CAAC;;;ACPD,SAAgBC,cAAY,EAAE,GAAG,SAA2B;CAC1D,OAAO,oBAACC,cAAgB,MAAjB,EAAsB,GAAI,MAAQ,CAAA;AAC3C;;;ACFA,MAAa,iBAAiB,IAC5B,qKACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,MAAM;EACN,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,YAAY;GACZ,gBAAgB;GAChB,WAAW;GACX,YAAY;GACZ,WAAW;GACX,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,UAAU;GACV,MAAM;GACN,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;EACR;CACF;AACF,CACF;;;AClRA,SAAgB,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW,GAAG,SAAsB;CAChF,OACE,oBAACC,UAAD;EACE,aAAW;EACX,WAAW,GAAG,eAAe;GAAE;GAAW;GAAM;GAAM;EAAQ,CAAC,CAAC;EAChE,GAAI;CACL,CAAA;AAEL;;;ACRA,SAAgB,iBAAiB,EAC/B,WACA,OAAO,WACP,UAAU,WACV,MACA,GAAG,SACqB;CACxB,OACE,oBAACC,cAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,SAAS;EACvB,QAAQ,oBAAC,QAAD;GAAc;GAAe;GAAe;EAAO,CAAA;EAC3D,GAAI;CACL,CAAA;AAEL;;;ACfA,SAAgB,mBAAmB,EAAE,WAAW,KAAK,GAAG,SAAkC;CACxF,OACE,oBAACC,cAAgB,OAAjB;EACE,gBAAA;EACA,aAAU;EACV,WAAW,GAAG,IAAI,SAAS;EACtB;EACL,GAAI;EACJ,QAAQ,oBAAC,QAAD,CAAS,CAAA;CAClB,CAAA;AAEL;;;ACZA,SAAgB,uBAAuB,EAAE,WAAW,KAAK,GAAG,SAAsC;CAChG,OACE,oBAACC,cAAgB,aAAjB;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACjD;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,kBAAkB,EAAE,WAAW,KAAK,GAAG,SAAiC;CACtF,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,wCAAwC,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAEjG;;;ACJA,SAAgB,kBAAkB,EAAE,WAAW,KAAK,GAAG,SAAiC;CACtF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,uPACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,gBAAgB,EAAE,WAAW,KAAK,GAAG,SAA+B;CAClF,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,0DAA0D,SAAS;EAC5E;EACL,GAAI;CACL,CAAA;AAEL;;;ACPA,MAAM,sBAAsB,IACxB,uRACA;CACE,iBAAiB,EACf,MAAM,QACR;CACA,UAAU,EACR,MAAM;EACJ,QACE;EACF,OACE;EACF,OACE;EACF,MAAM;EACN,SACE;EACF,SACE;EACF,SACE;CACJ,EACF;AACF,CACF;AACoBC,cAAgB,aAAkC;;;ACxBxE,MAAM,QAA6B;CACjC,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;AACnB;AAEA,SAAgB,iBAAiB,EAAE,MAAM,WAAW,KAAK,GAAG,SAAgC;CAC1F,OACE,qBAACC,cAAgB,QAAjB,EAAA,UAAA,CACE,oBAACA,cAAgB,UAAjB;EACE,aAAU;EACV,WAAU;EACH;CACR,CAAA,GACD,oBAACA,cAAgB,OAAjB;EACE,WAAW,GAAG,oBAAoB,EAAE,KAAK,CAAC,GAAG,SAAS;EACjD;EACL,GAAI;CACL,CAAA,CACqB,EAAA,CAAA;AAE5B;;;ACtBA,SAAgB,iBAAiB,EAAE,WAAW,KAAK,GAAG,SAAgC;CACpF,OACE,oBAACC,cAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,uBAAuB,SAAS;EACzC;EACL,GAAI;CACL,CAAA;AAEL;;;ACPA,SAAgB,mBAAmB,EACjC,WACA,UACA,KACA,GAAG,SACuB;CAC1B,IAAI,SAAmC,KAAA;CACvC,IAAI,eAAe,QAAQ,GACzB,SAAS;CAGX,OACE,oBAACC,cAAgB,SAAjB;EAAyB,WAAW,GAAG,IAAI,SAAS;EAAQ;EAAK,GAAI;EAAe;CAAS,CAAA;AAEjG;;;ACXA,MAAM,cAAc,OAAO,OAAOC,eAAiB;CACjD,OAAO;CACP,SAAS;CACT,aAAa;CACb,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;CACP,SAAS;AACX,CAAC;;;ACjBD,SAAgBC,eAAa,EAAE,GAAG,SAA4B;CAC5D,OAAO,oBAACC,eAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;;;ACFA,SAAgB,uBAAuB,EAAE,GAAG,SAAsC;CAChF,OAAO,oBAACC,eAAiB,YAAlB,EAA6B,GAAI,MAAQ,CAAA;AAClD;;;ACAA,MAAMC,wBAAsB;AAE5B,SAAgB,oBAAoB,EAClC,WACA,WACA,UACA,aAAaA,uBACb,KACA,GAAG,SACwB;CAC3B,OACE,oBAACC,eAAiB,QAAlB,EAAA,UACE,oBAACA,eAAiB,YAAlB;EACE,WAAW,GAAG,IAAI,SAAS;EACtB;EACO;EACZ,GAAI;EAEJ,UAAA,qBAACA,eAAiB,OAAlB;GAAwB,WAAU;GAAlC,UAAA,CACE,oBAACA,eAAiB,OAAlB;IAAwB,WAAU;IAC/B,UAAA;GACqB,CAAA,GACxB,oBAACA,eAAiB,MAAlB;IAAuB,WAAU;IAC9B;GACoB,CAAA,CACD;;CACG,CAAA,EACN,CAAA;AAE7B;;;AC9BA,MAAM,qBAAqB;AACzB,MAAA,qBAAqB;AACrB,MAAA,oBAAoB;AACpB,MAAA,uBAAuB;AACvB,MAAA,uBAAuB;AACvB,MAAA,gBAAgB,SAAyB;CACvC,IAAI,OAAO,UAAU,IAAI,GACvB,OAAO;CAET,OAAO;AACT;AACAC,MAAAA,oBAAkB,UAA0B;CAC1C,IAAI,QAAQ,oBACV,OAAO,GAAG,MAAM;CAGlB,MAAM,QAAQ;EAAC;EAAM;EAAM;EAAM;CAAI;CACrC,IAAI,OAAO,QAAQ,oBACjB,YAAY;CAEd,OAAO,QAAQ,sBAAsB,YAAY,MAAM,SAAS,sBAAsB;EACpF,QAAQ;EACR,aAAa;CACf;CAEA,OAAO,GAAG,KAAK,QAAQ,aAAa,IAAI,CAAC,EAAE,GAAG,MAAM;AACtD;AACA,MAAA,gBAAgB,IACd,mkBACA;CACE,iBAAiB;EACf,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,SAAS;GACP,OAAO;GACP,SAAS;GACT,WAAW;EACb;CACF;AACF,CACF;;;AC/CF,SAAgB,uBAAuB,EACrC,SACA,WACA,KACA,GAAG,SAC2B;CAC9B,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAC1F;;;ACNA,SAAgB,4BAA4B,EAC1C,aACA,WACA,KACA,GAAG,SACgC;CACnC,OACE,oBAACC,eAAiB,OAAlB;EACe;EACb,WAAW,GAAG,0DAA0D,SAAS;EAC5E;EACL,GAAI;CACL,CAAA;AAEL;;;ACZA,MAAMC,wBAAsB;AAE5B,SAAgB,wBAAwB,EACtC,cAAc,WACd,WACA,WACA,UACA,aAAaA,uBACb,KACA,GAAG,SAC4B;CAC/B,OACE,oBAACC,eAAiB,QAAlB,EAAA,UACE,oBAACA,eAAiB,YAAlB;EACE,WAAW,GAAG,IAAI,SAAS;EACtB;EACO;EACZ,GAAI;EAEJ,UAAA,qBAACA,eAAiB,OAAlB;GAAwB,WAAU;GAAlC,UAAA;IACE,oBAAC,OAAD;KAAK,WAAU;KACb,UAAA,oBAAC,wBAAD,EAAA,UACE,oBAAC,6BAAD,EAA0C,YAAc,CAAA,EAClC,CAAA;IACrB,CAAA;IACL,oBAACA,eAAiB,OAAlB;KAAwB,WAAU;KAC/B,UAAA;IACqB,CAAA;IACxB,oBAACA,eAAiB,MAAlB;KAAuB,WAAU;KAC9B;IACoB,CAAA;GACD;;CACG,CAAA,EACN,CAAA;AAE7B;;;ACrCA,SAAgB,qBAAqB,EACnC,WACA,UACA,KACA,GAAG,SACyB;CAC5B,OACE,oBAACC,eAAiB,MAAlB;EACE,WAAW,GACT,waACA,SACF;EACK;EACL,GAAI;EAEJ,UAAA,oBAAC,QAAD;GAAM,WAAU;GAAwB;EAAe,CAAA;CAClC,CAAA;AAE3B;;;AClBA,SAAgB,kBAAkB,EAAE,WAAW,KAAK,GAAG,SAAiC;CACtF,OACE,oBAACC,eAAiB,OAAlB;EAAwB,WAAW,GAAG,qBAAqB,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAEjG;;;ACJA,SAAgB,uBAAuB,EAAE,WAAW,KAAK,GAAG,SAAiC;CAC3F,OACE,oBAACC,eAAiB,YAAlB;EACE,WAAW,GACT,gIACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACbA,SAAgB,4BAA4B,EAC1C,WACA,KACA,GAAG,SACgC;CACnC,OACE,oBAAC,OAAD;EACE,WAAW,GACT,gFACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACbA,SAAgB,iBAAiB,EAAE,WAAW,KAAK,GAAG,SAAgC;CACpF,OACE,oBAACC,eAAiB,MAAlB;EACE,WAAW,GACT,+fACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,gBAAgB,EAAE,WAAW,KAAK,GAAG,SAA+B;CAClF,OAAO,oBAACC,eAAiB,KAAlB;EAAsB,WAAW,GAAG,oBAAoB,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AACnG;;;ACFA,SAAgB,mBAAmB,EAAE,WAAW,KAAK,GAAG,SAAkC;CACxF,OACE,oBAACC,eAAiB,QAAlB;EACE,WAAW,GACT,2FACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,oBAAoB,EAAE,WAAW,KAAK,GAAG,SAAmC;CAC1F,OAAO,oBAACC,eAAiB,SAAlB;EAA0B,WAAW,GAAG,IAAI,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AACvF;;;ACOA,MAAM,eAAe,OAAO,OAAOC,gBAAkB;CACnD,YAAY;CACZ,SAAS;CACT,aAAa;CACb,UAAU;CACV,OAAO;CACP,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,iBAAiB;CACjB,MAAM;CACN,KAAK;CACL,QAAQ;CACR,SAAS;AACX,CAAC;;;ACxBD,MAAM,iBAAiB,IACnB,uFACA;CACE,iBAAiB,EACf,MAAM,SACR;CACA,UAAU,EACR,MAAM;EACJ,OAAO;EACP,QAAQ;EACR,OAAO;CACT,EACF;AACF,CACF;AACA,MAAA,sBAAsB,IACpB,4XACA;CACE,iBAAiB;EACf,UAAU;EACV,MAAM;CACR;CACA,UAAU;EACR,UAAU;GACR,YAAY;GACZ,aAAa;GACb,SAAS;GACT,UAAU;EACZ;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;CACF;AACF,CACF;;;ACtCF,SAAgBC,SAAO,EAAE,OAAO,UAAU,WAAW,KAAK,GAAG,SAAsB;CACjF,OACE,oBAACC,SAAW,MAAZ;EACE,WAAW,GAAG,eAAe;GAAE;GAAW;EAAK,CAAC,CAAC;EACjD,aAAW;EACX,aAAU;EACL;EACL,GAAI;CACL,CAAA;AAEL;;;ACZA,SAAgB,YAAY,EAAE,MAAM,UAAU,WAAW,KAAK,GAAG,SAA2B;CAC1F,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,oBAAoB;GAAE;GAAW;GAAU;EAAK,CAAC,CAAC;EAC3D;EACL,GAAI;CACL,CAAA;AAEL;;;ACRA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAACC,SAAW,UAAZ;EACE,WAAW,GACT,4GACA,SACF;EACA,aAAU;EACL;EACL,GAAI;CACL,CAAA;AAEL;;;ACdA,SAAgB,SAAS,EAAE,WAAW,KAAK,GAAG,SAAwB;CACpE,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,mDAAmD,SAAS;EACrE;EACL,GAAI;CACL,CAAA;AAEL;;;ACHA,SAAgB,YAAY,EAAE,WAAW,KAAK,GAAG,SAA2B;CAC1E,MAAM,CAAC,QAAQ,aAAa,MAAM,SAA6B,SAAS;CAExE,IAAI,WAAW,WACb,OAAO,oBAAC,UAAD,EAAU,WAAU,0CAA2C,CAAA;CAGxE,OACE,oBAACC,SAAW,OAAZ;EACE,uBAAuB;EACvB,WAAW,GAAG,uCAAuC,SAAS;EAC9D,aAAU;EACL;EACL,GAAI;CACL,CAAA;AAEL;;;ACpBA,MAAM,SAAS,OAAO,OAAOC,UAAY;CACvC,OAAO;CACP,UAAU;CACV,OAAO;AACT,CAAC;;;ACLD,MAAa,gBAAgB,IAC3B,wIACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,MAAM;EACN,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,WAAW;GACX,YAAY;GACZ,WAAW;GACX,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,MAAM;GACN,SAAS;GACT,MAAM;EACR;CACF;AACF,CACF;;;AC3IA,SAAgB,MAAM,EAAE,WAAW,MAAM,MAAM,SAAS,KAAK,GAAG,SAAqB;CACnF,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,cAAc;GAAE;GAAW;GAAM;GAAM;EAAQ,CAAC,CAAC;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAEjG;;;ACNA,MAAM,mBAAmB,IACvB,wEACA;CACE,iBAAiB;EACf,MAAM;EACN,MAAM;CACR;CACA,UAAU;EACR,MAAM;GACJ,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;CACF;AACF,CACF;;;ACjBA,SAAgBC,WAAS,EAAE,MAAM,MAAM,WAAW,KAAK,GAAG,SAAwB;CAChF,OACE,oBAAC,OAAD;EACE,aAAW;EACX,WAAW,GAAG,iBAAiB;GAAE;GAAW;GAAM;EAAK,CAAC,CAAC;EACpD;EACL,GAAI;CACL,CAAA;AAEL;;;ACVA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,wEACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,gBAAgB,EAAE,WAAW,KAAK,GAAG,SAA+B;CAClF,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,kBAAkB,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAChF;;;ACFA,SAAgB,oBAAoB,EAAE,WAAW,KAAK,GAAG,SAAmC;CAC1F,OACE,oBAAC,QAAD;EACE,WAAW,GACT,2KACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,mKACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,0JACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,cAAc,EAAE,WAAW,KAAK,GAAG,SAA6B;CAC9E,OACE,oBAAC,QAAD;EACE,WAAW,GACT,4RACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACPA,MAAM,WAAW,OAAO,OAAOC,YAAc;CAC3C,QAAQ;CACR,SAAS;CACT,aAAa;CACb,QAAQ;CACR,QAAQ;CACR,OAAO;AACT,CAAC;;;ACXD,SAAgBC,aAAW,EAAE,WAAW,KAAK,GAAG,SAA0B;CACxE,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,0CAA0C,SAAS;EAAQ;EAAK,GAAI;CAAQ,CAAA;AAEnG;;;ACFA,SAAgB,mBAAmB,EACjC,WACA,UACA,KACA,GAAG,SACuB;CAC1B,OACE,qBAAC,OAAD;EACE,WAAW,GACT,oQACA,SACF;EACK;EACL,GAAI;EANN,UAAA,CAQG,UACD,oBAAC,eAAD,EAAe,QAAO,OAAQ,CAAA,CAC3B;;AAET;;;ACrBA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,sIACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACXA,SAAgB,eAAe,EAAE,WAAW,KAAK,GAAG,SAA8B;CAChF,OACE,oBAAC,OAAD;EACE,WAAW,GACT,6QACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL;;;ACTA,SAAgB,oBAAoB,EAAE,WAAW,KAAK,GAAG,SAAmC;CAC1F,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,2CAA2C,SAAS;EAAQ;EAAK,GAAI;EACtF,UAAA,oBAAC,gBAAD,EAAgB,QAAO,OAAQ,CAAA;CAC5B,CAAA;AAET;;;ACNA,MAAM,aAAa,OAAO,OAAOC,cAAgB;CAC/C,UAAU;CACV,MAAM;CACN,MAAM;CACN,WAAW;AACb,CAAC;;;ACRD,MAAa,sBAAsB,IACjC,6OACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,aAAa;EACb,MAAM;EACN,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,aAAa;GACX,YACE;GACF,UACE;EACJ;EACA,MAAM;GACJ,YACE;GACF,gBACE;GACF,WAAW;GACX,YAAY;GACZ,WAAW;GACX,OACE;GACF,QACE;GACF,OACE;EACJ;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,UAAU;GACV,MAAM;GACN,OAAO;GACP,SAAS;GACT,MAAM;EACR;CACF;AACF,CACF;;;AC5PA,SAAgB,YAAY,EAC1B,MACA,SACA,MACA,aACA,WACA,KACA,GAAG,SACgB;CACnB,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,oBAAoB;GAAE;GAAa;GAAM;GAAM;EAAQ,C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AAC,aAAD,EAAA,UACG,MAAM,KAAK,EAAE,OAAO,SACnB,oBAAC,YAAD;GAAqB,OAAO;GACzB,UAAA;EACS,GAFK,EAEL,CACb,EACU,CAAA,CACH,EAAA,CAAA,EACD,CAAA,CACP;;AAEZ;;;AC7CA,MAAM,eAAe,IAAI,IAAI;CAC3B,kBAAkB;EAChB;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE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A;CACA,iBAAiB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,cAAA;AACF,CAAC;;;AClCH,MAAM,iBAAiB,IAAI,2CAA2C;CAClE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;CACF;CACA,iBAAiB;EACf,iBAAiB;EACjB,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,iBAAiB;GACf,YAAY;GACZ,UAAU;EACZ;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,SAAS;GACP,UAAU;GACV,SAAS;EACX;CACF;AACF,CAAC;AACD,MAAA,qBAAqB,IACnB,gNACA;CACE,iBAAiB,EACf,MAAM,UACR;CACA,UAAU,EACR,MAAM;EACJ,QACE;EACF,OACE;EACF,OACE;EACF,MAAM;EACN,SACE;EACF,SACE;EACF,SACE;CACJ,EACF;AACF,CACF;;;ACzGF,SAAgBC,SAAO,EAAE,iBAAiB,MAAM,SAAS,WAAW,KAAK,GAAG,SAAsB;CAChG,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,eAAe;GAAE;GAAiB;GAAM;EAAQ,CAAC,GAAG,SAAS;EACtE;EACL,GAAI;CACL,CAAA;AAEL;;;ACRA,SAAgB,WAAW,EAAE,WAAW,OAAO,MAAM,WAAW,KAAK,GAAG,SAA0B;CAChG,OACE,oBAAC,UAAD;EACE,MAAK;EACL,eAAa;EACb,qBAAA;EACA,WAAW,GAAG,mBAAmB,EAAE,KAAK,CAAC,GAAG,SAA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"}