@dynamic-labs-sdk/droplet 0.0.0 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +292 -0
  2. package/dist/components/ask-ai-sheet/ask-ai-sheet.d.ts +11 -0
  3. package/dist/components/ask-ai-sheet/ask-ai-sheet.d.ts.map +1 -0
  4. package/dist/components/ask-ai-sheet/index.d.ts +2 -0
  5. package/dist/components/ask-ai-sheet/index.d.ts.map +1 -0
  6. package/dist/components/asset-icon/asset-icon.d.ts +7 -0
  7. package/dist/components/asset-icon/asset-icon.d.ts.map +1 -0
  8. package/dist/components/asset-icon/index.d.ts +2 -0
  9. package/dist/components/asset-icon/index.d.ts.map +1 -0
  10. package/dist/components/code-block/code-block.d.ts +24 -0
  11. package/dist/components/code-block/code-block.d.ts.map +1 -0
  12. package/dist/components/code-block/code-block.stories.d.ts +38 -0
  13. package/dist/components/code-block/code-block.stories.d.ts.map +1 -0
  14. package/dist/components/code-block/index.d.ts +3 -0
  15. package/dist/components/code-block/index.d.ts.map +1 -0
  16. package/dist/components/copy-button/copy-button.d.ts +9 -0
  17. package/dist/components/copy-button/copy-button.d.ts.map +1 -0
  18. package/dist/components/copy-button/copy-button.stories.d.ts +33 -0
  19. package/dist/components/copy-button/copy-button.stories.d.ts.map +1 -0
  20. package/dist/components/copy-button/index.d.ts +2 -0
  21. package/dist/components/copy-button/index.d.ts.map +1 -0
  22. package/dist/components/danger-zone/danger-zone.d.ts +11 -0
  23. package/dist/components/danger-zone/danger-zone.d.ts.map +1 -0
  24. package/dist/components/danger-zone/danger-zone.stories.d.ts +20 -0
  25. package/dist/components/danger-zone/danger-zone.stories.d.ts.map +1 -0
  26. package/dist/components/danger-zone/index.d.ts +2 -0
  27. package/dist/components/danger-zone/index.d.ts.map +1 -0
  28. package/dist/components/domain-list/domain-list.d.ts +10 -0
  29. package/dist/components/domain-list/domain-list.d.ts.map +1 -0
  30. package/dist/components/domain-list/domain-list.stories.d.ts +14 -0
  31. package/dist/components/domain-list/domain-list.stories.d.ts.map +1 -0
  32. package/dist/components/domain-list/index.d.ts +2 -0
  33. package/dist/components/domain-list/index.d.ts.map +1 -0
  34. package/dist/components/empty-state/empty-state.d.ts +13 -0
  35. package/dist/components/empty-state/empty-state.d.ts.map +1 -0
  36. package/dist/components/empty-state/empty-state.stories.d.ts +15 -0
  37. package/dist/components/empty-state/empty-state.stories.d.ts.map +1 -0
  38. package/dist/components/empty-state/index.d.ts +2 -0
  39. package/dist/components/empty-state/index.d.ts.map +1 -0
  40. package/dist/components/icon-config/icon-config.d.ts +11 -0
  41. package/dist/components/icon-config/icon-config.d.ts.map +1 -0
  42. package/dist/components/icon-config/index.d.ts +2 -0
  43. package/dist/components/icon-config/index.d.ts.map +1 -0
  44. package/dist/components/icons/animated-icon/animated-icon.d.ts +26 -0
  45. package/dist/components/icons/animated-icon/animated-icon.d.ts.map +1 -0
  46. package/dist/components/icons/animated-icon/index.d.ts +3 -0
  47. package/dist/components/icons/animated-icon/index.d.ts.map +1 -0
  48. package/dist/components/icons/arrow-up-right/arrow-up-right.d.ts +6 -0
  49. package/dist/components/icons/arrow-up-right/arrow-up-right.d.ts.map +1 -0
  50. package/dist/components/icons/arrow-up-right/index.d.ts +3 -0
  51. package/dist/components/icons/arrow-up-right/index.d.ts.map +1 -0
  52. package/dist/components/icons/chart-bar-increasing/chart-bar-increasing.d.ts +11 -0
  53. package/dist/components/icons/chart-bar-increasing/chart-bar-increasing.d.ts.map +1 -0
  54. package/dist/components/icons/chart-bar-increasing/index.d.ts +3 -0
  55. package/dist/components/icons/chart-bar-increasing/index.d.ts.map +1 -0
  56. package/dist/components/icons/chevron-down/chevron-down.d.ts +6 -0
  57. package/dist/components/icons/chevron-down/chevron-down.d.ts.map +1 -0
  58. package/dist/components/icons/chevron-down/index.d.ts +3 -0
  59. package/dist/components/icons/chevron-down/index.d.ts.map +1 -0
  60. package/dist/components/icons/chevron-right/chevron-right.d.ts +6 -0
  61. package/dist/components/icons/chevron-right/chevron-right.d.ts.map +1 -0
  62. package/dist/components/icons/chevron-right/index.d.ts +3 -0
  63. package/dist/components/icons/chevron-right/index.d.ts.map +1 -0
  64. package/dist/components/icons/copy/copy.d.ts +6 -0
  65. package/dist/components/icons/copy/copy.d.ts.map +1 -0
  66. package/dist/components/icons/copy/index.d.ts +3 -0
  67. package/dist/components/icons/copy/index.d.ts.map +1 -0
  68. package/dist/components/icons/copy-check/copy-check.d.ts +12 -0
  69. package/dist/components/icons/copy-check/copy-check.d.ts.map +1 -0
  70. package/dist/components/icons/copy-check/index.d.ts +3 -0
  71. package/dist/components/icons/copy-check/index.d.ts.map +1 -0
  72. package/dist/components/icons/dollar-sign/dollar-sign.d.ts +6 -0
  73. package/dist/components/icons/dollar-sign/dollar-sign.d.ts.map +1 -0
  74. package/dist/components/icons/dollar-sign/index.d.ts +3 -0
  75. package/dist/components/icons/dollar-sign/index.d.ts.map +1 -0
  76. package/dist/components/icons/download/download.d.ts +6 -0
  77. package/dist/components/icons/download/download.d.ts.map +1 -0
  78. package/dist/components/icons/download/index.d.ts +3 -0
  79. package/dist/components/icons/download/index.d.ts.map +1 -0
  80. package/dist/components/icons/fingerprint/fingerprint.d.ts +6 -0
  81. package/dist/components/icons/fingerprint/fingerprint.d.ts.map +1 -0
  82. package/dist/components/icons/fingerprint/index.d.ts +3 -0
  83. package/dist/components/icons/fingerprint/index.d.ts.map +1 -0
  84. package/dist/components/icons/home/home.d.ts +6 -0
  85. package/dist/components/icons/home/home.d.ts.map +1 -0
  86. package/dist/components/icons/home/index.d.ts +3 -0
  87. package/dist/components/icons/home/index.d.ts.map +1 -0
  88. package/dist/components/icons/key/index.d.ts +3 -0
  89. package/dist/components/icons/key/index.d.ts.map +1 -0
  90. package/dist/components/icons/key/key.d.ts +6 -0
  91. package/dist/components/icons/key/key.d.ts.map +1 -0
  92. package/dist/components/icons/layout-panel-top/index.d.ts +3 -0
  93. package/dist/components/icons/layout-panel-top/index.d.ts.map +1 -0
  94. package/dist/components/icons/layout-panel-top/layout-panel-top.d.ts +6 -0
  95. package/dist/components/icons/layout-panel-top/layout-panel-top.d.ts.map +1 -0
  96. package/dist/components/icons/link/index.d.ts +3 -0
  97. package/dist/components/icons/link/index.d.ts.map +1 -0
  98. package/dist/components/icons/link/link.d.ts +6 -0
  99. package/dist/components/icons/link/link.d.ts.map +1 -0
  100. package/dist/components/icons/mcp-tools/index.d.ts +2 -0
  101. package/dist/components/icons/mcp-tools/index.d.ts.map +1 -0
  102. package/dist/components/icons/mcp-tools/mcp-tools.d.ts +11 -0
  103. package/dist/components/icons/mcp-tools/mcp-tools.d.ts.map +1 -0
  104. package/dist/components/icons/moon/index.d.ts +3 -0
  105. package/dist/components/icons/moon/index.d.ts.map +1 -0
  106. package/dist/components/icons/moon/moon.d.ts +6 -0
  107. package/dist/components/icons/moon/moon.d.ts.map +1 -0
  108. package/dist/components/icons/panel-left-close/index.d.ts +3 -0
  109. package/dist/components/icons/panel-left-close/index.d.ts.map +1 -0
  110. package/dist/components/icons/panel-left-close/panel-left-close.d.ts +6 -0
  111. package/dist/components/icons/panel-left-close/panel-left-close.d.ts.map +1 -0
  112. package/dist/components/icons/panel-left-open/index.d.ts +3 -0
  113. package/dist/components/icons/panel-left-open/index.d.ts.map +1 -0
  114. package/dist/components/icons/panel-left-open/panel-left-open.d.ts +6 -0
  115. package/dist/components/icons/panel-left-open/panel-left-open.d.ts.map +1 -0
  116. package/dist/components/icons/plus/index.d.ts +3 -0
  117. package/dist/components/icons/plus/index.d.ts.map +1 -0
  118. package/dist/components/icons/plus/plus.d.ts +6 -0
  119. package/dist/components/icons/plus/plus.d.ts.map +1 -0
  120. package/dist/components/icons/refresh-cw/index.d.ts +3 -0
  121. package/dist/components/icons/refresh-cw/index.d.ts.map +1 -0
  122. package/dist/components/icons/refresh-cw/refresh-cw.d.ts +6 -0
  123. package/dist/components/icons/refresh-cw/refresh-cw.d.ts.map +1 -0
  124. package/dist/components/icons/search/index.d.ts +3 -0
  125. package/dist/components/icons/search/index.d.ts.map +1 -0
  126. package/dist/components/icons/search/search.d.ts +6 -0
  127. package/dist/components/icons/search/search.d.ts.map +1 -0
  128. package/dist/components/icons/settings/index.d.ts +3 -0
  129. package/dist/components/icons/settings/index.d.ts.map +1 -0
  130. package/dist/components/icons/settings/settings.d.ts +6 -0
  131. package/dist/components/icons/settings/settings.d.ts.map +1 -0
  132. package/dist/components/icons/shield-check/index.d.ts +3 -0
  133. package/dist/components/icons/shield-check/index.d.ts.map +1 -0
  134. package/dist/components/icons/shield-check/shield-check.d.ts +6 -0
  135. package/dist/components/icons/shield-check/shield-check.d.ts.map +1 -0
  136. package/dist/components/icons/sun/index.d.ts +3 -0
  137. package/dist/components/icons/sun/index.d.ts.map +1 -0
  138. package/dist/components/icons/sun/sun.d.ts +6 -0
  139. package/dist/components/icons/sun/sun.d.ts.map +1 -0
  140. package/dist/components/icons/terminal/index.d.ts +3 -0
  141. package/dist/components/icons/terminal/index.d.ts.map +1 -0
  142. package/dist/components/icons/terminal/terminal.d.ts +6 -0
  143. package/dist/components/icons/terminal/terminal.d.ts.map +1 -0
  144. package/dist/components/icons/users/index.d.ts +3 -0
  145. package/dist/components/icons/users/index.d.ts.map +1 -0
  146. package/dist/components/icons/users/users.d.ts +6 -0
  147. package/dist/components/icons/users/users.d.ts.map +1 -0
  148. package/dist/components/info-banner/index.d.ts +2 -0
  149. package/dist/components/info-banner/index.d.ts.map +1 -0
  150. package/dist/components/info-banner/info-banner.d.ts +9 -0
  151. package/dist/components/info-banner/info-banner.d.ts.map +1 -0
  152. package/dist/components/info-banner/info-banner.stories.d.ts +23 -0
  153. package/dist/components/info-banner/info-banner.stories.d.ts.map +1 -0
  154. package/dist/components/loading-skeleton/index.d.ts +2 -0
  155. package/dist/components/loading-skeleton/index.d.ts.map +1 -0
  156. package/dist/components/loading-skeleton/loading-skeleton.d.ts +19 -0
  157. package/dist/components/loading-skeleton/loading-skeleton.d.ts.map +1 -0
  158. package/dist/components/metric-card/index.d.ts +2 -0
  159. package/dist/components/metric-card/index.d.ts.map +1 -0
  160. package/dist/components/metric-card/metric-card.d.ts +31 -0
  161. package/dist/components/metric-card/metric-card.d.ts.map +1 -0
  162. package/dist/components/metric-card/metric-card.stories.d.ts +16 -0
  163. package/dist/components/metric-card/metric-card.stories.d.ts.map +1 -0
  164. package/dist/components/migration/banner/banner.d.ts +24 -0
  165. package/dist/components/migration/banner/banner.d.ts.map +1 -0
  166. package/dist/components/migration/banner/banner.stories.d.ts +39 -0
  167. package/dist/components/migration/banner/banner.stories.d.ts.map +1 -0
  168. package/dist/components/migration/banner/index.d.ts +2 -0
  169. package/dist/components/migration/banner/index.d.ts.map +1 -0
  170. package/dist/components/migration/double-section/double-section.d.ts +29 -0
  171. package/dist/components/migration/double-section/double-section.d.ts.map +1 -0
  172. package/dist/components/migration/double-section/double-section.stories.d.ts +32 -0
  173. package/dist/components/migration/double-section/double-section.stories.d.ts.map +1 -0
  174. package/dist/components/migration/double-section/index.d.ts +2 -0
  175. package/dist/components/migration/double-section/index.d.ts.map +1 -0
  176. package/dist/components/migration/field/field.d.ts +19 -0
  177. package/dist/components/migration/field/field.d.ts.map +1 -0
  178. package/dist/components/migration/field/field.stories.d.ts +43 -0
  179. package/dist/components/migration/field/field.stories.d.ts.map +1 -0
  180. package/dist/components/migration/field/index.d.ts +2 -0
  181. package/dist/components/migration/field/index.d.ts.map +1 -0
  182. package/dist/components/migration/index.d.ts +16 -0
  183. package/dist/components/migration/index.d.ts.map +1 -0
  184. package/dist/components/migration/settings-section-v2/index.d.ts +2 -0
  185. package/dist/components/migration/settings-section-v2/index.d.ts.map +1 -0
  186. package/dist/components/migration/settings-section-v2/settings-section-v2.d.ts +45 -0
  187. package/dist/components/migration/settings-section-v2/settings-section-v2.d.ts.map +1 -0
  188. package/dist/components/migration/settings-section-v2/settings-section-v2.stories.d.ts +40 -0
  189. package/dist/components/migration/settings-section-v2/settings-section-v2.stories.d.ts.map +1 -0
  190. package/dist/components/migration/sub-section/index.d.ts +2 -0
  191. package/dist/components/migration/sub-section/index.d.ts.map +1 -0
  192. package/dist/components/migration/sub-section/sub-section.d.ts +26 -0
  193. package/dist/components/migration/sub-section/sub-section.d.ts.map +1 -0
  194. package/dist/components/migration/sub-section/sub-section.stories.d.ts +33 -0
  195. package/dist/components/migration/sub-section/sub-section.stories.d.ts.map +1 -0
  196. package/dist/components/migration/toggle-group/index.d.ts +2 -0
  197. package/dist/components/migration/toggle-group/index.d.ts.map +1 -0
  198. package/dist/components/migration/toggle-group/toggle-group.d.ts +22 -0
  199. package/dist/components/migration/toggle-group/toggle-group.d.ts.map +1 -0
  200. package/dist/components/migration/toggle-group/toggle-group.stories.d.ts +21 -0
  201. package/dist/components/migration/toggle-group/toggle-group.stories.d.ts.map +1 -0
  202. package/dist/components/page-actions/index.d.ts +2 -0
  203. package/dist/components/page-actions/index.d.ts.map +1 -0
  204. package/dist/components/page-actions/page-actions.d.ts +5 -0
  205. package/dist/components/page-actions/page-actions.d.ts.map +1 -0
  206. package/dist/components/patterns/config-tab-with-pill/config-tab-with-pill.stories.d.ts +17 -0
  207. package/dist/components/patterns/config-tab-with-pill/config-tab-with-pill.stories.d.ts.map +1 -0
  208. package/dist/components/patterns/cors-list/cors-list.stories.d.ts +17 -0
  209. package/dist/components/patterns/cors-list/cors-list.stories.d.ts.map +1 -0
  210. package/dist/components/patterns/rounded-row-list/rounded-row-list.stories.d.ts +17 -0
  211. package/dist/components/patterns/rounded-row-list/rounded-row-list.stories.d.ts.map +1 -0
  212. package/dist/components/patterns/save-in-modal/save-in-modal.stories.d.ts +18 -0
  213. package/dist/components/patterns/save-in-modal/save-in-modal.stories.d.ts.map +1 -0
  214. package/dist/components/patterns/stat-card-grid/stat-card-grid.stories.d.ts +17 -0
  215. package/dist/components/patterns/stat-card-grid/stat-card-grid.stories.d.ts.map +1 -0
  216. package/dist/components/product-page-layout/index.d.ts +2 -0
  217. package/dist/components/product-page-layout/index.d.ts.map +1 -0
  218. package/dist/components/product-page-layout/product-page-layout.d.ts +20 -0
  219. package/dist/components/product-page-layout/product-page-layout.d.ts.map +1 -0
  220. package/dist/components/product-page-layout/product-page-layout.stories.d.ts +14 -0
  221. package/dist/components/product-page-layout/product-page-layout.stories.d.ts.map +1 -0
  222. package/dist/components/settings-section/index.d.ts +2 -0
  223. package/dist/components/settings-section/index.d.ts.map +1 -0
  224. package/dist/components/settings-section/settings-section.d.ts +10 -0
  225. package/dist/components/settings-section/settings-section.d.ts.map +1 -0
  226. package/dist/components/settings-section/settings-section.stories.d.ts +26 -0
  227. package/dist/components/settings-section/settings-section.stories.d.ts.map +1 -0
  228. package/dist/components/status-badge/index.d.ts +2 -0
  229. package/dist/components/status-badge/index.d.ts.map +1 -0
  230. package/dist/components/status-badge/status-badge.d.ts +9 -0
  231. package/dist/components/status-badge/status-badge.d.ts.map +1 -0
  232. package/dist/components/status-badge/status-badge.stories.d.ts +24 -0
  233. package/dist/components/status-badge/status-badge.stories.d.ts.map +1 -0
  234. package/dist/components/toggle-row/index.d.ts +2 -0
  235. package/dist/components/toggle-row/index.d.ts.map +1 -0
  236. package/dist/components/toggle-row/toggle-row.d.ts +16 -0
  237. package/dist/components/toggle-row/toggle-row.d.ts.map +1 -0
  238. package/dist/components/toggle-row/toggle-row.stories.d.ts +33 -0
  239. package/dist/components/toggle-row/toggle-row.stories.d.ts.map +1 -0
  240. package/dist/components/tokens/colors/colors.stories.d.ts +22 -0
  241. package/dist/components/tokens/colors/colors.stories.d.ts.map +1 -0
  242. package/dist/components/tokens/radius/radius.stories.d.ts +18 -0
  243. package/dist/components/tokens/radius/radius.stories.d.ts.map +1 -0
  244. package/dist/components/tokens/shadows/shadows.stories.d.ts +18 -0
  245. package/dist/components/tokens/shadows/shadows.stories.d.ts.map +1 -0
  246. package/dist/components/tokens/spacing/spacing.stories.d.ts +17 -0
  247. package/dist/components/tokens/spacing/spacing.stories.d.ts.map +1 -0
  248. package/dist/components/tokens/typography/typography.stories.d.ts +17 -0
  249. package/dist/components/tokens/typography/typography.stories.d.ts.map +1 -0
  250. package/dist/components/ui/accordion/accordion.d.ts +8 -0
  251. package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
  252. package/dist/components/ui/accordion/index.d.ts +2 -0
  253. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  254. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +19 -0
  255. package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
  256. package/dist/components/ui/alert-dialog/alert-dialog.stories.d.ts +13 -0
  257. package/dist/components/ui/alert-dialog/alert-dialog.stories.d.ts.map +1 -0
  258. package/dist/components/ui/alert-dialog/index.d.ts +2 -0
  259. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  260. package/dist/components/ui/avatar/avatar.d.ts +12 -0
  261. package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
  262. package/dist/components/ui/avatar/avatar.stories.d.ts +17 -0
  263. package/dist/components/ui/avatar/avatar.stories.d.ts.map +1 -0
  264. package/dist/components/ui/avatar/index.d.ts +2 -0
  265. package/dist/components/ui/avatar/index.d.ts.map +1 -0
  266. package/dist/components/ui/badge/badge.d.ts +10 -0
  267. package/dist/components/ui/badge/badge.d.ts.map +1 -0
  268. package/dist/components/ui/badge/badge.stories.d.ts +29 -0
  269. package/dist/components/ui/badge/badge.stories.d.ts.map +1 -0
  270. package/dist/components/ui/badge/index.d.ts +2 -0
  271. package/dist/components/ui/badge/index.d.ts.map +1 -0
  272. package/dist/components/ui/button/button.d.ts +11 -0
  273. package/dist/components/ui/button/button.d.ts.map +1 -0
  274. package/dist/components/ui/button/button.stories.d.ts +42 -0
  275. package/dist/components/ui/button/button.stories.d.ts.map +1 -0
  276. package/dist/components/ui/button/index.d.ts +2 -0
  277. package/dist/components/ui/button/index.d.ts.map +1 -0
  278. package/dist/components/ui/card/card.d.ts +10 -0
  279. package/dist/components/ui/card/card.d.ts.map +1 -0
  280. package/dist/components/ui/card/card.stories.d.ts +14 -0
  281. package/dist/components/ui/card/card.stories.d.ts.map +1 -0
  282. package/dist/components/ui/card/index.d.ts +2 -0
  283. package/dist/components/ui/card/index.d.ts.map +1 -0
  284. package/dist/components/ui/check-icon/check-icon.d.ts +7 -0
  285. package/dist/components/ui/check-icon/check-icon.d.ts.map +1 -0
  286. package/dist/components/ui/check-icon/index.d.ts +2 -0
  287. package/dist/components/ui/check-icon/index.d.ts.map +1 -0
  288. package/dist/components/ui/checkbox/checkbox.d.ts +5 -0
  289. package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
  290. package/dist/components/ui/checkbox/checkbox.stories.d.ts +18 -0
  291. package/dist/components/ui/checkbox/checkbox.stories.d.ts.map +1 -0
  292. package/dist/components/ui/checkbox/index.d.ts +2 -0
  293. package/dist/components/ui/checkbox/index.d.ts.map +1 -0
  294. package/dist/components/ui/collapsible/collapsible.d.ts +7 -0
  295. package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
  296. package/dist/components/ui/collapsible/collapsible.stories.d.ts +14 -0
  297. package/dist/components/ui/collapsible/collapsible.stories.d.ts.map +1 -0
  298. package/dist/components/ui/collapsible/index.d.ts +2 -0
  299. package/dist/components/ui/collapsible/index.d.ts.map +1 -0
  300. package/dist/components/ui/command/command.d.ts +18 -0
  301. package/dist/components/ui/command/command.d.ts.map +1 -0
  302. package/dist/components/ui/command/index.d.ts +2 -0
  303. package/dist/components/ui/command/index.d.ts.map +1 -0
  304. package/dist/components/ui/dialog/dialog.d.ts +19 -0
  305. package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
  306. package/dist/components/ui/dialog/dialog.stories.d.ts +15 -0
  307. package/dist/components/ui/dialog/dialog.stories.d.ts.map +1 -0
  308. package/dist/components/ui/dialog/index.d.ts +2 -0
  309. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  310. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +26 -0
  311. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  312. package/dist/components/ui/dropdown-menu/dropdown-menu.stories.d.ts +14 -0
  313. package/dist/components/ui/dropdown-menu/dropdown-menu.stories.d.ts.map +1 -0
  314. package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
  315. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
  316. package/dist/components/ui/flush-card-detach/flush-card-detach.stories.d.ts +17 -0
  317. package/dist/components/ui/flush-card-detach/flush-card-detach.stories.d.ts.map +1 -0
  318. package/dist/components/ui/icon/icon.d.ts +4 -0
  319. package/dist/components/ui/icon/icon.d.ts.map +1 -0
  320. package/dist/components/ui/icon/index.d.ts +2 -0
  321. package/dist/components/ui/icon/index.d.ts.map +1 -0
  322. package/dist/components/ui/input/index.d.ts +2 -0
  323. package/dist/components/ui/input/index.d.ts.map +1 -0
  324. package/dist/components/ui/input/input.d.ts +24 -0
  325. package/dist/components/ui/input/input.d.ts.map +1 -0
  326. package/dist/components/ui/input/input.stories.d.ts +36 -0
  327. package/dist/components/ui/input/input.stories.d.ts.map +1 -0
  328. package/dist/components/ui/kbd/index.d.ts +2 -0
  329. package/dist/components/ui/kbd/index.d.ts.map +1 -0
  330. package/dist/components/ui/kbd/kbd.d.ts +5 -0
  331. package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
  332. package/dist/components/ui/label/index.d.ts +2 -0
  333. package/dist/components/ui/label/index.d.ts.map +1 -0
  334. package/dist/components/ui/label/label.d.ts +4 -0
  335. package/dist/components/ui/label/label.d.ts.map +1 -0
  336. package/dist/components/ui/label/label.stories.d.ts +14 -0
  337. package/dist/components/ui/label/label.stories.d.ts.map +1 -0
  338. package/dist/components/ui/popover/index.d.ts +2 -0
  339. package/dist/components/ui/popover/index.d.ts.map +1 -0
  340. package/dist/components/ui/popover/popover.d.ts +11 -0
  341. package/dist/components/ui/popover/popover.d.ts.map +1 -0
  342. package/dist/components/ui/popover/popover.stories.d.ts +13 -0
  343. package/dist/components/ui/popover/popover.stories.d.ts.map +1 -0
  344. package/dist/components/ui/progress/index.d.ts +2 -0
  345. package/dist/components/ui/progress/index.d.ts.map +1 -0
  346. package/dist/components/ui/progress/progress.d.ts +12 -0
  347. package/dist/components/ui/progress/progress.d.ts.map +1 -0
  348. package/dist/components/ui/progress/progress.stories.d.ts +17 -0
  349. package/dist/components/ui/progress/progress.stories.d.ts.map +1 -0
  350. package/dist/components/ui/radio-group/index.d.ts +2 -0
  351. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  352. package/dist/components/ui/radio-group/radio-group.d.ts +6 -0
  353. package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
  354. package/dist/components/ui/radio-group/radio-group.stories.d.ts +14 -0
  355. package/dist/components/ui/radio-group/radio-group.stories.d.ts.map +1 -0
  356. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  357. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  358. package/dist/components/ui/scroll-area/scroll-area.d.ts +6 -0
  359. package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
  360. package/dist/components/ui/search-input/index.d.ts +2 -0
  361. package/dist/components/ui/search-input/index.d.ts.map +1 -0
  362. package/dist/components/ui/search-input/search-input.d.ts +7 -0
  363. package/dist/components/ui/search-input/search-input.d.ts.map +1 -0
  364. package/dist/components/ui/select/index.d.ts +2 -0
  365. package/dist/components/ui/select/index.d.ts.map +1 -0
  366. package/dist/components/ui/select/select.d.ts +16 -0
  367. package/dist/components/ui/select/select.d.ts.map +1 -0
  368. package/dist/components/ui/select/select.stories.d.ts +16 -0
  369. package/dist/components/ui/select/select.stories.d.ts.map +1 -0
  370. package/dist/components/ui/selectable-card/index.d.ts +2 -0
  371. package/dist/components/ui/selectable-card/index.d.ts.map +1 -0
  372. package/dist/components/ui/selectable-card/selectable-card.d.ts +14 -0
  373. package/dist/components/ui/selectable-card/selectable-card.d.ts.map +1 -0
  374. package/dist/components/ui/selectable-card/selectable-card.stories.d.ts +20 -0
  375. package/dist/components/ui/selectable-card/selectable-card.stories.d.ts.map +1 -0
  376. package/dist/components/ui/separator/index.d.ts +2 -0
  377. package/dist/components/ui/separator/index.d.ts.map +1 -0
  378. package/dist/components/ui/separator/separator.d.ts +3 -0
  379. package/dist/components/ui/separator/separator.d.ts.map +1 -0
  380. package/dist/components/ui/separator/separator.stories.d.ts +14 -0
  381. package/dist/components/ui/separator/separator.stories.d.ts.map +1 -0
  382. package/dist/components/ui/sheet/index.d.ts +2 -0
  383. package/dist/components/ui/sheet/index.d.ts.map +1 -0
  384. package/dist/components/ui/sheet/sheet.d.ts +16 -0
  385. package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
  386. package/dist/components/ui/sheet/sheet.stories.d.ts +14 -0
  387. package/dist/components/ui/sheet/sheet.stories.d.ts.map +1 -0
  388. package/dist/components/ui/skeleton/index.d.ts +2 -0
  389. package/dist/components/ui/skeleton/index.d.ts.map +1 -0
  390. package/dist/components/ui/skeleton/skeleton.d.ts +4 -0
  391. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
  392. package/dist/components/ui/skeleton/skeleton.stories.d.ts +15 -0
  393. package/dist/components/ui/skeleton/skeleton.stories.d.ts.map +1 -0
  394. package/dist/components/ui/sonner/index.d.ts +2 -0
  395. package/dist/components/ui/sonner/index.d.ts.map +1 -0
  396. package/dist/components/ui/sonner/sonner.d.ts +4 -0
  397. package/dist/components/ui/sonner/sonner.d.ts.map +1 -0
  398. package/dist/components/ui/spinner/index.d.ts +2 -0
  399. package/dist/components/ui/spinner/index.d.ts.map +1 -0
  400. package/dist/components/ui/spinner/spinner.d.ts +5 -0
  401. package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
  402. package/dist/components/ui/spinner/spinner.stories.d.ts +17 -0
  403. package/dist/components/ui/spinner/spinner.stories.d.ts.map +1 -0
  404. package/dist/components/ui/switch/index.d.ts +2 -0
  405. package/dist/components/ui/switch/index.d.ts.map +1 -0
  406. package/dist/components/ui/switch/switch.d.ts +5 -0
  407. package/dist/components/ui/switch/switch.d.ts.map +1 -0
  408. package/dist/components/ui/switch/switch.stories.d.ts +29 -0
  409. package/dist/components/ui/switch/switch.stories.d.ts.map +1 -0
  410. package/dist/components/ui/table/index.d.ts +2 -0
  411. package/dist/components/ui/table/index.d.ts.map +1 -0
  412. package/dist/components/ui/table/table.d.ts +11 -0
  413. package/dist/components/ui/table/table.d.ts.map +1 -0
  414. package/dist/components/ui/table/table.stories.d.ts +13 -0
  415. package/dist/components/ui/table/table.stories.d.ts.map +1 -0
  416. package/dist/components/ui/tabs/index.d.ts +2 -0
  417. package/dist/components/ui/tabs/index.d.ts.map +1 -0
  418. package/dist/components/ui/tabs/tabs.d.ts +12 -0
  419. package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
  420. package/dist/components/ui/tabs/tabs.stories.d.ts +13 -0
  421. package/dist/components/ui/tabs/tabs.stories.d.ts.map +1 -0
  422. package/dist/components/ui/textarea/index.d.ts +2 -0
  423. package/dist/components/ui/textarea/index.d.ts.map +1 -0
  424. package/dist/components/ui/textarea/textarea.d.ts +4 -0
  425. package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
  426. package/dist/components/ui/textarea/textarea.stories.d.ts +14 -0
  427. package/dist/components/ui/textarea/textarea.stories.d.ts.map +1 -0
  428. package/dist/components/ui/tooltip/index.d.ts +2 -0
  429. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  430. package/dist/components/ui/tooltip/tooltip.d.ts +6 -0
  431. package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
  432. package/dist/components/ui/tooltip/tooltip.stories.d.ts +14 -0
  433. package/dist/components/ui/tooltip/tooltip.stories.d.ts.map +1 -0
  434. package/dist/components/ui/well/index.d.ts +2 -0
  435. package/dist/components/ui/well/index.d.ts.map +1 -0
  436. package/dist/components/ui/well/well.d.ts +15 -0
  437. package/dist/components/ui/well/well.d.ts.map +1 -0
  438. package/dist/components/ui/well/well.stories.d.ts +39 -0
  439. package/dist/components/ui/well/well.stories.d.ts.map +1 -0
  440. package/dist/components/unsaved-changes-bar/index.d.ts +2 -0
  441. package/dist/components/unsaved-changes-bar/index.d.ts.map +1 -0
  442. package/dist/components/unsaved-changes-bar/unsaved-changes-bar.d.ts +22 -0
  443. package/dist/components/unsaved-changes-bar/unsaved-changes-bar.d.ts.map +1 -0
  444. package/dist/components/unsaved-changes-bar/unsaved-changes-bar.stories.d.ts +15 -0
  445. package/dist/components/unsaved-changes-bar/unsaved-changes-bar.stories.d.ts.map +1 -0
  446. package/dist/index.cjs +3880 -0
  447. package/dist/index.cjs.map +1 -0
  448. package/dist/index.d.ts +79 -0
  449. package/dist/index.d.ts.map +1 -0
  450. package/dist/index.esm.js +3667 -0
  451. package/dist/index.esm.js.map +1 -0
  452. package/dist/lib/utils.d.ts +3 -0
  453. package/dist/lib/utils.d.ts.map +1 -0
  454. package/dist/migration.cjs +328 -0
  455. package/dist/migration.cjs.map +1 -0
  456. package/dist/migration.esm.js +322 -0
  457. package/dist/migration.esm.js.map +1 -0
  458. package/dist/toggle-row-7lfPUutt.cjs +320 -0
  459. package/dist/toggle-row-7lfPUutt.cjs.map +1 -0
  460. package/dist/toggle-row-B5iXNWCJ.esm.js +278 -0
  461. package/dist/toggle-row-B5iXNWCJ.esm.js.map +1 -0
  462. package/package.json +91 -1
  463. package/src/styles/globals.css +615 -0
