@devalok/shilp-sutra 0.36.0 → 0.37.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/MIGRATION.md +346 -0
  2. package/README.md +26 -29
  3. package/dist/_chunks/badge-group.js +42 -42
  4. package/dist/_chunks/badge-group.js.map +1 -1
  5. package/dist/_chunks/chat.js +324 -327
  6. package/dist/_chunks/chat.js.map +1 -1
  7. package/dist/_chunks/date-picker.js +245 -245
  8. package/dist/_chunks/date-picker.js.map +1 -1
  9. package/dist/_chunks/document-preview.js +33 -33
  10. package/dist/_chunks/document-preview.js.map +1 -1
  11. package/dist/_chunks/file-preview.js +264 -264
  12. package/dist/_chunks/file-preview.js.map +1 -1
  13. package/dist/_chunks/image-preview.js +45 -45
  14. package/dist/_chunks/image-preview.js.map +1 -1
  15. package/dist/_chunks/mention-suggestion.js +85 -85
  16. package/dist/_chunks/mention-suggestion.js.map +1 -1
  17. package/dist/_chunks/motion-provider.js +13 -13
  18. package/dist/_chunks/motion-provider.js.map +1 -1
  19. package/dist/_chunks/popover.js +36 -36
  20. package/dist/_chunks/popover.js.map +1 -1
  21. package/dist/_chunks/primitives.js +489 -489
  22. package/dist/_chunks/primitives.js.map +1 -1
  23. package/dist/_chunks/rich-chat-input.js +1066 -1066
  24. package/dist/_chunks/rich-chat-input.js.map +1 -1
  25. package/dist/_chunks/shared.js +43 -43
  26. package/dist/_chunks/shared.js.map +1 -1
  27. package/dist/_chunks/text.js +432 -0
  28. package/dist/_chunks/text.js.map +1 -0
  29. package/dist/_chunks/tiptap.js +6053 -6187
  30. package/dist/_chunks/tiptap.js.map +1 -1
  31. package/dist/_chunks/tree-view.js +97 -97
  32. package/dist/_chunks/tree-view.js.map +1 -1
  33. package/dist/_chunks/use-calendar.js.map +1 -1
  34. package/dist/ai/ai-command-provider.d.ts.map +1 -1
  35. package/dist/ai/ai-command-provider.js.map +1 -1
  36. package/dist/ai/block-renderer.d.ts.map +1 -1
  37. package/dist/ai/block-renderer.js +43 -43
  38. package/dist/ai/block-renderer.js.map +1 -1
  39. package/dist/ai/blocks/block-table.d.ts.map +1 -1
  40. package/dist/ai/blocks/confirm.d.ts.map +1 -1
  41. package/dist/ai/blocks/divider.d.ts.map +1 -1
  42. package/dist/ai/blocks/error.d.ts.map +1 -1
  43. package/dist/ai/blocks/index.d.ts +5 -5
  44. package/dist/ai/blocks/index.d.ts.map +1 -1
  45. package/dist/ai/blocks/index.js +2 -2
  46. package/dist/ai/blocks/info.d.ts.map +1 -1
  47. package/dist/ai/blocks/loading.d.ts.map +1 -1
  48. package/dist/ai/blocks/stat-row.d.ts.map +1 -1
  49. package/dist/ai/blocks/success.d.ts.map +1 -1
  50. package/dist/ai/blocks/text.d.ts.map +1 -1
  51. package/dist/ai/command-bar.d.ts +0 -11
  52. package/dist/ai/command-bar.d.ts.map +1 -1
  53. package/dist/ai/command-bar.js +128 -128
  54. package/dist/ai/command-bar.js.map +1 -1
  55. package/dist/ai/conversation.d.ts +1 -1
  56. package/dist/ai/conversation.d.ts.map +1 -1
  57. package/dist/ai/conversation.js +76 -76
  58. package/dist/ai/conversation.js.map +1 -1
  59. package/dist/ai/devadoot-icon.d.ts +0 -12
  60. package/dist/ai/devadoot-icon.d.ts.map +1 -1
  61. package/dist/ai/index.d.ts +11 -11
  62. package/dist/ai/index.d.ts.map +1 -1
  63. package/dist/ai/index.js +44 -44
  64. package/dist/ai/index.js.map +1 -1
  65. package/dist/composed/activity-feed.d.ts.map +1 -1
  66. package/dist/composed/activity-feed.js +93 -93
  67. package/dist/composed/activity-feed.js.map +1 -1
  68. package/dist/composed/avatar-group.d.ts.map +1 -1
  69. package/dist/composed/avatar-group.js +50 -50
  70. package/dist/composed/avatar-group.js.map +1 -1
  71. package/dist/composed/bulk-action-bar.d.ts.map +1 -1
  72. package/dist/composed/bulk-action-bar.js +40 -40
  73. package/dist/composed/bulk-action-bar.js.map +1 -1
  74. package/dist/composed/command-palette.d.ts +0 -6
  75. package/dist/composed/command-palette.d.ts.map +1 -1
  76. package/dist/composed/command-palette.js +131 -131
  77. package/dist/composed/command-palette.js.map +1 -1
  78. package/dist/composed/confirm-dialog.d.ts.map +1 -1
  79. package/dist/composed/confirm-dialog.js.map +1 -1
  80. package/dist/composed/content-card.d.ts.map +1 -1
  81. package/dist/composed/content-card.js.map +1 -1
  82. package/dist/composed/date-picker/calendar-grid.d.ts.map +1 -1
  83. package/dist/composed/date-picker/date-picker.d.ts.map +1 -1
  84. package/dist/composed/date-picker/date-range-picker.d.ts.map +1 -1
  85. package/dist/composed/date-picker/date-time-picker.d.ts.map +1 -1
  86. package/dist/composed/date-picker/index.d.ts +11 -11
  87. package/dist/composed/date-picker/index.d.ts.map +1 -1
  88. package/dist/composed/date-picker/index.js +1 -1
  89. package/dist/composed/date-picker/month-picker.d.ts.map +1 -1
  90. package/dist/composed/date-picker/presets.d.ts.map +1 -1
  91. package/dist/composed/date-picker/time-picker.d.ts.map +1 -1
  92. package/dist/composed/date-picker/year-picker.d.ts.map +1 -1
  93. package/dist/composed/deadline-indicator.d.ts.map +1 -1
  94. package/dist/composed/deadline-indicator.js +25 -25
  95. package/dist/composed/deadline-indicator.js.map +1 -1
  96. package/dist/composed/emoji-picker.d.ts.map +1 -1
  97. package/dist/composed/emoji-picker.js +37 -37
  98. package/dist/composed/emoji-picker.js.map +1 -1
  99. package/dist/composed/empty-state.d.ts.map +1 -1
  100. package/dist/composed/empty-state.js +21 -21
  101. package/dist/composed/empty-state.js.map +1 -1
  102. package/dist/composed/error-boundary.d.ts +1 -1
  103. package/dist/composed/error-boundary.d.ts.map +1 -1
  104. package/dist/composed/error-boundary.js.map +1 -1
  105. package/dist/composed/extensions/emoji-node.d.ts.map +1 -1
  106. package/dist/composed/extensions/emoji-suggestion.d.ts.map +1 -1
  107. package/dist/composed/extensions/file-attachment.d.ts.map +1 -1
  108. package/dist/composed/extensions/mention-suggestion.d.ts +1 -1
  109. package/dist/composed/extensions/mention-suggestion.d.ts.map +1 -1
  110. package/dist/composed/extensions/slash-command.d.ts +1 -1
  111. package/dist/composed/extensions/slash-command.d.ts.map +1 -1
  112. package/dist/composed/file-preview/audio-preview.d.ts.map +1 -1
  113. package/dist/composed/file-preview/document-preview.d.ts.map +1 -1
  114. package/dist/composed/file-preview/embed-preview.d.ts.map +1 -1
  115. package/dist/composed/file-preview/image-preview.d.ts.map +1 -1
  116. package/dist/composed/file-preview/shared.d.ts.map +1 -1
  117. package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
  118. package/dist/composed/file-preview.d.ts.map +1 -1
  119. package/dist/composed/filter-bar.d.ts +1 -1
  120. package/dist/composed/filter-bar.d.ts.map +1 -1
  121. package/dist/composed/filter-bar.js +54 -54
  122. package/dist/composed/filter-bar.js.map +1 -1
  123. package/dist/composed/form-section.d.ts.map +1 -1
  124. package/dist/composed/form-section.js +26 -26
  125. package/dist/composed/form-section.js.map +1 -1
  126. package/dist/composed/global-loading.d.ts.map +1 -1
  127. package/dist/composed/global-loading.js.map +1 -1
  128. package/dist/composed/index.d.ts +55 -55
  129. package/dist/composed/index.d.ts.map +1 -1
  130. package/dist/composed/index.js +17 -17
  131. package/dist/composed/inline-edit.d.ts.map +1 -1
  132. package/dist/composed/inline-edit.js.map +1 -1
  133. package/dist/composed/loading-skeleton.d.ts +1 -1
  134. package/dist/composed/loading-skeleton.d.ts.map +1 -1
  135. package/dist/composed/loading-skeleton.js.map +1 -1
  136. package/dist/composed/markdown-viewer.d.ts.map +1 -1
  137. package/dist/composed/markdown-viewer.js +3 -3
  138. package/dist/composed/markdown-viewer.js.map +1 -1
  139. package/dist/composed/master-detail.d.ts.map +1 -1
  140. package/dist/composed/master-detail.js +42 -42
  141. package/dist/composed/master-detail.js.map +1 -1
  142. package/dist/composed/member-picker.d.ts.map +1 -1
  143. package/dist/composed/member-picker.js.map +1 -1
  144. package/dist/composed/multi-select-popover.d.ts.map +1 -1
  145. package/dist/composed/multi-select-popover.js +55 -55
  146. package/dist/composed/multi-select-popover.js.map +1 -1
  147. package/dist/composed/page-header.d.ts.map +1 -1
  148. package/dist/composed/page-header.js.map +1 -1
  149. package/dist/composed/page-skeletons.d.ts.map +1 -1
  150. package/dist/composed/page-skeletons.js.map +1 -1
  151. package/dist/composed/priority-indicator.d.ts.map +1 -1
  152. package/dist/composed/priority-indicator.js +34 -34
  153. package/dist/composed/priority-indicator.js.map +1 -1
  154. package/dist/composed/responsive-overlay.d.ts.map +1 -1
  155. package/dist/composed/responsive-overlay.js.map +1 -1
  156. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
  157. package/dist/composed/rich-chat-input/audio-player.d.ts.map +1 -1
  158. package/dist/composed/rich-chat-input/audio-waveform.d.ts.map +1 -1
  159. package/dist/composed/rich-chat-input/chat-toolbar.d.ts.map +1 -1
  160. package/dist/composed/rich-chat-input/recording-overlay.d.ts.map +1 -1
  161. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
  162. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
  163. package/dist/composed/rich-chat-input.d.ts +6 -6
  164. package/dist/composed/rich-chat-input.d.ts.map +1 -1
  165. package/dist/composed/rich-chat-input.js +1 -1
  166. package/dist/composed/rich-text-editor.d.ts.map +1 -1
  167. package/dist/composed/rich-text-editor.js +25 -25
  168. package/dist/composed/rich-text-editor.js.map +1 -1
  169. package/dist/composed/schedule-view.d.ts.map +1 -1
  170. package/dist/composed/schedule-view.js +53 -53
  171. package/dist/composed/schedule-view.js.map +1 -1
  172. package/dist/composed/simple-tooltip.d.ts.map +1 -1
  173. package/dist/composed/simple-tooltip.js.map +1 -1
  174. package/dist/composed/status-badge.d.ts +1 -1
  175. package/dist/composed/status-badge.d.ts.map +1 -1
  176. package/dist/composed/status-badge.js +30 -30
  177. package/dist/composed/status-badge.js.map +1 -1
  178. package/dist/hooks/index.d.ts +3 -3
  179. package/dist/hooks/index.d.ts.map +1 -1
  180. package/dist/hooks/index.js +1 -1
  181. package/dist/hooks/use-color-mode.js.map +1 -1
  182. package/dist/hooks/use-toast.d.ts +1 -1
  183. package/dist/hooks/use-toast.d.ts.map +1 -1
  184. package/dist/motion/index.d.ts +2 -2
  185. package/dist/motion/index.d.ts.map +1 -1
  186. package/dist/motion/index.js.map +1 -1
  187. package/dist/motion/motion-provider.d.ts +1 -1
  188. package/dist/motion/motion-provider.d.ts.map +1 -1
  189. package/dist/motion/primitives-index.d.ts +1 -1
  190. package/dist/motion/primitives-index.d.ts.map +1 -1
  191. package/dist/motion/primitives-index.js +40 -40
  192. package/dist/motion/primitives-index.js.map +1 -1
  193. package/dist/motion/primitives.d.ts +1 -1
  194. package/dist/motion/primitives.d.ts.map +1 -1
  195. package/dist/shell/app-command-palette.d.ts +0 -8
  196. package/dist/shell/app-command-palette.d.ts.map +1 -1
  197. package/dist/shell/app-command-palette.js.map +1 -1
  198. package/dist/shell/bottom-navbar.d.ts +0 -6
  199. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  200. package/dist/shell/bottom-navbar.js +62 -62
  201. package/dist/shell/bottom-navbar.js.map +1 -1
  202. package/dist/shell/index.d.ts +8 -8
  203. package/dist/shell/index.d.ts.map +1 -1
  204. package/dist/shell/index.js +5 -5
  205. package/dist/shell/link-context.d.ts +1 -1
  206. package/dist/shell/link-context.d.ts.map +1 -1
  207. package/dist/shell/notification-center.d.ts +0 -6
  208. package/dist/shell/notification-center.d.ts.map +1 -1
  209. package/dist/shell/notification-center.js +54 -54
  210. package/dist/shell/notification-center.js.map +1 -1
  211. package/dist/shell/notification-preferences.d.ts +0 -6
  212. package/dist/shell/notification-preferences.d.ts.map +1 -1
  213. package/dist/shell/notification-preferences.js +22 -22
  214. package/dist/shell/notification-preferences.js.map +1 -1
  215. package/dist/shell/sidebar.d.ts.map +1 -1
  216. package/dist/shell/sidebar.js.map +1 -1
  217. package/dist/shell/top-bar.d.ts +0 -6
  218. package/dist/shell/top-bar.d.ts.map +1 -1
  219. package/dist/shell/top-bar.js.map +1 -1
  220. package/dist/tailwind/index.cjs +15 -499
  221. package/dist/tailwind/preset.d.ts +21 -0
  222. package/dist/tailwind/preset.d.ts.map +1 -1
  223. package/dist/tailwind/preset.js +14 -489
  224. package/dist/tailwind/preset.js.map +1 -1
  225. package/dist/tokens/animations.css +17 -0
  226. package/dist/tokens/base.css +26 -0
  227. package/dist/tokens/index.css +22 -0
  228. package/dist/tokens/semantic.css +436 -464
  229. package/dist/tokens/shilp-sutra.css +41 -0
  230. package/dist/tokens/typography-semantic.css +48 -41
  231. package/dist/tokens/utilities.css +276 -0
  232. package/dist/tokens/variants.css +14 -0
  233. package/dist/ui/accordion.d.ts +2 -2
  234. package/dist/ui/accordion.d.ts.map +1 -1
  235. package/dist/ui/accordion.js +23 -23
  236. package/dist/ui/accordion.js.map +1 -1
  237. package/dist/ui/alert-dialog.d.ts +2 -2
  238. package/dist/ui/alert-dialog.d.ts.map +1 -1
  239. package/dist/ui/alert-dialog.js +37 -37
  240. package/dist/ui/alert-dialog.js.map +1 -1
  241. package/dist/ui/alert.d.ts.map +1 -1
  242. package/dist/ui/alert.js +36 -36
  243. package/dist/ui/alert.js.map +1 -1
  244. package/dist/ui/aspect-ratio.d.ts +1 -1
  245. package/dist/ui/aspect-ratio.d.ts.map +1 -1
  246. package/dist/ui/aspect-ratio.js.map +1 -1
  247. package/dist/ui/autocomplete.d.ts +1 -1
  248. package/dist/ui/autocomplete.d.ts.map +1 -1
  249. package/dist/ui/autocomplete.js +27 -27
  250. package/dist/ui/autocomplete.js.map +1 -1
  251. package/dist/ui/avatar.d.ts +2 -2
  252. package/dist/ui/avatar.d.ts.map +1 -1
  253. package/dist/ui/avatar.js +41 -41
  254. package/dist/ui/avatar.js.map +1 -1
  255. package/dist/ui/badge-group.d.ts.map +1 -1
  256. package/dist/ui/badge-indicator.d.ts.map +1 -1
  257. package/dist/ui/badge-indicator.js +10 -10
  258. package/dist/ui/badge-indicator.js.map +1 -1
  259. package/dist/ui/badge.d.ts +2 -2
  260. package/dist/ui/badge.d.ts.map +1 -1
  261. package/dist/ui/banner.d.ts.map +1 -1
  262. package/dist/ui/banner.js +28 -28
  263. package/dist/ui/banner.js.map +1 -1
  264. package/dist/ui/breadcrumb.d.ts +1 -1
  265. package/dist/ui/breadcrumb.d.ts.map +1 -1
  266. package/dist/ui/breadcrumb.js.map +1 -1
  267. package/dist/ui/button-group.d.ts.map +1 -1
  268. package/dist/ui/button-group.js.map +1 -1
  269. package/dist/ui/button-processing.d.ts.map +1 -1
  270. package/dist/ui/button-processing.js +15 -15
  271. package/dist/ui/button-processing.js.map +1 -1
  272. package/dist/ui/button.d.ts.map +1 -1
  273. package/dist/ui/button.js +84 -84
  274. package/dist/ui/button.js.map +1 -1
  275. package/dist/ui/card.d.ts +1 -1
  276. package/dist/ui/card.d.ts.map +1 -1
  277. package/dist/ui/card.js +28 -28
  278. package/dist/ui/card.js.map +1 -1
  279. package/dist/ui/charts/_internal/axes.d.ts +1 -1
  280. package/dist/ui/charts/_internal/axes.d.ts.map +1 -1
  281. package/dist/ui/charts/_internal/grid-lines.d.ts.map +1 -1
  282. package/dist/ui/charts/_internal/legend.d.ts.map +1 -1
  283. package/dist/ui/charts/_internal/tooltip.d.ts +1 -1
  284. package/dist/ui/charts/_internal/tooltip.d.ts.map +1 -1
  285. package/dist/ui/charts/area-chart.d.ts.map +1 -1
  286. package/dist/ui/charts/bar-chart.d.ts +1 -1
  287. package/dist/ui/charts/bar-chart.d.ts.map +1 -1
  288. package/dist/ui/charts/chart-container.d.ts.map +1 -1
  289. package/dist/ui/charts/gauge-chart.d.ts.map +1 -1
  290. package/dist/ui/charts/index.d.ts +5 -5
  291. package/dist/ui/charts/index.d.ts.map +1 -1
  292. package/dist/ui/charts/index.js +618 -618
  293. package/dist/ui/charts/index.js.map +1 -1
  294. package/dist/ui/charts/line-chart.d.ts.map +1 -1
  295. package/dist/ui/charts/pie-chart.d.ts.map +1 -1
  296. package/dist/ui/charts/radar-chart.d.ts.map +1 -1
  297. package/dist/ui/charts/sparkline.d.ts.map +1 -1
  298. package/dist/ui/chat/date-separator.d.ts.map +1 -1
  299. package/dist/ui/chat/index.d.ts +4 -4
  300. package/dist/ui/chat/index.d.ts.map +1 -1
  301. package/dist/ui/chat/index.js +1 -1
  302. package/dist/ui/chat/message-input.d.ts.map +1 -1
  303. package/dist/ui/chat/message-list.d.ts.map +1 -1
  304. package/dist/ui/chat/message.d.ts +1 -1
  305. package/dist/ui/chat/message.d.ts.map +1 -1
  306. package/dist/ui/chat/system-message.d.ts.map +1 -1
  307. package/dist/ui/chat/typing-indicator.d.ts.map +1 -1
  308. package/dist/ui/chat/unread-separator.d.ts.map +1 -1
  309. package/dist/ui/checkbox.d.ts.map +1 -1
  310. package/dist/ui/checkbox.js +18 -18
  311. package/dist/ui/checkbox.js.map +1 -1
  312. package/dist/ui/code.d.ts.map +1 -1
  313. package/dist/ui/code.js.map +1 -1
  314. package/dist/ui/collapsible.d.ts +2 -2
  315. package/dist/ui/collapsible.d.ts.map +1 -1
  316. package/dist/ui/collapsible.js +10 -10
  317. package/dist/ui/collapsible.js.map +1 -1
  318. package/dist/ui/color-input.d.ts.map +1 -1
  319. package/dist/ui/color-input.js +85 -85
  320. package/dist/ui/color-input.js.map +1 -1
  321. package/dist/ui/color-swatch.d.ts.map +1 -1
  322. package/dist/ui/color-swatch.js.map +1 -1
  323. package/dist/ui/combobox.d.ts.map +1 -1
  324. package/dist/ui/combobox.js +58 -58
  325. package/dist/ui/combobox.js.map +1 -1
  326. package/dist/ui/container.d.ts.map +1 -1
  327. package/dist/ui/container.js.map +1 -1
  328. package/dist/ui/context-menu.d.ts +2 -2
  329. package/dist/ui/context-menu.d.ts.map +1 -1
  330. package/dist/ui/context-menu.js +47 -47
  331. package/dist/ui/context-menu.js.map +1 -1
  332. package/dist/ui/data-table-body.d.ts +1 -1
  333. package/dist/ui/data-table-body.d.ts.map +1 -1
  334. package/dist/ui/data-table-body.js +43 -43
  335. package/dist/ui/data-table-body.js.map +1 -1
  336. package/dist/ui/data-table-bulk-actions.js.map +1 -1
  337. package/dist/ui/data-table-card.d.ts.map +1 -1
  338. package/dist/ui/data-table-card.js +7 -7
  339. package/dist/ui/data-table-card.js.map +1 -1
  340. package/dist/ui/data-table-context.d.ts +1 -1
  341. package/dist/ui/data-table-context.d.ts.map +1 -1
  342. package/dist/ui/data-table-context.js.map +1 -1
  343. package/dist/ui/data-table-header.js +38 -38
  344. package/dist/ui/data-table-header.js.map +1 -1
  345. package/dist/ui/data-table-pagination.js.map +1 -1
  346. package/dist/ui/data-table-toolbar.d.ts.map +1 -1
  347. package/dist/ui/data-table-toolbar.js.map +1 -1
  348. package/dist/ui/data-table.d.ts +2 -2
  349. package/dist/ui/data-table.d.ts.map +1 -1
  350. package/dist/ui/data-table.js +5 -5
  351. package/dist/ui/data-table.js.map +1 -1
  352. package/dist/ui/devalok-grain.js +8 -8
  353. package/dist/ui/devalok-grain.js.map +1 -1
  354. package/dist/ui/dialog.d.ts +2 -2
  355. package/dist/ui/dialog.d.ts.map +1 -1
  356. package/dist/ui/dialog.js +41 -41
  357. package/dist/ui/dialog.js.map +1 -1
  358. package/dist/ui/dropdown-menu.d.ts +2 -2
  359. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  360. package/dist/ui/dropdown-menu.js +46 -46
  361. package/dist/ui/dropdown-menu.js.map +1 -1
  362. package/dist/ui/file-upload.d.ts.map +1 -1
  363. package/dist/ui/file-upload.js +54 -54
  364. package/dist/ui/file-upload.js.map +1 -1
  365. package/dist/ui/form.d.ts.map +1 -1
  366. package/dist/ui/form.js +17 -17
  367. package/dist/ui/form.js.map +1 -1
  368. package/dist/ui/hover-card.d.ts +2 -2
  369. package/dist/ui/hover-card.d.ts.map +1 -1
  370. package/dist/ui/hover-card.js +19 -19
  371. package/dist/ui/hover-card.js.map +1 -1
  372. package/dist/ui/icon-button.d.ts.map +1 -1
  373. package/dist/ui/icon-button.js.map +1 -1
  374. package/dist/ui/icon-group.d.ts.map +1 -1
  375. package/dist/ui/icon-group.js +4 -4
  376. package/dist/ui/icon-group.js.map +1 -1
  377. package/dist/ui/icon.d.ts.map +1 -1
  378. package/dist/ui/icon.js +32 -32
  379. package/dist/ui/icon.js.map +1 -1
  380. package/dist/ui/index.d.ts +57 -57
  381. package/dist/ui/index.d.ts.map +1 -1
  382. package/dist/ui/index.js +27 -27
  383. package/dist/ui/index.js.map +1 -1
  384. package/dist/ui/input-otp.d.ts +1 -1
  385. package/dist/ui/input-otp.d.ts.map +1 -1
  386. package/dist/ui/input-otp.js.map +1 -1
  387. package/dist/ui/input.d.ts.map +1 -1
  388. package/dist/ui/input.js +14 -14
  389. package/dist/ui/input.js.map +1 -1
  390. package/dist/ui/label.d.ts +1 -1
  391. package/dist/ui/label.d.ts.map +1 -1
  392. package/dist/ui/label.js.map +1 -1
  393. package/dist/ui/lib/bottom-sheet.d.ts.map +1 -1
  394. package/dist/ui/lib/index.d.ts +4 -4
  395. package/dist/ui/lib/index.d.ts.map +1 -1
  396. package/dist/ui/lib/slot.d.ts +1 -1
  397. package/dist/ui/lib/slot.d.ts.map +1 -1
  398. package/dist/ui/lib/utils.d.ts.map +1 -1
  399. package/dist/ui/lib/utils.js.map +1 -1
  400. package/dist/ui/link.d.ts.map +1 -1
  401. package/dist/ui/link.js.map +1 -1
  402. package/dist/ui/menubar.d.ts +2 -2
  403. package/dist/ui/menubar.d.ts.map +1 -1
  404. package/dist/ui/menubar.js +64 -64
  405. package/dist/ui/menubar.js.map +1 -1
  406. package/dist/ui/navigation-menu.d.ts +2 -2
  407. package/dist/ui/navigation-menu.d.ts.map +1 -1
  408. package/dist/ui/navigation-menu.js +72 -72
  409. package/dist/ui/navigation-menu.js.map +1 -1
  410. package/dist/ui/number-input.d.ts.map +1 -1
  411. package/dist/ui/number-input.js.map +1 -1
  412. package/dist/ui/pagination.d.ts +1 -1
  413. package/dist/ui/pagination.d.ts.map +1 -1
  414. package/dist/ui/pagination.js.map +1 -1
  415. package/dist/ui/popover.d.ts +2 -2
  416. package/dist/ui/popover.d.ts.map +1 -1
  417. package/dist/ui/progress-ring.d.ts +1 -1
  418. package/dist/ui/progress-ring.d.ts.map +1 -1
  419. package/dist/ui/progress-ring.js +33 -33
  420. package/dist/ui/progress-ring.js.map +1 -1
  421. package/dist/ui/progress.d.ts +2 -2
  422. package/dist/ui/progress.d.ts.map +1 -1
  423. package/dist/ui/progress.js +23 -23
  424. package/dist/ui/progress.js.map +1 -1
  425. package/dist/ui/radio.d.ts.map +1 -1
  426. package/dist/ui/radio.js +19 -19
  427. package/dist/ui/radio.js.map +1 -1
  428. package/dist/ui/search-input.d.ts.map +1 -1
  429. package/dist/ui/search-input.js +17 -17
  430. package/dist/ui/search-input.js.map +1 -1
  431. package/dist/ui/segmented-control.d.ts.map +1 -1
  432. package/dist/ui/segmented-control.js +19 -19
  433. package/dist/ui/segmented-control.js.map +1 -1
  434. package/dist/ui/select.d.ts +2 -2
  435. package/dist/ui/select.d.ts.map +1 -1
  436. package/dist/ui/select.js +68 -68
  437. package/dist/ui/select.js.map +1 -1
  438. package/dist/ui/separator.d.ts +1 -1
  439. package/dist/ui/separator.d.ts.map +1 -1
  440. package/dist/ui/separator.js.map +1 -1
  441. package/dist/ui/sheet.d.ts +2 -2
  442. package/dist/ui/sheet.d.ts.map +1 -1
  443. package/dist/ui/sheet.js +44 -44
  444. package/dist/ui/sheet.js.map +1 -1
  445. package/dist/ui/sidebar.d.ts +1 -1
  446. package/dist/ui/sidebar.d.ts.map +1 -1
  447. package/dist/ui/sidebar.js +156 -156
  448. package/dist/ui/sidebar.js.map +1 -1
  449. package/dist/ui/skeleton.d.ts +1 -1
  450. package/dist/ui/skeleton.d.ts.map +1 -1
  451. package/dist/ui/skeleton.js +2 -2
  452. package/dist/ui/skeleton.js.map +1 -1
  453. package/dist/ui/slider.d.ts +2 -2
  454. package/dist/ui/slider.d.ts.map +1 -1
  455. package/dist/ui/slider.js +5 -5
  456. package/dist/ui/slider.js.map +1 -1
  457. package/dist/ui/spinner.d.ts.map +1 -1
  458. package/dist/ui/spinner.js +21 -21
  459. package/dist/ui/spinner.js.map +1 -1
  460. package/dist/ui/split-button.d.ts +1 -1
  461. package/dist/ui/split-button.d.ts.map +1 -1
  462. package/dist/ui/split-button.js +28 -28
  463. package/dist/ui/split-button.js.map +1 -1
  464. package/dist/ui/stack.d.ts +1 -1
  465. package/dist/ui/stack.d.ts.map +1 -1
  466. package/dist/ui/stack.js.map +1 -1
  467. package/dist/ui/stat-card.d.ts.map +1 -1
  468. package/dist/ui/stat-card.js +73 -73
  469. package/dist/ui/stat-card.js.map +1 -1
  470. package/dist/ui/status-dot.d.ts.map +1 -1
  471. package/dist/ui/status-dot.js.map +1 -1
  472. package/dist/ui/stepper.d.ts +1 -1
  473. package/dist/ui/stepper.d.ts.map +1 -1
  474. package/dist/ui/stepper.js +48 -48
  475. package/dist/ui/stepper.js.map +1 -1
  476. package/dist/ui/switch.d.ts +1 -1
  477. package/dist/ui/switch.d.ts.map +1 -1
  478. package/dist/ui/switch.js +15 -15
  479. package/dist/ui/switch.js.map +1 -1
  480. package/dist/ui/table.d.ts +1 -1
  481. package/dist/ui/table.d.ts.map +1 -1
  482. package/dist/ui/table.js.map +1 -1
  483. package/dist/ui/tabs.d.ts +2 -2
  484. package/dist/ui/tabs.d.ts.map +1 -1
  485. package/dist/ui/tabs.js +52 -52
  486. package/dist/ui/tabs.js.map +1 -1
  487. package/dist/ui/text.d.ts +1 -1
  488. package/dist/ui/text.d.ts.map +1 -1
  489. package/dist/ui/text.js.map +1 -1
  490. package/dist/ui/textarea.d.ts.map +1 -1
  491. package/dist/ui/textarea.js +13 -13
  492. package/dist/ui/textarea.js.map +1 -1
  493. package/dist/ui/toast-registry.js.map +1 -1
  494. package/dist/ui/toast.d.ts +3 -3
  495. package/dist/ui/toast.d.ts.map +1 -1
  496. package/dist/ui/toast.js +164 -164
  497. package/dist/ui/toast.js.map +1 -1
  498. package/dist/ui/toaster.d.ts.map +1 -1
  499. package/dist/ui/toaster.js +6 -6
  500. package/dist/ui/toaster.js.map +1 -1
  501. package/dist/ui/toggle-group.d.ts +1 -1
  502. package/dist/ui/toggle-group.d.ts.map +1 -1
  503. package/dist/ui/toggle-group.js.map +1 -1
  504. package/dist/ui/toggle.d.ts +1 -1
  505. package/dist/ui/toggle.d.ts.map +1 -1
  506. package/dist/ui/toggle.js +14 -14
  507. package/dist/ui/toggle.js.map +1 -1
  508. package/dist/ui/tooltip.d.ts +2 -2
  509. package/dist/ui/tooltip.d.ts.map +1 -1
  510. package/dist/ui/tooltip.js +26 -26
  511. package/dist/ui/tooltip.js.map +1 -1
  512. package/dist/ui/tree-view/index.d.ts +2 -2
  513. package/dist/ui/tree-view/index.d.ts.map +1 -1
  514. package/dist/ui/tree-view/index.js +1 -1
  515. package/dist/ui/tree-view/tree-view.d.ts +1 -1
  516. package/dist/ui/tree-view/tree-view.d.ts.map +1 -1
  517. package/dist/ui/visually-hidden.d.ts.map +1 -1
  518. package/dist/ui/visually-hidden.js.map +1 -1
  519. package/docs/components/_header.md +96 -0
  520. package/docs/rollback.md +179 -0
  521. package/llms-full.txt +97 -1
  522. package/llms.txt +24 -2
  523. package/package.json +296 -277
  524. package/dist/_chunks/framer.js +0 -5604
  525. package/dist/_chunks/framer.js.map +0 -1
  526. package/dist/_chunks/rolldown-runtime.js +0 -21
  527. package/dist/_chunks/sonner.js +0 -616
  528. package/dist/_chunks/sonner.js.map +0 -1
  529. package/dist/_chunks/stat-row.js +0 -432
  530. package/dist/_chunks/stat-row.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"error-boundary.js","names":[],"sources":["../../src/composed/error-boundary.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { IconAlertTriangle, IconBan, IconFileUnknown, IconServerOff } from '@tabler/icons-react'\nimport { Icon } from '../ui/icon'\nimport { Button } from '../ui/button'\nimport { cn } from '../ui/lib/utils'\n\ndeclare const process: { env: { NODE_ENV?: string } } | undefined\n\nexport interface ErrorDisplayProps extends React.ComponentPropsWithoutRef<'div'> {\n error: unknown\n onReset?: () => void\n}\n\nfunction getStatusFromError(error: unknown): number | undefined {\n if (\n error &&\n typeof error === 'object' &&\n 'status' in error &&\n typeof (error as Record<string, unknown>).status === 'number'\n ) {\n return (error as Record<string, unknown>).status as number\n }\n return undefined\n}\n\nfunction getMessageFromError(error: unknown): string | undefined {\n if (error instanceof Error) {\n return error.message\n }\n if (\n error &&\n typeof error === 'object' &&\n 'data' in error\n ) {\n const data = (error as Record<string, unknown>).data\n if (typeof data === 'string') return data\n if (data && typeof data === 'object' && 'message' in data) {\n return String((data as Record<string, unknown>).message)\n }\n }\n if (typeof error === 'string') {\n return error\n }\n return undefined\n}\n\nfunction getStackFromError(error: unknown): string | undefined {\n if (error instanceof Error) {\n return error.stack\n }\n return undefined\n}\n\nfunction getErrorConfig(status?: number) {\n switch (status) {\n case 404:\n return {\n icon: IconFileUnknown,\n title: 'Page not found',\n message:\n 'The page you are looking for does not exist or has been moved.',\n bgClass: 'bg-accent-2',\n iconClass: 'text-accent-11',\n }\n case 403:\n return {\n icon: IconBan,\n title: 'Access denied',\n message:\n 'You do not have permission to view this page. Contact your administrator if you believe this is a mistake.',\n bgClass: 'bg-warning-3',\n iconClass: 'text-warning-11',\n }\n case 500:\n return {\n icon: IconServerOff,\n title: 'Server error',\n message:\n 'Something went wrong on our end. Please try again later or contact support if the issue persists.',\n bgClass: 'bg-error-3',\n iconClass: 'text-error-11',\n }\n default:\n return {\n icon: IconAlertTriangle,\n title: 'Something went wrong',\n message:\n 'An unexpected error occurred. Please try again or go back to the home page.',\n bgClass: 'bg-accent-2',\n iconClass: 'text-accent-11',\n }\n }\n}\n\nconst ErrorDisplay = React.forwardRef<HTMLDivElement, ErrorDisplayProps>(\n function ErrorDisplay({ error, onReset, className, ...props }, ref) {\n const status = getStatusFromError(error)\n const message = getMessageFromError(error)\n const stack = getStackFromError(error)\n const isDev =\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV === 'development'\n\n const errorConfig = getErrorConfig(status)\n const ErrorIcon = errorConfig.icon\n\n return (\n <div ref={ref} {...props} className={cn(\"flex min-h-[60vh] items-center justify-center p-ds-05\", className)}>\n <div\n className=\"flex w-full max-w-lg flex-col items-center gap-ds-06 rounded-ds-xl border border-surface-border-strong bg-surface-raised p-ds-07 text-center shadow-raised\"\n >\n {/* Error Icon */}\n <div\n className={cn(\n 'flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-2xl',\n errorConfig.bgClass,\n )}\n >\n <Icon\n icon={ErrorIcon}\n size=\"2xl\"\n className={errorConfig.iconClass}\n />\n </div>\n\n {/* Error IconInfoCircle */}\n <div className=\"flex flex-col gap-ds-03\">\n {status && (\n <span className=\"text-ds-sm text-surface-fg-subtle\">\n Error {status}\n </span>\n )}\n <h2 className=\"text-ds-2xl font-semibold text-surface-fg\">\n {errorConfig.title}\n </h2>\n <p className=\"text-ds-base text-surface-fg-subtle\">\n {message || errorConfig.message}\n </p>\n </div>\n\n {/* Actions */}\n {onReset && (\n <div className=\"flex items-center gap-ds-04\">\n <Button\n variant=\"outline\"\n size=\"md\"\n onClick={onReset}\n >\n Try Again\n </Button>\n </div>\n )}\n\n {/* Dev stack trace */}\n {isDev && stack && (\n <div className=\"w-full overflow-auto rounded-ds-lg border border-surface-border-strong bg-surface-raised p-ds-05 text-left\">\n <p className=\"text-ds-sm mb-ds-03 font-semibold text-surface-fg\">\n Stack Trace (development only)\n </p>\n <pre className=\"whitespace-pre-wrap text-ds-sm text-surface-fg-subtle\">\n {stack}\n </pre>\n </div>\n )}\n </div>\n </div>\n )\n},\n)\n\nErrorDisplay.displayName = 'ErrorDisplay'\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode\n /** Optional callback when the user clicks \"Try Again\" */\n onReset?: () => void\n /** Optional custom fallback — receives the caught error. Defaults to ErrorDisplay. */\n fallback?: (props: { error: unknown; onReset?: () => void }) => React.ReactNode\n}\n\ninterface ErrorBoundaryState {\n error: unknown | null\n}\n\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: null }\n }\n\n static getDerivedStateFromError(error: unknown): ErrorBoundaryState {\n return { error }\n }\n\n private handleReset = () => {\n this.setState({ error: null })\n this.props.onReset?.()\n }\n\n render() {\n if (this.state.error !== null) {\n if (this.props.fallback) {\n return this.props.fallback({ error: this.state.error, onReset: this.handleReset })\n }\n return <ErrorDisplay error={this.state.error} onReset={this.handleReset} />\n }\n return this.props.children\n }\n}\n\nexport { ErrorDisplay, ErrorBoundary }\nexport type { ErrorBoundaryProps }\n"],"mappings":"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"}
