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