@@ -0,0 +1,3667 @@
1
+ import { a as Button, i as Input, n as Switch, o as buttonVariants, r as Label, s as cn, t as ToggleRow } from "./toggle-row-B5iXNWCJ.esm.js";
2
+ import { createContext, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
3
+ import { AnimatePresence, motion, useAnimation, useReducedMotion } from "motion/react";
4
+ import { HugeiconsIcon } from "@hugeicons/react";
5
+ import { Add01Icon, Alert01Icon, ArrowDown01Icon, ArrowRight01Icon, ArrowUp01Icon, Cancel01Icon, CheckmarkCircle02Icon, Copy01Icon, InformationCircleIcon, Search01Icon, Tick01Icon, WebhookIcon } from "@hugeicons/core-free-icons";
6
+ import { cva } from "class-variance-authority";
7
+ import { Slot } from "@radix-ui/react-slot";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
10
+ import { Action, Cancel, Content, Description, Overlay, Portal, Root, Title, Trigger } from "@radix-ui/react-alert-dialog";
11
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
12
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
13
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
14
+ import { Command as Command$1 } from "cmdk";
15
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
16
+ import { Close, Content as Content$1, Description as Description$1, Overlay as Overlay$1, Portal as Portal$1, Root as Root$1, Title as Title$1, Trigger as Trigger$1 } from "@radix-ui/react-dialog";
17
+ import { CheckboxItem, Content as Content$2, Group, Item, ItemIndicator, Label as Label$1, Portal as Portal$2, RadioGroup as RadioGroup$1, RadioItem, Root as Root$2, Separator as Separator$1, Sub, SubContent, SubTrigger, Trigger as Trigger$2 } from "@radix-ui/react-dropdown-menu";
18
+ import { CheckIcon as CheckIcon$1, ChevronRightIcon as ChevronRightIcon$1, CircleIcon } from "lucide-react";
19
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
20
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
21
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
22
+ import { Content as Content$3, Group as Group$1, Icon as Icon$1, Item as Item$1, ItemIndicator as ItemIndicator$1, ItemText, Label as Label$2, Portal as Portal$3, Root as Root$3, ScrollDownButton, ScrollUpButton, Separator as Separator$2, Trigger as Trigger$3, Value, Viewport } from "@radix-ui/react-select";
23
+ import { Root as Root$4 } from "@radix-ui/react-separator";
24
+ import { useTheme } from "next-themes";
25
+ import { Toaster as Toaster$1 } from "sonner";
26
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
27
+ import { Content as Content$4, Portal as Portal$4, Provider, Root as Root$5, Trigger as Trigger$4 } from "@radix-ui/react-tooltip";
28
+ import Link from "next/link";
29
+
30
+ //#region src/components/unsaved-changes-bar/unsaved-changes-bar.tsx
31
+ const spring$3 = {
32
+ bounce: 0,
33
+ duration: .35,
34
+ type: "spring"
35
+ };
36
+ const BLUR_STEPS = 6;
37
+ const BLUR_STRENGTH = 32;
38
+ const BLUR_STEP_IDS = Array.from({ length: BLUR_STEPS }, () => crypto.randomUUID());
39
+ const ProgressiveBlur = () => {
40
+ const factor = .5;
41
+ const base = Math.pow(BLUR_STRENGTH / factor, 1 / (BLUR_STEPS - 1));
42
+ const getBlur = (i) => factor * Math.pow(base, BLUR_STEPS - i - 1);
43
+ return /* @__PURE__ */ jsxs("div", {
44
+ className: "fixed -bottom-10 left-1/2 -translate-x-1/2 pointer-events-none z-40",
45
+ style: {
46
+ height: "160px",
47
+ width: "900px"
48
+ },
49
+ children: [BLUR_STEP_IDS.map((id, i) => {
50
+ const blur = getBlur(i);
51
+ const spread = 20 + (BLUR_STEPS - i) / BLUR_STEPS * 30;
52
+ const mask = `radial-gradient(ellipse ${spread}% ${spread}% at 50% 60%, rgba(0,0,0,1), rgba(0,0,0,0))`;
53
+ return /* @__PURE__ */ jsx("div", {
54
+ className: "absolute inset-0",
55
+ style: {
56
+ backdropFilter: `blur(${blur}px)`,
57
+ mask,
58
+ WebkitBackdropFilter: `blur(${blur}px)`,
59
+ WebkitMask: mask
60
+ }
61
+ }, id);
62
+ }), /* @__PURE__ */ jsx("div", {
63
+ className: "absolute inset-0",
64
+ style: { background: "radial-gradient(ellipse 40% 50% at 50% 60%, var(--background), transparent)" }
65
+ })]
66
+ });
67
+ };
68
+ const popTransition = {
69
+ ...spring$3,
70
+ duration: .25
71
+ };
72
+ const StatusIcon = ({ state }) => {
73
+ return /* @__PURE__ */ jsx("div", {
74
+ className: "relative size-[18px] shrink-0",
75
+ children: /* @__PURE__ */ jsx(AnimatePresence, {
76
+ mode: "popLayout",
77
+ initial: false,
78
+ children: /* @__PURE__ */ jsxs(motion.div, {
79
+ initial: {
80
+ filter: "blur(4px)",
81
+ opacity: 0,
82
+ scale: .25
83
+ },
84
+ animate: {
85
+ filter: "blur(0px)",
86
+ opacity: 1,
87
+ scale: 1
88
+ },
89
+ exit: {
90
+ filter: "blur(4px)",
91
+ opacity: 0,
92
+ scale: .25
93
+ },
94
+ transition: popTransition,
95
+ className: "absolute inset-0 will-change-[opacity,transform,filter]",
96
+ children: [state === "unsaved" && /* @__PURE__ */ jsx("span", {
97
+ className: "text-zinc-400 dark:text-zinc-400",
98
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
99
+ icon: InformationCircleIcon,
100
+ size: 18
101
+ })
102
+ }), state === "saved" && /* @__PURE__ */ jsx("span", {
103
+ className: "text-emerald-400 dark:text-emerald-600",
104
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
105
+ icon: CheckmarkCircle02Icon,
106
+ size: 18
107
+ })
108
+ })]
109
+ }, state)
110
+ })
111
+ });
112
+ };
113
+ const StatusText = ({ state }) => {
114
+ const text = state === "unsaved" ? "Unsaved changes" : "Changes saved";
115
+ return /* @__PURE__ */ jsx(AnimatePresence, {
116
+ mode: "popLayout",
117
+ initial: false,
118
+ children: /* @__PURE__ */ jsx(motion.span, {
119
+ initial: {
120
+ filter: "blur(4px)",
121
+ opacity: 0,
122
+ scale: .95
123
+ },
124
+ animate: {
125
+ filter: "blur(0px)",
126
+ opacity: 1,
127
+ scale: 1
128
+ },
129
+ exit: {
130
+ filter: "blur(4px)",
131
+ opacity: 0,
132
+ scale: .95
133
+ },
134
+ transition: popTransition,
135
+ className: "text-[13px] font-medium text-white dark:text-zinc-800 whitespace-nowrap will-change-[opacity,transform,filter]",
136
+ children: text
137
+ }, text)
138
+ });
139
+ };
140
+ const UnsavedChangesBar = ({ hasChanges, onSave, onReset, suppressed = false }) => {
141
+ const prefersReduced = useReducedMotion();
142
+ const [barState, setBarState] = useState("unsaved");
143
+ const [visible, setVisible] = useState(false);
144
+ const shouldRender = visible && !suppressed;
145
+ const dismissTimer = useRef(null);
146
+ const handleSave = () => {
147
+ onSave();
148
+ setBarState("saved");
149
+ dismissTimer.current = setTimeout(() => {
150
+ setVisible(false);
151
+ setBarState("unsaved");
152
+ }, 1800);
153
+ };
154
+ useEffect(() => {
155
+ if (hasChanges) {
156
+ if (dismissTimer.current) {
157
+ clearTimeout(dismissTimer.current);
158
+ dismissTimer.current = null;
159
+ }
160
+ setVisible(true);
161
+ setBarState("unsaved");
162
+ } else if (!dismissTimer.current) setVisible(false);
163
+ }, [hasChanges]);
164
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AnimatePresence, { children: shouldRender && /* @__PURE__ */ jsx(motion.div, {
165
+ initial: { opacity: 0 },
166
+ animate: { opacity: 1 },
167
+ exit: { opacity: 0 },
168
+ transition: spring$3,
169
+ children: /* @__PURE__ */ jsx(ProgressiveBlur, {})
170
+ }, "blur") }), /* @__PURE__ */ jsx("div", {
171
+ className: "fixed bottom-10 left-1/2 -translate-x-1/2 z-50",
172
+ children: /* @__PURE__ */ jsx(AnimatePresence, { children: shouldRender && /* @__PURE__ */ jsxs(motion.div, {
173
+ initial: prefersReduced ? { opacity: 0 } : {
174
+ opacity: 0,
175
+ scale: .95,
176
+ y: 20
177
+ },
178
+ animate: prefersReduced ? { opacity: 1 } : {
179
+ opacity: 1,
180
+ scale: 1,
181
+ y: 0
182
+ },
183
+ exit: prefersReduced ? { opacity: 0 } : {
184
+ opacity: 0,
185
+ scale: .95,
186
+ y: 20
187
+ },
188
+ transition: spring$3,
189
+ style: { willChange: "opacity, transform" },
190
+ className: "flex items-center gap-1.5 rounded-xl bg-zinc-900 dark:bg-[oklch(0.940_0.008_231)] shadow-[0_0_0_1px_rgba(0,0,0,0.08),0_8px_24px_-4px_rgba(0,0,0,0.25),0_20px_50px_-8px_rgba(0,0,0,0.20)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.08),0_8px_20px_-4px_rgba(0,0,0,0.10),0_20px_50px_-8px_rgba(0,0,0,0.08)] pl-3 pr-1.5 py-1.5",
191
+ children: [
192
+ /* @__PURE__ */ jsx(StatusIcon, { state: barState }),
193
+ /* @__PURE__ */ jsx(StatusText, { state: barState }),
194
+ /* @__PURE__ */ jsxs(motion.div, {
195
+ animate: { opacity: barState === "unsaved" ? 1 : 0 },
196
+ transition: popTransition,
197
+ className: "flex items-center gap-1.5 ml-0.5",
198
+ style: { pointerEvents: barState === "unsaved" ? "auto" : "none" },
199
+ children: [/* @__PURE__ */ jsx(Button, {
200
+ variant: "ghost",
201
+ size: "sm",
202
+ className: "rounded-md text-zinc-400 hover:text-white hover:bg-white/10 dark:text-zinc-500 dark:hover:text-zinc-800 dark:hover:bg-black/[0.06] shrink-0 touch-manipulation",
203
+ onClick: onReset,
204
+ children: "Reset"
205
+ }), /* @__PURE__ */ jsx(Button, {
206
+ size: "sm",
207
+ className: "rounded-md shrink-0 touch-manipulation",
208
+ onClick: handleSave,
209
+ children: "Save changes"
210
+ })]
211
+ })
212
+ ]
213
+ }) })
214
+ })] });
215
+ };
216
+ const sessionStore = {
217
+ get(key) {
218
+ if (globalThis.window === void 0) return void 0;
219
+ try {
220
+ const stored = localStorage.getItem(`dashboard-${key}`);
221
+ return stored ? JSON.parse(stored) : void 0;
222
+ } catch {
223
+ return;
224
+ }
225
+ },
226
+ set(key, value) {
227
+ if (globalThis.window === void 0) return;
228
+ try {
229
+ localStorage.setItem(`dashboard-${key}`, JSON.stringify(value));
230
+ } catch {}
231
+ }
232
+ };
233
+ const useUnsavedChanges = (initialValues, storeKey) => {
234
+ const cached = storeKey ? sessionStore.get(storeKey) : void 0;
235
+ const [values, setValues] = useState(cached?.values ?? initialValues);
236
+ const [savedValues, setSavedValues] = useState(cached?.savedValues ?? initialValues);
237
+ useEffect(() => {
238
+ if (storeKey) sessionStore.set(storeKey, {
239
+ savedValues,
240
+ values
241
+ });
242
+ }, [
243
+ storeKey,
244
+ values,
245
+ savedValues
246
+ ]);
247
+ const hasChanges = useMemo(() => {
248
+ return JSON.stringify(values) !== JSON.stringify(savedValues);
249
+ }, [values, savedValues]);
250
+ const updateValue = (key, value) => {
251
+ setValues((prev) => ({
252
+ ...prev,
253
+ [key]: value
254
+ }));
255
+ };
256
+ const save = () => {
257
+ setSavedValues(values);
258
+ };
259
+ const reset = () => {
260
+ setValues(savedValues);
261
+ };
262
+ const commit = (partial) => {
263
+ const next = partial ? {
264
+ ...values,
265
+ ...partial
266
+ } : values;
267
+ setValues(next);
268
+ setSavedValues(next);
269
+ return next;
270
+ };
271
+ return {
272
+ commit,
273
+ hasChanges,
274
+ reset,
275
+ save,
276
+ setValues,
277
+ updateValue,
278
+ values
279
+ };
280
+ };
281
+
282
+ //#endregion
283
+ //#region src/components/ui/accordion/accordion.tsx
284
+ const Accordion = ({ ...props }) => /* @__PURE__ */ jsx(AccordionPrimitive.Root, {
285
+ "data-slot": "accordion",
286
+ ...props
287
+ });
288
+ const AccordionItem = ({ className, ...props }) => {
289
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Item, {
290
+ "data-slot": "accordion-item",
291
+ className: cn("border-b border-[var(--border-divider)] last:border-b-0", className),
292
+ ...props
293
+ });
294
+ };
295
+ const AccordionTrigger = ({ className, children, ...props }) => {
296
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, {
297
+ className: "flex",
298
+ children: /* @__PURE__ */ jsxs(AccordionPrimitive.Trigger, {
299
+ "data-slot": "accordion-trigger",
300
+ className: cn("focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md px-1 py-4 text-left text-sm font-medium touch-manipulation transition-[color,background-color,opacity] duration-150 ease-out outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 cursor-pointer", className),
301
+ ...props,
302
+ children: [children, /* @__PURE__ */ jsx(HugeiconsIcon, {
303
+ icon: ArrowRight01Icon,
304
+ size: 16,
305
+ className: "text-muted-foreground/60 pointer-events-none shrink-0 transition-transform duration-200 [*[data-state=open]>&]:rotate-90"
306
+ })]
307
+ })
308
+ });
309
+ };
310
+ const AccordionContent = ({ className, children, ...props }) => {
311
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
312
+ "data-slot": "accordion-content",
313
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none overflow-hidden text-sm",
314
+ ...props,
315
+ children: /* @__PURE__ */ jsx("div", {
316
+ className: cn("px-1 pt-0 pb-4", className),
317
+ children
318
+ })
319
+ });
320
+ };
321
+
322
+ //#endregion
323
+ //#region src/components/ui/alert-dialog/alert-dialog.tsx
324
+ const AlertDialog = Root;
325
+ const AlertDialogTrigger = Trigger;
326
+ const AlertDialogPortal = Portal;
327
+ const AlertDialogOverlay = ({ className, ...props }) => /* @__PURE__ */ jsx(Overlay, {
328
+ "data-slot": "alert-dialog-overlay",
329
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] backdrop-blur-[2px] will-change-[opacity] duration-200 motion-reduce:animate-none", className),
330
+ ...props
331
+ });
332
+ const AlertDialogContent = ({ className, size = "default", ...props }) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(Content, {
333
+ "data-slot": "alert-dialog-content",
334
+ "data-size": size,
335
+ className: cn("bg-muted overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-[16px] border-0 shadow-none duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md will-change-[opacity,transform] motion-reduce:animate-none", className),
336
+ ...props
337
+ })] });
338
+ const AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
339
+ "data-slot": "alert-dialog-header",
340
+ className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 px-5 py-4 border-b bg-card text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
341
+ ...props
342
+ });
343
+ const AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
344
+ "data-slot": "alert-dialog-footer",
345
+ className: cn("grid grid-cols-2 gap-2 px-5 py-4 bg-muted", className),
346
+ ...props
347
+ });
348
+ const AlertDialogTitle = ({ className, ...props }) => /* @__PURE__ */ jsx(Title, {
349
+ "data-slot": "alert-dialog-title",
350
+ className: cn("text-lg font-semibold text-balance sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
351
+ ...props
352
+ });
353
+ const AlertDialogDescription = ({ className, ...props }) => /* @__PURE__ */ jsx(Description, {
354
+ "data-slot": "alert-dialog-description",
355
+ className: cn("text-muted-foreground text-sm text-pretty", className),
356
+ ...props
357
+ });
358
+ const AlertDialogAction = ({ className, variant = "default", size = "default", ...props }) => /* @__PURE__ */ jsx(Button, {
359
+ variant,
360
+ size,
361
+ asChild: true,
362
+ children: /* @__PURE__ */ jsx(Action, {
363
+ "data-slot": "alert-dialog-action",
364
+ className: cn(className),
365
+ ...props
366
+ })
367
+ });
368
+ const AlertDialogCancel = ({ className, variant = "outline", size = "default", ...props }) => /* @__PURE__ */ jsx(Button, {
369
+ variant,
370
+ size,
371
+ asChild: true,
372
+ children: /* @__PURE__ */ jsx(Cancel, {
373
+ "data-slot": "alert-dialog-cancel",
374
+ className: cn(className),
375
+ ...props
376
+ })
377
+ });
378
+
379
+ //#endregion
380
+ //#region src/components/ui/avatar/avatar.tsx
381
+ const Avatar = ({ className, size = "default", ...props }) => {
382
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
383
+ "data-slot": "avatar",
384
+ "data-size": size,
385
+ className: cn("group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6", className),
386
+ ...props
387
+ });
388
+ };
389
+ const AvatarImage = ({ className, ...props }) => {
390
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
391
+ "data-slot": "avatar-image",
392
+ className: cn("aspect-square size-full outline-1 -outline-offset-1 outline-black/10", className),
393
+ ...props
394
+ });
395
+ };
396
+ const AvatarFallback = ({ className, ...props }) => {
397
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
398
+ "data-slot": "avatar-fallback",
399
+ className: cn("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs", className),
400
+ ...props
401
+ });
402
+ };
403
+
404
+ //#endregion
405
+ //#region src/components/ui/badge/badge.tsx
406
+ const badgeVariants = cva("inline-flex items-center justify-center rounded-[5px] border border-transparent px-1.5 py-0.5 text-xs font-medium tabular-nums w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 [&>svg]:[stroke-width:2.5] gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow,background-color] duration-150 overflow-hidden", {
407
+ defaultVariants: { variant: "default" },
408
+ variants: { variant: {
409
+ brand: "bg-[var(--brand-light)] text-[var(--brand-accented)] dark:text-[oklch(0.650_0.085_256)] border-[var(--brand-default)]/20 dark:border-[oklch(0.450_0.070_256)]/30 [a&]:hover:bg-[var(--brand-light)]/80",
410
+ danger: "bg-[var(--danger-light)] text-[var(--text-danger)] border-[var(--border-danger)]/20 [a&]:hover:bg-[var(--danger-light)]/80",
411
+ dashed: "border-dashed border-[var(--border-default)] text-muted-foreground bg-transparent",
412
+ "dashed-brand": "border-dashed border-[var(--brand-default)] text-[var(--brand-accented)] bg-transparent",
413
+ default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
414
+ destructive: "bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
415
+ ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
416
+ "gradient-brand": "bg-gradient-to-r from-[var(--brand-default)] to-[var(--process-default)] text-white border-transparent",
417
+ "gradient-premium": "bg-gradient-to-r from-amber-500 to-orange-400 text-white border-transparent",
418
+ inactive: "bg-[var(--inactive-light)] text-muted-foreground border-[var(--border-inactive)]/40 [a&]:hover:bg-[var(--inactive-light)]/80",
419
+ link: "text-primary underline-offset-4 [a&]:hover:underline",
420
+ outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
421
+ process: "bg-[var(--process-light)] text-[var(--text-process)] border-[var(--border-process)]/20 [a&]:hover:bg-[var(--process-light)]/80",
422
+ secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
423
+ success: "bg-[var(--success-light)] text-[var(--text-success)] border-[var(--border-success)]/20 [a&]:hover:bg-[var(--success-light)]/80",
424
+ warning: "bg-[var(--warning-light)] text-[var(--text-warning)] border-[var(--border-warning)]/20 [a&]:hover:bg-[var(--warning-light)]/80"
425
+ } }
426
+ });
427
+ const Badge = ({ className, variant = "default", asChild = false, ...props }) => {
428
+ return /* @__PURE__ */ jsx(asChild ? Slot : "span", {
429
+ "data-slot": "badge",
430
+ "data-variant": variant,
431
+ className: cn(badgeVariants({ variant }), className),
432
+ ...props
433
+ });
434
+ };
435
+
436
+ //#endregion
437
+ //#region src/components/ui/card/card.tsx
438
+ const Card = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
439
+ "data-slot": "card",
440
+ className: cn("bg-card text-card-foreground flex flex-col rounded-[16px] border-0 shadow-[var(--shadow-card)] overflow-hidden has-data-[slot=card-footer]:bg-muted/50", className),
441
+ ...props
442
+ });
443
+ const CardHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
444
+ "data-slot": "card-header",
445
+ className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-5 py-4 border-b bg-card has-data-[slot=card-action]:grid-cols-[1fr_auto]", className),
446
+ ...props
447
+ });
448
+ const CardTitle = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
449
+ "data-slot": "card-title",
450
+ className: cn("text-sm leading-none font-semibold text-balance", className),
451
+ ...props
452
+ });
453
+ const CardDescription = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
454
+ "data-slot": "card-description",
455
+ className: cn("text-muted-foreground text-[13px] text-pretty", className),
456
+ ...props
457
+ });
458
+ const CardContent = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
459
+ "data-slot": "card-content",
460
+ className: cn("px-5 py-3.5 bg-card", className),
461
+ ...props
462
+ });
463
+ const CardFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
464
+ "data-slot": "card-footer",
465
+ className: cn("flex items-center px-5 py-4 bg-muted/50", className),
466
+ ...props
467
+ });
468
+
469
+ //#endregion
470
+ //#region src/components/ui/check-icon/check-icon.tsx
471
+ const CheckIcon = ({ size = 14, strokeWidth = 3, className, ...props }) => /* @__PURE__ */ jsx("svg", {
472
+ "aria-hidden": "true",
473
+ viewBox: "0 0 24 24",
474
+ fill: "none",
475
+ stroke: "currentColor",
476
+ strokeLinecap: "round",
477
+ strokeLinejoin: "round",
478
+ style: {
479
+ height: size,
480
+ width: size
481
+ },
482
+ className,
483
+ ...props,
484
+ children: /* @__PURE__ */ jsx("path", {
485
+ d: "M4 12L9 17L20 6",
486
+ pathLength: 1,
487
+ strokeWidth
488
+ })
489
+ });
490
+
491
+ //#endregion
492
+ //#region src/components/ui/checkbox/checkbox.tsx
493
+ const Checkbox = ({ className, ...props }) => {
494
+ return /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
495
+ "data-slot": "checkbox",
496
+ className: cn("group peer dark:bg-input/30 data-[state=checked]:bg-[var(--action)] data-[state=checked]:text-white dark:data-[state=checked]:bg-[var(--action)] data-[state=indeterminate]:bg-[var(--action)] data-[state=indeterminate]:text-white relative size-4 shrink-0 touch-manipulation rounded-[4px] border-0 shadow-[0_0_0_1px_rgba(31,41,55,0.20),0_1px_2px_0_rgba(0,0,0,0.06),0_0_1px_0_rgba(0,0,0,0.02)] dark:shadow-[0_0_0_1px_rgba(255,255,255,0.15),0_1px_2px_0_rgba(0,0,0,0.20),0_0_1px_0_rgba(0,0,0,0.06)] data-[state=checked]:shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_rgba(255,255,255,0.15)_inset,0px_2px_3px_0px_rgba(31,41,55,0.30),0px_1px_1px_0px_rgba(0,0,0,0.28)] dark:data-[state=checked]:shadow-[0px_1px_1px_0px_rgba(255,255,255,0.10)_inset,0px_2px_3px_0px_rgba(0,0,0,0.50),0px_1px_1px_0px_rgba(0,0,0,0.30)] data-[state=indeterminate]:shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_rgba(255,255,255,0.15)_inset,0px_2px_3px_0px_rgba(31,41,55,0.30),0px_1px_1px_0px_rgba(0,0,0,0.28)] dark:data-[state=indeterminate]:shadow-[0px_1px_1px_0px_rgba(255,255,255,0.10)_inset,0px_2px_3px_0px_rgba(0,0,0,0.50),0px_1px_1px_0px_rgba(0,0,0,0.30)] transition-[color,box-shadow,background-color] duration-200 ease outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:shadow-[0_0_0_1px_var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer before:absolute before:-inset-[12px] before:content-['']", className),
497
+ ...props,
498
+ children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, {
499
+ "data-slot": "checkbox-indicator",
500
+ className: "relative grid place-content-center text-current size-full",
501
+ forceMount: true,
502
+ children: [/* @__PURE__ */ jsx("svg", {
503
+ className: "size-3.5 absolute inset-0 m-auto transition-[opacity,transform,filter] duration-200 opacity-0 scale-[0.25] blur-[4px] group-data-[state=indeterminate]:opacity-100 group-data-[state=indeterminate]:scale-100 group-data-[state=indeterminate]:blur-none",
504
+ viewBox: "0 0 24 24",
505
+ fill: "none",
506
+ stroke: "currentColor",
507
+ strokeLinecap: "round",
508
+ strokeLinejoin: "round",
509
+ children: /* @__PURE__ */ jsx("path", {
510
+ d: "M5 12L19 12",
511
+ pathLength: 1,
512
+ strokeWidth: 3
513
+ })
514
+ }), /* @__PURE__ */ jsx("svg", {
515
+ className: "size-3.5 absolute inset-0 m-auto transition-[opacity,transform,filter] duration-200 opacity-0 scale-[0.25] blur-[4px] group-data-[state=checked]:opacity-100 group-data-[state=checked]:scale-100 group-data-[state=checked]:blur-none",
516
+ viewBox: "0 0 24 24",
517
+ fill: "none",
518
+ stroke: "currentColor",
519
+ strokeLinecap: "round",
520
+ strokeLinejoin: "round",
521
+ children: /* @__PURE__ */ jsx("path", {
522
+ d: "M4 12L9 17L20 6",
523
+ pathLength: 1,
524
+ strokeWidth: 3
525
+ })
526
+ })]
527
+ })
528
+ });
529
+ };
530
+
531
+ //#endregion
532
+ //#region src/components/ui/collapsible/collapsible.tsx
533
+ const Collapsible = ({ ...props }) => /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, {
534
+ "data-slot": "collapsible",
535
+ ...props
536
+ });
537
+ const CollapsibleTrigger = ({ className, ...props }) => {
538
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleTrigger, {
539
+ "data-slot": "collapsible-trigger",
540
+ className: cn("touch-manipulation", className),
541
+ ...props
542
+ });
543
+ };
544
+ const CollapsibleContent = ({ ...props }) => /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleContent, {
545
+ "data-slot": "collapsible-content",
546
+ ...props
547
+ });
548
+
549
+ //#endregion
550
+ //#region src/components/ui/dialog/dialog.tsx
551
+ const Dialog = Root$1;
552
+ const DialogTrigger = Trigger$1;
553
+ const DialogPortal = Portal$1;
554
+ const DialogClose = Close;
555
+ const DialogOverlay = ({ className, ...props }) => /* @__PURE__ */ jsx(Overlay$1, {
556
+ "data-slot": "dialog-overlay",
557
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] backdrop-blur-[2px] will-change-[opacity] duration-200 data-[state=open]:ease-out data-[state=closed]:ease-in motion-reduce:animate-none", className),
558
+ ...props
559
+ });
560
+ const DialogContent = ({ className, children, ...props }) => /* @__PURE__ */ jsxs(DialogPortal, {
561
+ "data-slot": "dialog-portal",
562
+ children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsx(Content$1, {
563
+ "data-slot": "dialog-content",
564
+ className: cn("bg-card overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-[16px] border-0 shadow-none duration-200 data-[state=open]:ease-out data-[state=closed]:ease-in outline-none sm:max-w-md will-change-[opacity,transform] motion-reduce:animate-none", className),
565
+ ...props,
566
+ children
567
+ })]
568
+ });
569
+ const DialogHeader = ({ className, showCloseButton = true, children, ...props }) => /* @__PURE__ */ jsxs("div", {
570
+ "data-slot": "dialog-header",
571
+ className: cn("relative flex flex-col gap-1.5 px-5 pt-4 pb-4 border-b bg-card sm:text-left", className),
572
+ ...props,
573
+ children: [children, showCloseButton && /* @__PURE__ */ jsxs(Close, {
574
+ "data-slot": "dialog-close",
575
+ className: "absolute top-3 right-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,background-color] duration-150 ease hover:opacity-100 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring/50 focus:outline-hidden cursor-pointer touch-manipulation before:absolute before:-inset-[6px] before:content-[\"\"]",
576
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
577
+ icon: Cancel01Icon,
578
+ size: 14
579
+ }), /* @__PURE__ */ jsx("span", {
580
+ className: "sr-only",
581
+ children: "Close"
582
+ })]
583
+ })]
584
+ });
585
+ const DialogBody = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
586
+ "data-slot": "dialog-body",
587
+ className: cn("px-5 py-5 bg-card", className),
588
+ ...props
589
+ });
590
+ const DialogFooter = ({ className, showCloseButton = false, children, ...props }) => /* @__PURE__ */ jsxs("div", {
591
+ "data-slot": "dialog-footer",
592
+ className: cn("grid grid-cols-2 gap-2 px-5 py-4 bg-muted", className),
593
+ ...props,
594
+ children: [children, showCloseButton && /* @__PURE__ */ jsx(Close, {
595
+ asChild: true,
596
+ children: /* @__PURE__ */ jsx(Button, {
597
+ variant: "outline",
598
+ children: "Close"
599
+ })
600
+ })]
601
+ });
602
+ const DialogTitle = ({ className, ...props }) => /* @__PURE__ */ jsx(Title$1, {
603
+ "data-slot": "dialog-title",
604
+ className: cn("text-lg leading-none font-semibold text-balance", className),
605
+ ...props
606
+ });
607
+ const DialogDescription = ({ className, ...props }) => /* @__PURE__ */ jsx(Description$1, {
608
+ "data-slot": "dialog-description",
609
+ className: cn("text-muted-foreground text-sm text-pretty", className),
610
+ ...props
611
+ });
612
+
613
+ //#endregion
614
+ //#region src/components/icons/animated-icon/animated-icon.tsx
615
+ const AnimatedIcon = forwardRef(({ children, className, onMouseEnter, onMouseLeave, size = 28, ...props }, ref) => {
616
+ const controls = useAnimation();
617
+ const isControlledRef = useRef(false);
618
+ useImperativeHandle(ref, () => {
619
+ isControlledRef.current = true;
620
+ return {
621
+ startAnimation: () => controls.start("animate"),
622
+ stopAnimation: () => controls.start("normal")
623
+ };
624
+ });
625
+ const handleMouseEnter = useCallback((e) => {
626
+ if (isControlledRef.current) onMouseEnter?.(e);
627
+ else controls.start("animate").catch(() => void 0);
628
+ }, [controls, onMouseEnter]);
629
+ const handleMouseLeave = useCallback((e) => {
630
+ if (isControlledRef.current) onMouseLeave?.(e);
631
+ else controls.start("normal").catch(() => void 0);
632
+ }, [controls, onMouseLeave]);
633
+ return /* @__PURE__ */ jsx("div", {
634
+ "aria-hidden": "true",
635
+ className: cn("inline-flex items-center justify-center", className),
636
+ onMouseEnter: handleMouseEnter,
637
+ onMouseLeave: handleMouseLeave,
638
+ ...props,
639
+ children: children(controls, size)
640
+ });
641
+ });
642
+ AnimatedIcon.displayName = "AnimatedIcon";
643
+
644
+ //#endregion
645
+ //#region src/components/icons/search/search.tsx
646
+ const SearchIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
647
+ ref,
648
+ ...props,
649
+ children: (controls, size) => /* @__PURE__ */ jsxs(motion.svg, {
650
+ animate: controls,
651
+ fill: "none",
652
+ height: size,
653
+ stroke: "currentColor",
654
+ strokeLinecap: "round",
655
+ strokeLinejoin: "round",
656
+ strokeWidth: "2",
657
+ transition: {
658
+ bounce: .3,
659
+ duration: 1
660
+ },
661
+ variants: {
662
+ animate: {
663
+ x: [
664
+ 0,
665
+ 0,
666
+ -3,
667
+ 0
668
+ ],
669
+ y: [
670
+ 0,
671
+ -4,
672
+ 0,
673
+ 0
674
+ ]
675
+ },
676
+ normal: {
677
+ x: 0,
678
+ y: 0
679
+ }
680
+ },
681
+ viewBox: "0 0 24 24",
682
+ width: size,
683
+ xmlns: "http://www.w3.org/2000/svg",
684
+ children: [/* @__PURE__ */ jsx("circle", {
685
+ cx: "11",
686
+ cy: "11",
687
+ r: "8"
688
+ }), /* @__PURE__ */ jsx("path", { d: "m21 21-4.3-4.3" })]
689
+ })
690
+ }));
691
+ SearchIcon.displayName = "SearchIcon";
692
+
693
+ //#endregion
694
+ //#region src/components/ui/command/command.tsx
695
+ const Command = ({ className, ...props }) => /* @__PURE__ */ jsx(Command$1, {
696
+ "data-slot": "command",
697
+ className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
698
+ ...props
699
+ });
700
+ const CommandDialog = ({ title = "Command Palette", description = "Search for a command to run...", children, className, ...props }) => /* @__PURE__ */ jsxs(Dialog, {
701
+ ...props,
702
+ children: [/* @__PURE__ */ jsxs(DialogHeader, {
703
+ className: "sr-only",
704
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
705
+ }), /* @__PURE__ */ jsx(DialogContent, {
706
+ className: cn("overflow-hidden p-0", className),
707
+ children: /* @__PURE__ */ jsx(Command, {
708
+ className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
709
+ children
710
+ })
711
+ })]
712
+ });
713
+ const CommandInput = ({ className, ...props }) => /* @__PURE__ */ jsxs("div", {
714
+ "data-slot": "command-input-wrapper",
715
+ className: "flex h-9 items-center gap-2 border-b px-3",
716
+ children: [/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(Command$1.Input, {
717
+ "data-slot": "command-input",
718
+ className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
719
+ ...props
720
+ })]
721
+ });
722
+ const CommandList = ({ className, ...props }) => /* @__PURE__ */ jsx(Command$1.List, {
723
+ "data-slot": "command-list",
724
+ className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
725
+ ...props
726
+ });
727
+ const CommandEmpty = ({ ...props }) => /* @__PURE__ */ jsx(Command$1.Empty, {
728
+ "data-slot": "command-empty",
729
+ className: "py-6 text-center text-sm",
730
+ ...props
731
+ });
732
+ const CommandGroup = ({ className, ...props }) => /* @__PURE__ */ jsx(Command$1.Group, {
733
+ "data-slot": "command-group",
734
+ className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
735
+ ...props
736
+ });
737
+ const CommandSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(Command$1.Separator, {
738
+ "data-slot": "command-separator",
739
+ className: cn("bg-border -mx-1 h-px", className),
740
+ ...props
741
+ });
742
+ const CommandItem = ({ className, ...props }) => /* @__PURE__ */ jsx(Command$1.Item, {
743
+ "data-slot": "command-item",
744
+ className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
745
+ ...props
746
+ });
747
+ const CommandShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", {
748
+ "data-slot": "command-shortcut",
749
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
750
+ ...props
751
+ });
752
+
753
+ //#endregion
754
+ //#region src/components/ui/dropdown-menu/dropdown-menu.tsx
755
+ const DropdownMenu = Root$2;
756
+ const DropdownMenuTrigger = Trigger$2;
757
+ const DropdownMenuGroup = Group;
758
+ const DropdownMenuSub = Sub;
759
+ const DropdownMenuContent = forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(Portal$2, { children: /* @__PURE__ */ jsx(Content$2, {
760
+ ref,
761
+ sideOffset,
762
+ className: cn("z-50 min-w-32 overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
763
+ ...props
764
+ }) }));
765
+ DropdownMenuContent.displayName = Content$2.displayName;
766
+ const DropdownMenuItem = forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(Item, {
767
+ ref,
768
+ className: cn("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4", inset && "pl-8", className),
769
+ ...props
770
+ }));
771
+ DropdownMenuItem.displayName = Item.displayName;
772
+ const DropdownMenuCheckboxItem = forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(CheckboxItem, {
773
+ ref,
774
+ className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50", className),
775
+ checked,
776
+ ...props,
777
+ children: [/* @__PURE__ */ jsx("span", {
778
+ className: "absolute left-2 flex size-3.5 items-center justify-center",
779
+ children: /* @__PURE__ */ jsx(ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon$1, { className: "size-4" }) })
780
+ }), children]
781
+ }));
782
+ DropdownMenuCheckboxItem.displayName = CheckboxItem.displayName;
783
+ const DropdownMenuRadioGroup = RadioGroup$1;
784
+ const DropdownMenuRadioItem = forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(RadioItem, {
785
+ ref,
786
+ className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50", className),
787
+ ...props,
788
+ children: [/* @__PURE__ */ jsx("span", {
789
+ className: "absolute left-2 flex size-3.5 items-center justify-center",
790
+ children: /* @__PURE__ */ jsx(ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) })
791
+ }), children]
792
+ }));
793
+ DropdownMenuRadioItem.displayName = RadioItem.displayName;
794
+ const DropdownMenuLabel = forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(Label$1, {
795
+ ref,
796
+ className: cn("px-2 py-1.5 text-sm font-medium", inset && "pl-8", className),
797
+ ...props
798
+ }));
799
+ DropdownMenuLabel.displayName = Label$1.displayName;
800
+ const DropdownMenuSeparator = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Separator$1, {
801
+ ref,
802
+ className: cn("-mx-1 my-1 h-px bg-border", className),
803
+ ...props
804
+ }));
805
+ DropdownMenuSeparator.displayName = Separator$1.displayName;
806
+ const DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", {
807
+ className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className),
808
+ ...props
809
+ });
810
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
811
+ const DropdownMenuSubTrigger = forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(SubTrigger, {
812
+ ref,
813
+ className: cn("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent", inset && "pl-8", className),
814
+ ...props,
815
+ children: [children, /* @__PURE__ */ jsx(ChevronRightIcon$1, { className: "ml-auto size-4" })]
816
+ }));
817
+ DropdownMenuSubTrigger.displayName = SubTrigger.displayName;
818
+ const DropdownMenuSubContent = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(SubContent, {
819
+ ref,
820
+ className: cn("z-50 min-w-32 overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
821
+ ...props
822
+ }));
823
+ DropdownMenuSubContent.displayName = SubContent.displayName;
824
+
825
+ //#endregion
826
+ //#region src/components/icon-config/icon-config.tsx
827
+ const IconConfigContext = createContext({
828
+ setStrokeWidth: () => {},
829
+ strokeWidth: void 0
830
+ });
831
+ const IconConfigProvider = ({ children }) => {
832
+ const [strokeWidth, setStrokeWidth] = useState(() => {
833
+ if (globalThis.window === void 0) return void 0;
834
+ const stored = localStorage.getItem("icon-stroke-width");
835
+ if (stored === "default") return void 0;
836
+ const n = Number.parseFloat(stored ?? "");
837
+ return Number.isNaN(n) ? void 0 : n;
838
+ });
839
+ useEffect(() => {
840
+ document.documentElement.style.setProperty("--icon-stroke-width", String(strokeWidth ?? 1.75));
841
+ }, [strokeWidth]);
842
+ const applyStrokeWidth = useCallback((v) => {
843
+ setStrokeWidth(v);
844
+ localStorage.setItem("icon-stroke-width", v === void 0 ? "default" : String(v));
845
+ }, []);
846
+ const value = useMemo(() => ({
847
+ setStrokeWidth: applyStrokeWidth,
848
+ strokeWidth
849
+ }), [applyStrokeWidth, strokeWidth]);
850
+ return /* @__PURE__ */ jsx(IconConfigContext.Provider, {
851
+ value,
852
+ children
853
+ });
854
+ };
855
+ const useIconConfig = () => useContext(IconConfigContext);
856
+
857
+ //#endregion
858
+ //#region src/components/ui/icon/icon.tsx
859
+ /** Drop-in replacement for HugeiconsIcon — reads global strokeWidth from IconConfigContext */
860
+ const Icon = (props) => {
861
+ const { strokeWidth } = useIconConfig();
862
+ return /* @__PURE__ */ jsx(HugeiconsIcon, {
863
+ strokeWidth: strokeWidth ?? 1.75,
864
+ ...props
865
+ });
866
+ };
867
+
868
+ //#endregion
869
+ //#region src/components/ui/kbd/kbd.tsx
870
+ const Kbd = ({ className, ...props }) => {
871
+ return /* @__PURE__ */ jsx("kbd", {
872
+ "data-slot": "kbd",
873
+ className: cn("bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10", className),
874
+ ...props
875
+ });
876
+ };
877
+
878
+ //#endregion
879
+ //#region src/components/ui/popover/popover.tsx
880
+ const Popover = ({ ...props }) => /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
881
+ "data-slot": "popover",
882
+ ...props
883
+ });
884
+ const PopoverTrigger = ({ ...props }) => /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
885
+ "data-slot": "popover-trigger",
886
+ ...props
887
+ });
888
+ const PopoverContent = ({ className, align = "center", sideOffset = 4, ...props }) => {
889
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
890
+ "data-slot": "popover-content",
891
+ align,
892
+ sideOffset,
893
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-xl border-0 p-4 shadow-[var(--shadow-elevated)] outline-hidden will-change-[opacity,transform] motion-reduce:animate-none", className),
894
+ ...props
895
+ }) });
896
+ };
897
+ const PopoverAnchor = ({ ...props }) => /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
898
+ "data-slot": "popover-anchor",
899
+ ...props
900
+ });
901
+
902
+ //#endregion
903
+ //#region src/components/ui/progress/progress.tsx
904
+ const progressVariants = cva("h-full w-full flex-1 transition-transform duration-500 ease-out motion-reduce:transition-none", {
905
+ defaultVariants: { variant: "default" },
906
+ variants: { variant: {
907
+ brand: "bg-[var(--brand-default)]",
908
+ danger: "bg-[var(--danger-default)]",
909
+ default: "bg-primary",
910
+ process: "bg-[var(--process-default)]",
911
+ success: "bg-[var(--success-default)]",
912
+ warning: "bg-[var(--warning-default)]"
913
+ } }
914
+ });
915
+ const Progress = ({ className, indeterminate = false, value, variant, ...props }) => /* @__PURE__ */ jsxs("div", {
916
+ "data-slot": "progress",
917
+ className: cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className),
918
+ ...props,
919
+ children: [/* @__PURE__ */ jsx("progress", {
920
+ "aria-label": "Progress",
921
+ className: "sr-only",
922
+ max: 100,
923
+ value: indeterminate ? void 0 : value ?? 0
924
+ }), /* @__PURE__ */ jsx("div", {
925
+ "data-slot": "progress-indicator",
926
+ className: cn(progressVariants({ variant }), indeterminate && "animate-progress-indeterminate motion-reduce:animate-none"),
927
+ style: indeterminate ? void 0 : { transform: `translateX(-${100 - (value ?? 0)}%)` }
928
+ })]
929
+ });
930
+
931
+ //#endregion
932
+ //#region src/components/ui/radio-group/radio-group.tsx
933
+ const RadioGroup = ({ className, ...props }) => {
934
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
935
+ "data-slot": "radio-group",
936
+ className: cn("grid gap-3", className),
937
+ ...props
938
+ });
939
+ };
940
+ const RadioGroupItem = ({ className, ...props }) => {
941
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
942
+ "data-slot": "radio-group-item",
943
+ className: cn("text-[var(--action)] dark:bg-input/30 relative aspect-square size-4 shrink-0 touch-manipulation rounded-full border border-[rgba(31,41,55,0.30)] dark:border-[rgba(255,255,255,0.20)] data-[state=checked]:border-[var(--action)] shadow-[0_1px_2px_rgba(0,0,0,0.06),0_0_1px_rgba(31,41,55,0.08)] dark:shadow-[0_1px_2px_rgba(0,0,0,0.20),0_0_1px_rgba(0,0,0,0.15)] transition-[color,box-shadow,border-color] duration-100 ease-out outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer before:absolute before:-inset-[12px] before:content-['']", className),
944
+ ...props,
945
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
946
+ "data-slot": "radio-group-indicator",
947
+ className: "group/indicator relative flex items-center justify-center",
948
+ forceMount: true,
949
+ children: /* @__PURE__ */ jsx("span", { className: "bg-[var(--action)] absolute top-1/2 left-1/2 size-2 rounded-full -translate-x-1/2 -translate-y-1/2 transition-[opacity,transform] duration-150 ease-out group-data-[state=unchecked]/indicator:scale-0 group-data-[state=unchecked]/indicator:opacity-0" })
950
+ })
951
+ });
952
+ };
953
+
954
+ //#endregion
955
+ //#region src/components/ui/scroll-area/scroll-area.tsx
956
+ const ScrollArea = ({ className, children, ...props }) => {
957
+ return /* @__PURE__ */ jsxs(ScrollAreaPrimitive.Root, {
958
+ "data-slot": "scroll-area",
959
+ className: cn("relative", className),
960
+ ...props,
961
+ children: [
962
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, {
963
+ "data-slot": "scroll-area-viewport",
964
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
965
+ children
966
+ }),
967
+ /* @__PURE__ */ jsx(ScrollBar, {}),
968
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
969
+ ]
970
+ });
971
+ };
972
+ const ScrollBar = ({ className, orientation = "vertical", ...props }) => {
973
+ return /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, {
974
+ "data-slot": "scroll-area-scrollbar",
975
+ orientation,
976
+ className: cn("flex touch-none touch-manipulation p-px transition-[background-color] select-none", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", className),
977
+ ...props,
978
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, {
979
+ "data-slot": "scroll-area-thumb",
980
+ className: "bg-border relative flex-1 rounded-full"
981
+ })
982
+ });
983
+ };
984
+
985
+ //#endregion
986
+ //#region src/components/ui/search-input/search-input.tsx
987
+ const SearchInput = ({ className, placeholder = "Search...", shortcut = "⌘K", onClick, ...props }) => {
988
+ return /* @__PURE__ */ jsxs("button", {
989
+ type: "button",
990
+ "data-slot": "search-input",
991
+ className: cn("h-8 min-h-11 w-full touch-manipulation rounded-md border border-border bg-background dark:bg-input/30 md:min-h-0", "hover:border-foreground/20", "transition-[color,box-shadow,border-color] duration-100 ease-out", "outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", "flex items-center gap-2 px-3", "text-sm text-muted-foreground/60 cursor-pointer", className),
992
+ onClick,
993
+ ...props,
994
+ children: [
995
+ /* @__PURE__ */ jsx(HugeiconsIcon, {
996
+ icon: Search01Icon,
997
+ size: 14,
998
+ className: "shrink-0 text-muted-foreground"
999
+ }),
1000
+ /* @__PURE__ */ jsx("span", {
1001
+ className: "flex-1 text-left",
1002
+ children: placeholder
1003
+ }),
1004
+ shortcut && /* @__PURE__ */ jsx(Kbd, { children: shortcut })
1005
+ ]
1006
+ });
1007
+ };
1008
+
1009
+ //#endregion
1010
+ //#region src/components/ui/select/select.tsx
1011
+ const Select = ({ ...props }) => /* @__PURE__ */ jsx(Root$3, {
1012
+ "data-slot": "select",
1013
+ ...props
1014
+ });
1015
+ const SelectGroup = ({ ...props }) => /* @__PURE__ */ jsx(Group$1, {
1016
+ "data-slot": "select-group",
1017
+ ...props
1018
+ });
1019
+ const SelectValue = ({ ...props }) => /* @__PURE__ */ jsx(Value, {
1020
+ "data-slot": "select-value",
1021
+ ...props
1022
+ });
1023
+ const SelectTrigger = ({ className, size = "default", children, ...props }) => /* @__PURE__ */ jsxs(Trigger$3, {
1024
+ "data-slot": "select-trigger",
1025
+ "data-size": size,
1026
+ className: cn("data-[placeholder]:text-muted-foreground/60 [&_svg:not([class*='text-'])]:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 flex w-fit touch-manipulation items-center justify-between gap-1.5 rounded-md border-0 bg-transparent px-3 py-2 text-[13px] whitespace-nowrap shadow-[var(--shadow-input)] hover:shadow-[var(--shadow-input-hover)] transition-[color,box-shadow] duration-100 ease-out outline-none focus-visible:shadow-[0_0_0_1px_var(--ring),0_0_0_4px_rgba(0,114,239,0.15)] aria-invalid:shadow-[0_0_0_1px_var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:text-[13px] data-[size=sm]:px-2.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
1027
+ ...props,
1028
+ children: [children, /* @__PURE__ */ jsx(Icon$1, {
1029
+ asChild: true,
1030
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1031
+ icon: ArrowDown01Icon,
1032
+ size: 16,
1033
+ className: "opacity-50"
1034
+ })
1035
+ })]
1036
+ });
1037
+ const SelectContent = ({ className, children, position = "popper", align = "start", ...props }) => /* @__PURE__ */ jsx(Portal$3, { children: /* @__PURE__ */ jsxs(Content$3, {
1038
+ "data-slot": "select-content",
1039
+ className: cn("bg-popover text-popover-foreground will-change-[opacity,transform] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border-0 shadow-[var(--shadow-elevated)]", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
1040
+ position,
1041
+ align,
1042
+ ...props,
1043
+ children: [
1044
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1045
+ /* @__PURE__ */ jsx(Viewport, {
1046
+ className: cn("p-1", position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
1047
+ children
1048
+ }),
1049
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1050
+ ]
1051
+ }) });
1052
+ const SelectLabel = ({ className, ...props }) => /* @__PURE__ */ jsx(Label$2, {
1053
+ "data-slot": "select-label",
1054
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
1055
+ ...props
1056
+ });
1057
+ const SelectItem = ({ className, children, ...props }) => /* @__PURE__ */ jsxs(Item$1, {
1058
+ "data-slot": "select-item",
1059
+ className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
1060
+ ...props,
1061
+ children: [/* @__PURE__ */ jsx("span", {
1062
+ "data-slot": "select-item-indicator",
1063
+ className: "absolute right-2 flex size-3.5 items-center justify-center",
1064
+ children: /* @__PURE__ */ jsx(ItemIndicator$1, { children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1065
+ icon: Tick01Icon,
1066
+ size: 16
1067
+ }) })
1068
+ }), /* @__PURE__ */ jsx(ItemText, { children })]
1069
+ });
1070
+ const SelectSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(Separator$2, {
1071
+ "data-slot": "select-separator",
1072
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
1073
+ ...props
1074
+ });
1075
+ const SelectScrollUpButton = ({ className, ...props }) => /* @__PURE__ */ jsx(ScrollUpButton, {
1076
+ "data-slot": "select-scroll-up-button",
1077
+ className: cn("flex cursor-default items-center justify-center py-1", className),
1078
+ ...props,
1079
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1080
+ icon: ArrowUp01Icon,
1081
+ size: 16
1082
+ })
1083
+ });
1084
+ const SelectScrollDownButton = ({ className, ...props }) => /* @__PURE__ */ jsx(ScrollDownButton, {
1085
+ "data-slot": "select-scroll-down-button",
1086
+ className: cn("flex cursor-default items-center justify-center py-1", className),
1087
+ ...props,
1088
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1089
+ icon: ArrowDown01Icon,
1090
+ size: 16
1091
+ })
1092
+ });
1093
+
1094
+ //#endregion
1095
+ //#region src/components/ui/selectable-card/selectable-card.tsx
1096
+ const SelectableCard = ({ badge, className, description, icon, iconSize = 20, label, selected, ...props }) => /* @__PURE__ */ jsxs("button", {
1097
+ "data-slot": "selectable-card",
1098
+ "data-selected": selected,
1099
+ className: cn("group/card relative flex flex-col items-start gap-2.5 p-4 rounded-xl text-left transition-[box-shadow,background-color,scale] duration-150 touch-manipulation active:scale-[0.96] cursor-pointer w-full outline-none focus-visible:shadow-[0_0_0_1.5px_var(--action),0_0_0_4px_oklch(from_var(--action)_l_c_h_/_0.25)]", selected ? "bg-[var(--action)]/5 shadow-[0_0_0_1.5px_var(--action)]" : "shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.12)] hover:shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.20)]", className),
1100
+ ...props,
1101
+ children: [
1102
+ icon && /* @__PURE__ */ jsx(HugeiconsIcon, {
1103
+ icon,
1104
+ size: iconSize,
1105
+ className: "text-[var(--action)]"
1106
+ }),
1107
+ /* @__PURE__ */ jsxs("div", {
1108
+ className: "w-full pr-7",
1109
+ children: [/* @__PURE__ */ jsxs("div", {
1110
+ className: "flex items-center gap-2",
1111
+ children: [/* @__PURE__ */ jsx("p", {
1112
+ className: "text-sm font-medium text-balance",
1113
+ children: label
1114
+ }), badge && /* @__PURE__ */ jsx("span", {
1115
+ className: "shrink-0",
1116
+ children: badge
1117
+ })]
1118
+ }), /* @__PURE__ */ jsx("p", {
1119
+ className: "text-xs text-muted-foreground mt-0.5 text-pretty",
1120
+ children: description
1121
+ })]
1122
+ }),
1123
+ /* @__PURE__ */ jsx("div", {
1124
+ className: "absolute top-4 right-4",
1125
+ children: /* @__PURE__ */ jsx("div", {
1126
+ className: cn("relative size-4 shrink-0 rounded-[4px] transition-[color,box-shadow,background-color] duration-200 ease", selected ? "bg-[var(--action)] text-white shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_oklch(1_0_0_/_0.07)_inset,0px_2px_3px_0px_oklch(0.278_0.03_256.85_/_0.20),0px_1px_1px_0px_oklch(0_0_0_/_0.24)]" : "shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.20),0_1px_2px_0_oklch(0_0_0_/_0.06),0_0_1px_0_oklch(0_0_0_/_0.02)] group-hover/card:shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.30),0_1px_2px_0_oklch(0_0_0_/_0.06),0_0_1px_0_oklch(0_0_0_/_0.02)]"),
1127
+ children: /* @__PURE__ */ jsx(CheckIcon, {
1128
+ size: 14,
1129
+ className: cn("absolute inset-0 m-auto text-current transition-[opacity,transform,filter] duration-200", selected ? "opacity-100 scale-100 blur-none" : "opacity-0 scale-[0.25] blur-[4px]")
1130
+ })
1131
+ })
1132
+ })
1133
+ ]
1134
+ });
1135
+
1136
+ //#endregion
1137
+ //#region src/components/ui/separator/separator.tsx
1138
+ const Separator = forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(Root$4, {
1139
+ ref,
1140
+ decorative,
1141
+ orientation,
1142
+ className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
1143
+ ...props
1144
+ }));
1145
+ Separator.displayName = Root$4.displayName;
1146
+
1147
+ //#endregion
1148
+ //#region src/components/ui/sheet/sheet.tsx
1149
+ const Sheet = ({ ...props }) => /* @__PURE__ */ jsx(SheetPrimitive.Root, {
1150
+ "data-slot": "sheet",
1151
+ ...props
1152
+ });
1153
+ const SheetTrigger = ({ ...props }) => /* @__PURE__ */ jsx(SheetPrimitive.Trigger, {
1154
+ "data-slot": "sheet-trigger",
1155
+ ...props
1156
+ });
1157
+ const SheetClose = ({ ...props }) => /* @__PURE__ */ jsx(SheetPrimitive.Close, {
1158
+ "data-slot": "sheet-close",
1159
+ ...props
1160
+ });
1161
+ const SheetPortal = ({ ...props }) => /* @__PURE__ */ jsx(SheetPrimitive.Portal, {
1162
+ "data-slot": "sheet-portal",
1163
+ ...props
1164
+ });
1165
+ const SheetOverlay = ({ className, ...props }) => {
1166
+ return /* @__PURE__ */ jsx(SheetPrimitive.Overlay, {
1167
+ "data-slot": "sheet-overlay",
1168
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] will-change-[opacity] data-[state=closed]:duration-100 data-[state=open]:duration-150 [animation-timing-function:cubic-bezier(0.16,1,0.3,1)] motion-reduce:animate-none", className),
1169
+ ...props
1170
+ });
1171
+ };
1172
+ const SheetContent = ({ className, children, side = "right", showCloseButton = true, overlayClassName, ...props }) => {
1173
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, { className: overlayClassName }), /* @__PURE__ */ jsxs(SheetPrimitive.Content, {
1174
+ "data-slot": "sheet-content",
1175
+ className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 border-0 shadow-[var(--shadow-elevated)] [animation-timing-function:cubic-bezier(0.32,0.72,0,1)] data-[state=closed]:duration-150 data-[state=open]:duration-200 will-change-[opacity,transform] motion-reduce:animate-none", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 sm:max-w-sm rounded-l-xl rounded-r-md", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 sm:max-w-sm rounded-r-xl rounded-l-md", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-md", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-md", className),
1176
+ ...props,
1177
+ children: [children, showCloseButton && /* @__PURE__ */ jsxs(SheetPrimitive.Close, {
1178
+ className: "absolute top-3 right-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,background-color] duration-150 ease hover:opacity-100 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring/50 focus:outline-hidden disabled:pointer-events-none cursor-pointer touch-manipulation before:absolute before:-inset-[6px] before:content-['']",
1179
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
1180
+ icon: Cancel01Icon,
1181
+ size: 14
1182
+ }), /* @__PURE__ */ jsx("span", {
1183
+ className: "sr-only",
1184
+ children: "Close"
1185
+ })]
1186
+ })]
1187
+ })] });
1188
+ };
1189
+ const SheetHeader = ({ className, ...props }) => {
1190
+ return /* @__PURE__ */ jsx("div", {
1191
+ "data-slot": "sheet-header",
1192
+ className: cn("flex flex-col gap-1.5 p-4", className),
1193
+ ...props
1194
+ });
1195
+ };
1196
+ const SheetFooter = ({ className, ...props }) => {
1197
+ return /* @__PURE__ */ jsx("div", {
1198
+ "data-slot": "sheet-footer",
1199
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1200
+ ...props
1201
+ });
1202
+ };
1203
+ const SheetTitle = ({ className, ...props }) => {
1204
+ return /* @__PURE__ */ jsx(SheetPrimitive.Title, {
1205
+ "data-slot": "sheet-title",
1206
+ className: cn("text-foreground font-semibold", className),
1207
+ ...props
1208
+ });
1209
+ };
1210
+ const SheetDescription = ({ className, ...props }) => {
1211
+ return /* @__PURE__ */ jsx(SheetPrimitive.Description, {
1212
+ "data-slot": "sheet-description",
1213
+ className: cn("text-muted-foreground text-sm", className),
1214
+ ...props
1215
+ });
1216
+ };
1217
+
1218
+ //#endregion
1219
+ //#region src/components/ui/skeleton/skeleton.tsx
1220
+ const Skeleton = ({ className, ...props }) => {
1221
+ return /* @__PURE__ */ jsx("div", {
1222
+ "data-slot": "skeleton",
1223
+ className: cn("bg-accent animate-shimmer motion-reduce:animate-none rounded-md bg-[length:200%_100%] bg-gradient-to-r from-accent via-accent/50 to-accent", className),
1224
+ ...props
1225
+ });
1226
+ };
1227
+
1228
+ //#endregion
1229
+ //#region src/components/ui/sonner/sonner.tsx
1230
+ const Toaster = ({ ...props }) => {
1231
+ const { theme = "system" } = useTheme();
1232
+ return /* @__PURE__ */ jsx(Toaster$1, {
1233
+ theme,
1234
+ className: "toaster group",
1235
+ icons: {
1236
+ error: /* @__PURE__ */ jsx(HugeiconsIcon, {
1237
+ icon: Cancel01Icon,
1238
+ size: 16
1239
+ }),
1240
+ info: /* @__PURE__ */ jsx(HugeiconsIcon, {
1241
+ icon: InformationCircleIcon,
1242
+ size: 16
1243
+ }),
1244
+ loading: /* @__PURE__ */ jsxs("svg", {
1245
+ className: "size-4 animate-spin",
1246
+ viewBox: "0 0 24 24",
1247
+ fill: "none",
1248
+ children: [/* @__PURE__ */ jsx("circle", {
1249
+ className: "opacity-25",
1250
+ cx: "12",
1251
+ cy: "12",
1252
+ r: "10",
1253
+ stroke: "currentColor",
1254
+ strokeWidth: "4"
1255
+ }), /* @__PURE__ */ jsx("path", {
1256
+ className: "opacity-75",
1257
+ fill: "currentColor",
1258
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
1259
+ })]
1260
+ }),
1261
+ success: /* @__PURE__ */ jsx(HugeiconsIcon, {
1262
+ icon: CheckmarkCircle02Icon,
1263
+ size: 16
1264
+ }),
1265
+ warning: /* @__PURE__ */ jsx(HugeiconsIcon, {
1266
+ icon: Alert01Icon,
1267
+ size: 16
1268
+ })
1269
+ },
1270
+ style: {
1271
+ "--border-radius": "var(--radius)",
1272
+ "--normal-bg": "var(--popover)",
1273
+ "--normal-border": "var(--border)",
1274
+ "--normal-text": "var(--popover-foreground)"
1275
+ },
1276
+ ...props
1277
+ });
1278
+ };
1279
+
1280
+ //#endregion
1281
+ //#region src/components/ui/spinner/spinner.tsx
1282
+ const Spinner = ({ className }) => /* @__PURE__ */ jsx("output", {
1283
+ "aria-label": "Loading",
1284
+ className: "inline-flex",
1285
+ children: /* @__PURE__ */ jsxs("svg", {
1286
+ viewBox: "0 0 24 24",
1287
+ fill: "none",
1288
+ xmlns: "http://www.w3.org/2000/svg",
1289
+ className: cn("size-4 animate-spin motion-reduce:animate-none", className),
1290
+ children: [/* @__PURE__ */ jsx("circle", {
1291
+ className: "opacity-25",
1292
+ cx: "12",
1293
+ cy: "12",
1294
+ r: "10",
1295
+ stroke: "currentColor",
1296
+ strokeWidth: "4"
1297
+ }), /* @__PURE__ */ jsx("path", {
1298
+ className: "opacity-75",
1299
+ fill: "currentColor",
1300
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
1301
+ })]
1302
+ })
1303
+ });
1304
+
1305
+ //#endregion
1306
+ //#region src/components/ui/table/table.tsx
1307
+ const Table = ({ className, ...props }) => {
1308
+ return /* @__PURE__ */ jsx("div", {
1309
+ "data-slot": "table-container",
1310
+ className: "relative w-full overflow-x-auto",
1311
+ children: /* @__PURE__ */ jsx("table", {
1312
+ "data-slot": "table",
1313
+ className: cn("w-full caption-bottom text-sm", className),
1314
+ ...props
1315
+ })
1316
+ });
1317
+ };
1318
+ const TableHeader = ({ className, ...props }) => {
1319
+ return /* @__PURE__ */ jsx("thead", {
1320
+ "data-slot": "table-header",
1321
+ className: cn("[&_tr]:border-b [&_tr]:border-[var(--border-divider)] [&_tr]:hover:bg-transparent bg-[var(--bg-accented)]/50 sticky top-0 z-10", className),
1322
+ ...props
1323
+ });
1324
+ };
1325
+ const TableBody = ({ className, ...props }) => {
1326
+ return /* @__PURE__ */ jsx("tbody", {
1327
+ "data-slot": "table-body",
1328
+ className: cn("[&_tr:last-child]:border-0", className),
1329
+ ...props
1330
+ });
1331
+ };
1332
+ const TableFooter = ({ className, ...props }) => {
1333
+ return /* @__PURE__ */ jsx("tfoot", {
1334
+ "data-slot": "table-footer",
1335
+ className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
1336
+ ...props
1337
+ });
1338
+ };
1339
+ const TableRow = ({ className, ...props }) => {
1340
+ return /* @__PURE__ */ jsx("tr", {
1341
+ "data-slot": "table-row",
1342
+ className: cn("hover:bg-[var(--overlay-hover)] data-[state=selected]:bg-[var(--overlay-selected)] border-b border-[var(--border-divider)] transition-[background-color] duration-100", className),
1343
+ ...props
1344
+ });
1345
+ };
1346
+ const TableHead = ({ className, ...props }) => {
1347
+ return /* @__PURE__ */ jsx("th", {
1348
+ "data-slot": "table-head",
1349
+ className: cn("text-muted-foreground h-10 px-3 text-left align-middle text-xs font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
1350
+ ...props
1351
+ });
1352
+ };
1353
+ const TableCell = ({ className, ...props }) => {
1354
+ return /* @__PURE__ */ jsx("td", {
1355
+ "data-slot": "table-cell",
1356
+ className: cn("px-3 py-2.5 align-middle whitespace-nowrap tabular-nums [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
1357
+ ...props
1358
+ });
1359
+ };
1360
+ const TableCaption = ({ className, ...props }) => {
1361
+ return /* @__PURE__ */ jsx("caption", {
1362
+ "data-slot": "table-caption",
1363
+ className: cn("text-muted-foreground mt-4 text-sm", className),
1364
+ ...props
1365
+ });
1366
+ };
1367
+
1368
+ //#endregion
1369
+ //#region src/components/ui/tabs/tabs.tsx
1370
+ const Tabs = ({ className, orientation = "horizontal", ...props }) => {
1371
+ return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
1372
+ "data-slot": "tabs",
1373
+ "data-orientation": orientation,
1374
+ orientation,
1375
+ className: cn("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col", className),
1376
+ ...props
1377
+ });
1378
+ };
1379
+ const tabsListVariants = cva("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col", {
1380
+ defaultVariants: { variant: "default" },
1381
+ variants: { variant: {
1382
+ default: "bg-muted",
1383
+ line: "gap-1 bg-transparent"
1384
+ } }
1385
+ });
1386
+ const TabsList = ({ className, variant = "default", ...props }) => {
1387
+ return /* @__PURE__ */ jsx(TabsPrimitive.List, {
1388
+ "data-slot": "tabs-list",
1389
+ "data-variant": variant,
1390
+ className: cn(tabsListVariants({ variant }), className),
1391
+ ...props
1392
+ });
1393
+ };
1394
+ const TabsTrigger = ({ className, ...props }) => {
1395
+ return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
1396
+ "data-slot": "tabs-trigger",
1397
+ className: cn("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap touch-manipulation transition-[color,background-color,border-color,box-shadow,opacity] duration-150 group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent", "data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground", "after:bg-foreground after:absolute after:opacity-0 after:transition-[opacity] group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100", className),
1398
+ ...props
1399
+ });
1400
+ };
1401
+ const TabsContent = ({ className, ...props }) => {
1402
+ return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
1403
+ "data-slot": "tabs-content",
1404
+ className: cn("flex-1 outline-none", className),
1405
+ ...props
1406
+ });
1407
+ };
1408
+
1409
+ //#endregion
1410
+ //#region src/components/ui/textarea/textarea.tsx
1411
+ const Textarea = ({ className, ...props }) => {
1412
+ return /* @__PURE__ */ jsx("textarea", {
1413
+ "data-slot": "textarea",
1414
+ className: cn("placeholder:text-muted-foreground/60 dark:bg-input/30 flex field-sizing-content min-h-16 w-full touch-manipulation rounded-md border-0 bg-background px-3 py-2 text-base shadow-[var(--shadow-input)] transition-[color,box-shadow] duration-100 ease-out outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "hover:shadow-[var(--shadow-input-hover)]", "focus-visible:shadow-[0_0_0_1px_var(--ring),0_0_0_4px_rgba(0,114,239,0.15)]", "aria-invalid:shadow-[0_0_0_1px_var(--destructive),0_0_1px_0_var(--destructive)]", className),
1415
+ ...props
1416
+ });
1417
+ };
1418
+
1419
+ //#endregion
1420
+ //#region src/components/ui/tooltip/tooltip.tsx
1421
+ const TooltipProvider = Provider;
1422
+ const Tooltip = Root$5;
1423
+ const TooltipTrigger = Trigger$4;
1424
+ const TooltipContent = forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(Portal$4, { children: /* @__PURE__ */ jsx(Content$4, {
1425
+ ref,
1426
+ sideOffset,
1427
+ className: cn("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
1428
+ ...props
1429
+ }) }));
1430
+ TooltipContent.displayName = Content$4.displayName;
1431
+
1432
+ //#endregion
1433
+ //#region src/components/ui/well/well.tsx
1434
+ const wellVariants = cva("rounded-2xl", {
1435
+ defaultVariants: {
1436
+ gap: "sm",
1437
+ spacing: "default",
1438
+ variant: "inset"
1439
+ },
1440
+ variants: {
1441
+ gap: {
1442
+ default: "space-y-4",
1443
+ lg: "space-y-5",
1444
+ none: "",
1445
+ sm: "space-y-3"
1446
+ },
1447
+ spacing: {
1448
+ default: "p-4",
1449
+ lg: "p-5",
1450
+ none: "p-0",
1451
+ sm: "p-3"
1452
+ },
1453
+ variant: {
1454
+ default: "bg-muted/50",
1455
+ inset: "bg-muted/50 border border-border",
1456
+ outline: "border border-border"
1457
+ }
1458
+ }
1459
+ });
1460
+ const Well = ({ className, gap, spacing, variant, ...props }) => /* @__PURE__ */ jsx("div", {
1461
+ "data-slot": "well",
1462
+ "data-spacing": spacing ?? "default",
1463
+ className: cn(wellVariants({
1464
+ gap,
1465
+ spacing,
1466
+ variant
1467
+ }), className),
1468
+ ...props
1469
+ });
1470
+ const WellReveal = ({ children, className, open }) => /* @__PURE__ */ jsx("div", {
1471
+ className: "grid transition-[grid-template-rows] duration-[220ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none",
1472
+ style: { gridTemplateRows: open ? "1fr" : "0fr" },
1473
+ "aria-hidden": !open,
1474
+ children: /* @__PURE__ */ jsx("div", {
1475
+ className: "overflow-hidden",
1476
+ children: /* @__PURE__ */ jsx("div", {
1477
+ className: cn("px-0.5 pb-0.5 [&>[data-slot=well]:not([data-spacing=none])]:p-[22px]", className),
1478
+ children
1479
+ })
1480
+ })
1481
+ });
1482
+
1483
+ //#endregion
1484
+ //#region src/components/asset-icon/asset-icon.tsx
1485
+ const aliases = {
1486
+ arbitrum: "arb",
1487
+ "arbitrum-one": "arb",
1488
+ "arbitrum-sepolia": "arb",
1489
+ avalanche: "avax",
1490
+ "base-sepolia": "base",
1491
+ "binance-smart-chain": "bnb",
1492
+ bitcoin: "btc",
1493
+ "bitcoin-mainnet": "btc",
1494
+ "bitcoin-testnet": "btc",
1495
+ bsc: "bnb",
1496
+ cosmos: "atom",
1497
+ "cosmos-hub": "atom",
1498
+ "cosmos-testnet": "atom",
1499
+ ethereum: "eth",
1500
+ fantom: "ftm",
1501
+ gnosis: "gnosis",
1502
+ linea: "linea",
1503
+ mantle: "mantle",
1504
+ optimism: "optimism",
1505
+ osmosis: "osmo",
1506
+ polygon: "matic",
1507
+ "polygon-amoy": "matic",
1508
+ scroll: "scroll",
1509
+ sei: "sei",
1510
+ "sei-network": "sei",
1511
+ sepolia: "eth",
1512
+ solana: "sol",
1513
+ "solana-devnet": "sol",
1514
+ "solana-mainnet": "sol",
1515
+ starknet: "generic",
1516
+ sui: "sui",
1517
+ zksync: "zkevm"
1518
+ };
1519
+ const AssetIcon = ({ symbol, size = 32, className }) => {
1520
+ return /* @__PURE__ */ jsx("img", {
1521
+ src: `/assets/${aliases[symbol.toLowerCase()] ?? symbol.toLowerCase()}.svg`,
1522
+ alt: symbol,
1523
+ width: size,
1524
+ height: size,
1525
+ className: cn("object-contain", className),
1526
+ onError: (e) => {
1527
+ const target = e.currentTarget;
1528
+ if (!target.src.endsWith("/assets/generic.svg")) target.src = "/assets/generic.svg";
1529
+ }
1530
+ });
1531
+ };
1532
+
1533
+ //#endregion
1534
+ //#region src/components/copy-button/copy-button.tsx
1535
+ const spring$2 = {
1536
+ bounce: 0,
1537
+ duration: .35,
1538
+ type: "spring"
1539
+ };
1540
+ const CopyButton = ({ value, label, variant = "outline", size = "icon-xs", className }) => {
1541
+ const [copied, setCopied] = useState(false);
1542
+ const timeoutRef = useRef(null);
1543
+ const shouldReduceMotion = useReducedMotion();
1544
+ useEffect(() => {
1545
+ return () => {
1546
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
1547
+ };
1548
+ }, []);
1549
+ const handleCopy = async () => {
1550
+ await navigator.clipboard.writeText(value);
1551
+ setCopied(true);
1552
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
1553
+ timeoutRef.current = setTimeout(() => setCopied(false), 2e3);
1554
+ };
1555
+ let ariaLabel;
1556
+ if (!label) ariaLabel = copied ? "Copied" : "Copy to clipboard";
1557
+ return /* @__PURE__ */ jsx(Button, {
1558
+ variant,
1559
+ size,
1560
+ onClick: handleCopy,
1561
+ "aria-label": ariaLabel,
1562
+ className: cn("transition-[color,background-color,box-shadow] duration-150", copied && "text-[var(--text-success)]", className),
1563
+ children: /* @__PURE__ */ jsx(AnimatePresence, {
1564
+ mode: "wait",
1565
+ initial: false,
1566
+ children: copied ? /* @__PURE__ */ jsxs(motion.span, {
1567
+ initial: shouldReduceMotion ? false : {
1568
+ opacity: 0,
1569
+ scale: .25
1570
+ },
1571
+ animate: {
1572
+ opacity: 1,
1573
+ scale: 1
1574
+ },
1575
+ exit: shouldReduceMotion ? void 0 : {
1576
+ opacity: 0,
1577
+ scale: .25
1578
+ },
1579
+ transition: spring$2,
1580
+ className: "flex items-center gap-1.5",
1581
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
1582
+ icon: Tick01Icon,
1583
+ size: 14
1584
+ }), label && /* @__PURE__ */ jsx("span", { children: "Copied" })]
1585
+ }, "check") : /* @__PURE__ */ jsxs(motion.span, {
1586
+ initial: shouldReduceMotion ? false : {
1587
+ opacity: 0,
1588
+ scale: .25
1589
+ },
1590
+ animate: {
1591
+ opacity: 1,
1592
+ scale: 1
1593
+ },
1594
+ exit: shouldReduceMotion ? void 0 : {
1595
+ opacity: 0,
1596
+ scale: .25
1597
+ },
1598
+ transition: spring$2,
1599
+ className: "flex items-center gap-1.5",
1600
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
1601
+ icon: Copy01Icon,
1602
+ size: 14
1603
+ }), label && /* @__PURE__ */ jsx("span", { children: label })]
1604
+ }, "copy")
1605
+ })
1606
+ });
1607
+ };
1608
+
1609
+ //#endregion
1610
+ //#region src/components/code-block/code-block.tsx
1611
+ const variantStyles = {
1612
+ dark: {
1613
+ chromeDot: "bg-[var(--border-hover)]",
1614
+ code: "text-[var(--foreground)]",
1615
+ copyBtn: "text-[var(--text-disabled)] hover:text-[var(--foreground)] hover:bg-white/[0.06]",
1616
+ header: "border-white/[0.05] bg-[var(--bg-default)]",
1617
+ headerText: "text-[var(--muted-foreground)]",
1618
+ lineNumber: "text-[var(--text-disabled)]",
1619
+ prompt: "text-[var(--muted-foreground)]",
1620
+ tabActive: "bg-white/[0.08] text-[var(--foreground)]",
1621
+ tabInactive: "text-[var(--text-disabled)] hover:text-[var(--foreground)]",
1622
+ wrapper: "bg-[var(--card)] text-[var(--foreground)] shadow-[0_0_0_1px_var(--border)]"
1623
+ },
1624
+ light: {
1625
+ chromeDot: "bg-muted-foreground/15",
1626
+ code: "text-foreground",
1627
+ copyBtn: "text-muted-foreground/60 hover:text-foreground hover:bg-black/[0.04]",
1628
+ header: "border-border/60 bg-[var(--muted)]/40",
1629
+ headerText: "text-muted-foreground",
1630
+ lineNumber: "text-muted-foreground/30",
1631
+ prompt: "text-muted-foreground/40",
1632
+ tabActive: "bg-background text-foreground shadow-[0_1px_2px_rgba(0,0,0,0.05)]",
1633
+ tabInactive: "text-muted-foreground hover:text-foreground",
1634
+ wrapper: "bg-white text-foreground shadow-[var(--shadow-card)]"
1635
+ }
1636
+ };
1637
+ const CodeBlock = forwardRef(({ code, title, language: _language, showLineNumbers = false, showTerminalPrompt = false, variant = "dark", showWindowChrome = false, className }, ref) => {
1638
+ const lines = code.split("\n");
1639
+ const s = variantStyles[variant];
1640
+ return /* @__PURE__ */ jsxs("div", {
1641
+ ref,
1642
+ className: cn("rounded-xl overflow-hidden", s.wrapper, className),
1643
+ children: [(title || showWindowChrome) && /* @__PURE__ */ jsxs("div", {
1644
+ className: cn("flex items-center justify-between border-b px-4 py-2.5", s.header),
1645
+ children: [/* @__PURE__ */ jsxs("div", {
1646
+ className: "flex items-center gap-3",
1647
+ children: [showWindowChrome && /* @__PURE__ */ jsxs("div", {
1648
+ className: "flex gap-[6px]",
1649
+ "aria-hidden": "true",
1650
+ children: [
1651
+ /* @__PURE__ */ jsx("div", { className: cn("size-[9px] rounded-full", s.chromeDot) }),
1652
+ /* @__PURE__ */ jsx("div", { className: cn("size-[9px] rounded-full", s.chromeDot) }),
1653
+ /* @__PURE__ */ jsx("div", { className: cn("size-[9px] rounded-full", s.chromeDot) })
1654
+ ]
1655
+ }), title && /* @__PURE__ */ jsx("span", {
1656
+ className: cn("text-[13px] font-medium", s.headerText),
1657
+ children: title
1658
+ })]
1659
+ }), /* @__PURE__ */ jsx(CopyButton, {
1660
+ value: code,
1661
+ variant: "ghost",
1662
+ size: "icon-xs",
1663
+ className: s.copyBtn
1664
+ })]
1665
+ }), /* @__PURE__ */ jsxs("div", {
1666
+ className: "relative group",
1667
+ children: [!title && !showWindowChrome && /* @__PURE__ */ jsx("div", {
1668
+ className: "absolute top-2.5 right-2.5 opacity-0 group-hover:opacity-100 transition-[opacity] duration-150",
1669
+ children: /* @__PURE__ */ jsx(CopyButton, {
1670
+ value: code,
1671
+ variant: "ghost",
1672
+ size: "icon-xs",
1673
+ className: s.copyBtn
1674
+ })
1675
+ }), /* @__PURE__ */ jsx("pre", {
1676
+ className: cn("overflow-x-auto px-4 py-3.5 text-[13px] font-mono leading-relaxed", !title && !showWindowChrome && "pr-10", variant === "dark" && "bg-[var(--background)]"),
1677
+ children: /* @__PURE__ */ jsx("code", { children: showLineNumbers ? lines.map((line, i) => /* @__PURE__ */ jsxs("span", {
1678
+ className: "table-row",
1679
+ children: [
1680
+ /* @__PURE__ */ jsx("span", {
1681
+ className: cn("table-cell pr-4 text-right select-none tabular-nums w-[2ch]", s.lineNumber),
1682
+ children: i + 1
1683
+ }),
1684
+ /* @__PURE__ */ jsxs("span", {
1685
+ className: "table-cell",
1686
+ children: [showTerminalPrompt && i === 0 && /* @__PURE__ */ jsx("span", {
1687
+ className: cn("select-none mr-2", s.prompt),
1688
+ children: "$"
1689
+ }), line]
1690
+ }),
1691
+ i < lines.length - 1 && "\n"
1692
+ ]
1693
+ }, `L${i}:${line}`)) : /* @__PURE__ */ jsxs(Fragment, { children: [showTerminalPrompt && /* @__PURE__ */ jsx("span", {
1694
+ className: cn("select-none mr-2", s.prompt),
1695
+ children: "$"
1696
+ }), code] }) })
1697
+ })]
1698
+ })]
1699
+ });
1700
+ });
1701
+ CodeBlock.displayName = "CodeBlock";
1702
+
1703
+ //#endregion
1704
+ //#region src/components/danger-zone/danger-zone.tsx
1705
+ const DangerZone = ({ title, description, actionLabel, confirmTitle, confirmDescription, onConfirm, className }) => {
1706
+ return /* @__PURE__ */ jsx("div", {
1707
+ className: cn("rounded-xl border border-[var(--border-danger)]/30 p-6 shadow-[var(--shadow-card)] bg-card", className),
1708
+ children: /* @__PURE__ */ jsxs("div", {
1709
+ className: "flex items-start gap-3",
1710
+ children: [/* @__PURE__ */ jsx("div", {
1711
+ className: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-[var(--danger-light)]",
1712
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1713
+ icon: Alert01Icon,
1714
+ size: 16,
1715
+ className: "text-[var(--text-danger)]"
1716
+ })
1717
+ }), /* @__PURE__ */ jsxs("div", {
1718
+ className: "flex-1 min-w-0",
1719
+ children: [
1720
+ /* @__PURE__ */ jsx("h3", {
1721
+ className: "text-sm font-semibold text-[var(--text-danger)] text-balance",
1722
+ children: title
1723
+ }),
1724
+ /* @__PURE__ */ jsx("p", {
1725
+ className: "text-sm text-muted-foreground mt-1 text-pretty",
1726
+ children: description
1727
+ }),
1728
+ /* @__PURE__ */ jsx("div", {
1729
+ className: "mt-4",
1730
+ children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
1731
+ asChild: true,
1732
+ children: /* @__PURE__ */ jsx(Button, {
1733
+ variant: "destructive",
1734
+ children: actionLabel
1735
+ })
1736
+ }), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: confirmTitle || title }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: confirmDescription || description })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
1737
+ onClick: onConfirm,
1738
+ className: "bg-destructive text-white hover:bg-destructive/90",
1739
+ children: actionLabel
1740
+ })] })] })] })
1741
+ })
1742
+ ]
1743
+ })]
1744
+ })
1745
+ });
1746
+ };
1747
+
1748
+ //#endregion
1749
+ //#region src/components/domain-list/domain-list.tsx
1750
+ const DomainList = ({ className, domains, onChange, placeholder = "https://example.com", validate }) => {
1751
+ const [inputValue, setInputValue] = useState("");
1752
+ const [error, setError] = useState(null);
1753
+ const handleAdd = () => {
1754
+ const trimmed = inputValue.trim();
1755
+ if (!trimmed) return;
1756
+ if (validate) {
1757
+ const validationError = validate(trimmed);
1758
+ if (validationError) {
1759
+ setError(validationError);
1760
+ return;
1761
+ }
1762
+ }
1763
+ if (domains.includes(trimmed)) {
1764
+ setError("Already added");
1765
+ return;
1766
+ }
1767
+ onChange([...domains, trimmed]);
1768
+ setInputValue("");
1769
+ setError(null);
1770
+ };
1771
+ const handleRemove = (domain) => {
1772
+ onChange(domains.filter((d) => d !== domain));
1773
+ };
1774
+ const handleKeyDown = (e) => {
1775
+ if (e.key === "Enter") {
1776
+ e.preventDefault();
1777
+ handleAdd();
1778
+ }
1779
+ };
1780
+ return /* @__PURE__ */ jsxs("div", {
1781
+ className: cn("space-y-3", className),
1782
+ children: [/* @__PURE__ */ jsxs("div", {
1783
+ className: "flex gap-2",
1784
+ children: [/* @__PURE__ */ jsxs("div", {
1785
+ className: "flex-1",
1786
+ children: [/* @__PURE__ */ jsx(Input, {
1787
+ value: inputValue,
1788
+ onChange: (e) => {
1789
+ setInputValue(e.target.value);
1790
+ setError(null);
1791
+ },
1792
+ onKeyDown: handleKeyDown,
1793
+ placeholder,
1794
+ "aria-invalid": !!error
1795
+ }), error && /* @__PURE__ */ jsx("p", {
1796
+ className: "text-xs text-[var(--text-danger)] mt-1",
1797
+ children: error
1798
+ })]
1799
+ }), /* @__PURE__ */ jsxs(Button, {
1800
+ variant: "outline",
1801
+ size: "default",
1802
+ onClick: handleAdd,
1803
+ disabled: !inputValue.trim(),
1804
+ type: "button",
1805
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
1806
+ icon: Add01Icon,
1807
+ size: 16
1808
+ }), "Add"]
1809
+ })]
1810
+ }), domains.length > 0 && /* @__PURE__ */ jsx("ul", {
1811
+ className: "space-y-1.5",
1812
+ children: domains.map((domain) => /* @__PURE__ */ jsxs("li", {
1813
+ className: "flex items-center justify-between gap-2 rounded-md border bg-[var(--bg-bottom)] px-3 py-2 text-sm",
1814
+ children: [/* @__PURE__ */ jsx("span", {
1815
+ className: "font-mono text-sm truncate",
1816
+ children: domain
1817
+ }), /* @__PURE__ */ jsx("button", {
1818
+ type: "button",
1819
+ onClick: () => handleRemove(domain),
1820
+ className: "shrink-0 rounded-sm p-0.5 text-muted-foreground hover:text-[var(--text-danger)] transition-[color] duration-150 relative before:absolute before:-inset-[11px] before:content-['']",
1821
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1822
+ icon: Cancel01Icon,
1823
+ size: 14
1824
+ })
1825
+ })]
1826
+ }, domain))
1827
+ })]
1828
+ });
1829
+ };
1830
+
1831
+ //#endregion
1832
+ //#region src/components/empty-state/empty-state.tsx
1833
+ const EmptyState = ({ icon: Icon$2, title, description, action, className }) => {
1834
+ return /* @__PURE__ */ jsxs("div", {
1835
+ className: cn("flex flex-col items-center justify-center py-16 px-8 text-center", className),
1836
+ children: [
1837
+ /* @__PURE__ */ jsx("div", {
1838
+ className: "flex size-12 items-center justify-center rounded-xl bg-muted mb-4",
1839
+ children: /* @__PURE__ */ jsx(Icon$2, { className: "size-6 text-muted-foreground" })
1840
+ }),
1841
+ /* @__PURE__ */ jsx("h3", {
1842
+ className: "text-sm font-semibold",
1843
+ children: title
1844
+ }),
1845
+ /* @__PURE__ */ jsx("p", {
1846
+ className: "text-sm text-muted-foreground mt-1 max-w-sm",
1847
+ children: description
1848
+ }),
1849
+ action && /* @__PURE__ */ jsx("div", {
1850
+ className: "mt-4",
1851
+ children: action
1852
+ })
1853
+ ]
1854
+ });
1855
+ };
1856
+
1857
+ //#endregion
1858
+ //#region src/components/info-banner/info-banner.tsx
1859
+ const spring$1 = {
1860
+ bounce: 0,
1861
+ duration: .35,
1862
+ type: "spring"
1863
+ };
1864
+ const InfoBanner = ({ children, dismissible = false, onDismiss, className }) => {
1865
+ const [dismissed, setDismissed] = useState(false);
1866
+ const shouldReduceMotion = useReducedMotion();
1867
+ if (dismissed) return null;
1868
+ return /* @__PURE__ */ jsxs("div", {
1869
+ className: cn("flex items-center gap-2 rounded-lg border border-border bg-muted/50 px-3 py-2 text-sm text-muted-foreground", className),
1870
+ children: [
1871
+ /* @__PURE__ */ jsx("span", {
1872
+ className: "text-muted-foreground shrink-0",
1873
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1874
+ icon: InformationCircleIcon,
1875
+ size: 16
1876
+ })
1877
+ }),
1878
+ /* @__PURE__ */ jsx("div", {
1879
+ className: "flex-1 min-w-0 text-pretty",
1880
+ children
1881
+ }),
1882
+ dismissible && /* @__PURE__ */ jsx(motion.button, {
1883
+ whileTap: shouldReduceMotion ? void 0 : { scale: .96 },
1884
+ transition: spring$1,
1885
+ onClick: () => {
1886
+ setDismissed(true);
1887
+ onDismiss?.();
1888
+ },
1889
+ className: "relative before:absolute before:-inset-[13px] before:content-[''] shrink-0 rounded-sm p-0.5 opacity-70 hover:opacity-100 transition-[opacity] touch-manipulation cursor-pointer",
1890
+ children: /* @__PURE__ */ jsx(HugeiconsIcon, {
1891
+ icon: Cancel01Icon,
1892
+ size: 14
1893
+ })
1894
+ })
1895
+ ]
1896
+ });
1897
+ };
1898
+
1899
+ //#endregion
1900
+ //#region src/components/loading-skeleton/loading-skeleton.tsx
1901
+ const buildIdList = (length) => Array.from({ length }, () => crypto.randomUUID());
1902
+ /** Full-page skeleton with header and content area */
1903
+ const PageSkeleton = ({ className }) => {
1904
+ return /* @__PURE__ */ jsxs("div", {
1905
+ className: cn("space-y-6 p-6", className),
1906
+ children: [
1907
+ /* @__PURE__ */ jsxs("div", {
1908
+ className: "space-y-2",
1909
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-48" }), /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-96" })]
1910
+ }),
1911
+ /* @__PURE__ */ jsxs("div", {
1912
+ className: "grid grid-cols-1 md:grid-cols-3 gap-4",
1913
+ children: [
1914
+ /* @__PURE__ */ jsx(StatCardSkeleton, {}),
1915
+ /* @__PURE__ */ jsx(StatCardSkeleton, {}),
1916
+ /* @__PURE__ */ jsx(StatCardSkeleton, {})
1917
+ ]
1918
+ }),
1919
+ /* @__PURE__ */ jsx(TableSkeleton, { rows: 5 })
1920
+ ]
1921
+ });
1922
+ };
1923
+ /** Stat/metric card skeleton */
1924
+ const StatCardSkeleton = ({ className }) => {
1925
+ return /* @__PURE__ */ jsxs("div", {
1926
+ className: cn("rounded-xl p-5 shadow-[var(--shadow-card)] bg-card", className),
1927
+ children: [
1928
+ /* @__PURE__ */ jsxs("div", {
1929
+ className: "flex items-center justify-between mb-3",
1930
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-24" }), /* @__PURE__ */ jsx(Skeleton, { className: "size-8 rounded-lg" })]
1931
+ }),
1932
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-20 mb-1" }),
1933
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-16" })
1934
+ ]
1935
+ });
1936
+ };
1937
+ /** Table skeleton with configurable rows */
1938
+ const TableSkeleton = ({ rows = 5, columns = 4, className }) => {
1939
+ const headerIds = useMemo(() => buildIdList(columns), [columns]);
1940
+ const rowIds = useMemo(() => buildIdList(rows), [rows]);
1941
+ const colIds = useMemo(() => buildIdList(columns), [columns]);
1942
+ return /* @__PURE__ */ jsxs("div", {
1943
+ className: cn("rounded-xl border shadow-[var(--shadow-card)] bg-card overflow-hidden", className),
1944
+ children: [/* @__PURE__ */ jsx("div", {
1945
+ className: "flex items-center gap-4 px-4 py-3 border-b",
1946
+ children: headerIds.map((id) => /* @__PURE__ */ jsx(Skeleton, { className: "h-4 flex-1" }, id))
1947
+ }), rowIds.map((rowId) => /* @__PURE__ */ jsx("div", {
1948
+ className: "flex items-center gap-4 px-4 py-3 border-b last:border-b-0",
1949
+ children: colIds.map((colId, colIdx) => /* @__PURE__ */ jsx(Skeleton, { className: cn("h-4 flex-1", colIdx === 0 && "max-w-32", colIdx === columns - 1 && "max-w-16") }, `${rowId}-${colId}`))
1950
+ }, rowId))]
1951
+ });
1952
+ };
1953
+
1954
+ //#endregion
1955
+ //#region src/components/metric-card/metric-card.tsx
1956
+ const trendColor = {
1957
+ down: "text-[var(--text-danger)]",
1958
+ neutral: "text-muted-foreground",
1959
+ up: "text-[var(--text-success)]"
1960
+ };
1961
+ const MetricCard = (props) => {
1962
+ const { label, icon: Icon$2, loading = false, className } = props;
1963
+ if (loading) return /* @__PURE__ */ jsxs("div", {
1964
+ className: cn("rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4", className),
1965
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 w-20 mb-2.5" }), /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-24" })]
1966
+ });
1967
+ if (props.inactive) return /* @__PURE__ */ jsxs("div", {
1968
+ className: cn("rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4", className),
1969
+ children: [/* @__PURE__ */ jsxs("div", {
1970
+ className: "flex items-center gap-1.5",
1971
+ children: [Icon$2 && /* @__PURE__ */ jsx(Icon$2, { className: "size-3.5 text-muted-foreground" }), /* @__PURE__ */ jsx("span", {
1972
+ className: "text-[13px] text-muted-foreground font-medium",
1973
+ children: label
1974
+ })]
1975
+ }), /* @__PURE__ */ jsx("div", {
1976
+ className: "text-2xl font-semibold tracking-tight text-muted-foreground/30 tabular-nums mt-1.5",
1977
+ children: "0"
1978
+ })]
1979
+ });
1980
+ return /* @__PURE__ */ jsxs("div", {
1981
+ className: cn("rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4", className),
1982
+ children: [/* @__PURE__ */ jsxs("div", {
1983
+ className: "flex items-center gap-1.5",
1984
+ children: [Icon$2 && /* @__PURE__ */ jsx(Icon$2, { className: "size-3.5 text-muted-foreground" }), /* @__PURE__ */ jsx("span", {
1985
+ className: "text-[13px] text-muted-foreground font-medium",
1986
+ children: label
1987
+ })]
1988
+ }), /* @__PURE__ */ jsxs("div", {
1989
+ className: "flex items-baseline gap-2 mt-1.5",
1990
+ children: [/* @__PURE__ */ jsx("span", {
1991
+ className: "text-2xl font-semibold tracking-tight tabular-nums",
1992
+ children: props.value
1993
+ }), props.trend && props.trendValue && /* @__PURE__ */ jsx("span", {
1994
+ className: cn("text-xs font-medium tabular-nums", trendColor[props.trend]),
1995
+ children: props.trendValue
1996
+ })]
1997
+ })]
1998
+ });
1999
+ };
2000
+
2001
+ //#endregion
2002
+ //#region src/components/ask-ai-sheet/ask-ai-sheet.tsx
2003
+ /**
2004
+ * Placeholder stub for the docs-AI sheet.
2005
+ *
2006
+ * Renders nothing in droplet — the real sheet lives in the consumer app and
2007
+ * subscribes to the `docsPath` to surface contextual AI help. Kept here so
2008
+ * `PageActions` can mount it unconditionally without each consumer wiring it.
2009
+ */
2010
+ const AskAISheet = ({ docsPath: _docsPath }) => {
2011
+ return null;
2012
+ };
2013
+
2014
+ //#endregion
2015
+ //#region src/components/page-actions/page-actions.tsx
2016
+ const AskAIAction = ({ docsPath }) => {
2017
+ return /* @__PURE__ */ jsx(AskAISheet, { docsPath });
2018
+ };
2019
+ const WebhooksAction = () => {
2020
+ return /* @__PURE__ */ jsx(Button, {
2021
+ variant: "outline",
2022
+ size: "sm",
2023
+ asChild: true,
2024
+ children: /* @__PURE__ */ jsxs(Link, {
2025
+ href: "/dashboard/developers?tab=webhooks",
2026
+ children: [/* @__PURE__ */ jsx(HugeiconsIcon, {
2027
+ icon: WebhookIcon,
2028
+ size: 14
2029
+ }), "Webhooks"]
2030
+ })
2031
+ });
2032
+ };
2033
+
2034
+ //#endregion
2035
+ //#region src/components/product-page-layout/product-page-layout.tsx
2036
+ const spring = {
2037
+ bounce: 0,
2038
+ duration: .35,
2039
+ type: "spring"
2040
+ };
2041
+ const ProductPageLayout = ({ title, tabs, activeTab, onTabChange, children, headerActions, headerContent, sidebarFooter }) => {
2042
+ const activeTabConfig = tabs.find((t) => t.id === activeTab);
2043
+ const shouldReduceMotion = useReducedMotion();
2044
+ return /* @__PURE__ */ jsxs("div", {
2045
+ className: "flex h-full",
2046
+ children: [/* @__PURE__ */ jsxs("nav", {
2047
+ className: "w-52 shrink-0 bg-background overflow-y-auto py-4 px-3 flex flex-col",
2048
+ children: [
2049
+ /* @__PURE__ */ jsx("h2", {
2050
+ className: "px-3 mb-3 text-sm font-semibold text-balance",
2051
+ children: title
2052
+ }),
2053
+ /* @__PURE__ */ jsx("div", {
2054
+ className: "flex flex-col gap-0.5",
2055
+ children: tabs.map((tab) => /* @__PURE__ */ jsx(motion.button, {
2056
+ whileTap: shouldReduceMotion ? void 0 : { scale: .96 },
2057
+ transition: spring,
2058
+ onClick: () => onTabChange(tab.id),
2059
+ className: cn("flex items-center rounded-md px-3 py-1.5 text-[13px] font-medium transition-[color,background-color] text-left touch-manipulation", activeTab === tab.id ? "bg-muted text-foreground" : "text-muted-foreground hover:bg-muted/50 hover:text-foreground"),
2060
+ children: tab.label
2061
+ }, tab.id))
2062
+ }),
2063
+ sidebarFooter && /* @__PURE__ */ jsx("div", {
2064
+ className: "mt-auto pt-4",
2065
+ children: sidebarFooter
2066
+ })
2067
+ ]
2068
+ }), /* @__PURE__ */ jsx("div", {
2069
+ className: "flex-1 overflow-auto",
2070
+ children: /* @__PURE__ */ jsxs("div", {
2071
+ className: "px-10 py-8 space-y-8",
2072
+ children: [headerContent ?? /* @__PURE__ */ jsxs("div", {
2073
+ className: "flex items-start justify-between gap-4",
2074
+ children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
2075
+ className: "text-2xl font-semibold text-balance",
2076
+ children: activeTabConfig?.heading ?? activeTabConfig?.label ?? activeTab
2077
+ }), activeTabConfig?.description && /* @__PURE__ */ jsx("p", {
2078
+ className: "text-sm text-muted-foreground mt-1 text-pretty",
2079
+ children: activeTabConfig.description
2080
+ })] }), headerActions && /* @__PURE__ */ jsx("div", {
2081
+ className: "flex items-center gap-2 shrink-0",
2082
+ children: headerActions
2083
+ })]
2084
+ }), children]
2085
+ })
2086
+ })]
2087
+ });
2088
+ };
2089
+
2090
+ //#endregion
2091
+ //#region src/components/settings-section/settings-section.tsx
2092
+ const SettingsSection = ({ title, description, children, variant = "default", className }) => {
2093
+ return /* @__PURE__ */ jsxs("div", {
2094
+ className: cn("rounded-xl border p-6 shadow-[var(--shadow-card)] bg-card", variant === "danger" && "border-[var(--border-danger)]/30", className),
2095
+ children: [/* @__PURE__ */ jsxs("div", {
2096
+ className: "mb-4",
2097
+ children: [/* @__PURE__ */ jsx("h3", {
2098
+ className: cn("text-sm font-semibold text-balance", variant === "danger" && "text-[var(--text-danger)]"),
2099
+ children: title
2100
+ }), description && /* @__PURE__ */ jsx("p", {
2101
+ className: "text-sm text-muted-foreground mt-1 text-pretty",
2102
+ children: description
2103
+ })]
2104
+ }), /* @__PURE__ */ jsx("div", {
2105
+ className: "space-y-4",
2106
+ children
2107
+ })]
2108
+ });
2109
+ };
2110
+
2111
+ //#endregion
2112
+ //#region src/components/status-badge/status-badge.tsx
2113
+ const statusConfig = {
2114
+ active: {
2115
+ dot: true,
2116
+ label: "Active",
2117
+ variant: "success"
2118
+ },
2119
+ blocked: {
2120
+ dot: true,
2121
+ label: "Blocked",
2122
+ variant: "danger"
2123
+ },
2124
+ inactive: {
2125
+ dot: true,
2126
+ label: "Inactive",
2127
+ variant: "inactive"
2128
+ },
2129
+ live: {
2130
+ dot: true,
2131
+ label: "Live",
2132
+ variant: "success"
2133
+ },
2134
+ pending: {
2135
+ dot: true,
2136
+ label: "Pending",
2137
+ variant: "warning"
2138
+ },
2139
+ processing: {
2140
+ dot: true,
2141
+ label: "Processing",
2142
+ variant: "process"
2143
+ },
2144
+ sandbox: {
2145
+ dot: true,
2146
+ label: "Sandbox",
2147
+ variant: "warning"
2148
+ }
2149
+ };
2150
+ const StatusBadge = ({ status, label, className }) => {
2151
+ const config = statusConfig[status];
2152
+ return /* @__PURE__ */ jsxs(Badge, {
2153
+ variant: config.variant,
2154
+ className: cn("gap-1.5", className),
2155
+ children: [config.dot && /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-current opacity-70" }), label || config.label]
2156
+ });
2157
+ };
2158
+
2159
+ //#endregion
2160
+ //#region src/components/icons/arrow-up-right/arrow-up-right.tsx
2161
+ const ArrowUpRightIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2162
+ ref,
2163
+ ...props,
2164
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2165
+ fill: "none",
2166
+ height: size,
2167
+ stroke: "currentColor",
2168
+ strokeLinecap: "round",
2169
+ strokeLinejoin: "round",
2170
+ strokeWidth: "2",
2171
+ viewBox: "0 0 24 24",
2172
+ width: size,
2173
+ xmlns: "http://www.w3.org/2000/svg",
2174
+ children: [/* @__PURE__ */ jsx(motion.path, {
2175
+ animate: controls,
2176
+ d: "M7 17 17 7",
2177
+ transition: {
2178
+ duration: .3,
2179
+ times: [
2180
+ 0,
2181
+ .4,
2182
+ 1
2183
+ ]
2184
+ },
2185
+ variants: {
2186
+ animate: {
2187
+ x: [
2188
+ 0,
2189
+ 2,
2190
+ 0
2191
+ ],
2192
+ y: [
2193
+ 0,
2194
+ -2,
2195
+ 0
2196
+ ]
2197
+ },
2198
+ normal: {
2199
+ x: 0,
2200
+ y: 0
2201
+ }
2202
+ }
2203
+ }), /* @__PURE__ */ jsx(motion.path, {
2204
+ animate: controls,
2205
+ d: "M7 7h10v10",
2206
+ transition: {
2207
+ duration: .3,
2208
+ times: [
2209
+ 0,
2210
+ .4,
2211
+ 1
2212
+ ]
2213
+ },
2214
+ variants: {
2215
+ animate: {
2216
+ x: [
2217
+ 0,
2218
+ 2,
2219
+ 0
2220
+ ],
2221
+ y: [
2222
+ 0,
2223
+ -2,
2224
+ 0
2225
+ ]
2226
+ },
2227
+ normal: {
2228
+ x: 0,
2229
+ y: 0
2230
+ }
2231
+ }
2232
+ })]
2233
+ })
2234
+ }));
2235
+ ArrowUpRightIcon.displayName = "ArrowUpRightIcon";
2236
+
2237
+ //#endregion
2238
+ //#region src/components/icons/chart-bar-increasing/chart-bar-increasing.tsx
2239
+ const LINE_VARIANTS$1 = {
2240
+ hidden: {
2241
+ opacity: 0,
2242
+ pathLength: 0
2243
+ },
2244
+ visible: {
2245
+ opacity: 1,
2246
+ pathLength: 1
2247
+ }
2248
+ };
2249
+ const transitionFor = (i) => ({
2250
+ delay: i * .1,
2251
+ duration: .3
2252
+ });
2253
+ const ChartBarIncreasingIcon = forwardRef(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
2254
+ const controls = useAnimation();
2255
+ const isControlledRef = useRef(false);
2256
+ useImperativeHandle(ref, () => {
2257
+ isControlledRef.current = true;
2258
+ return {
2259
+ startAnimation: async () => {
2260
+ await controls.start((i) => ({
2261
+ opacity: 0,
2262
+ pathLength: 0,
2263
+ transition: transitionFor(i)
2264
+ }));
2265
+ await controls.start((i) => ({
2266
+ opacity: 1,
2267
+ pathLength: 1,
2268
+ transition: transitionFor(i)
2269
+ }));
2270
+ },
2271
+ stopAnimation: () => controls.start("visible")
2272
+ };
2273
+ });
2274
+ const handleMouseEnter = useCallback(async (e) => {
2275
+ if (isControlledRef.current) onMouseEnter?.(e);
2276
+ else {
2277
+ await controls.start((i) => ({
2278
+ opacity: 0,
2279
+ pathLength: 0,
2280
+ transition: transitionFor(i)
2281
+ }));
2282
+ await controls.start((i) => ({
2283
+ opacity: 1,
2284
+ pathLength: 1,
2285
+ transition: transitionFor(i)
2286
+ }));
2287
+ }
2288
+ }, [controls, onMouseEnter]);
2289
+ const handleMouseLeave = useCallback((e) => {
2290
+ if (isControlledRef.current) onMouseLeave?.(e);
2291
+ else controls.start("visible").catch(() => void 0);
2292
+ }, [controls, onMouseLeave]);
2293
+ return /* @__PURE__ */ jsx("div", {
2294
+ "aria-hidden": "true",
2295
+ className: cn("inline-flex items-center justify-center", className),
2296
+ onMouseEnter: handleMouseEnter,
2297
+ onMouseLeave: handleMouseLeave,
2298
+ ...props,
2299
+ children: /* @__PURE__ */ jsxs("svg", {
2300
+ fill: "none",
2301
+ height: size,
2302
+ stroke: "currentColor",
2303
+ strokeLinecap: "round",
2304
+ strokeLinejoin: "round",
2305
+ strokeWidth: "2",
2306
+ viewBox: "0 0 24 24",
2307
+ width: size,
2308
+ xmlns: "http://www.w3.org/2000/svg",
2309
+ children: [
2310
+ /* @__PURE__ */ jsx("path", { d: "M3 3v16a2 2 0 0 0 2 2h16" }),
2311
+ /* @__PURE__ */ jsx(motion.path, {
2312
+ animate: controls,
2313
+ custom: 1,
2314
+ d: "M7 11h8",
2315
+ initial: "visible",
2316
+ variants: LINE_VARIANTS$1
2317
+ }),
2318
+ /* @__PURE__ */ jsx(motion.path, {
2319
+ animate: controls,
2320
+ custom: 2,
2321
+ d: "M7 16h12",
2322
+ initial: "visible",
2323
+ variants: LINE_VARIANTS$1
2324
+ }),
2325
+ /* @__PURE__ */ jsx(motion.path, {
2326
+ animate: controls,
2327
+ custom: 0,
2328
+ d: "M7 6h3",
2329
+ initial: "visible",
2330
+ variants: LINE_VARIANTS$1
2331
+ })
2332
+ ]
2333
+ })
2334
+ });
2335
+ });
2336
+ ChartBarIncreasingIcon.displayName = "ChartBarIncreasingIcon";
2337
+
2338
+ //#endregion
2339
+ //#region src/components/icons/chevron-down/chevron-down.tsx
2340
+ const DEFAULT_TRANSITION$3 = {
2341
+ duration: .5,
2342
+ times: [
2343
+ 0,
2344
+ .4,
2345
+ 1
2346
+ ]
2347
+ };
2348
+ const ChevronDownIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2349
+ ref,
2350
+ ...props,
2351
+ children: (controls, size) => /* @__PURE__ */ jsx("svg", {
2352
+ fill: "none",
2353
+ height: size,
2354
+ stroke: "currentColor",
2355
+ strokeLinecap: "round",
2356
+ strokeLinejoin: "round",
2357
+ strokeWidth: "2",
2358
+ viewBox: "0 0 24 24",
2359
+ width: size,
2360
+ xmlns: "http://www.w3.org/2000/svg",
2361
+ children: /* @__PURE__ */ jsx(motion.path, {
2362
+ animate: controls,
2363
+ d: "m6 9 6 6 6-6",
2364
+ transition: DEFAULT_TRANSITION$3,
2365
+ variants: {
2366
+ animate: { y: [
2367
+ 0,
2368
+ 2,
2369
+ 0
2370
+ ] },
2371
+ normal: { y: 0 }
2372
+ }
2373
+ })
2374
+ })
2375
+ }));
2376
+ ChevronDownIcon.displayName = "ChevronDownIcon";
2377
+
2378
+ //#endregion
2379
+ //#region src/components/icons/chevron-right/chevron-right.tsx
2380
+ const ChevronRightIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2381
+ ref,
2382
+ ...props,
2383
+ children: (controls, size) => /* @__PURE__ */ jsx("svg", {
2384
+ fill: "none",
2385
+ height: size,
2386
+ stroke: "currentColor",
2387
+ strokeLinecap: "round",
2388
+ strokeLinejoin: "round",
2389
+ strokeWidth: "2",
2390
+ viewBox: "0 0 24 24",
2391
+ width: size,
2392
+ xmlns: "http://www.w3.org/2000/svg",
2393
+ children: /* @__PURE__ */ jsx(motion.path, {
2394
+ animate: controls,
2395
+ d: "m9 18 6-6-6-6",
2396
+ transition: {
2397
+ duration: .5,
2398
+ times: [
2399
+ 0,
2400
+ .4,
2401
+ 1
2402
+ ]
2403
+ },
2404
+ variants: {
2405
+ animate: { x: [
2406
+ 0,
2407
+ 2,
2408
+ 0
2409
+ ] },
2410
+ normal: { x: 0 }
2411
+ }
2412
+ })
2413
+ })
2414
+ }));
2415
+ ChevronRightIcon.displayName = "ChevronRightIcon";
2416
+
2417
+ //#endregion
2418
+ //#region src/components/icons/copy/copy.tsx
2419
+ const springTransition = {
2420
+ damping: 17,
2421
+ mass: 1,
2422
+ stiffness: 160,
2423
+ type: "spring"
2424
+ };
2425
+ const CopyIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2426
+ ref,
2427
+ ...props,
2428
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2429
+ fill: "none",
2430
+ height: size,
2431
+ stroke: "currentColor",
2432
+ strokeLinecap: "round",
2433
+ strokeLinejoin: "round",
2434
+ strokeWidth: "2",
2435
+ viewBox: "0 0 24 24",
2436
+ width: size,
2437
+ xmlns: "http://www.w3.org/2000/svg",
2438
+ children: [/* @__PURE__ */ jsx(motion.rect, {
2439
+ animate: controls,
2440
+ height: "14",
2441
+ rx: "2",
2442
+ ry: "2",
2443
+ transition: springTransition,
2444
+ variants: {
2445
+ animate: {
2446
+ translateX: -3,
2447
+ translateY: -3
2448
+ },
2449
+ normal: {
2450
+ translateX: 0,
2451
+ translateY: 0
2452
+ }
2453
+ },
2454
+ width: "14",
2455
+ x: "8",
2456
+ y: "8"
2457
+ }), /* @__PURE__ */ jsx(motion.path, {
2458
+ animate: controls,
2459
+ d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",
2460
+ transition: springTransition,
2461
+ variants: {
2462
+ animate: {
2463
+ x: 3,
2464
+ y: 3
2465
+ },
2466
+ normal: {
2467
+ x: 0,
2468
+ y: 0
2469
+ }
2470
+ }
2471
+ })]
2472
+ })
2473
+ }));
2474
+ CopyIcon.displayName = "CopyIcon";
2475
+
2476
+ //#endregion
2477
+ //#region src/components/icons/copy-check/copy-check.tsx
2478
+ const SPRING_TRANSITION = {
2479
+ damping: 17,
2480
+ mass: 1,
2481
+ stiffness: 160,
2482
+ type: "spring"
2483
+ };
2484
+ const CopyCheckIcon = forwardRef(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
2485
+ const controls = useAnimation();
2486
+ const isControlledRef = useRef(false);
2487
+ const [copied, setCopied] = useState(false);
2488
+ const timerRef = useRef(null);
2489
+ const triggerCopied = useCallback(() => {
2490
+ setCopied(true);
2491
+ if (timerRef.current) clearTimeout(timerRef.current);
2492
+ timerRef.current = setTimeout(() => setCopied(false), 1500);
2493
+ }, []);
2494
+ useImperativeHandle(ref, () => {
2495
+ isControlledRef.current = true;
2496
+ return {
2497
+ startAnimation: () => controls.start("animate"),
2498
+ stopAnimation: () => controls.start("normal"),
2499
+ triggerCopied
2500
+ };
2501
+ });
2502
+ const handleMouseEnter = useCallback((e) => {
2503
+ if (!copied) if (isControlledRef.current) onMouseEnter?.(e);
2504
+ else controls.start("animate").catch(() => void 0);
2505
+ }, [
2506
+ controls,
2507
+ onMouseEnter,
2508
+ copied
2509
+ ]);
2510
+ const handleMouseLeave = useCallback((e) => {
2511
+ if (!copied) if (isControlledRef.current) onMouseLeave?.(e);
2512
+ else controls.start("normal").catch(() => void 0);
2513
+ }, [
2514
+ controls,
2515
+ onMouseLeave,
2516
+ copied
2517
+ ]);
2518
+ return /* @__PURE__ */ jsx("div", {
2519
+ "aria-hidden": "true",
2520
+ className: cn("relative inline-flex items-center justify-center", className),
2521
+ onMouseEnter: handleMouseEnter,
2522
+ onMouseLeave: handleMouseLeave,
2523
+ ...props,
2524
+ children: /* @__PURE__ */ jsx(AnimatePresence, {
2525
+ mode: "wait",
2526
+ children: copied ? /* @__PURE__ */ jsx(motion.svg, {
2527
+ initial: {
2528
+ opacity: 0,
2529
+ scale: .5
2530
+ },
2531
+ animate: {
2532
+ opacity: 1,
2533
+ scale: 1
2534
+ },
2535
+ exit: {
2536
+ opacity: 0,
2537
+ scale: .5
2538
+ },
2539
+ transition: { duration: .15 },
2540
+ fill: "none",
2541
+ height: size,
2542
+ stroke: "currentColor",
2543
+ strokeLinecap: "round",
2544
+ strokeLinejoin: "round",
2545
+ strokeWidth: "2",
2546
+ viewBox: "0 0 24 24",
2547
+ width: size,
2548
+ xmlns: "http://www.w3.org/2000/svg",
2549
+ className: "text-green-500",
2550
+ children: /* @__PURE__ */ jsx(motion.path, {
2551
+ d: "M20 6 9 17l-5-5",
2552
+ initial: { pathLength: 0 },
2553
+ animate: { pathLength: 1 },
2554
+ transition: {
2555
+ delay: .1,
2556
+ duration: .3
2557
+ }
2558
+ })
2559
+ }, "check") : /* @__PURE__ */ jsx(motion.div, {
2560
+ initial: {
2561
+ opacity: 0,
2562
+ scale: .5
2563
+ },
2564
+ animate: {
2565
+ opacity: 1,
2566
+ scale: 1
2567
+ },
2568
+ exit: {
2569
+ opacity: 0,
2570
+ scale: .5
2571
+ },
2572
+ transition: { duration: .15 },
2573
+ children: /* @__PURE__ */ jsxs("svg", {
2574
+ fill: "none",
2575
+ height: size,
2576
+ stroke: "currentColor",
2577
+ strokeLinecap: "round",
2578
+ strokeLinejoin: "round",
2579
+ strokeWidth: "2",
2580
+ viewBox: "0 0 24 24",
2581
+ width: size,
2582
+ xmlns: "http://www.w3.org/2000/svg",
2583
+ children: [/* @__PURE__ */ jsx(motion.rect, {
2584
+ animate: controls,
2585
+ height: "14",
2586
+ rx: "2",
2587
+ ry: "2",
2588
+ transition: SPRING_TRANSITION,
2589
+ variants: {
2590
+ animate: {
2591
+ translateX: -3,
2592
+ translateY: -3
2593
+ },
2594
+ normal: {
2595
+ translateX: 0,
2596
+ translateY: 0
2597
+ }
2598
+ },
2599
+ width: "14",
2600
+ x: "8",
2601
+ y: "8"
2602
+ }), /* @__PURE__ */ jsx(motion.path, {
2603
+ animate: controls,
2604
+ d: "M8 4V2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.75a2 2 0 0 0-2-2H16a2 2 0 0 0-2-2h-2z",
2605
+ transition: SPRING_TRANSITION,
2606
+ variants: {
2607
+ animate: {
2608
+ x: 3,
2609
+ y: 3
2610
+ },
2611
+ normal: {
2612
+ x: 0,
2613
+ y: 0
2614
+ }
2615
+ }
2616
+ })]
2617
+ })
2618
+ }, "copy")
2619
+ })
2620
+ });
2621
+ });
2622
+ CopyCheckIcon.displayName = "CopyCheckIcon";
2623
+
2624
+ //#endregion
2625
+ //#region src/components/icons/dollar-sign/dollar-sign.tsx
2626
+ const DOLLAR_MAIN_VARIANTS = {
2627
+ animate: {
2628
+ opacity: [0, 1],
2629
+ pathLength: [0, 1],
2630
+ transition: {
2631
+ duration: .6,
2632
+ opacity: { duration: .1 }
2633
+ }
2634
+ },
2635
+ normal: {
2636
+ opacity: 1,
2637
+ pathLength: 1,
2638
+ transition: {
2639
+ duration: .4,
2640
+ opacity: { duration: .1 }
2641
+ }
2642
+ }
2643
+ };
2644
+ const DOLLAR_SECONDARY_VARIANTS = {
2645
+ animate: {
2646
+ opacity: [0, 1],
2647
+ pathLength: [0, 1],
2648
+ pathOffset: [1, 0],
2649
+ transition: {
2650
+ delay: .5,
2651
+ duration: .4,
2652
+ opacity: {
2653
+ delay: .5,
2654
+ duration: .1
2655
+ }
2656
+ }
2657
+ },
2658
+ normal: {
2659
+ opacity: 1,
2660
+ pathLength: 1,
2661
+ pathOffset: 0,
2662
+ transition: {
2663
+ delay: .3,
2664
+ duration: .3,
2665
+ opacity: {
2666
+ delay: .3,
2667
+ duration: .1
2668
+ }
2669
+ }
2670
+ }
2671
+ };
2672
+ const DollarSignIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2673
+ ref,
2674
+ ...props,
2675
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2676
+ fill: "none",
2677
+ height: size,
2678
+ stroke: "currentColor",
2679
+ strokeLinecap: "round",
2680
+ strokeLinejoin: "round",
2681
+ strokeWidth: "2",
2682
+ viewBox: "0 0 24 24",
2683
+ width: size,
2684
+ xmlns: "http://www.w3.org/2000/svg",
2685
+ children: [/* @__PURE__ */ jsx(motion.path, {
2686
+ animate: controls,
2687
+ d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",
2688
+ initial: "normal",
2689
+ variants: DOLLAR_MAIN_VARIANTS
2690
+ }), /* @__PURE__ */ jsx(motion.path, {
2691
+ animate: controls,
2692
+ d: "M12 22 L12 2",
2693
+ initial: "normal",
2694
+ variants: DOLLAR_SECONDARY_VARIANTS
2695
+ })]
2696
+ })
2697
+ }));
2698
+ DollarSignIcon.displayName = "DollarSignIcon";
2699
+
2700
+ //#endregion
2701
+ //#region src/components/icons/download/download.tsx
2702
+ const DownloadIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2703
+ ref,
2704
+ ...props,
2705
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2706
+ fill: "none",
2707
+ height: size,
2708
+ stroke: "currentColor",
2709
+ strokeLinecap: "round",
2710
+ strokeLinejoin: "round",
2711
+ strokeWidth: "2",
2712
+ viewBox: "0 0 24 24",
2713
+ width: size,
2714
+ xmlns: "http://www.w3.org/2000/svg",
2715
+ children: [
2716
+ /* @__PURE__ */ jsx(motion.path, {
2717
+ animate: controls,
2718
+ d: "M12 15V3",
2719
+ transition: {
2720
+ duration: .3,
2721
+ times: [
2722
+ 0,
2723
+ .4,
2724
+ 1
2725
+ ]
2726
+ },
2727
+ variants: {
2728
+ animate: { y: [
2729
+ 0,
2730
+ 2,
2731
+ 0
2732
+ ] },
2733
+ normal: { y: 0 }
2734
+ }
2735
+ }),
2736
+ /* @__PURE__ */ jsx(motion.path, {
2737
+ animate: controls,
2738
+ d: "m8 11 4 4 4-4",
2739
+ transition: {
2740
+ duration: .3,
2741
+ times: [
2742
+ 0,
2743
+ .4,
2744
+ 1
2745
+ ]
2746
+ },
2747
+ variants: {
2748
+ animate: { y: [
2749
+ 0,
2750
+ 2,
2751
+ 0
2752
+ ] },
2753
+ normal: { y: 0 }
2754
+ }
2755
+ }),
2756
+ /* @__PURE__ */ jsx("path", { d: "M20 21H4" })
2757
+ ]
2758
+ })
2759
+ }));
2760
+ DownloadIcon.displayName = "DownloadIcon";
2761
+
2762
+ //#endregion
2763
+ //#region src/components/icons/fingerprint/fingerprint.tsx
2764
+ const PATH_VARIANTS$7 = {
2765
+ animate: {
2766
+ opacity: [
2767
+ 0,
2768
+ 0,
2769
+ 1,
2770
+ 1,
2771
+ 1
2772
+ ],
2773
+ pathLength: [
2774
+ .1,
2775
+ .3,
2776
+ .5,
2777
+ .7,
2778
+ .9,
2779
+ 1
2780
+ ],
2781
+ transition: {
2782
+ opacity: { duration: .5 },
2783
+ pathLength: { duration: 2 }
2784
+ }
2785
+ },
2786
+ normal: {
2787
+ opacity: 1,
2788
+ pathLength: 1
2789
+ }
2790
+ };
2791
+ const FINGERPRINT_PATHS = [
2792
+ { d: "M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4" },
2793
+ { d: "M14 13.12c0 2.38 0 6.38-1 8.88" },
2794
+ { d: "M17.29 21.02c.12-.6.43-2.3.5-3.02" },
2795
+ { d: "M2 12a10 10 0 0 1 18-6" },
2796
+ { d: "M2 16h.01" },
2797
+ { d: "M21.8 16c.2-2 .131-5.354 0-6" },
2798
+ { d: "M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2" },
2799
+ { d: "M8.65 22c.21-.66.45-1.32.57-2" },
2800
+ { d: "M9 6.8a6 6 0 0 1 9 5.2v2" }
2801
+ ];
2802
+ const FingerprintIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2803
+ ref,
2804
+ ...props,
2805
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2806
+ fill: "none",
2807
+ height: size,
2808
+ stroke: "currentColor",
2809
+ strokeLinecap: "round",
2810
+ strokeLinejoin: "round",
2811
+ strokeWidth: "2",
2812
+ viewBox: "0 0 24 24",
2813
+ width: size,
2814
+ xmlns: "http://www.w3.org/2000/svg",
2815
+ children: [FINGERPRINT_PATHS.map(({ d }) => /* @__PURE__ */ jsx("path", {
2816
+ d,
2817
+ strokeOpacity: .4
2818
+ }, d)), FINGERPRINT_PATHS.map(({ d }) => /* @__PURE__ */ jsx(motion.path, {
2819
+ animate: controls,
2820
+ d,
2821
+ variants: PATH_VARIANTS$7
2822
+ }, `motion-${d}`))]
2823
+ })
2824
+ }));
2825
+ FingerprintIcon.displayName = "FingerprintIcon";
2826
+
2827
+ //#endregion
2828
+ //#region src/components/icons/home/home.tsx
2829
+ const DEFAULT_TRANSITION$2 = {
2830
+ duration: .6,
2831
+ opacity: { duration: .2 }
2832
+ };
2833
+ const PATH_VARIANTS$6 = {
2834
+ animate: {
2835
+ opacity: [0, 1],
2836
+ pathLength: [0, 1]
2837
+ },
2838
+ normal: {
2839
+ opacity: 1,
2840
+ pathLength: 1
2841
+ }
2842
+ };
2843
+ const HomeIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2844
+ ref,
2845
+ ...props,
2846
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2847
+ fill: "none",
2848
+ height: size,
2849
+ stroke: "currentColor",
2850
+ strokeLinecap: "round",
2851
+ strokeLinejoin: "round",
2852
+ strokeWidth: "2",
2853
+ viewBox: "0 0 24 24",
2854
+ width: size,
2855
+ xmlns: "http://www.w3.org/2000/svg",
2856
+ children: [/* @__PURE__ */ jsx("path", { d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }), /* @__PURE__ */ jsx(motion.path, {
2857
+ animate: controls,
2858
+ d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
2859
+ transition: DEFAULT_TRANSITION$2,
2860
+ variants: PATH_VARIANTS$6
2861
+ })]
2862
+ })
2863
+ }));
2864
+ HomeIcon.displayName = "HomeIcon";
2865
+
2866
+ //#endregion
2867
+ //#region src/components/icons/key/key.tsx
2868
+ const KeyIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2869
+ ref,
2870
+ ...props,
2871
+ children: (controls, size) => /* @__PURE__ */ jsxs(motion.svg, {
2872
+ animate: controls,
2873
+ fill: "none",
2874
+ height: size,
2875
+ initial: "normal",
2876
+ stroke: "currentColor",
2877
+ strokeLinecap: "round",
2878
+ strokeLinejoin: "round",
2879
+ strokeWidth: "2",
2880
+ style: {
2881
+ originX: .3,
2882
+ originY: .7
2883
+ },
2884
+ variants: {
2885
+ animate: {
2886
+ rotate: [
2887
+ -3,
2888
+ -33,
2889
+ -25,
2890
+ -28
2891
+ ],
2892
+ transition: {
2893
+ duration: .6,
2894
+ ease: "easeInOut",
2895
+ times: [
2896
+ 0,
2897
+ .6,
2898
+ .8,
2899
+ 1
2900
+ ]
2901
+ }
2902
+ },
2903
+ normal: {
2904
+ rotate: 0,
2905
+ transition: {
2906
+ damping: 14,
2907
+ duration: .8,
2908
+ stiffness: 120,
2909
+ type: "spring"
2910
+ }
2911
+ }
2912
+ },
2913
+ viewBox: "0 0 24 24",
2914
+ width: size,
2915
+ xmlns: "http://www.w3.org/2000/svg",
2916
+ children: [
2917
+ /* @__PURE__ */ jsx("path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4" }),
2918
+ /* @__PURE__ */ jsx("path", { d: "m21 2-9.6 9.6" }),
2919
+ /* @__PURE__ */ jsx("circle", {
2920
+ cx: "7.5",
2921
+ cy: "15.5",
2922
+ r: "5.5"
2923
+ })
2924
+ ]
2925
+ })
2926
+ }));
2927
+ KeyIcon.displayName = "KeyIcon";
2928
+
2929
+ //#endregion
2930
+ //#region src/components/icons/layout-panel-top/layout-panel-top.tsx
2931
+ const LayoutPanelTopIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
2932
+ ref,
2933
+ ...props,
2934
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
2935
+ fill: "none",
2936
+ height: size,
2937
+ stroke: "currentColor",
2938
+ strokeLinecap: "round",
2939
+ strokeLinejoin: "round",
2940
+ strokeWidth: "2",
2941
+ viewBox: "0 0 24 24",
2942
+ width: size,
2943
+ xmlns: "http://www.w3.org/2000/svg",
2944
+ children: [
2945
+ /* @__PURE__ */ jsx(motion.rect, {
2946
+ animate: controls,
2947
+ height: "7",
2948
+ initial: "normal",
2949
+ rx: "1",
2950
+ variants: {
2951
+ animate: {
2952
+ opacity: [0, 1],
2953
+ transition: {
2954
+ duration: .5,
2955
+ opacity: {
2956
+ duration: .5,
2957
+ times: [.2, 1]
2958
+ }
2959
+ },
2960
+ translateY: [-5, 0]
2961
+ },
2962
+ normal: {
2963
+ opacity: 1,
2964
+ translateY: 0
2965
+ }
2966
+ },
2967
+ width: "18",
2968
+ x: "3",
2969
+ y: "3"
2970
+ }),
2971
+ /* @__PURE__ */ jsx(motion.rect, {
2972
+ animate: controls,
2973
+ height: "7",
2974
+ initial: "normal",
2975
+ rx: "1",
2976
+ variants: {
2977
+ animate: {
2978
+ opacity: [0, 1],
2979
+ transition: {
2980
+ duration: .5,
2981
+ opacity: {
2982
+ duration: .7,
2983
+ times: [.5, 1]
2984
+ },
2985
+ translateX: { delay: .3 }
2986
+ },
2987
+ translateX: [-10, 0]
2988
+ },
2989
+ normal: {
2990
+ opacity: 1,
2991
+ translateX: 0
2992
+ }
2993
+ },
2994
+ width: "7",
2995
+ x: "3",
2996
+ y: "14"
2997
+ }),
2998
+ /* @__PURE__ */ jsx(motion.rect, {
2999
+ animate: controls,
3000
+ height: "7",
3001
+ initial: "normal",
3002
+ rx: "1",
3003
+ variants: {
3004
+ animate: {
3005
+ opacity: [0, 1],
3006
+ transition: {
3007
+ duration: .5,
3008
+ opacity: {
3009
+ duration: .8,
3010
+ times: [.5, 1]
3011
+ },
3012
+ translateX: { delay: .4 }
3013
+ },
3014
+ translateX: [10, 0]
3015
+ },
3016
+ normal: {
3017
+ opacity: 1,
3018
+ translateX: 0
3019
+ }
3020
+ },
3021
+ width: "7",
3022
+ x: "14",
3023
+ y: "14"
3024
+ })
3025
+ ]
3026
+ })
3027
+ }));
3028
+ LayoutPanelTopIcon.displayName = "LayoutPanelTopIcon";
3029
+
3030
+ //#endregion
3031
+ //#region src/components/icons/link/link.tsx
3032
+ const PATH_VARIANTS$5 = {
3033
+ animate: {
3034
+ pathLength: [
3035
+ 1,
3036
+ .97,
3037
+ 1,
3038
+ .97,
3039
+ 1
3040
+ ],
3041
+ pathOffset: [
3042
+ 0,
3043
+ .05,
3044
+ 0,
3045
+ .05,
3046
+ 0
3047
+ ],
3048
+ rotate: [
3049
+ 0,
3050
+ -5,
3051
+ 0
3052
+ ],
3053
+ transition: {
3054
+ duration: 1,
3055
+ ease: "easeInOut",
3056
+ rotate: { duration: .5 },
3057
+ times: [
3058
+ 0,
3059
+ .2,
3060
+ .4,
3061
+ .6,
3062
+ 1
3063
+ ]
3064
+ }
3065
+ },
3066
+ normal: {
3067
+ pathLength: 1,
3068
+ pathOffset: 0,
3069
+ rotate: 0
3070
+ }
3071
+ };
3072
+ const LinkIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3073
+ ref,
3074
+ ...props,
3075
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3076
+ fill: "none",
3077
+ height: size,
3078
+ stroke: "currentColor",
3079
+ strokeLinecap: "round",
3080
+ strokeLinejoin: "round",
3081
+ strokeWidth: "2",
3082
+ viewBox: "0 0 24 24",
3083
+ width: size,
3084
+ xmlns: "http://www.w3.org/2000/svg",
3085
+ children: [/* @__PURE__ */ jsx(motion.path, {
3086
+ animate: controls,
3087
+ d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",
3088
+ variants: PATH_VARIANTS$5
3089
+ }), /* @__PURE__ */ jsx(motion.path, {
3090
+ animate: controls,
3091
+ d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",
3092
+ variants: PATH_VARIANTS$5
3093
+ })]
3094
+ })
3095
+ }));
3096
+ LinkIcon.displayName = "LinkIcon";
3097
+
3098
+ //#endregion
3099
+ //#region src/components/icons/mcp-tools/mcp-tools.tsx
3100
+ const ClaudeLogo = ({ size = 32, ...props }) => /* @__PURE__ */ jsx("svg", {
3101
+ width: size,
3102
+ height: size,
3103
+ viewBox: "0 0 24 24",
3104
+ fill: "none",
3105
+ xmlns: "http://www.w3.org/2000/svg",
3106
+ ...props,
3107
+ children: /* @__PURE__ */ jsx("path", {
3108
+ d: "M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z",
3109
+ fill: "#D97757",
3110
+ fillRule: "nonzero"
3111
+ })
3112
+ });
3113
+ const CursorLogo = ({ size = 32, ...props }) => /* @__PURE__ */ jsxs("svg", {
3114
+ width: size,
3115
+ height: size,
3116
+ viewBox: "0 0 24 24",
3117
+ fill: "none",
3118
+ xmlns: "http://www.w3.org/2000/svg",
3119
+ ...props,
3120
+ children: [
3121
+ /* @__PURE__ */ jsx("rect", {
3122
+ width: "24",
3123
+ height: "24",
3124
+ rx: "5",
3125
+ fill: "#F5F5F5"
3126
+ }),
3127
+ /* @__PURE__ */ jsx("path", {
3128
+ d: "M12 4L5 8v8l7 4 7-4V8l-7-4z",
3129
+ fill: "#E5E5E5"
3130
+ }),
3131
+ /* @__PURE__ */ jsx("path", {
3132
+ d: "M12 4L5 8l7 4 7-4-7-4z",
3133
+ fill: "#808080"
3134
+ }),
3135
+ /* @__PURE__ */ jsx("path", {
3136
+ d: "M12 12l7-4v8l-7 4v-8z",
3137
+ fill: "#666"
3138
+ }),
3139
+ /* @__PURE__ */ jsx("path", {
3140
+ d: "M12 12L5 8v8l7 4v-8z",
3141
+ fill: "#999"
3142
+ })
3143
+ ]
3144
+ });
3145
+ const VSCodeLogo = ({ size = 32, ...props }) => /* @__PURE__ */ jsxs("svg", {
3146
+ width: size,
3147
+ height: size,
3148
+ viewBox: "0 0 100 100",
3149
+ fill: "none",
3150
+ xmlns: "http://www.w3.org/2000/svg",
3151
+ ...props,
3152
+ children: [/* @__PURE__ */ jsx("mask", {
3153
+ id: "vsc-mask",
3154
+ maskUnits: "userSpaceOnUse",
3155
+ x: "0",
3156
+ y: "0",
3157
+ width: "100",
3158
+ height: "100",
3159
+ children: /* @__PURE__ */ jsx("path", {
3160
+ fillRule: "evenodd",
3161
+ clipRule: "evenodd",
3162
+ d: "M70.912 99.317C72.487 99.931 74.283 99.891 75.873 99.126L96.461 89.22C98.624 88.179 100 85.989 100 83.587V16.413C100 14.011 98.624 11.822 96.461 10.781L75.873 0.874C73.786 -0.13 71.345 0.116 69.513 1.447C69.252 1.637 69.003 1.849 68.769 2.083L29.355 38.041L12.187 25.01C10.589 23.797 8.354 23.896 6.869 25.246L1.363 30.255C-0.453 31.906 -0.455 34.763 1.359 36.417L16.247 50L1.359 63.583C-0.455 65.237 -0.453 68.094 1.363 69.745L6.869 74.754C8.354 76.104 10.589 76.204 12.187 74.99L29.355 61.959L68.769 97.917C69.392 98.541 70.125 99.01 70.912 99.317ZM75.015 27.299L45.109 50L75.015 72.701V27.299Z",
3163
+ fill: "#fff"
3164
+ })
3165
+ }), /* @__PURE__ */ jsxs("g", {
3166
+ mask: "url(#vsc-mask)",
3167
+ children: [
3168
+ /* @__PURE__ */ jsx("path", {
3169
+ d: "M96.461 10.796L75.857 0.876C73.472 -0.273 70.622 0.212 68.75 2.083L1.299 63.583C-0.516 65.237 -0.514 68.094 1.303 69.745L6.813 74.754C8.298 76.104 10.535 76.204 12.134 74.99L93.361 13.37C96.086 11.303 100 13.246 100 16.667V16.427C100 14.027 98.625 11.838 96.461 10.796Z",
3170
+ fill: "#0065A9"
3171
+ }),
3172
+ /* @__PURE__ */ jsx("path", {
3173
+ d: "M96.461 89.204L75.857 99.124C73.472 100.273 70.622 99.788 68.75 97.917L1.299 36.417C-0.516 34.763 -0.514 31.906 1.303 30.255L6.813 25.246C8.298 23.896 10.535 23.796 12.134 25.009L93.361 86.63C96.086 88.697 100 86.754 100 83.333V83.573C100 85.974 98.625 88.162 96.461 89.204Z",
3174
+ fill: "#007ACC"
3175
+ }),
3176
+ /* @__PURE__ */ jsx("path", {
3177
+ d: "M75.858 99.126C73.472 100.274 70.622 99.788 68.75 97.917C71.056 100.223 75 98.59 75 95.328V4.672C75 1.41 71.056 -0.223 68.75 2.083C70.622 0.211 73.472 -0.274 75.858 0.874L96.459 10.781C98.623 11.822 100 14.011 100 16.413V83.587C100 85.989 98.623 88.179 96.459 89.22L75.858 99.126Z",
3178
+ fill: "#1F9CF0"
3179
+ })
3180
+ ]
3181
+ })]
3182
+ });
3183
+ const OpenAILogo = ({ size = 32, ...props }) => /* @__PURE__ */ jsxs("svg", {
3184
+ width: size,
3185
+ height: size,
3186
+ viewBox: "0 0 24 24",
3187
+ fill: "none",
3188
+ xmlns: "http://www.w3.org/2000/svg",
3189
+ ...props,
3190
+ children: [
3191
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
3192
+ gradientUnits: "userSpaceOnUse",
3193
+ id: "codex-grad",
3194
+ x1: "12",
3195
+ x2: "12",
3196
+ y1: "3",
3197
+ y2: "21",
3198
+ children: [
3199
+ /* @__PURE__ */ jsx("stop", { stopColor: "#B1A7FF" }),
3200
+ /* @__PURE__ */ jsx("stop", {
3201
+ offset: ".5",
3202
+ stopColor: "#7A9DFF"
3203
+ }),
3204
+ /* @__PURE__ */ jsx("stop", {
3205
+ offset: "1",
3206
+ stopColor: "#3941FF"
3207
+ })
3208
+ ]
3209
+ }) }),
3210
+ /* @__PURE__ */ jsx("path", {
3211
+ d: "M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z",
3212
+ fill: "#F0F6FF"
3213
+ }),
3214
+ /* @__PURE__ */ jsx("path", {
3215
+ d: "M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z",
3216
+ fill: "url(#codex-grad)"
3217
+ })
3218
+ ]
3219
+ });
3220
+ const WindsurfLogo = ({ size = 32, ...props }) => /* @__PURE__ */ jsx("svg", {
3221
+ width: size,
3222
+ height: size,
3223
+ viewBox: "0 0 1024 1024",
3224
+ fill: "none",
3225
+ xmlns: "http://www.w3.org/2000/svg",
3226
+ ...props,
3227
+ children: /* @__PURE__ */ jsx("path", {
3228
+ d: "M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z",
3229
+ fill: "#0B100F"
3230
+ })
3231
+ });
3232
+
3233
+ //#endregion
3234
+ //#region src/components/icons/moon/moon.tsx
3235
+ const SVG_VARIANTS = {
3236
+ animate: { rotate: [
3237
+ 0,
3238
+ -10,
3239
+ 10,
3240
+ -5,
3241
+ 5,
3242
+ 0
3243
+ ] },
3244
+ normal: { rotate: 0 }
3245
+ };
3246
+ const SVG_TRANSITION = {
3247
+ duration: 1.2,
3248
+ ease: "easeInOut"
3249
+ };
3250
+ const MoonIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3251
+ ref,
3252
+ ...props,
3253
+ children: (controls, size) => /* @__PURE__ */ jsx(motion.svg, {
3254
+ animate: controls,
3255
+ fill: "none",
3256
+ height: size,
3257
+ stroke: "currentColor",
3258
+ strokeLinecap: "round",
3259
+ strokeLinejoin: "round",
3260
+ strokeWidth: "2",
3261
+ transition: SVG_TRANSITION,
3262
+ variants: SVG_VARIANTS,
3263
+ viewBox: "0 0 24 24",
3264
+ width: size,
3265
+ xmlns: "http://www.w3.org/2000/svg",
3266
+ children: /* @__PURE__ */ jsx("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })
3267
+ })
3268
+ }));
3269
+ MoonIcon.displayName = "MoonIcon";
3270
+
3271
+ //#endregion
3272
+ //#region src/components/icons/panel-left-close/panel-left-close.tsx
3273
+ const DEFAULT_TRANSITION$1 = {
3274
+ duration: .5,
3275
+ times: [
3276
+ 0,
3277
+ .4,
3278
+ 1
3279
+ ]
3280
+ };
3281
+ const PATH_VARIANTS$4 = {
3282
+ animate: { x: [
3283
+ 0,
3284
+ -1.5,
3285
+ 0
3286
+ ] },
3287
+ normal: { x: 0 }
3288
+ };
3289
+ const PanelLeftCloseIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3290
+ ref,
3291
+ ...props,
3292
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3293
+ fill: "none",
3294
+ height: size,
3295
+ stroke: "currentColor",
3296
+ strokeLinecap: "round",
3297
+ strokeLinejoin: "round",
3298
+ strokeWidth: "2",
3299
+ viewBox: "0 0 24 24",
3300
+ width: size,
3301
+ xmlns: "http://www.w3.org/2000/svg",
3302
+ children: [
3303
+ /* @__PURE__ */ jsx("rect", {
3304
+ height: "18",
3305
+ rx: "2",
3306
+ width: "18",
3307
+ x: "3",
3308
+ y: "3"
3309
+ }),
3310
+ /* @__PURE__ */ jsx("path", { d: "M9 3v18" }),
3311
+ /* @__PURE__ */ jsx(motion.path, {
3312
+ animate: controls,
3313
+ d: "m16 15-3-3 3-3",
3314
+ transition: DEFAULT_TRANSITION$1,
3315
+ variants: PATH_VARIANTS$4
3316
+ })
3317
+ ]
3318
+ })
3319
+ }));
3320
+ PanelLeftCloseIcon.displayName = "PanelLeftCloseIcon";
3321
+
3322
+ //#endregion
3323
+ //#region src/components/icons/panel-left-open/panel-left-open.tsx
3324
+ const DEFAULT_TRANSITION = {
3325
+ duration: .5,
3326
+ times: [
3327
+ 0,
3328
+ .4,
3329
+ 1
3330
+ ]
3331
+ };
3332
+ const PATH_VARIANTS$3 = {
3333
+ animate: { x: [
3334
+ 0,
3335
+ 1.5,
3336
+ 0
3337
+ ] },
3338
+ normal: { x: 0 }
3339
+ };
3340
+ const PanelLeftOpenIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3341
+ ref,
3342
+ ...props,
3343
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3344
+ fill: "none",
3345
+ height: size,
3346
+ stroke: "currentColor",
3347
+ strokeLinecap: "round",
3348
+ strokeLinejoin: "round",
3349
+ strokeWidth: "2",
3350
+ viewBox: "0 0 24 24",
3351
+ width: size,
3352
+ xmlns: "http://www.w3.org/2000/svg",
3353
+ children: [
3354
+ /* @__PURE__ */ jsx("rect", {
3355
+ height: "18",
3356
+ rx: "2",
3357
+ width: "18",
3358
+ x: "3",
3359
+ y: "3"
3360
+ }),
3361
+ /* @__PURE__ */ jsx("path", { d: "M9 3v18" }),
3362
+ /* @__PURE__ */ jsx(motion.path, {
3363
+ animate: controls,
3364
+ d: "m14 9 3 3-3 3",
3365
+ transition: DEFAULT_TRANSITION,
3366
+ variants: PATH_VARIANTS$3
3367
+ })
3368
+ ]
3369
+ })
3370
+ }));
3371
+ PanelLeftOpenIcon.displayName = "PanelLeftOpenIcon";
3372
+
3373
+ //#endregion
3374
+ //#region src/components/icons/plus/plus.tsx
3375
+ const PlusIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3376
+ ref,
3377
+ ...props,
3378
+ children: (controls, size) => /* @__PURE__ */ jsxs(motion.svg, {
3379
+ animate: controls,
3380
+ fill: "none",
3381
+ height: size,
3382
+ stroke: "currentColor",
3383
+ strokeLinecap: "round",
3384
+ strokeLinejoin: "round",
3385
+ strokeWidth: "2",
3386
+ transition: {
3387
+ damping: 15,
3388
+ stiffness: 100,
3389
+ type: "spring"
3390
+ },
3391
+ variants: {
3392
+ animate: { rotate: 180 },
3393
+ normal: { rotate: 0 }
3394
+ },
3395
+ viewBox: "0 0 24 24",
3396
+ width: size,
3397
+ xmlns: "http://www.w3.org/2000/svg",
3398
+ children: [/* @__PURE__ */ jsx("path", { d: "M5 12h14" }), /* @__PURE__ */ jsx("path", { d: "M12 5v14" })]
3399
+ })
3400
+ }));
3401
+ PlusIcon.displayName = "PlusIcon";
3402
+
3403
+ //#endregion
3404
+ //#region src/components/icons/refresh-cw/refresh-cw.tsx
3405
+ const RefreshCWIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3406
+ ref,
3407
+ ...props,
3408
+ children: (controls, size) => /* @__PURE__ */ jsxs(motion.svg, {
3409
+ animate: controls,
3410
+ fill: "none",
3411
+ height: size,
3412
+ stroke: "currentColor",
3413
+ strokeLinecap: "round",
3414
+ strokeLinejoin: "round",
3415
+ strokeWidth: "2",
3416
+ transition: {
3417
+ damping: 25,
3418
+ stiffness: 250,
3419
+ type: "spring"
3420
+ },
3421
+ variants: {
3422
+ animate: { rotate: "50deg" },
3423
+ normal: { rotate: "0deg" }
3424
+ },
3425
+ viewBox: "0 0 24 24",
3426
+ width: size,
3427
+ xmlns: "http://www.w3.org/2000/svg",
3428
+ children: [
3429
+ /* @__PURE__ */ jsx("path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }),
3430
+ /* @__PURE__ */ jsx("path", { d: "M21 3v5h-5" }),
3431
+ /* @__PURE__ */ jsx("path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }),
3432
+ /* @__PURE__ */ jsx("path", { d: "M8 16H3v5" })
3433
+ ]
3434
+ })
3435
+ }));
3436
+ RefreshCWIcon.displayName = "RefreshCWIcon";
3437
+
3438
+ //#endregion
3439
+ //#region src/components/icons/settings/settings.tsx
3440
+ const SettingsIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3441
+ ref,
3442
+ ...props,
3443
+ children: (controls, size) => /* @__PURE__ */ jsxs(motion.svg, {
3444
+ animate: controls,
3445
+ fill: "none",
3446
+ height: size,
3447
+ stroke: "currentColor",
3448
+ strokeLinecap: "round",
3449
+ strokeLinejoin: "round",
3450
+ strokeWidth: "2",
3451
+ transition: {
3452
+ damping: 10,
3453
+ stiffness: 50,
3454
+ type: "spring"
3455
+ },
3456
+ variants: {
3457
+ animate: { rotate: 180 },
3458
+ normal: { rotate: 0 }
3459
+ },
3460
+ viewBox: "0 0 24 24",
3461
+ width: size,
3462
+ xmlns: "http://www.w3.org/2000/svg",
3463
+ children: [/* @__PURE__ */ jsx("path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }), /* @__PURE__ */ jsx("circle", {
3464
+ cx: "12",
3465
+ cy: "12",
3466
+ r: "3"
3467
+ })]
3468
+ })
3469
+ }));
3470
+ SettingsIcon.displayName = "SettingsIcon";
3471
+
3472
+ //#endregion
3473
+ //#region src/components/icons/shield-check/shield-check.tsx
3474
+ const PATH_VARIANTS$2 = {
3475
+ animate: {
3476
+ opacity: [0, 1],
3477
+ pathLength: [0, 1],
3478
+ scale: [.5, 1],
3479
+ transition: {
3480
+ duration: .4,
3481
+ opacity: { duration: .1 }
3482
+ }
3483
+ },
3484
+ normal: {
3485
+ opacity: 1,
3486
+ pathLength: 1,
3487
+ scale: 1,
3488
+ transition: {
3489
+ duration: .3,
3490
+ opacity: { duration: .1 }
3491
+ }
3492
+ }
3493
+ };
3494
+ const ShieldCheckIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3495
+ ref,
3496
+ ...props,
3497
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3498
+ fill: "none",
3499
+ height: size,
3500
+ stroke: "currentColor",
3501
+ strokeLinecap: "round",
3502
+ strokeLinejoin: "round",
3503
+ strokeWidth: "2",
3504
+ viewBox: "0 0 24 24",
3505
+ width: size,
3506
+ xmlns: "http://www.w3.org/2000/svg",
3507
+ children: [/* @__PURE__ */ jsx("path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" }), /* @__PURE__ */ jsx(motion.path, {
3508
+ animate: controls,
3509
+ d: "m9 12 2 2 4-4",
3510
+ initial: "normal",
3511
+ variants: PATH_VARIANTS$2
3512
+ })]
3513
+ })
3514
+ }));
3515
+ ShieldCheckIcon.displayName = "ShieldCheckIcon";
3516
+
3517
+ //#endregion
3518
+ //#region src/components/icons/sun/sun.tsx
3519
+ const PATH_VARIANTS$1 = {
3520
+ animate: (i) => ({
3521
+ opacity: [0, 1],
3522
+ transition: {
3523
+ delay: i * .1,
3524
+ duration: .3
3525
+ }
3526
+ }),
3527
+ normal: { opacity: 1 }
3528
+ };
3529
+ const SUN_PATHS = [
3530
+ "M12 2v2",
3531
+ "m19.07 4.93-1.41 1.41",
3532
+ "M20 12h2",
3533
+ "m17.66 17.66 1.41 1.41",
3534
+ "M12 20v2",
3535
+ "m6.34 17.66-1.41 1.41",
3536
+ "M2 12h2",
3537
+ "m4.93 4.93 1.41 1.41"
3538
+ ];
3539
+ const SunIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3540
+ ref,
3541
+ ...props,
3542
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3543
+ fill: "none",
3544
+ height: size,
3545
+ stroke: "currentColor",
3546
+ strokeLinecap: "round",
3547
+ strokeLinejoin: "round",
3548
+ strokeWidth: "2",
3549
+ viewBox: "0 0 24 24",
3550
+ width: size,
3551
+ xmlns: "http://www.w3.org/2000/svg",
3552
+ children: [/* @__PURE__ */ jsx("circle", {
3553
+ cx: "12",
3554
+ cy: "12",
3555
+ r: "4"
3556
+ }), SUN_PATHS.map((d, index) => /* @__PURE__ */ jsx(motion.path, {
3557
+ animate: controls,
3558
+ custom: index + 1,
3559
+ d,
3560
+ variants: PATH_VARIANTS$1
3561
+ }, d))]
3562
+ })
3563
+ }));
3564
+ SunIcon.displayName = "SunIcon";
3565
+
3566
+ //#endregion
3567
+ //#region src/components/icons/terminal/terminal.tsx
3568
+ const LINE_VARIANTS = {
3569
+ animate: {
3570
+ opacity: [
3571
+ 1,
3572
+ 0,
3573
+ 1
3574
+ ],
3575
+ transition: {
3576
+ duration: .8,
3577
+ ease: "linear",
3578
+ repeat: Infinity
3579
+ }
3580
+ },
3581
+ normal: { opacity: 1 }
3582
+ };
3583
+ const TerminalIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3584
+ ref,
3585
+ ...props,
3586
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3587
+ fill: "none",
3588
+ height: size,
3589
+ stroke: "currentColor",
3590
+ strokeLinecap: "round",
3591
+ strokeLinejoin: "round",
3592
+ strokeWidth: "2",
3593
+ viewBox: "0 0 24 24",
3594
+ width: size,
3595
+ xmlns: "http://www.w3.org/2000/svg",
3596
+ children: [/* @__PURE__ */ jsx("polyline", { points: "4 17 10 11 4 5" }), /* @__PURE__ */ jsx(motion.line, {
3597
+ animate: controls,
3598
+ initial: "normal",
3599
+ variants: LINE_VARIANTS,
3600
+ x1: "12",
3601
+ x2: "20",
3602
+ y1: "19",
3603
+ y2: "19"
3604
+ })]
3605
+ })
3606
+ }));
3607
+ TerminalIcon.displayName = "TerminalIcon";
3608
+
3609
+ //#endregion
3610
+ //#region src/components/icons/users/users.tsx
3611
+ const PATH_VARIANTS = {
3612
+ animate: {
3613
+ transition: {
3614
+ damping: 13,
3615
+ delay: .1,
3616
+ stiffness: 200,
3617
+ type: "spring"
3618
+ },
3619
+ translateX: [-6, 0]
3620
+ },
3621
+ normal: {
3622
+ transition: {
3623
+ damping: 13,
3624
+ stiffness: 200,
3625
+ type: "spring"
3626
+ },
3627
+ translateX: 0
3628
+ }
3629
+ };
3630
+ const UsersIcon = forwardRef((props, ref) => /* @__PURE__ */ jsx(AnimatedIcon, {
3631
+ ref,
3632
+ ...props,
3633
+ children: (controls, size) => /* @__PURE__ */ jsxs("svg", {
3634
+ fill: "none",
3635
+ height: size,
3636
+ stroke: "currentColor",
3637
+ strokeLinecap: "round",
3638
+ strokeLinejoin: "round",
3639
+ strokeWidth: "2",
3640
+ viewBox: "0 0 24 24",
3641
+ width: size,
3642
+ xmlns: "http://www.w3.org/2000/svg",
3643
+ children: [
3644
+ /* @__PURE__ */ jsx("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
3645
+ /* @__PURE__ */ jsx("circle", {
3646
+ cx: "9",
3647
+ cy: "7",
3648
+ r: "4"
3649
+ }),
3650
+ /* @__PURE__ */ jsx(motion.path, {
3651
+ animate: controls,
3652
+ d: "M22 21v-2a4 4 0 0 0-3-3.87",
3653
+ variants: PATH_VARIANTS
3654
+ }),
3655
+ /* @__PURE__ */ jsx(motion.path, {
3656
+ animate: controls,
3657
+ d: "M16 3.13a4 4 0 0 1 0 7.75",
3658
+ variants: PATH_VARIANTS
3659
+ })
3660
+ ]
3661
+ })
3662
+ }));
3663
+ UsersIcon.displayName = "UsersIcon";
3664
+
3665
+ //#endregion
3666
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AnimatedIcon, ArrowUpRightIcon, AskAIAction, AssetIcon, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartBarIncreasingIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronRightIcon, ClaudeLogo, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CopyButton, CopyCheckIcon, CopyIcon, CursorLogo, DangerZone, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DollarSignIcon, DomainList, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FingerprintIcon, HomeIcon, Icon, IconConfigProvider, InfoBanner, Input, Kbd, KeyIcon, Label, LayoutPanelTopIcon, LinkIcon, MetricCard, MoonIcon, OpenAILogo, PageSkeleton, PanelLeftCloseIcon, PanelLeftOpenIcon, PlusIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ProductPageLayout, Progress, RadioGroup, RadioGroupItem, RefreshCWIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableCard, Separator, SettingsIcon, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShieldCheckIcon, Skeleton, Spinner, StatCardSkeleton, StatusBadge, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TerminalIcon, Textarea, Toaster, ToggleRow, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UnsavedChangesBar, UsersIcon, VSCodeLogo, WebhooksAction, Well, WellReveal, WindsurfLogo, badgeVariants, buttonVariants, cn, useIconConfig, useUnsavedChanges, wellVariants };
3667
+ //# sourceMappingURL=index.esm.js.map