1
+ {"version":3,"file":"error-boundary.js","names":[],"sources":["../../src/composed/error-boundary.tsx"],"sourcesContent":["'use client'\n\nimport { IconAlertTriangle, IconBan, IconFileUnknown, IconServerOff } from '@tabler/icons-react'\nimport * as React from 'react'\n\nimport { Button } from '../ui/button'\nimport { Icon } from '../ui/icon'\nimport { cn } from '../ui/lib/utils'\n\ndeclare const process: { env: { NODE_ENV?: string } } | undefined\n\nexport interface ErrorDisplayProps extends React.ComponentPropsWithoutRef<'div'> {\n error: unknown\n onReset?: () => void\n}\n\nfunction getStatusFromError(error: unknown): number | undefined {\n if (\n error &&\n typeof error === 'object' &&\n 'status' in error &&\n typeof (error as Record<string, unknown>).status === 'number'\n ) {\n return (error as Record<string, unknown>).status as number\n }\n return undefined\n}\n\nfunction getMessageFromError(error: unknown): string | undefined {\n if (error instanceof Error) {\n return error.message\n }\n if (\n error &&\n typeof error === 'object' &&\n 'data' in error\n ) {\n const data = (error as Record<string, unknown>).data\n if (typeof data === 'string') return data\n if (data && typeof data === 'object' && 'message' in data) {\n return String((data as Record<string, unknown>).message)\n }\n }\n if (typeof error === 'string') {\n return error\n }\n return undefined\n}\n\nfunction getStackFromError(error: unknown): string | undefined {\n if (error instanceof Error) {\n return error.stack\n }\n return undefined\n}\n\nfunction getErrorConfig(status?: number) {\n switch (status) {\n case 404:\n return {\n icon: IconFileUnknown,\n title: 'Page not found',\n message:\n 'The page you are looking for does not exist or has been moved.',\n bgClass: 'bg-accent-2',\n iconClass: 'text-accent-11',\n }\n case 403:\n return {\n icon: IconBan,\n title: 'Access denied',\n message:\n 'You do not have permission to view this page. Contact your administrator if you believe this is a mistake.',\n bgClass: 'bg-warning-3',\n iconClass: 'text-warning-11',\n }\n case 500:\n return {\n icon: IconServerOff,\n title: 'Server error',\n message:\n 'Something went wrong on our end. Please try again later or contact support if the issue persists.',\n bgClass: 'bg-error-3',\n iconClass: 'text-error-11',\n }\n default:\n return {\n icon: IconAlertTriangle,\n title: 'Something went wrong',\n message:\n 'An unexpected error occurred. Please try again or go back to the home page.',\n bgClass: 'bg-accent-2',\n iconClass: 'text-accent-11',\n }\n }\n}\n\nconst ErrorDisplay = React.forwardRef<HTMLDivElement, ErrorDisplayProps>(\n function ErrorDisplay({ error, onReset, className, ...props }, ref) {\n const status = getStatusFromError(error)\n const message = getMessageFromError(error)\n const stack = getStackFromError(error)\n const isDev =\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV === 'development'\n\n const errorConfig = getErrorConfig(status)\n const ErrorIcon = errorConfig.icon\n\n return (\n <div ref={ref} {...props} className={cn(\"flex min-h-[60vh] items-center justify-center p-ds-05\", className)}>\n <div\n className=\"flex w-full max-w-lg flex-col items-center gap-ds-06 rounded-ds-xl border border-surface-border-strong bg-surface-raised p-ds-07 text-center shadow-raised\"\n >\n {/* Error Icon */}\n <div\n className={cn(\n 'flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-2xl',\n errorConfig.bgClass,\n )}\n >\n <Icon\n icon={ErrorIcon}\n size=\"2xl\"\n className={errorConfig.iconClass}\n />\n </div>\n\n {/* Error IconInfoCircle */}\n <div className=\"flex flex-col gap-ds-03\">\n {status && (\n <span className=\"text-ds-sm text-surface-fg-subtle\">\n Error {status}\n </span>\n )}\n <h2 className=\"text-ds-2xl font-semibold text-surface-fg\">\n {errorConfig.title}\n </h2>\n <p className=\"text-ds-base text-surface-fg-subtle\">\n {message || errorConfig.message}\n </p>\n </div>\n\n {/* Actions */}\n {onReset && (\n <div className=\"flex items-center gap-ds-04\">\n <Button\n variant=\"outline\"\n size=\"md\"\n onClick={onReset}\n >\n Try Again\n </Button>\n </div>\n )}\n\n {/* Dev stack trace */}\n {isDev && stack && (\n <div className=\"w-full overflow-auto rounded-ds-lg border border-surface-border-strong bg-surface-raised p-ds-05 text-left\">\n <p className=\"text-ds-sm mb-ds-03 font-semibold text-surface-fg\">\n Stack Trace (development only)\n </p>\n <pre className=\"whitespace-pre-wrap text-ds-sm text-surface-fg-subtle\">\n {stack}\n </pre>\n </div>\n )}\n </div>\n </div>\n )\n},\n)\n\nErrorDisplay.displayName = 'ErrorDisplay'\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode\n /** Optional callback when the user clicks \"Try Again\" */\n onReset?: () => void\n /** Optional custom fallback — receives the caught error. Defaults to ErrorDisplay. */\n fallback?: (props: { error: unknown; onReset?: () => void }) => React.ReactNode\n}\n\ninterface ErrorBoundaryState {\n error: unknown | null\n}\n\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: null }\n }\n\n static getDerivedStateFromError(error: unknown): ErrorBoundaryState {\n return { error }\n }\n\n private handleReset = () => {\n this.setState({ error: null })\n this.props.onReset?.()\n }\n\n render() {\n if (this.state.error !== null) {\n if (this.props.fallback) {\n return this.props.fallback({ error: this.state.error, onReset: this.handleReset })\n }\n return <ErrorDisplay error={this.state.error} onReset={this.handleReset} />\n }\n return this.props.children\n }\n}\n\nexport { ErrorBoundary,ErrorDisplay }\nexport type { ErrorBoundaryProps }\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-node.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/emoji-node.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAInC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAgCD,eAAO,MAAM,SAAS,gBAmDpB,CAAA"}
1
+ {"version":3,"file":"emoji-node.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/emoji-node.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAKnC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAgCD,eAAO,MAAM,SAAS,gBAmDpB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-suggestion.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/emoji-suggestion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMxC,OAAO,EAAE,KAAK,aAAa,EAAuE,MAAM,cAAc,CAAA;AAGtH,YAAY,EAAE,aAAa,IAAI,mBAAmB,EAAE,CAAA;AAwJpD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,GAAG,SAAW,uBA+BnD"}
1
+ {"version":3,"file":"emoji-suggestion.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/emoji-suggestion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAOxC,OAAO,EAAiB,KAAK,aAAa,EAAuD,MAAM,cAAc,CAAA;AAGrH,YAAY,EAAE,aAAa,IAAI,mBAAmB,EAAE,CAAA;AAwJpD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,GAAG,SAAW,uBA+BnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-attachment.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/file-attachment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AA+BpD,eAAO,MAAM,cAAc,gBAwBzB,CAAA"}
1
+ {"version":3,"file":"file-attachment.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/file-attachment.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,IAAI,EAAE,MAAM,cAAc,CAAA;AA+BnD,eAAO,MAAM,cAAc,gBAwBzB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { SuggestionProps, SuggestionKeyDownProps } from '@tiptap/suggestion';
2
+ import { SuggestionKeyDownProps, SuggestionProps } from '@tiptap/suggestion';
3
3
  import { MentionItem } from '../rich-text-editor';
4
4
  export declare function createSuggestionRenderer(onMentionSelect?: (item: MentionItem) => void): () => {
5
5
  onStart: (props: SuggestionProps<MentionItem>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"mention-suggestion.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/mention-suggestion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAIjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAmEtD,wBAAgB,wBAAwB,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;qBAO/D,eAAe,CAAC,WAAW,CAAC;sBAyB3B,eAAe,CAAC,WAAW,CAAC;uBAqB3B,sBAAsB;;EAuB9C"}
1
+ {"version":3,"file":"mention-suggestion.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/mention-suggestion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAC,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAKhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAmEtD,wBAAgB,wBAAwB,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;qBAO/D,eAAe,CAAC,WAAW,CAAC;sBAyB3B,eAAe,CAAC,WAAW,CAAC;uBAqB3B,sBAAsB;;EAuB9C"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Extension, Editor } from '@tiptap/core';
2
+ import { Editor, Extension } from '@tiptap/core';
3
3
  import * as React from 'react';
4
4
  export interface SlashCommand {
5
5
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"slash-command.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/slash-command.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAwMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,EAAE,uBAoCtE"}
1
+ {"version":3,"file":"slash-command.d.ts","sourceRoot":"","sources":["../../../src/composed/extensions/slash-command.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAwMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,EAAE,uBAoCtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"audio-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/audio-preview.tsx"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8KnI"}
1
+ {"version":3,"file":"audio-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/audio-preview.tsx"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8KnI"}
@@ -1 +1 @@
1
- {"version":3,"file":"document-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/document-preview.tsx"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CAmG3I"}
1
+ {"version":3,"file":"document-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/document-preview.tsx"],"names":[],"mappings":"AAiBA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CAmG3I"}
@@ -1 +1 @@
1
- {"version":3,"file":"embed-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/embed-preview.tsx"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8BlI"}
1
+ {"version":3,"file":"embed-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/embed-preview.tsx"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8BlI"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/image-preview.tsx"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA6GzH"}
1
+ {"version":3,"file":"image-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/image-preview.tsx"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA6GzH"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/shared.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,2CAa/E;AAMD,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAcjG;AAED,wBAAgB,cAAc,4CAE7B;AAOD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,cAAc,EACd,YAAY,EACZ,OAAiB,GAClB,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC3B,2CAuEA;AAMD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/shared.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,2CAa/E;AAMD,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAcjG;AAED,wBAAgB,cAAc,4CAE7B;AAOD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,cAAc,EACd,YAAY,EACZ,OAAiB,GAClB,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC3B,2CAuEA;AAMD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"video-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/video-preview.tsx"],"names":[],"mappings":"AAmBA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8NtG"}
1
+ {"version":3,"file":"video-preview.d.ts","sourceRoot":"","sources":["../../../src/composed/file-preview/video-preview.tsx"],"names":[],"mappings":"AAoBA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CA8NtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-preview.d.ts","sourceRoot":"","sources":["../../src/composed/file-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC7F,GAAG,EAAE,MAAM,CAAA;IACX,iDAAiD;IACjD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AA8CD,iBAAS,WAAW,CAAC,EACnB,GAAG,EACH,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,GAAG,EACH,WAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAuClB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,YAAY,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"file-preview.d.ts","sourceRoot":"","sources":["../../src/composed/file-preview.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC7F,GAAG,EAAE,MAAM,CAAA;IACX,iDAAiD;IACjD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AA8CD,iBAAS,WAAW,CAAC,EACnB,GAAG,EACH,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,GAAG,EACH,WAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAuClB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,YAAY,EAAE,QAAQ,EAAE,CAAA"}
@@ -42,5 +42,5 @@ export interface FilterMultiSelectProps {
42
42
  className?: string;
43
43
  }
44
44
  declare function FilterMultiSelect({ label, value, onValueChange, options, className, }: FilterMultiSelectProps): import("react/jsx-runtime").JSX.Element;
45
- export { FilterBar, FilterSelect, FilterMultiSelect };
45
+ export { FilterBar, FilterMultiSelect, FilterSelect };
46
46
  //# sourceMappingURL=filter-bar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-bar.d.ts","sourceRoot":"","sources":["../../src/composed/filter-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAQvC;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB;AAED,QAAA,MAAM,SAAS,uFAsCb,CAAA;AAOF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,QAAgB,EAChB,SAAS,GACV,EAAE,iBAAiB,2CAsBnB;AAMD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,SAAS,GACV,EAAE,sBAAsB,2CAsDxB;AAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"filter-bar.d.ts","sourceRoot":"","sources":["../../src/composed/filter-bar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAQvC;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB;AAED,QAAA,MAAM,SAAS,uFAsCb,CAAA;AAOF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,QAAgB,EAChB,SAAS,GACV,EAAE,iBAAiB,2CAsBnB;AAMD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,SAAS,GACV,EAAE,sBAAsB,2CAsDxB;AAED,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAC,YAAY,EAAE,CAAA"}
@@ -1,96 +1,96 @@
1
1
  "use client";
2
- import { a as e } from "../_chunks/framer.js";
3
- import { springs as t } from "../ui/lib/motion.js";
4
- import { cn as n } from "../ui/lib/utils.js";
5
- import { Icon as r } from "../ui/icon.js";
6
- import { n as i } from "../_chunks/badge-group.js";
7
- import { Button as a } from "../ui/button.js";
2
+ import { springs as e } from "../ui/lib/motion.js";
3
+ import { cn as t } from "../ui/lib/utils.js";
4
+ import { Icon as n } from "../ui/icon.js";
5
+ import { n as r } from "../_chunks/badge-group.js";
6
+ import { Button as i } from "../ui/button.js";
7
+ import { SearchInput as a } from "../ui/search-input.js";
8
8
  import { Select as o, SelectContent as s, SelectItem as c, SelectTrigger as l, SelectValue as u } from "../ui/select.js";
9
- import { SearchInput as d } from "../ui/search-input.js";
10
- import { MultiSelectPopover as f } from "./multi-select-popover.js";
11
- import * as p from "react";
12
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
13
- import { IconChevronDown as g } from "@tabler/icons-react";
9
+ import { MultiSelectPopover as d } from "./multi-select-popover.js";
10
+ import * as f from "react";
11
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
+ import { IconChevronDown as h } from "@tabler/icons-react";
13
+ import { motion as g } from "framer-motion";
14
14
  //#region src/composed/filter-bar.tsx
15
- var _ = p.createContext({ size: "sm" }), v = p.forwardRef(({ searchValue: e, onSearchChange: t, searchPlaceholder: r = "Search...", onClearAll: i, size: o = "sm", children: s, className: c, ...l }, u) => /* @__PURE__ */ m(_.Provider, {
16
- value: { size: o },
17
- children: /* @__PURE__ */ h("div", {
18
- ref: u,
19
- className: n("flex flex-wrap items-center gap-ds-03", c),
15
+ var _ = f.createContext({ size: "sm" }), v = f.forwardRef(({ searchValue: e, onSearchChange: n, searchPlaceholder: r = "Search...", onClearAll: o, size: s = "sm", children: c, className: l, ...u }, d) => /* @__PURE__ */ p(_.Provider, {
16
+ value: { size: s },
17
+ children: /* @__PURE__ */ m("div", {
18
+ ref: d,
19
+ className: t("flex flex-wrap items-center gap-ds-03", l),
20
20
  role: "toolbar",
21
21
  "aria-label": "Filters",
22
- ...l,
22
+ ...u,
23
23
  children: [
24
- t && /* @__PURE__ */ m(d, {
25
- size: o,
24
+ n && /* @__PURE__ */ p(a, {
25
+ size: s,
26
26
  value: e,
27
- onChange: (e) => t(e.target.value),
28
- onClear: e ? () => t("") : void 0,
27
+ onChange: (e) => n(e.target.value),
28
+ onClear: e ? () => n("") : void 0,
29
29
  placeholder: r,
30
30
  className: "w-48"
31
31
  }),
32
- s,
33
- i && /* @__PURE__ */ m(a, {
32
+ c,
33
+ o && /* @__PURE__ */ p(i, {
34
34
  variant: "ghost",
35
- size: o,
36
- onClick: i,
35
+ size: s,
36
+ onClick: o,
37
37
  children: "Clear all"
38
38
  })
39
39
  ]
40
40
  })
41
41
  }));
42
42
  v.displayName = "FilterBar";
43
- function y({ label: e, value: t, onValueChange: r, options: i, allLabel: a = "All", className: d }) {
44
- let { size: f } = p.useContext(_);
45
- return /* @__PURE__ */ h(o, {
46
- value: t,
43
+ function y({ label: e, value: n, onValueChange: r, options: i, allLabel: a = "All", className: d }) {
44
+ let { size: h } = f.useContext(_);
45
+ return /* @__PURE__ */ m(o, {
46
+ value: n,
47
47
  onValueChange: r,
48
- children: [/* @__PURE__ */ m(l, {
49
- size: f,
50
- className: n("w-40", t !== "" && t !== "all" && "border-accent-7", d),
51
- children: /* @__PURE__ */ m(u, { placeholder: e })
52
- }), /* @__PURE__ */ h(s, { children: [/* @__PURE__ */ m(c, {
48
+ children: [/* @__PURE__ */ p(l, {
49
+ size: h,
50
+ className: t("w-40", n !== "" && n !== "all" && "border-accent-7", d),
51
+ children: /* @__PURE__ */ p(u, { placeholder: e })
52
+ }), /* @__PURE__ */ m(s, { children: [/* @__PURE__ */ p(c, {
53
53
  value: "all",
54
54
  children: a
55
- }), i.map((e) => /* @__PURE__ */ m(c, {
55
+ }), i.map((e) => /* @__PURE__ */ p(c, {
56
56
  value: e.value,
57
57
  children: e.label
58
58
  }, e.value))] })]
59
59
  });
60
60
  }
61
- function b({ label: a, value: o, onValueChange: s, options: c, className: l }) {
62
- let { size: u } = p.useContext(_), d = o.length;
63
- return /* @__PURE__ */ m(f, {
64
- items: p.useMemo(() => c.map((e) => ({
61
+ function b({ label: i, value: a, onValueChange: o, options: s, className: c }) {
62
+ let { size: l } = f.useContext(_), u = a.length;
63
+ return /* @__PURE__ */ p(d, {
64
+ items: f.useMemo(() => s.map((e) => ({
65
65
  id: e.value,
66
66
  label: e.label
67
- })), [c]),
68
- value: o,
69
- onValueChange: s,
70
- searchPlaceholder: `Search ${a.toLowerCase()}...`,
71
- children: /* @__PURE__ */ h("button", {
67
+ })), [s]),
68
+ value: a,
69
+ onValueChange: o,
70
+ searchPlaceholder: `Search ${i.toLowerCase()}...`,
71
+ children: /* @__PURE__ */ m("button", {
72
72
  type: "button",
73
- className: n("flex items-center justify-between gap-ds-02 whitespace-nowrap rounded-ds-md border bg-surface-raised-hover text-surface-fg", "hover:bg-surface-raised-active transition-colors duration-fast-01 ease-productive-standard", {
73
+ className: t("flex items-center justify-between gap-ds-02 whitespace-nowrap rounded-ds-md border bg-surface-raised-hover text-surface-fg", "hover:bg-surface-raised-active transition-colors duration-fast-01 ease-productive-standard", {
74
74
  xs: "h-ds-xs-plus text-ds-sm px-ds-02",
75
75
  sm: "h-ds-sm text-ds-sm px-ds-03",
76
76
  md: "h-ds-md text-ds-md px-ds-04"
77
- }[u], d > 0 ? "border-accent-7" : "border-surface-border-strong", "w-40", l),
78
- children: [/* @__PURE__ */ h("span", {
77
+ }[l], u > 0 ? "border-accent-7" : "border-surface-border-strong", "w-40", c),
78
+ children: [/* @__PURE__ */ m("span", {
79
79
  className: "flex items-center gap-ds-02 truncate",
80
- children: [/* @__PURE__ */ m("span", { children: a }), d > 0 && /* @__PURE__ */ m(e.span, {
80
+ children: [/* @__PURE__ */ p("span", { children: i }), u > 0 && /* @__PURE__ */ p(g.span, {
81
81
  initial: { scale: .8 },
82
82
  animate: { scale: 1 },
83
- transition: t.bouncy,
83
+ transition: e.bouncy,
84
84
  className: "inline-flex",
85
- children: /* @__PURE__ */ m(i, {
85
+ children: /* @__PURE__ */ p(r, {
86
86
  size: "xs",
87
87
  variant: "solid",
88
88
  className: "ml-ds-01",
89
- children: d
89
+ children: u
90
90
  })
91
- }, d)]
92
- }), /* @__PURE__ */ m(r, {
93
- icon: g,
91
+ }, u)]
92
+ }), /* @__PURE__ */ p(n, {
93
+ icon: h,
94
94
  size: "xs",
95
95
  className: "opacity-50 shrink-0"
96
96
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"filter-bar.js","names":[],"sources":["../../src/composed/filter-bar.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { motion } from 'framer-motion'\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { Icon } from '../ui/icon'\nimport { cn } from '../ui/lib/utils'\nimport { springs } from '../ui/lib/motion'\nimport { SearchInput } from '../ui/search-input'\nimport { Button } from '../ui/button'\nimport { Badge } from '../ui/badge'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select'\nimport { MultiSelectPopover, type MultiSelectItem } from './multi-select-popover'\n\n// ============================================================\n// Context\n// ============================================================\n\ntype FilterBarSize = 'xs' | 'sm' | 'md'\n\nconst FilterBarContext = React.createContext<{ size: FilterBarSize }>({ size: 'sm' })\n\n// ============================================================\n// FilterBar\n// ============================================================\n\n/**\n * A toolbar for filtering lists/tables. Composes a search input, slot-based\n * filter controls (Select, MultiSelect), and an optional \"Clear all\" button.\n * Size is propagated to all child controls via context.\n */\nexport interface FilterBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Controlled search input value. Omit `onSearchChange` to hide the search input entirely. */\n searchValue?: string\n /** Called when the search input changes. If not provided, the search input is hidden. */\n onSearchChange?: (value: string) => void\n searchPlaceholder?: string\n /** When provided, a \"Clear all\" button appears that calls this handler. */\n onClearAll?: () => void\n /** Size propagated to all child controls. @default 'sm' */\n size?: FilterBarSize\n}\n\nconst FilterBar = React.forwardRef<HTMLDivElement, FilterBarProps>(({\n searchValue,\n onSearchChange,\n searchPlaceholder = 'Search...',\n onClearAll,\n size = 'sm',\n children,\n className,\n ...props\n}, ref) => {\n return (\n <FilterBarContext.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center gap-ds-03', className)}\n role=\"toolbar\"\n aria-label=\"Filters\"\n {...props}\n >\n {onSearchChange && (\n <SearchInput\n size={size}\n value={searchValue}\n onChange={(e) => onSearchChange(e.target.value)}\n onClear={searchValue ? () => onSearchChange('') : undefined}\n placeholder={searchPlaceholder}\n className=\"w-48\"\n />\n )}\n {children}\n {onClearAll && (\n <Button variant=\"ghost\" size={size} onClick={onClearAll}>\n Clear all\n </Button>\n )}\n </div>\n </FilterBarContext.Provider>\n )\n})\nFilterBar.displayName = 'FilterBar'\n\n// ============================================================\n// FilterSelect\n// ============================================================\n\nexport interface FilterSelectProps {\n label: string\n value: string\n onValueChange: (value: string) => void\n options: { value: string; label: string }[]\n /** Label for the \"all\" option @default 'All' */\n allLabel?: string\n className?: string\n}\n\nfunction FilterSelect({\n label,\n value,\n onValueChange,\n options,\n allLabel = 'All',\n className,\n}: FilterSelectProps) {\n const { size } = React.useContext(FilterBarContext)\n const isFiltered = value !== '' && value !== 'all'\n\n return (\n <Select value={value} onValueChange={onValueChange}>\n <SelectTrigger\n size={size}\n className={cn('w-40', isFiltered && 'border-accent-7', className)}\n >\n <SelectValue placeholder={label} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">{allLabel}</SelectItem>\n {options.map((o) => (\n <SelectItem key={o.value} value={o.value}>\n {o.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n\n// ============================================================\n// FilterMultiSelect\n// ============================================================\n\nexport interface FilterMultiSelectProps {\n label: string\n value: string[]\n onValueChange: (values: string[]) => void\n options: { value: string; label: string }[]\n className?: string\n}\n\nfunction FilterMultiSelect({\n label,\n value,\n onValueChange,\n options,\n className,\n}: FilterMultiSelectProps) {\n const { size } = React.useContext(FilterBarContext)\n const count = value.length\n\n const items: MultiSelectItem[] = React.useMemo(\n () => options.map((o) => ({ id: o.value, label: o.label })),\n [options],\n )\n\n // Trigger button sized by FilterBar context\n const triggerSizeClasses: Record<string, string> = {\n xs: 'h-ds-xs-plus text-ds-sm px-ds-02',\n sm: 'h-ds-sm text-ds-sm px-ds-03',\n md: 'h-ds-md text-ds-md px-ds-04',\n }\n\n return (\n <MultiSelectPopover\n items={items}\n value={value}\n onValueChange={onValueChange}\n searchPlaceholder={`Search ${label.toLowerCase()}...`}\n >\n <button\n type=\"button\"\n className={cn(\n 'flex items-center justify-between gap-ds-02 whitespace-nowrap rounded-ds-md border bg-surface-raised-hover text-surface-fg',\n 'hover:bg-surface-raised-active transition-colors duration-fast-01 ease-productive-standard',\n triggerSizeClasses[size],\n count > 0 ? 'border-accent-7' : 'border-surface-border-strong',\n 'w-40',\n className,\n )}\n >\n <span className=\"flex items-center gap-ds-02 truncate\">\n <span>{label}</span>\n {count > 0 && (\n <motion.span\n key={count}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={springs.bouncy}\n className=\"inline-flex\"\n >\n <Badge size=\"xs\" variant=\"solid\" className=\"ml-ds-01\">\n {count}\n </Badge>\n </motion.span>\n )}\n </span>\n <Icon icon={IconChevronDown} size=\"xs\" className=\"opacity-50 shrink-0\" />\n </button>\n </MultiSelectPopover>\n )\n}\n\nexport { FilterBar, FilterSelect, FilterMultiSelect }\n"],"mappings":";;;;;;;;;;;;;;AA0BA,IAAM,IAAmB,EAAM,cAAuC,EAAE,MAAM,MAAM,CAAC,EAuB/E,IAAY,EAAM,YAA4C,EAClE,gBACA,mBACA,uBAAoB,aACpB,eACA,UAAO,MACP,aACA,cACA,GAAG,KACF,MAEC,kBAAC,EAAiB,UAAlB;CAA2B,OAAO,EAAE,SAAM;WACxC,kBAAC,OAAD;EACO;EACL,WAAW,EAAG,yCAAyC,EAAU;EACjE,MAAK;EACL,cAAW;EACX,GAAI;YALN;GAOG,KACC,kBAAC,GAAD;IACQ;IACN,OAAO;IACP,WAAW,MAAM,EAAe,EAAE,OAAO,MAAM;IAC/C,SAAS,UAAoB,EAAe,GAAG,GAAG,KAAA;IAClD,aAAa;IACb,WAAU;IACV,CAAA;GAEH;GACA,KACC,kBAAC,GAAD;IAAQ,SAAQ;IAAc;IAAM,SAAS;cAAY;IAEhD,CAAA;GAEP;;CACoB,CAAA,CAE9B;AACF,EAAU,cAAc;AAgBxB,SAAS,EAAa,EACpB,UACA,UACA,kBACA,YACA,cAAW,OACX,gBACoB;CACpB,IAAM,EAAE,YAAS,EAAM,WAAW,EAAiB;AAGnD,QACE,kBAAC,GAAD;EAAe;EAAsB;YAArC,CACE,kBAAC,GAAD;GACQ;GACN,WAAW,EAAG,QAND,MAAU,MAAM,MAAU,SAMH,mBAAmB,EAAU;aAEjE,kBAAC,GAAD,EAAa,aAAa,GAAS,CAAA;GACrB,CAAA,EAChB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;GAAY,OAAM;aAAO;GAAsB,CAAA,EAC9C,EAAQ,KAAK,MACZ,kBAAC,GAAD;GAA0B,OAAO,EAAE;aAChC,EAAE;GACQ,EAFI,EAAE,MAEN,CACb,CACY,EAAA,CAAA,CACT;;;AAgBb,SAAS,EAAkB,EACzB,UACA,UACA,kBACA,YACA,gBACyB;CACzB,IAAM,EAAE,YAAS,EAAM,WAAW,EAAiB,EAC7C,IAAQ,EAAM;AAcpB,QACE,kBAAC,GAAD;EACS,OAdsB,EAAM,cAC/B,EAAQ,KAAK,OAAO;GAAE,IAAI,EAAE;GAAO,OAAO,EAAE;GAAO,EAAE,EAC3D,CAAC,EAAQ,CACV;EAYU;EACQ;EACf,mBAAmB,UAAU,EAAM,aAAa,CAAC;YAEjD,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EACT,8HACA,8FAjB2C;IACjD,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAc0B,IACnB,IAAQ,IAAI,oBAAoB,gCAChC,QACA,EACD;aATH,CAWE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD,EAAA,UAAO,GAAa,CAAA,EACnB,IAAQ,KACP,kBAAC,EAAO,MAAR;KAEE,SAAS,EAAE,OAAO,IAAK;KACvB,SAAS,EAAE,OAAO,GAAG;KACrB,YAAY,EAAQ;KACpB,WAAU;eAEV,kBAAC,GAAD;MAAO,MAAK;MAAK,SAAQ;MAAQ,WAAU;gBACxC;MACK,CAAA;KACI,EATP,EASO,CAEX;OACP,kBAAC,GAAD;IAAM,MAAM;IAAiB,MAAK;IAAK,WAAU;IAAwB,CAAA,CAClE;;EACU,CAAA"}
1
+ {"version":3,"file":"filter-bar.js","names":[],"sources":["../../src/composed/filter-bar.tsx"],"sourcesContent":["'use client'\n\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { Badge } from '../ui/badge'\nimport { Button } from '../ui/button'\nimport { Icon } from '../ui/icon'\nimport { springs } from '../ui/lib/motion'\nimport { cn } from '../ui/lib/utils'\nimport { SearchInput } from '../ui/search-input'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select'\nimport { type MultiSelectItem,MultiSelectPopover } from './multi-select-popover'\n\n// ============================================================\n// Context\n// ============================================================\n\ntype FilterBarSize = 'xs' | 'sm' | 'md'\n\nconst FilterBarContext = React.createContext<{ size: FilterBarSize }>({ size: 'sm' })\n\n// ============================================================\n// FilterBar\n// ============================================================\n\n/**\n * A toolbar for filtering lists/tables. Composes a search input, slot-based\n * filter controls (Select, MultiSelect), and an optional \"Clear all\" button.\n * Size is propagated to all child controls via context.\n */\nexport interface FilterBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Controlled search input value. Omit `onSearchChange` to hide the search input entirely. */\n searchValue?: string\n /** Called when the search input changes. If not provided, the search input is hidden. */\n onSearchChange?: (value: string) => void\n searchPlaceholder?: string\n /** When provided, a \"Clear all\" button appears that calls this handler. */\n onClearAll?: () => void\n /** Size propagated to all child controls. @default 'sm' */\n size?: FilterBarSize\n}\n\nconst FilterBar = React.forwardRef<HTMLDivElement, FilterBarProps>(({\n searchValue,\n onSearchChange,\n searchPlaceholder = 'Search...',\n onClearAll,\n size = 'sm',\n children,\n className,\n ...props\n}, ref) => {\n return (\n <FilterBarContext.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center gap-ds-03', className)}\n role=\"toolbar\"\n aria-label=\"Filters\"\n {...props}\n >\n {onSearchChange && (\n <SearchInput\n size={size}\n value={searchValue}\n onChange={(e) => onSearchChange(e.target.value)}\n onClear={searchValue ? () => onSearchChange('') : undefined}\n placeholder={searchPlaceholder}\n className=\"w-48\"\n />\n )}\n {children}\n {onClearAll && (\n <Button variant=\"ghost\" size={size} onClick={onClearAll}>\n Clear all\n </Button>\n )}\n </div>\n </FilterBarContext.Provider>\n )\n})\nFilterBar.displayName = 'FilterBar'\n\n// ============================================================\n// FilterSelect\n// ============================================================\n\nexport interface FilterSelectProps {\n label: string\n value: string\n onValueChange: (value: string) => void\n options: { value: string; label: string }[]\n /** Label for the \"all\" option @default 'All' */\n allLabel?: string\n className?: string\n}\n\nfunction FilterSelect({\n label,\n value,\n onValueChange,\n options,\n allLabel = 'All',\n className,\n}: FilterSelectProps) {\n const { size } = React.useContext(FilterBarContext)\n const isFiltered = value !== '' && value !== 'all'\n\n return (\n <Select value={value} onValueChange={onValueChange}>\n <SelectTrigger\n size={size}\n className={cn('w-40', isFiltered && 'border-accent-7', className)}\n >\n <SelectValue placeholder={label} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">{allLabel}</SelectItem>\n {options.map((o) => (\n <SelectItem key={o.value} value={o.value}>\n {o.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n\n// ============================================================\n// FilterMultiSelect\n// ============================================================\n\nexport interface FilterMultiSelectProps {\n label: string\n value: string[]\n onValueChange: (values: string[]) => void\n options: { value: string; label: string }[]\n className?: string\n}\n\nfunction FilterMultiSelect({\n label,\n value,\n onValueChange,\n options,\n className,\n}: FilterMultiSelectProps) {\n const { size } = React.useContext(FilterBarContext)\n const count = value.length\n\n const items: MultiSelectItem[] = React.useMemo(\n () => options.map((o) => ({ id: o.value, label: o.label })),\n [options],\n )\n\n // Trigger button sized by FilterBar context\n const triggerSizeClasses: Record<string, string> = {\n xs: 'h-ds-xs-plus text-ds-sm px-ds-02',\n sm: 'h-ds-sm text-ds-sm px-ds-03',\n md: 'h-ds-md text-ds-md px-ds-04',\n }\n\n return (\n <MultiSelectPopover\n items={items}\n value={value}\n onValueChange={onValueChange}\n searchPlaceholder={`Search ${label.toLowerCase()}...`}\n >\n <button\n type=\"button\"\n className={cn(\n 'flex items-center justify-between gap-ds-02 whitespace-nowrap rounded-ds-md border bg-surface-raised-hover text-surface-fg',\n 'hover:bg-surface-raised-active transition-colors duration-fast-01 ease-productive-standard',\n triggerSizeClasses[size],\n count > 0 ? 'border-accent-7' : 'border-surface-border-strong',\n 'w-40',\n className,\n )}\n >\n <span className=\"flex items-center gap-ds-02 truncate\">\n <span>{label}</span>\n {count > 0 && (\n <motion.span\n key={count}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={springs.bouncy}\n className=\"inline-flex\"\n >\n <Badge size=\"xs\" variant=\"solid\" className=\"ml-ds-01\">\n {count}\n </Badge>\n </motion.span>\n )}\n </span>\n <Icon icon={IconChevronDown} size=\"xs\" className=\"opacity-50 shrink-0\" />\n </button>\n </MultiSelectPopover>\n )\n}\n\nexport { FilterBar, FilterMultiSelect,FilterSelect }\n"],"mappings":";;;;;;;;;;;;;;AA2BA,IAAM,IAAmB,EAAM,cAAuC,EAAE,MAAM,MAAM,CAAC,EAuB/E,IAAY,EAAM,YAA4C,EAClE,gBACA,mBACA,uBAAoB,aACpB,eACA,UAAO,MACP,aACA,cACA,GAAG,KACF,MAEC,kBAAC,EAAiB,UAAlB;CAA2B,OAAO,EAAE,SAAM;WACxC,kBAAC,OAAD;EACO;EACL,WAAW,EAAG,yCAAyC,EAAU;EACjE,MAAK;EACL,cAAW;EACX,GAAI;YALN;GAOG,KACC,kBAAC,GAAD;IACQ;IACN,OAAO;IACP,WAAW,MAAM,EAAe,EAAE,OAAO,MAAM;IAC/C,SAAS,UAAoB,EAAe,GAAG,GAAG,KAAA;IAClD,aAAa;IACb,WAAU;IACV,CAAA;GAEH;GACA,KACC,kBAAC,GAAD;IAAQ,SAAQ;IAAc;IAAM,SAAS;cAAY;IAEhD,CAAA;GAEP;;CACoB,CAAA,CAE9B;AACF,EAAU,cAAc;AAgBxB,SAAS,EAAa,EACpB,UACA,UACA,kBACA,YACA,cAAW,OACX,gBACoB;CACpB,IAAM,EAAE,YAAS,EAAM,WAAW,EAAiB;AAGnD,QACE,kBAAC,GAAD;EAAe;EAAsB;YAArC,CACE,kBAAC,GAAD;GACQ;GACN,WAAW,EAAG,QAND,MAAU,MAAM,MAAU,SAMH,mBAAmB,EAAU;aAEjE,kBAAC,GAAD,EAAa,aAAa,GAAS,CAAA;GACrB,CAAA,EAChB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;GAAY,OAAM;aAAO;GAAsB,CAAA,EAC9C,EAAQ,KAAK,MACZ,kBAAC,GAAD;GAA0B,OAAO,EAAE;aAChC,EAAE;GACQ,EAFI,EAAE,MAEN,CACb,CACY,EAAA,CAAA,CACT;;;AAgBb,SAAS,EAAkB,EACzB,UACA,UACA,kBACA,YACA,gBACyB;CACzB,IAAM,EAAE,YAAS,EAAM,WAAW,EAAiB,EAC7C,IAAQ,EAAM;AAcpB,QACE,kBAAC,GAAD;EACS,OAdsB,EAAM,cAC/B,EAAQ,KAAK,OAAO;GAAE,IAAI,EAAE;GAAO,OAAO,EAAE;GAAO,EAAE,EAC3D,CAAC,EAAQ,CACV;EAYU;EACQ;EACf,mBAAmB,UAAU,EAAM,aAAa,CAAC;YAEjD,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EACT,8HACA,8FAjB2C;IACjD,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAc0B,IACnB,IAAQ,IAAI,oBAAoB,gCAChC,QACA,EACD;aATH,CAWE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD,EAAA,UAAO,GAAa,CAAA,EACnB,IAAQ,KACP,kBAAC,EAAO,MAAR;KAEE,SAAS,EAAE,OAAO,IAAK;KACvB,SAAS,EAAE,OAAO,GAAG;KACrB,YAAY,EAAQ;KACpB,WAAU;eAEV,kBAAC,GAAD;MAAO,MAAK;MAAK,SAAQ;MAAQ,WAAU;gBACxC;MACK,CAAA;KACI,EATP,EASO,CAEX;OACP,kBAAC,GAAD;IAAM,MAAM;IAAiB,MAAK;IAAK,WAAU;IAAwB,CAAA,CAClE;;EACU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-section.d.ts","sourceRoot":"","sources":["../../src/composed/form-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAMD,QAAA,MAAM,WAAW,yFAwDf,CAAA;AAGF,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"form-section.d.ts","sourceRoot":"","sources":["../../src/composed/form-section.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAMD,QAAA,MAAM,WAAW,yFAwDf,CAAA;AAGF,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1,57 +1,57 @@
1
1
  "use client";
2
- import { a as e } from "../_chunks/framer.js";
3
- import { springs as t } from "../ui/lib/motion.js";
4
- import { cn as n } from "../ui/lib/utils.js";
5
- import { Icon as r } from "../ui/icon.js";
6
- import { Collapsible as i, CollapsibleContent as a, CollapsibleTrigger as o } from "../ui/collapsible.js";
7
- import * as s from "react";
8
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
- import { IconChevronDown as u } from "@tabler/icons-react";
2
+ import { springs as e } from "../ui/lib/motion.js";
3
+ import { cn as t } from "../ui/lib/utils.js";
4
+ import { Icon as n } from "../ui/icon.js";
5
+ import { Collapsible as r, CollapsibleContent as i, CollapsibleTrigger as a } from "../ui/collapsible.js";
6
+ import * as o from "react";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ import { IconChevronDown as l } from "@tabler/icons-react";
9
+ import { motion as u } from "framer-motion";
10
10
  //#region src/composed/form-section.tsx
11
- var d = s.forwardRef(({ title: d, description: f, collapsible: p = !1, defaultOpen: m = !0, children: h, className: g, ..._ }, v) => {
12
- let y = /* @__PURE__ */ l("div", {
11
+ var d = o.forwardRef(({ title: d, description: f, collapsible: p = !1, defaultOpen: m = !0, children: h, className: g, ..._ }, v) => {
12
+ let y = /* @__PURE__ */ c("div", {
13
13
  className: "flex flex-col gap-ds-01",
14
- children: [/* @__PURE__ */ c("span", {
14
+ children: [/* @__PURE__ */ s("span", {
15
15
  className: "text-ds-md font-semibold text-surface-fg font-sans",
16
16
  children: d
17
- }), f && /* @__PURE__ */ c("span", {
17
+ }), f && /* @__PURE__ */ s("span", {
18
18
  className: "text-ds-sm text-surface-fg-muted font-sans",
19
19
  children: f
20
20
  })]
21
- }), [b, x] = s.useState(m);
22
- return p ? /* @__PURE__ */ l(i, {
21
+ }), [b, x] = o.useState(m);
22
+ return p ? /* @__PURE__ */ c(r, {
23
23
  defaultOpen: m,
24
24
  onOpenChange: x,
25
- className: n("space-y-ds-04", g),
25
+ className: t("space-y-ds-04", g),
26
26
  ..._,
27
27
  children: [
28
- /* @__PURE__ */ l(o, {
28
+ /* @__PURE__ */ c(a, {
29
29
  className: "flex w-full items-center justify-between py-ds-02 group",
30
- children: [y, /* @__PURE__ */ c(e.span, {
30
+ children: [y, /* @__PURE__ */ s(u.span, {
31
31
  animate: { rotate: b ? 180 : 0 },
32
- transition: t.snappy,
32
+ transition: e.snappy,
33
33
  className: "inline-flex",
34
- children: /* @__PURE__ */ c(r, {
35
- icon: u,
34
+ children: /* @__PURE__ */ s(n, {
35
+ icon: l,
36
36
  size: "sm",
37
37
  className: "text-surface-fg-muted"
38
38
  })
39
39
  })]
40
40
  }),
41
- /* @__PURE__ */ c("div", { className: "border-b border-surface-border-subtle" }),
42
- /* @__PURE__ */ c(a, { children: /* @__PURE__ */ c("div", {
41
+ /* @__PURE__ */ s("div", { className: "border-b border-surface-border-subtle" }),
42
+ /* @__PURE__ */ s(i, { children: /* @__PURE__ */ s("div", {
43
43
  className: "space-y-ds-04 pt-ds-02",
44
44
  children: h
45
45
  }) })
46
46
  ]
47
- }) : /* @__PURE__ */ l("div", {
47
+ }) : /* @__PURE__ */ c("div", {
48
48
  ref: v,
49
- className: n("space-y-ds-04", g),
49
+ className: t("space-y-ds-04", g),
50
50
  ..._,
51
51
  children: [
52
52
  y,
53
- /* @__PURE__ */ c("div", { className: "border-b border-surface-border-subtle" }),
54
- /* @__PURE__ */ c("div", {
53
+ /* @__PURE__ */ s("div", { className: "border-b border-surface-border-subtle" }),
54
+ /* @__PURE__ */ s("div", {
55
55
  className: "space-y-ds-04",
56
56
  children: h
57
57
  })
@@ -1 +1 @@
1
- {"version":3,"file":"form-section.js","names":[],"sources":["../../src/composed/form-section.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { motion } from 'framer-motion'\nimport { cn } from '../ui/lib/utils'\nimport { springs } from '../ui/lib/motion'\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { Icon } from '../ui/icon'\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../ui/collapsible'\n\n// ============================================================\n// Types\n// ============================================================\n\nexport interface FormSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description?: string\n collapsible?: boolean\n /** @default true */\n defaultOpen?: boolean\n}\n\n// ============================================================\n// FormSection\n// ============================================================\n\nconst FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(({\n title,\n description,\n collapsible = false,\n defaultOpen = true,\n children,\n className,\n ...props\n}, ref) => {\n const header = (\n <div className=\"flex flex-col gap-ds-01\">\n <span className=\"text-ds-md font-semibold text-surface-fg font-sans\">\n {title}\n </span>\n {description && (\n <span className=\"text-ds-sm text-surface-fg-muted font-sans\">\n {description}\n </span>\n )}\n </div>\n )\n\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n\n if (collapsible) {\n return (\n <Collapsible defaultOpen={defaultOpen} onOpenChange={setIsOpen} className={cn('space-y-ds-04', className)} {...props}>\n <CollapsibleTrigger className=\"flex w-full items-center justify-between py-ds-02 group\">\n {header}\n <motion.span\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={springs.snappy}\n className=\"inline-flex\"\n >\n <Icon icon={IconChevronDown} size=\"sm\" className=\"text-surface-fg-muted\" />\n </motion.span>\n </CollapsibleTrigger>\n <div className=\"border-b border-surface-border-subtle\" />\n <CollapsibleContent>\n <div className=\"space-y-ds-04 pt-ds-02\">\n {children}\n </div>\n </CollapsibleContent>\n </Collapsible>\n )\n }\n\n return (\n <div ref={ref} className={cn('space-y-ds-04', className)} {...props}>\n {header}\n <div className=\"border-b border-surface-border-subtle\" />\n <div className=\"space-y-ds-04\">\n {children}\n </div>\n </div>\n )\n})\nFormSection.displayName = 'FormSection'\n\nexport { FormSection }\n"],"mappings":";;;;;;;;;;AA0BA,IAAM,IAAc,EAAM,YAA8C,EACtE,UACA,gBACA,iBAAc,IACd,iBAAc,IACd,aACA,cACA,GAAG,KACF,MAAQ;CACT,IAAM,IACJ,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD;GAAM,WAAU;aACb;GACI,CAAA,EACN,KACC,kBAAC,QAAD;GAAM,WAAU;aACb;GACI,CAAA,CAEL;KAGF,CAAC,GAAQ,KAAa,EAAM,SAAS,EAAY;AAyBvD,QAvBI,IAEA,kBAAC,GAAD;EAA0B;EAAa,cAAc;EAAW,WAAW,EAAG,iBAAiB,EAAU;EAAE,GAAI;YAA/G;GACE,kBAAC,GAAD;IAAoB,WAAU;cAA9B,CACG,GACD,kBAAC,EAAO,MAAR;KACE,SAAS,EAAE,QAAQ,IAAS,MAAM,GAAG;KACrC,YAAY,EAAQ;KACpB,WAAU;eAEV,kBAAC,GAAD;MAAM,MAAM;MAAiB,MAAK;MAAK,WAAU;MAA0B,CAAA;KAC/D,CAAA,CACK;;GACrB,kBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;GACzD,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;IACZ;IACG,CAAA,EACa,CAAA;GACT;MAKhB,kBAAC,OAAD;EAAU;EAAK,WAAW,EAAG,iBAAiB,EAAU;EAAE,GAAI;YAA9D;GACG;GACD,kBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;GACzD,kBAAC,OAAD;IAAK,WAAU;IACZ;IACG,CAAA;GACF;;EAER;AACF,EAAY,cAAc"}
1
+ {"version":3,"file":"form-section.js","names":[],"sources":["../../src/composed/form-section.tsx"],"sourcesContent":["'use client'\n\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../ui/collapsible'\nimport { Icon } from '../ui/icon'\nimport { springs } from '../ui/lib/motion'\nimport { cn } from '../ui/lib/utils'\n\n// ============================================================\n// Types\n// ============================================================\n\nexport interface FormSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description?: string\n collapsible?: boolean\n /** @default true */\n defaultOpen?: boolean\n}\n\n// ============================================================\n// FormSection\n// ============================================================\n\nconst FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(({\n title,\n description,\n collapsible = false,\n defaultOpen = true,\n children,\n className,\n ...props\n}, ref) => {\n const header = (\n <div className=\"flex flex-col gap-ds-01\">\n <span className=\"text-ds-md font-semibold text-surface-fg font-sans\">\n {title}\n </span>\n {description && (\n <span className=\"text-ds-sm text-surface-fg-muted font-sans\">\n {description}\n </span>\n )}\n </div>\n )\n\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n\n if (collapsible) {\n return (\n <Collapsible defaultOpen={defaultOpen} onOpenChange={setIsOpen} className={cn('space-y-ds-04', className)} {...props}>\n <CollapsibleTrigger className=\"flex w-full items-center justify-between py-ds-02 group\">\n {header}\n <motion.span\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={springs.snappy}\n className=\"inline-flex\"\n >\n <Icon icon={IconChevronDown} size=\"sm\" className=\"text-surface-fg-muted\" />\n </motion.span>\n </CollapsibleTrigger>\n <div className=\"border-b border-surface-border-subtle\" />\n <CollapsibleContent>\n <div className=\"space-y-ds-04 pt-ds-02\">\n {children}\n </div>\n </CollapsibleContent>\n </Collapsible>\n )\n }\n\n return (\n <div ref={ref} className={cn('space-y-ds-04', className)} {...props}>\n {header}\n <div className=\"border-b border-surface-border-subtle\" />\n <div className=\"space-y-ds-04\">\n {children}\n </div>\n </div>\n )\n})\nFormSection.displayName = 'FormSection'\n\nexport { FormSection }\n"],"mappings":";;;;;;;;;;AA2BA,IAAM,IAAc,EAAM,YAA8C,EACtE,UACA,gBACA,iBAAc,IACd,iBAAc,IACd,aACA,cACA,GAAG,KACF,MAAQ;CACT,IAAM,IACJ,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD;GAAM,WAAU;aACb;GACI,CAAA,EACN,KACC,kBAAC,QAAD;GAAM,WAAU;aACb;GACI,CAAA,CAEL;KAGF,CAAC,GAAQ,KAAa,EAAM,SAAS,EAAY;AAyBvD,QAvBI,IAEA,kBAAC,GAAD;EAA0B;EAAa,cAAc;EAAW,WAAW,EAAG,iBAAiB,EAAU;EAAE,GAAI;YAA/G;GACE,kBAAC,GAAD;IAAoB,WAAU;cAA9B,CACG,GACD,kBAAC,EAAO,MAAR;KACE,SAAS,EAAE,QAAQ,IAAS,MAAM,GAAG;KACrC,YAAY,EAAQ;KACpB,WAAU;eAEV,kBAAC,GAAD;MAAM,MAAM;MAAiB,MAAK;MAAK,WAAU;MAA0B,CAAA;KAC/D,CAAA,CACK;;GACrB,kBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;GACzD,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;IACZ;IACG,CAAA,EACa,CAAA;GACT;MAKhB,kBAAC,OAAD;EAAU;EAAK,WAAW,EAAG,iBAAiB,EAAU;EAAE,GAAI;YAA9D;GACG;GACD,kBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;GACzD,kBAAC,OAAD;IAAK,WAAU;IACZ;IACG,CAAA;GACF;;EAER;AACF,EAAY,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-loading.d.ts","sourceRoot":"","sources":["../../src/composed/global-loading.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC/E,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,QAAA,MAAM,aAAa,2FAqDlB,CAAA;AAID,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"global-loading.d.ts","sourceRoot":"","sources":["../../src/composed/global-loading.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC/E,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,QAAA,MAAM,aAAa,2FAqDlB,CAAA;AAID,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-loading.js","names":[],"sources":["../../src/composed/global-loading.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { cn } from '../ui/lib/utils'\n\nexport interface GlobalLoadingProps extends React.ComponentPropsWithoutRef<'div'> {\n isLoading: boolean\n}\n\nconst GlobalLoading = React.forwardRef<HTMLDivElement, GlobalLoadingProps>(\n function GlobalLoading({ isLoading, className, ...props }, forwardedRef) {\n const ref = useRef<HTMLDivElement>(null)\n const [animationComplete, setAnimationComplete] = useState(true)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n useEffect(() => {\n return () => { clearTimeout(timeoutRef.current) }\n }, [])\n\n useEffect(() => {\n if (!ref.current) return\n\n if (isLoading) {\n setAnimationComplete(false)\n }\n }, [isLoading])\n\n return (\n <div\n ref={forwardedRef}\n role=\"progressbar\"\n aria-label=\"Page loading\"\n aria-hidden={!isLoading}\n aria-valuetext={isLoading ? 'Loading' : undefined}\n {...props}\n className={cn(\"pointer-events-none fixed inset-x-0 top-0 z-toast h-1\", className)}\n >\n <div\n ref={ref}\n className={cn(\n 'h-full bg-accent-9 transition-[width,opacity] duration-slow-01 ease-productive-standard',\n isLoading && 'w-4/5 opacity-100',\n !isLoading && animationComplete && 'w-0 opacity-0',\n !isLoading && !animationComplete && 'w-full opacity-100',\n )}\n style={\n !isLoading && !animationComplete\n ? { boxShadow: '0 0 8px var(--color-accent-9)' }\n : undefined\n }\n onTransitionEnd={() => {\n if (!isLoading) {\n // After the \"complete\" animation finishes, hide the bar\n timeoutRef.current = setTimeout(() => {\n setAnimationComplete(true)\n }, 200)\n }\n }}\n />\n </div>\n )\n},\n)\n\nGlobalLoading.displayName = 'GlobalLoading'\n\nexport { GlobalLoading }\n"],"mappings":";;;;;;AAUA,IAAM,IAAgB,EAAM,WAC1B,SAAuB,EAAE,cAAW,cAAW,GAAG,KAAS,GAAc;CACzE,IAAM,IAAM,EAAuB,KAAK,EAClC,CAAC,GAAmB,KAAwB,EAAS,GAAK,EAC1D,IAAa,EAAkD,KAAA,EAAU;AAc/E,QAZA,cACe;AAAE,eAAa,EAAW,QAAQ;IAC9C,EAAE,CAAC,EAEN,QAAgB;AACT,IAAI,WAEL,KACF,EAAqB,GAAM;IAE5B,CAAC,EAAU,CAAC,EAGb,kBAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,cAAW;EACX,eAAa,CAAC;EACd,kBAAgB,IAAY,YAAY,KAAA;EACxC,GAAI;EACJ,WAAW,EAAG,yDAAyD,EAAU;YAEjF,kBAAC,OAAD;GACO;GACL,WAAW,EACT,2FACA,KAAa,qBACb,CAAC,KAAa,KAAqB,iBACnC,CAAC,KAAa,CAAC,KAAqB,qBACrC;GACD,OACE,CAAC,KAAa,CAAC,IACX,EAAE,WAAW,iCAAiC,GAC9C,KAAA;GAEN,uBAAuB;AACrB,IAAK,MAEH,EAAW,UAAU,iBAAiB;AACpC,OAAqB,GAAK;OACzB,IAAI;;GAGX,CAAA;EACE,CAAA;EAGT;AAED,EAAc,cAAc"}
1
+ {"version":3,"file":"global-loading.js","names":[],"sources":["../../src/composed/global-loading.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { cn } from '../ui/lib/utils'\n\nexport interface GlobalLoadingProps extends React.ComponentPropsWithoutRef<'div'> {\n isLoading: boolean\n}\n\nconst GlobalLoading = React.forwardRef<HTMLDivElement, GlobalLoadingProps>(\n function GlobalLoading({ isLoading, className, ...props }, forwardedRef) {\n const ref = useRef<HTMLDivElement>(null)\n const [animationComplete, setAnimationComplete] = useState(true)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n useEffect(() => {\n return () => { clearTimeout(timeoutRef.current) }\n }, [])\n\n useEffect(() => {\n if (!ref.current) return\n\n if (isLoading) {\n setAnimationComplete(false)\n }\n }, [isLoading])\n\n return (\n <div\n ref={forwardedRef}\n role=\"progressbar\"\n aria-label=\"Page loading\"\n aria-hidden={!isLoading}\n aria-valuetext={isLoading ? 'Loading' : undefined}\n {...props}\n className={cn(\"pointer-events-none fixed inset-x-0 top-0 z-toast h-1\", className)}\n >\n <div\n ref={ref}\n className={cn(\n 'h-full bg-accent-9 transition-[width,opacity] duration-slow-01 ease-productive-standard',\n isLoading && 'w-4/5 opacity-100',\n !isLoading && animationComplete && 'w-0 opacity-0',\n !isLoading && !animationComplete && 'w-full opacity-100',\n )}\n style={\n !isLoading && !animationComplete\n ? { boxShadow: '0 0 8px var(--color-accent-9)' }\n : undefined\n }\n onTransitionEnd={() => {\n if (!isLoading) {\n // After the \"complete\" animation finishes, hide the bar\n timeoutRef.current = setTimeout(() => {\n setAnimationComplete(true)\n }, 200)\n }\n }}\n />\n </div>\n )\n},\n)\n\nGlobalLoading.displayName = 'GlobalLoading'\n\nexport { GlobalLoading }\n"],"mappings":";;;;;;AAWA,IAAM,IAAgB,EAAM,WAC1B,SAAuB,EAAE,cAAW,cAAW,GAAG,KAAS,GAAc;CACzE,IAAM,IAAM,EAAuB,KAAK,EAClC,CAAC,GAAmB,KAAwB,EAAS,GAAK,EAC1D,IAAa,EAAkD,KAAA,EAAU;AAc/E,QAZA,cACe;AAAE,eAAa,EAAW,QAAQ;IAC9C,EAAE,CAAC,EAEN,QAAgB;AACT,IAAI,WAEL,KACF,EAAqB,GAAM;IAE5B,CAAC,EAAU,CAAC,EAGb,kBAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,cAAW;EACX,eAAa,CAAC;EACd,kBAAgB,IAAY,YAAY,KAAA;EACxC,GAAI;EACJ,WAAW,EAAG,yDAAyD,EAAU;YAEjF,kBAAC,OAAD;GACO;GACL,WAAW,EACT,2FACA,KAAa,qBACb,CAAC,KAAa,KAAqB,iBACnC,CAAC,KAAa,CAAC,KAAqB,qBACrC;GACD,OACE,CAAC,KAAa,CAAC,IACX,EAAE,WAAW,iCAAiC,GAC9C,KAAA;GAEN,uBAAuB;AACrB,IAAK,MAEH,EAAW,UAAU,iBAAiB;AACpC,OAAqB,GAAK;OACzB,IAAI;;GAGX,CAAA;EACE,CAAA;EAGT;AAED,EAAc,cAAc"}