@flamingo-stack/openframe-frontend-core 0.0.518-1660.4292.1 → 0.0.518

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 (337) hide show
  1. package/dist/{chunk-3LMOLDFT.cjs → chunk-262OTU4W.cjs} +14 -14
  2. package/dist/{chunk-3LMOLDFT.cjs.map → chunk-262OTU4W.cjs.map} +1 -1
  3. package/dist/{chunk-XURCARSX.cjs → chunk-2AHSX63M.cjs} +5 -5
  4. package/dist/{chunk-XURCARSX.cjs.map → chunk-2AHSX63M.cjs.map} +1 -1
  5. package/dist/{chunk-DPFQWIZJ.cjs → chunk-2EU3TWCW.cjs} +32 -32
  6. package/dist/{chunk-DPFQWIZJ.cjs.map → chunk-2EU3TWCW.cjs.map} +1 -1
  7. package/dist/{chunk-MIFJLUZK.js → chunk-2ZHVOTSA.js} +2 -2
  8. package/dist/{chunk-NJADHL2G.cjs → chunk-3M2MFP2Y.cjs} +30 -2
  9. package/dist/chunk-3M2MFP2Y.cjs.map +1 -0
  10. package/dist/{chunk-UBTOOE55.js → chunk-5OGHZNY5.js} +10 -1
  11. package/dist/chunk-5OGHZNY5.js.map +1 -0
  12. package/dist/{chunk-5KBQECAY.js → chunk-6EAACE7G.js} +2 -2
  13. package/dist/{chunk-IIPBTWQR.cjs → chunk-7INXXQVK.cjs} +10 -1
  14. package/dist/{chunk-IIPBTWQR.cjs.map → chunk-7INXXQVK.cjs.map} +1 -1
  15. package/dist/{chunk-IVTENGMF.js → chunk-7J4DGFHZ.js} +2 -2
  16. package/dist/{chunk-JLO2O5R4.js → chunk-7SPVAAWE.js} +5257 -5143
  17. package/dist/chunk-7SPVAAWE.js.map +1 -0
  18. package/dist/{chunk-FXT2OZ5Q.js → chunk-BBI7GD2Q.js} +3 -3
  19. package/dist/{chunk-MEXZZOBO.js → chunk-CV624KM6.js} +9 -9
  20. package/dist/{chunk-WSRPNLTY.cjs → chunk-FAOL7EI2.cjs} +18 -18
  21. package/dist/{chunk-WSRPNLTY.cjs.map → chunk-FAOL7EI2.cjs.map} +1 -1
  22. package/dist/{chunk-P63LOLTB.js → chunk-FISSR67K.js} +7 -7
  23. package/dist/{chunk-XURRAFIB.js → chunk-GJAHN7LH.js} +404 -376
  24. package/dist/chunk-GJAHN7LH.js.map +1 -0
  25. package/dist/{chunk-FS3YSNSU.js → chunk-GS4HJA2G.js} +2 -2
  26. package/dist/{chunk-HIV2GIFP.cjs → chunk-GYONSC3U.cjs} +3 -3
  27. package/dist/{chunk-HIV2GIFP.cjs.map → chunk-GYONSC3U.cjs.map} +1 -1
  28. package/dist/{chunk-QXUMLLYV.cjs → chunk-IPHH3GKC.cjs} +3 -3
  29. package/dist/{chunk-QXUMLLYV.cjs.map → chunk-IPHH3GKC.cjs.map} +1 -1
  30. package/dist/{chunk-NBJ7L65H.js → chunk-J2JLAW2J.js} +3 -3
  31. package/dist/{chunk-GA7BHFXD.cjs → chunk-J3DRYWFP.cjs} +77 -77
  32. package/dist/{chunk-GA7BHFXD.cjs.map → chunk-J3DRYWFP.cjs.map} +1 -1
  33. package/dist/{chunk-O7L2VJDW.cjs → chunk-LY7IT5QX.cjs} +12 -12
  34. package/dist/{chunk-O7L2VJDW.cjs.map → chunk-LY7IT5QX.cjs.map} +1 -1
  35. package/dist/{chunk-K26W23C2.cjs → chunk-MKPJYEOR.cjs} +6 -6
  36. package/dist/{chunk-K26W23C2.cjs.map → chunk-MKPJYEOR.cjs.map} +1 -1
  37. package/dist/{chunk-ZKVARGSO.js → chunk-MY7663CW.js} +3 -3
  38. package/dist/{chunk-J7ZJ4KM2.cjs → chunk-PJ4WHNJH.cjs} +9 -9
  39. package/dist/{chunk-J7ZJ4KM2.cjs.map → chunk-PJ4WHNJH.cjs.map} +1 -1
  40. package/dist/{chunk-66GH54DV.cjs → chunk-QNJCZGHH.cjs} +40 -40
  41. package/dist/{chunk-66GH54DV.cjs.map → chunk-QNJCZGHH.cjs.map} +1 -1
  42. package/dist/{chunk-WI4XHZ2B.js → chunk-QOUKB6OJ.js} +4 -4
  43. package/dist/{chunk-AI7WIW4E.js → chunk-QPCPYCU2.js} +4 -4
  44. package/dist/{chunk-Z3ADCYC5.js → chunk-RCBRCZUF.js} +2 -2
  45. package/dist/{chunk-RWYNJC2F.cjs → chunk-S3C4RT4O.cjs} +109 -109
  46. package/dist/{chunk-RWYNJC2F.cjs.map → chunk-S3C4RT4O.cjs.map} +1 -1
  47. package/dist/{chunk-OGVIGAMZ.cjs → chunk-SXLEPNY2.cjs} +31 -31
  48. package/dist/{chunk-OGVIGAMZ.cjs.map → chunk-SXLEPNY2.cjs.map} +1 -1
  49. package/dist/{chunk-BXRB4MQI.cjs → chunk-SYQ4KUXW.cjs} +599 -485
  50. package/dist/chunk-SYQ4KUXW.cjs.map +1 -0
  51. package/dist/{chunk-HPPCPGBR.cjs → chunk-U6NODSTY.cjs} +31 -31
  52. package/dist/{chunk-HPPCPGBR.cjs.map → chunk-U6NODSTY.cjs.map} +1 -1
  53. package/dist/{chunk-KP4JRPUE.js → chunk-V3K5H4I2.js} +2 -2
  54. package/dist/{chunk-43ZZYJ3M.js → chunk-V76TAQ3O.js} +5 -5
  55. package/dist/{chunk-XZ6WTSVQ.js → chunk-VCA3HNJ2.js} +6 -6
  56. package/dist/{chunk-7EFJJMNH.cjs → chunk-WBEF37M5.cjs} +12 -12
  57. package/dist/{chunk-7EFJJMNH.cjs.map → chunk-WBEF37M5.cjs.map} +1 -1
  58. package/dist/{chunk-H6K73RK2.cjs → chunk-XDADNUC5.cjs} +40 -40
  59. package/dist/{chunk-H6K73RK2.cjs.map → chunk-XDADNUC5.cjs.map} +1 -1
  60. package/dist/{chunk-56OUH3UF.js → chunk-YHAYMOXR.js} +3 -3
  61. package/dist/components/about-icon.d.ts +9 -0
  62. package/dist/components/about-icon.d.ts.map +1 -0
  63. package/dist/components/aspect-ratio.d.ts +4 -0
  64. package/dist/components/aspect-ratio.d.ts.map +1 -0
  65. package/dist/components/avatar.d.ts +7 -0
  66. package/dist/components/avatar.d.ts.map +1 -0
  67. package/dist/components/calendar.cjs +3 -3
  68. package/dist/components/calendar.js +2 -2
  69. package/dist/components/case-studies/index.cjs +15 -15
  70. package/dist/components/case-studies/index.js +5 -5
  71. package/dist/components/chart.d.ts +72 -0
  72. package/dist/components/chart.d.ts.map +1 -0
  73. package/dist/components/chat/index.cjs +5 -5
  74. package/dist/components/chat/index.js +4 -4
  75. package/dist/components/check-circle-icon.d.ts +7 -0
  76. package/dist/components/check-circle-icon.d.ts.map +1 -0
  77. package/dist/components/checkbox.d.ts +5 -0
  78. package/dist/components/checkbox.d.ts.map +1 -0
  79. package/dist/components/claude-icon.d.ts +6 -0
  80. package/dist/components/claude-icon.d.ts.map +1 -0
  81. package/dist/components/coins-icon.d.ts +9 -0
  82. package/dist/components/coins-icon.d.ts.map +1 -0
  83. package/dist/components/command.d.ts +81 -0
  84. package/dist/components/command.d.ts.map +1 -0
  85. package/dist/components/community-hub-icon.d.ts +9 -0
  86. package/dist/components/community-hub-icon.d.ts.map +1 -0
  87. package/dist/components/community-icon.d.ts +9 -0
  88. package/dist/components/community-icon.d.ts.map +1 -0
  89. package/dist/components/compare-icon.d.ts +9 -0
  90. package/dist/components/compare-icon.d.ts.map +1 -0
  91. package/dist/components/contact/index.cjs +6 -6
  92. package/dist/components/contact/index.js +5 -5
  93. package/dist/components/context-menu.d.ts +28 -0
  94. package/dist/components/context-menu.d.ts.map +1 -0
  95. package/dist/components/custom-external-link-icon.d.ts +9 -0
  96. package/dist/components/custom-external-link-icon.d.ts.map +1 -0
  97. package/dist/components/custom-fork-icon.d.ts +9 -0
  98. package/dist/components/custom-fork-icon.d.ts.map +1 -0
  99. package/dist/components/custom-icons.d.ts +8 -0
  100. package/dist/components/custom-icons.d.ts.map +1 -0
  101. package/dist/components/custom-license-icon.d.ts +9 -0
  102. package/dist/components/custom-license-icon.d.ts.map +1 -0
  103. package/dist/components/custom-star-icon.d.ts +9 -0
  104. package/dist/components/custom-star-icon.d.ts.map +1 -0
  105. package/dist/components/custom-time-icon.d.ts +9 -0
  106. package/dist/components/custom-time-icon.d.ts.map +1 -0
  107. package/dist/components/docs/index.cjs +8 -8
  108. package/dist/components/docs/index.js +7 -7
  109. package/dist/components/donut-icon.d.ts +4 -0
  110. package/dist/components/donut-icon.d.ts.map +1 -0
  111. package/dist/components/edit-profile-icon.d.ts +7 -0
  112. package/dist/components/edit-profile-icon.d.ts.map +1 -0
  113. package/dist/components/elestio-logo.d.ts +9 -0
  114. package/dist/components/elestio-logo.d.ts.map +1 -0
  115. package/dist/components/embeds/index.cjs +6 -6
  116. package/dist/components/embeds/index.js +5 -5
  117. package/dist/components/empty-vendor-icon.d.ts +7 -0
  118. package/dist/components/empty-vendor-icon.d.ts.map +1 -0
  119. package/dist/components/faq/index.cjs +7 -7
  120. package/dist/components/faq/index.js +6 -6
  121. package/dist/components/features/index.cjs +5 -5
  122. package/dist/components/features/index.js +4 -4
  123. package/dist/components/features/provider-button.d.ts +1 -1
  124. package/dist/components/features/provider-button.d.ts.map +1 -1
  125. package/dist/components/flamingo-logo.d.ts +9 -0
  126. package/dist/components/flamingo-logo.d.ts.map +1 -0
  127. package/dist/components/form.d.ts +26 -0
  128. package/dist/components/form.d.ts.map +1 -0
  129. package/dist/components/github-icon.d.ts +9 -0
  130. package/dist/components/github-icon.d.ts.map +1 -0
  131. package/dist/components/google-logo.d.ts +5 -0
  132. package/dist/components/google-logo.d.ts.map +1 -0
  133. package/dist/components/hamburger-icon.d.ts +9 -0
  134. package/dist/components/hamburger-icon.d.ts.map +1 -0
  135. package/dist/components/help-center-pages/index.cjs +26 -26
  136. package/dist/components/help-center-pages/index.js +17 -17
  137. package/dist/components/hubspot-icon.d.ts +7 -0
  138. package/dist/components/hubspot-icon.d.ts.map +1 -0
  139. package/dist/components/icon-utils.d.ts +7 -0
  140. package/dist/components/icon-utils.d.ts.map +1 -0
  141. package/dist/components/icons/apple-icon.d.ts +10 -0
  142. package/dist/components/icons/apple-icon.d.ts.map +1 -0
  143. package/dist/components/icons/index.cjs +4 -2
  144. package/dist/components/icons/index.cjs.map +1 -1
  145. package/dist/components/icons/index.d.ts +1 -0
  146. package/dist/components/icons/index.d.ts.map +1 -1
  147. package/dist/components/icons/index.js +3 -1
  148. package/dist/components/index.cjs +239 -285
  149. package/dist/components/index.cjs.map +1 -1
  150. package/dist/components/index.js +373 -419
  151. package/dist/components/index.js.map +1 -1
  152. package/dist/components/interactive-wrapper.d.ts +84 -0
  153. package/dist/components/interactive-wrapper.d.ts.map +1 -0
  154. package/dist/components/join-waitlist-button-stub.d.ts +10 -0
  155. package/dist/components/join-waitlist-button-stub.d.ts.map +1 -0
  156. package/dist/components/made-with-love.d.ts.map +1 -1
  157. package/dist/components/meeting-scheduler/index.cjs +48 -48
  158. package/dist/components/meeting-scheduler/index.js +7 -7
  159. package/dist/components/menu-icon.d.ts +9 -0
  160. package/dist/components/menu-icon.d.ts.map +1 -0
  161. package/dist/components/minus-circle-icon.d.ts +7 -0
  162. package/dist/components/minus-circle-icon.d.ts.map +1 -0
  163. package/dist/components/moon-icon.d.ts +9 -0
  164. package/dist/components/moon-icon.d.ts.map +1 -0
  165. package/dist/components/ms-icon.d.ts +9 -0
  166. package/dist/components/ms-icon.d.ts.map +1 -0
  167. package/dist/components/navigation/index.cjs +5 -5
  168. package/dist/components/navigation/index.js +4 -4
  169. package/dist/components/onboarding-guides/index.cjs +9 -9
  170. package/dist/components/onboarding-guides/index.js +8 -8
  171. package/dist/components/open-source-features.d.ts +1 -1
  172. package/dist/components/open-source-features.d.ts.map +1 -1
  173. package/dist/components/open-source-icon.d.ts +9 -0
  174. package/dist/components/open-source-icon.d.ts.map +1 -0
  175. package/dist/components/openframe-logo.d.ts +7 -0
  176. package/dist/components/openframe-logo.d.ts.map +1 -0
  177. package/dist/components/openmsp-logo.d.ts +11 -0
  178. package/dist/components/openmsp-logo.d.ts.map +1 -0
  179. package/dist/components/plus-circle-icon.d.ts +9 -0
  180. package/dist/components/plus-circle-icon.d.ts.map +1 -0
  181. package/dist/components/progress.d.ts +7 -0
  182. package/dist/components/progress.d.ts.map +1 -0
  183. package/dist/components/provider-button.d.ts +10 -0
  184. package/dist/components/provider-button.d.ts.map +1 -0
  185. package/dist/components/reddit-icon.d.ts +10 -0
  186. package/dist/components/reddit-icon.d.ts.map +1 -0
  187. package/dist/components/related-content/index.cjs +7 -7
  188. package/dist/components/related-content/index.js +6 -6
  189. package/dist/components/resizable.d.ts +24 -0
  190. package/dist/components/resizable.d.ts.map +1 -0
  191. package/dist/components/scroll-area.d.ts +13 -0
  192. package/dist/components/scroll-area.d.ts.map +1 -0
  193. package/dist/components/send-icon.d.ts +7 -0
  194. package/dist/components/send-icon.d.ts.map +1 -0
  195. package/dist/components/separator.d.ts +5 -0
  196. package/dist/components/separator.d.ts.map +1 -0
  197. package/dist/components/skeleton.d.ts +4 -0
  198. package/dist/components/skeleton.d.ts.map +1 -0
  199. package/dist/components/slack-icon.d.ts +9 -0
  200. package/dist/components/slack-icon.d.ts.map +1 -0
  201. package/dist/components/slider.d.ts +5 -0
  202. package/dist/components/slider.d.ts.map +1 -0
  203. package/dist/components/smooth-accordion.d.ts +12 -0
  204. package/dist/components/smooth-accordion.d.ts.map +1 -0
  205. package/dist/components/steps.d.ts +17 -0
  206. package/dist/components/steps.d.ts.map +1 -0
  207. package/dist/components/sun-icon.d.ts +9 -0
  208. package/dist/components/sun-icon.d.ts.map +1 -0
  209. package/dist/components/switch.d.ts +5 -0
  210. package/dist/components/switch.d.ts.map +1 -0
  211. package/dist/components/textarea.d.ts +6 -0
  212. package/dist/components/textarea.d.ts.map +1 -0
  213. package/dist/components/tickets/index.cjs +9 -9
  214. package/dist/components/tickets/index.js +8 -8
  215. package/dist/components/ui/button/button.d.ts +1 -1
  216. package/dist/components/ui/button/button.d.ts.map +1 -1
  217. package/dist/components/ui/file-manager/index.cjs +15 -15
  218. package/dist/components/ui/file-manager/index.js +1 -1
  219. package/dist/components/ui/index.cjs +5 -5
  220. package/dist/components/ui/index.js +4 -4
  221. package/dist/components/ui/pagination-stub.d.ts +6 -0
  222. package/dist/components/ui/pagination-stub.d.ts.map +1 -0
  223. package/dist/components/ui/responsive-icons-block-stub.d.ts +7 -0
  224. package/dist/components/ui/responsive-icons-block-stub.d.ts.map +1 -0
  225. package/dist/components/user-icon.d.ts +9 -0
  226. package/dist/components/user-icon.d.ts.map +1 -0
  227. package/dist/components/vendor-directory-icon.d.ts +9 -0
  228. package/dist/components/vendor-directory-icon.d.ts.map +1 -0
  229. package/dist/components/vendors-icon.d.ts +9 -0
  230. package/dist/components/vendors-icon.d.ts.map +1 -0
  231. package/dist/components/why-it-matters.d.ts +1 -1
  232. package/dist/components/why-it-matters.d.ts.map +1 -1
  233. package/dist/components/x-icon.d.ts +9 -0
  234. package/dist/components/x-icon.d.ts.map +1 -0
  235. package/dist/components/x-logo.d.ts +7 -0
  236. package/dist/components/x-logo.d.ts.map +1 -0
  237. package/dist/hooks/index.cjs +3 -3
  238. package/dist/hooks/index.js +2 -2
  239. package/dist/index.cjs +7 -5
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.js +6 -4
  242. package/package.json +1 -1
  243. package/src/components/about-icon.tsx +29 -0
  244. package/src/components/aspect-ratio.tsx +7 -0
  245. package/src/components/avatar.tsx +40 -0
  246. package/src/components/chart.tsx +364 -0
  247. package/src/components/chat/chat-container.tsx +1 -1
  248. package/src/components/check-circle-icon.tsx +29 -0
  249. package/src/components/checkbox.tsx +30 -0
  250. package/src/components/claude-icon.tsx +24 -0
  251. package/src/components/coins-icon.tsx +29 -0
  252. package/src/components/command.tsx +153 -0
  253. package/src/components/community-hub-icon.tsx +27 -0
  254. package/src/components/community-icon.tsx +27 -0
  255. package/src/components/compare-icon.tsx +27 -0
  256. package/src/components/context-menu.tsx +200 -0
  257. package/src/components/custom-external-link-icon.tsx +33 -0
  258. package/src/components/custom-fork-icon.tsx +33 -0
  259. package/src/components/custom-icons.tsx +47 -0
  260. package/src/components/custom-license-icon.tsx +33 -0
  261. package/src/components/custom-star-icon.tsx +29 -0
  262. package/src/components/custom-time-icon.tsx +33 -0
  263. package/src/components/donut-icon.tsx +21 -0
  264. package/src/components/edit-profile-icon.tsx +23 -0
  265. package/src/components/elestio-logo.tsx +67 -0
  266. package/src/components/empty-vendor-icon.tsx +44 -0
  267. package/src/components/features/auth-providers-list.tsx +1 -1
  268. package/src/components/features/platform-badge.tsx +2 -2
  269. package/src/components/features/provider-button.tsx +6 -2
  270. package/src/components/flamingo-logo.tsx +27 -0
  271. package/src/components/form.tsx +138 -0
  272. package/src/components/github-icon.tsx +26 -0
  273. package/src/components/google-logo.tsx +32 -0
  274. package/src/components/hamburger-icon.tsx +29 -0
  275. package/src/components/hubspot-icon.tsx +20 -0
  276. package/src/components/icon-utils.tsx +36 -0
  277. package/src/components/icons/apple-icon.tsx +30 -0
  278. package/src/components/icons/index.ts +1 -0
  279. package/src/components/interactive-wrapper.tsx +336 -0
  280. package/src/components/join-waitlist-button-stub.tsx +30 -0
  281. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  282. package/src/components/made-with-love.tsx +3 -4
  283. package/src/components/menu-icon.tsx +22 -0
  284. package/src/components/minus-circle-icon.tsx +28 -0
  285. package/src/components/moon-icon.tsx +26 -0
  286. package/src/components/ms-icon.tsx +31 -0
  287. package/src/components/open-source-features.tsx +1 -1
  288. package/src/components/open-source-icon.tsx +27 -0
  289. package/src/components/openframe-logo.tsx +46 -0
  290. package/src/components/openmsp-logo.tsx +36 -0
  291. package/src/components/plus-circle-icon.tsx +30 -0
  292. package/src/components/progress.tsx +27 -0
  293. package/src/components/provider-button.tsx +40 -0
  294. package/src/components/reddit-icon.tsx +50 -0
  295. package/src/components/resizable.tsx +45 -0
  296. package/src/components/scroll-area.tsx +49 -0
  297. package/src/components/send-icon.tsx +26 -0
  298. package/src/components/separator.tsx +22 -0
  299. package/src/components/skeleton.tsx +8 -0
  300. package/src/components/slack-icon.tsx +43 -0
  301. package/src/components/slider.tsx +28 -0
  302. package/src/components/smooth-accordion.tsx +124 -0
  303. package/src/components/steps.tsx +98 -0
  304. package/src/components/sun-icon.tsx +27 -0
  305. package/src/components/switch.tsx +29 -0
  306. package/src/components/textarea.tsx +22 -0
  307. package/src/components/ui/button/button.tsx +9 -0
  308. package/src/components/ui/pagination-stub.tsx +38 -0
  309. package/src/components/ui/responsive-icons-block-stub.tsx +14 -0
  310. package/src/components/user-icon.tsx +33 -0
  311. package/src/components/vendor-directory-icon.tsx +27 -0
  312. package/src/components/vendor-tag.tsx +1 -1
  313. package/src/components/vendors-icon.tsx +27 -0
  314. package/src/components/why-it-matters.tsx +1 -1
  315. package/src/components/x-icon.tsx +29 -0
  316. package/src/components/x-logo.tsx +22 -0
  317. package/dist/chunk-BXRB4MQI.cjs.map +0 -1
  318. package/dist/chunk-JLO2O5R4.js.map +0 -1
  319. package/dist/chunk-NJADHL2G.cjs.map +0 -1
  320. package/dist/chunk-UBTOOE55.js.map +0 -1
  321. package/dist/chunk-XURRAFIB.js.map +0 -1
  322. /package/dist/{chunk-MIFJLUZK.js.map → chunk-2ZHVOTSA.js.map} +0 -0
  323. /package/dist/{chunk-5KBQECAY.js.map → chunk-6EAACE7G.js.map} +0 -0
  324. /package/dist/{chunk-IVTENGMF.js.map → chunk-7J4DGFHZ.js.map} +0 -0
  325. /package/dist/{chunk-FXT2OZ5Q.js.map → chunk-BBI7GD2Q.js.map} +0 -0
  326. /package/dist/{chunk-MEXZZOBO.js.map → chunk-CV624KM6.js.map} +0 -0
  327. /package/dist/{chunk-P63LOLTB.js.map → chunk-FISSR67K.js.map} +0 -0
  328. /package/dist/{chunk-FS3YSNSU.js.map → chunk-GS4HJA2G.js.map} +0 -0
  329. /package/dist/{chunk-NBJ7L65H.js.map → chunk-J2JLAW2J.js.map} +0 -0
  330. /package/dist/{chunk-ZKVARGSO.js.map → chunk-MY7663CW.js.map} +0 -0
  331. /package/dist/{chunk-WI4XHZ2B.js.map → chunk-QOUKB6OJ.js.map} +0 -0
  332. /package/dist/{chunk-AI7WIW4E.js.map → chunk-QPCPYCU2.js.map} +0 -0
  333. /package/dist/{chunk-Z3ADCYC5.js.map → chunk-RCBRCZUF.js.map} +0 -0
  334. /package/dist/{chunk-KP4JRPUE.js.map → chunk-V3K5H4I2.js.map} +0 -0
  335. /package/dist/{chunk-43ZZYJ3M.js.map → chunk-V76TAQ3O.js.map} +0 -0
  336. /package/dist/{chunk-XZ6WTSVQ.js.map → chunk-VCA3HNJ2.js.map} +0 -0
  337. /package/dist/{chunk-56OUH3UF.js.map → chunk-YHAYMOXR.js.map} +0 -0
@@ -0,0 +1,27 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as ProgressPrimitive from "@radix-ui/react-progress"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ const Progress = React.forwardRef<
9
+ React.ElementRef<typeof ProgressPrimitive.Root>,
10
+ React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> & {
11
+ indicatorClassName?: string
12
+ }
13
+ >(({ className, value, indicatorClassName, ...props }, ref) => (
14
+ <ProgressPrimitive.Root
15
+ ref={ref}
16
+ className={cn("relative h-2 w-full overflow-hidden rounded-full bg-secondary", className)}
17
+ {...props}
18
+ >
19
+ <ProgressPrimitive.Indicator
20
+ className={cn("h-full w-full flex-1 bg-primary transition-all", indicatorClassName)}
21
+ style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
22
+ />
23
+ </ProgressPrimitive.Root>
24
+ ))
25
+ Progress.displayName = ProgressPrimitive.Root.displayName
26
+
27
+ export { Progress }
@@ -0,0 +1,40 @@
1
+ import * as React from "react"
2
+ import { Button } from "./ui/button"
3
+ import { cn } from "../utils/cn"
4
+
5
+ interface ProviderButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6
+ provider: 'google' | 'microsoft' | 'slack' | 'github' | 'apple';
7
+ variant?: 'accent' | 'outline';
8
+ size?: 'default' | 'small-legacy';
9
+ loading?: boolean;
10
+ }
11
+
12
+ const ProviderButton = React.forwardRef<HTMLButtonElement, ProviderButtonProps>(
13
+ ({ className, provider, variant = 'outline', size = 'default', children, ...props }, ref) => {
14
+ const providerNames = {
15
+ google: 'Google',
16
+ microsoft: 'Microsoft',
17
+ slack: 'Slack',
18
+ github: 'GitHub',
19
+ apple: 'Apple'
20
+ };
21
+
22
+ return (
23
+ <Button
24
+ className={cn(
25
+ "w-full",
26
+ className
27
+ )}
28
+ variant={variant}
29
+ size={size}
30
+ ref={ref}
31
+ {...props}
32
+ >
33
+ {children || `Sign in with ${providerNames[provider]}`}
34
+ </Button>
35
+ )
36
+ }
37
+ )
38
+ ProviderButton.displayName = "ProviderButton"
39
+
40
+ export { ProviderButton }
@@ -0,0 +1,50 @@
1
+ import React from 'react'
2
+
3
+ interface RedditIconProps {
4
+ width?: number | string
5
+ height?: number | string
6
+ className?: string
7
+ variant?: 'original' | 'grayscale' | 'white'
8
+ }
9
+
10
+ export function RedditIcon({
11
+ width = 24,
12
+ height = 24,
13
+ className = "text-current",
14
+ variant = 'grayscale'
15
+ }: RedditIconProps) {
16
+ // Color scheme based on variant
17
+ let colors;
18
+ switch (variant) {
19
+ case 'original':
20
+ colors = {
21
+ background: '#FF4500' // White features
22
+ };
23
+ break;
24
+ case 'white':
25
+ colors = {
26
+ background: '#FFFFFF' // Black features
27
+ };
28
+ break;
29
+ default: // grayscale
30
+ colors = {
31
+ background: '#888888' // Light gray features
32
+ };
33
+ break;
34
+ }
35
+
36
+ return (
37
+ <svg
38
+ width={width}
39
+ height={height}
40
+ viewBox="0 0 256 256"
41
+ xmlns="http://www.w3.org/2000/svg"
42
+ className={className}
43
+ >
44
+ <path
45
+ fill={colors.background}
46
+ d="M248,104a31.99228,31.99228,0,0,0-52.9375-24.19043c-16.75439-8.90112-36.76172-14.279-57.666-15.52539l5.19581-31.17578,21.83105,3.3584a24.00409,24.00409,0,1,0,2.43506-15.814l-29.64209-4.56006a7.996,7.996,0,0,0-9.10742,6.5918l-6.91309,41.478c-21.83887.94165-42.813,6.37891-60.2583,15.647a31.99266,31.99266,0,0,0-42.59229,47.74024A59.04669,59.04669,0,0,0,16,144c0,21.93457,12.042,42.35156,33.90723,57.48926C70.875,216.00588,98.60938,224,128,224s57.125-7.99414,78.09277-22.51074C227.958,186.35158,240,165.93459,240,144a59.01726,59.01726,0,0,0-2.3457-16.44922A32.17163,32.17163,0,0,0,248,104ZM72,132a16,16,0,1,1,16,16A16.01833,16.01833,0,0,1,72,132Zm92.69629,51.10938a80.122,80.122,0,0,1-73.39209,0,8,8,0,0,1,7.34033-14.2168,64.09433,64.09433,0,0,0,58.71094,0,8.00008,8.00008,0,0,1,7.34082,14.2168ZM168,148a16,16,0,1,1,16-16A16.01833,16.01833,0,0,1,168,148Z"
47
+ />
48
+ </svg>
49
+ )
50
+ }
@@ -0,0 +1,45 @@
1
+ "use client"
2
+
3
+ import { GripVertical } from "lucide-react"
4
+ import * as ResizablePrimitive from "react-resizable-panels"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ const ResizablePanelGroup = ({
9
+ className,
10
+ ...props
11
+ }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (
12
+ <ResizablePrimitive.PanelGroup
13
+ className={cn(
14
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
15
+ className
16
+ )}
17
+ {...props}
18
+ />
19
+ )
20
+
21
+ const ResizablePanel = ResizablePrimitive.Panel
22
+
23
+ const ResizableHandle = ({
24
+ withHandle,
25
+ className,
26
+ ...props
27
+ }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
28
+ withHandle?: boolean
29
+ }) => (
30
+ <ResizablePrimitive.PanelResizeHandle
31
+ className={cn(
32
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
33
+ className
34
+ )}
35
+ {...props}
36
+ >
37
+ {withHandle && (
38
+ <div className="z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border">
39
+ <GripVertical className="h-2.5 w-2.5" />
40
+ </div>
41
+ )}
42
+ </ResizablePrimitive.PanelResizeHandle>
43
+ )
44
+
45
+ export { ResizablePanelGroup, ResizablePanel, ResizableHandle }
@@ -0,0 +1,49 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ interface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {
9
+ /**
10
+ * When set to true, the custom Radix scrollbars will be rendered. Defaults to `false` so that
11
+ * scrollbars remain hidden in accordance with the global requirement to remove scrollbars.
12
+ */
13
+ showScrollbar?: boolean
14
+ }
15
+
16
+ const ScrollArea = React.forwardRef<
17
+ React.ElementRef<typeof ScrollAreaPrimitive.Root>,
18
+ ScrollAreaProps
19
+ >(({ className, children, showScrollbar = false, ...props }, ref) => (
20
+ <ScrollAreaPrimitive.Root ref={ref} className={cn("relative overflow-hidden", className)} {...props}>
21
+ <ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit]">{children}</ScrollAreaPrimitive.Viewport>
22
+ {showScrollbar && <ScrollBar />}
23
+ {/* The corner element is only useful when scrollbars are visible */}
24
+ {showScrollbar && <ScrollAreaPrimitive.Corner />}
25
+ </ScrollAreaPrimitive.Root>
26
+ ))
27
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName
28
+
29
+ const ScrollBar = React.forwardRef<
30
+ React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,
31
+ React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>
32
+ >(({ className, orientation = "vertical", ...props }, ref) => (
33
+ <ScrollAreaPrimitive.ScrollAreaScrollbar
34
+ ref={ref}
35
+ orientation={orientation}
36
+ className={cn(
37
+ "flex touch-none select-none transition-colors",
38
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
39
+ orientation === "horizontal" && "h-2.5 border-t border-t-transparent p-[1px]",
40
+ className,
41
+ )}
42
+ {...props}
43
+ >
44
+ <ScrollAreaPrimitive.ScrollAreaThumb className="relative flex-1 rounded-full bg-border" />
45
+ </ScrollAreaPrimitive.ScrollAreaScrollbar>
46
+ ))
47
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName
48
+
49
+ export { ScrollArea, ScrollBar }
@@ -0,0 +1,26 @@
1
+ interface SendIconProps {
2
+ className?: string;
3
+ fill?: string;
4
+ }
5
+
6
+ export function SendIcon({ className = "w-6 h-6", fill = "#1A1A1A" }: SendIconProps) {
7
+ return (
8
+ <svg
9
+ width="24"
10
+ height="24"
11
+ viewBox="0 0 24 24"
12
+ fill="none"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ className={className}
15
+ >
16
+ <path
17
+ d="M11.1554 14.4487C10.7164 14.888 10.0042 14.8891 9.56462 14.4501C9.12509 14.0111 9.12563 13.2989 9.56462 12.8593L11.1554 14.4487ZM15.1164 7.29875C15.5555 6.85958 16.2677 6.85988 16.7072 7.29875C17.1463 7.73779 17.1474 8.45008 16.7087 8.88957L11.1554 14.4487L9.56462 12.8593L15.1164 7.29875Z"
18
+ fill={fill}
19
+ />
20
+ <path
21
+ d="M19.0798 1.00652C21.4022 0.313771 23.5637 2.39031 23.0495 4.69646L22.9909 4.92058L18.2463 20.8742C17.4793 23.4519 14.0415 23.9417 12.5876 21.6769L10.7946 18.8849L7.54411 19.2116C6.28619 19.3373 5.19768 18.3477 5.19743 17.0861V13.3039L2.30583 11.4216C0.0601315 9.95982 0.552303 6.53369 3.12175 5.76726L19.0798 1.00652ZM7.44743 16.9587L10.9499 16.6086L11.1769 16.6012C11.6288 16.6191 12.0528 16.8255 12.3473 17.1681L12.4836 17.3498L14.4816 20.4611C14.8944 21.1041 15.8696 20.9675 16.0885 20.2326L20.8346 4.27898L20.8639 4.15154C20.9597 3.51747 20.3581 2.97326 19.7228 3.16277L3.76482 7.92351C3.03514 8.14117 2.8919 9.11753 3.53191 9.53484L6.70622 11.6017L6.87175 11.7233C7.23484 12.031 7.44743 12.4862 7.44743 12.9684V16.9587Z"
22
+ fill={fill}
23
+ />
24
+ </svg>
25
+ );
26
+ }
@@ -0,0 +1,22 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as SeparatorPrimitive from "@radix-ui/react-separator"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ const Separator = React.forwardRef<
9
+ React.ElementRef<typeof SeparatorPrimitive.Root>,
10
+ React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>
11
+ >(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => (
12
+ <SeparatorPrimitive.Root
13
+ ref={ref}
14
+ decorative={decorative}
15
+ orientation={orientation}
16
+ className={cn("shrink-0 bg-border", orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]", className)}
17
+ {...props}
18
+ />
19
+ ))
20
+ Separator.displayName = SeparatorPrimitive.Root.displayName
21
+
22
+ export { Separator }
@@ -0,0 +1,8 @@
1
+ import type React from "react"
2
+ import { cn } from "../utils/cn"
3
+
4
+ function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
5
+ return <div className={cn("animate-pulse rounded-md bg-muted/60", className)} {...props} />
6
+ }
7
+
8
+ export { Skeleton }
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+
3
+ interface SlackIconProps {
4
+ width?: number | string
5
+ height?: number | string
6
+ className?: string
7
+ }
8
+
9
+ export function SlackIcon({
10
+ width = 24,
11
+ height = 24,
12
+ className = "text-current"
13
+ }: SlackIconProps) {
14
+ return (
15
+ <svg
16
+ width={width}
17
+ height={height}
18
+ viewBox="0 0 24 24"
19
+ fill="none"
20
+ xmlns="http://www.w3.org/2000/svg"
21
+ className={className}
22
+ >
23
+ <g>
24
+ <path
25
+ d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z"
26
+ fill="#E01E5A"
27
+ />
28
+ <path
29
+ d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z"
30
+ fill="#36C5F0"
31
+ />
32
+ <path
33
+ d="M18.956 8.834a2.528 2.528 0 0 1 2.521-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.523 2.521h-2.521V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312z"
34
+ fill="#2EB67D"
35
+ />
36
+ <path
37
+ d="M15.165 18.956a2.528 2.528 0 0 1 2.523 2.521A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.523v-2.521h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.528 2.528 0 0 1 2.52-2.521h6.313A2.528 2.528 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"
38
+ fill="#ECB22E"
39
+ />
40
+ </g>
41
+ </svg>
42
+ )
43
+ }
@@ -0,0 +1,28 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as SliderPrimitive from "@radix-ui/react-slider"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ const Slider = React.forwardRef<
9
+ React.ElementRef<typeof SliderPrimitive.Root>,
10
+ React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>
11
+ >(({ className, ...props }, ref) => (
12
+ <SliderPrimitive.Root
13
+ ref={ref}
14
+ className={cn(
15
+ "relative flex w-full touch-none select-none items-center",
16
+ className
17
+ )}
18
+ {...props}
19
+ >
20
+ <SliderPrimitive.Track className="relative h-2 w-full grow overflow-hidden rounded-full bg-secondary">
21
+ <SliderPrimitive.Range className="absolute h-full bg-primary" />
22
+ </SliderPrimitive.Track>
23
+ <SliderPrimitive.Thumb className="block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" />
24
+ </SliderPrimitive.Root>
25
+ ))
26
+ Slider.displayName = SliderPrimitive.Root.displayName
27
+
28
+ export { Slider }
@@ -0,0 +1,124 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ import { ChevronButton } from './ui/chevron-button';
4
+ import { cn } from "../utils/cn";
5
+
6
+ // --- SmoothAccordion -----------------------------------------------------------------
7
+ // Wrapper that re-exports AccordionPrimitive.Root for convenience
8
+ export const SmoothAccordion = AccordionPrimitive.Root;
9
+
10
+ // --- SmoothAccordionItem --------------------------------------------------------------
11
+ export const SmoothAccordionItem = React.forwardRef<
12
+ React.ElementRef<typeof AccordionPrimitive.Item>,
13
+ React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
14
+ >(({ className, ...props }, ref) => (
15
+ <AccordionPrimitive.Item
16
+ ref={ref}
17
+ className={cn('border-0', className)}
18
+ {...props}
19
+ />
20
+ ));
21
+ SmoothAccordionItem.displayName = 'SmoothAccordionItem';
22
+
23
+ // --- SmoothAccordionTrigger -----------------------------------------------------------
24
+ interface SmoothAccordionTriggerProps
25
+ extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {
26
+ label: React.ReactNode;
27
+ className?: string;
28
+ }
29
+
30
+ export const SmoothAccordionTrigger = React.forwardRef<
31
+ HTMLButtonElement,
32
+ SmoothAccordionTriggerProps
33
+ >(({ label, className, ...props }, ref) => (
34
+ <AccordionPrimitive.Header className="flex">
35
+ <AccordionPrimitive.Trigger
36
+ ref={ref}
37
+ className={cn(
38
+ 'group flex w-full items-center justify-between px-6 md:px-8 py-6 text-left hover:no-underline focus:outline-none transition-colors duration-200 ease-in-out',
39
+ className,
40
+ )}
41
+ {...props}
42
+ >
43
+ <span className="text-h3 text-ods-text-primary">
44
+ {label}
45
+ </span>
46
+ <ChevronButton
47
+ size="md"
48
+ isExpanded={false}
49
+ backgroundColor="transparent"
50
+ borderColor="var(--color-border-default)"
51
+ className="transition-transform duration-300 ease-in-out group-data-[state=open]:rotate-180"
52
+ />
53
+ </AccordionPrimitive.Trigger>
54
+ </AccordionPrimitive.Header>
55
+ ));
56
+ SmoothAccordionTrigger.displayName = 'SmoothAccordionTrigger';
57
+
58
+ // --- SmoothAccordionContent -----------------------------------------------------------
59
+ // Uses dynamic height measurement with ResizeObserver for ultra-smooth animation.
60
+ export const SmoothAccordionContent = React.forwardRef<
61
+ HTMLDivElement,
62
+ React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
63
+ >(({ className, children, ...props }, ref) => {
64
+ const [maxHeight, setMaxHeight] = React.useState<number>(0);
65
+ const contentInnerRef = React.useRef<HTMLDivElement | null>(null);
66
+
67
+ const composedRef = (node: HTMLDivElement) => {
68
+ // Allow Radix to receive ref as well
69
+ if (typeof ref === 'function') ref(node);
70
+ else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;
71
+ contentInnerRef.current = node;
72
+ };
73
+
74
+ const updateHeight = React.useCallback(() => {
75
+ if (contentInnerRef.current) {
76
+ setMaxHeight(contentInnerRef.current.scrollHeight);
77
+ }
78
+ }, []);
79
+
80
+ React.useEffect(() => {
81
+ updateHeight();
82
+ }, [updateHeight, children]);
83
+
84
+ // ResizeObserver for dynamic content
85
+ React.useEffect(() => {
86
+ if (!contentInnerRef.current) return;
87
+ const ro = new ResizeObserver(updateHeight);
88
+ ro.observe(contentInnerRef.current);
89
+ return () => ro.disconnect();
90
+ }, [updateHeight]);
91
+
92
+ const isOpen = (props as any)["data-state"] === "open";
93
+
94
+ return (
95
+ <AccordionPrimitive.Content
96
+ ref={composedRef}
97
+ // Radix provides data-state attribute for open/closed
98
+ className={cn('overflow-hidden', className)}
99
+ style={{
100
+ transition: 'max-height 0.35s ease-in-out, opacity 0.35s ease-in-out',
101
+ maxHeight: isOpen ? `${maxHeight}px` : '0px',
102
+ opacity: isOpen ? 1 : 0,
103
+ }}
104
+ {...props}
105
+ onTransitionEnd={() => {
106
+ // After closing, reset maxHeight to avoid lingering space
107
+ if (!isOpen) {
108
+ setMaxHeight(0);
109
+ }
110
+ }}
111
+ >
112
+ <div
113
+ // inner wrapper used for measurement
114
+ style={{
115
+ opacity: 1,
116
+ paddingBottom: '0.75rem', // keep default styling to match existing
117
+ }}
118
+ >
119
+ {children}
120
+ </div>
121
+ </AccordionPrimitive.Content>
122
+ );
123
+ });
124
+ SmoothAccordionContent.displayName = 'SmoothAccordionContent';
@@ -0,0 +1,98 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../utils/cn"
5
+
6
+ interface StepsProps extends React.HTMLAttributes<HTMLDivElement> {
7
+ currentStep: number
8
+ }
9
+
10
+ const StepsComponent = React.forwardRef<HTMLDivElement, StepsProps>(
11
+ ({ currentStep, className, children, ...props }, ref) => {
12
+ // Count the number of step children
13
+ const steps = React.Children.toArray(children).filter((child) => React.isValidElement(child))
14
+
15
+ return (
16
+ <div ref={ref} className={cn("space-y-4", className)} {...props}>
17
+ {React.Children.map(children, (child, index) => {
18
+ if (!React.isValidElement(child) || child.type !== Step) {
19
+ return child
20
+ }
21
+
22
+ // Clone the child with additional props
23
+ return React.cloneElement(child as React.ReactElement<any>, {
24
+ stepNumber: index + 1,
25
+ isActive: currentStep === index + 1,
26
+ isCompleted: currentStep > index + 1,
27
+ isLast: index === steps.length - 1,
28
+ })
29
+ })}
30
+ </div>
31
+ )
32
+ },
33
+ )
34
+ StepsComponent.displayName = "Steps"
35
+
36
+ interface StepProps extends React.HTMLAttributes<HTMLDivElement> {
37
+ title: string
38
+ description?: string
39
+ stepNumber?: number
40
+ isActive?: boolean
41
+ isCompleted?: boolean
42
+ isLast?: boolean
43
+ }
44
+
45
+ const Step = React.forwardRef<HTMLDivElement, StepProps>(
46
+ ({ title, description, stepNumber, isActive, isCompleted, isLast, className, ...props }, ref) => {
47
+ return (
48
+ <div ref={ref} className={cn("relative flex gap-4", !isLast && "pb-8", className)} {...props}>
49
+ {/* Line connecting steps */}
50
+ {!isLast && <div className="absolute left-[15px] top-[30px] bottom-0 w-[1px] bg-border" />}
51
+
52
+ {/* Step indicator */}
53
+ <div className="relative z-10 flex h-[30px] w-[30px] shrink-0 items-center justify-center rounded-full border bg-background">
54
+ {isCompleted ? (
55
+ <svg
56
+ className="h-4 w-4 text-primary"
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ viewBox="0 0 24 24"
59
+ fill="none"
60
+ stroke="currentColor"
61
+ strokeWidth="2"
62
+ strokeLinecap="round"
63
+ strokeLinejoin="round"
64
+ >
65
+ <polyline points="20 6 9 17 4 12" />
66
+ </svg>
67
+ ) : (
68
+ <span className={cn("text-h6", isActive ? "text-primary" : "text-muted-foreground")}>
69
+ {stepNumber}
70
+ </span>
71
+ )}
72
+ </div>
73
+
74
+ {/* Step content */}
75
+ <div className="flex flex-col gap-0.5">
76
+ <h3
77
+ className={cn(
78
+ "text-h6",
79
+ isActive ? "text-foreground" : "text-muted-foreground",
80
+ isCompleted && "text-primary",
81
+ )}
82
+ >
83
+ {title}
84
+ </h3>
85
+ {description && (
86
+ <p className={cn("text-h6", isActive ? "text-muted-foreground" : "text-muted-foreground/60")}>
87
+ {description}
88
+ </p>
89
+ )}
90
+ </div>
91
+ </div>
92
+ )
93
+ },
94
+ )
95
+ Step.displayName = "Step"
96
+
97
+ export { Step }
98
+ export { StepsComponent as Steps }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+
3
+ interface SunIconProps {
4
+ className?: string;
5
+ width?: number;
6
+ height?: number;
7
+ }
8
+
9
+ export const SunIcon: React.FC<SunIconProps> = ({
10
+ className = "",
11
+ width = 24,
12
+ height = 24
13
+ }) => {
14
+ return (
15
+ <svg
16
+ width={width}
17
+ height={height}
18
+ viewBox="0 0 24 24"
19
+ fill="none"
20
+ xmlns="http://www.w3.org/2000/svg"
21
+ className={className}
22
+ >
23
+ <path d="M15.8755 11.9995C15.8752 9.85963 14.1395 8.125 11.9995 8.125C9.8598 8.12526 8.12526 9.8598 8.125 11.9995C8.125 14.1395 9.85963 15.8752 11.9995 15.8755C14.1396 15.8755 15.8755 14.1396 15.8755 11.9995ZM18.1255 11.9995C18.1255 15.3823 15.3823 18.1255 11.9995 18.1255C8.61699 18.1252 5.875 15.3821 5.875 11.9995C5.87526 8.61715 8.61715 5.87526 11.9995 5.875C15.3821 5.875 18.1252 8.61699 18.1255 11.9995Z" fill="currentColor"/>
24
+ <path d="M10.8755 21.9995V20.4995C10.8758 19.8784 11.3793 19.3745 12.0005 19.3745C12.6214 19.3748 13.1252 19.8786 13.1255 20.4995V21.9995C13.1255 22.6207 12.6216 23.1242 12.0005 23.1245C11.3792 23.1245 10.8755 22.6208 10.8755 21.9995ZM5.19482 17.2153C5.63418 16.7761 6.34636 16.776 6.78564 17.2153C7.22444 17.6547 7.22467 18.367 6.78564 18.8062L5.7251 19.8667L5.63867 19.9443C5.19681 20.3043 4.54455 20.2784 4.13281 19.8667C3.69387 19.4275 3.69402 18.7152 4.13281 18.2759L5.19482 17.2153ZM17.2153 17.2153C17.6271 16.8036 18.2779 16.7777 18.7197 17.1377L18.8062 17.2153L19.8667 18.2759L19.9443 18.3608C20.3046 18.8027 20.2785 19.4549 19.8667 19.8667C19.4549 20.2785 18.8027 20.3046 18.3608 19.9443L18.2759 19.8667L17.2153 18.8062L17.1377 18.7197C16.7777 18.2779 16.8036 17.6271 17.2153 17.2153ZM3.5 10.8755L3.61572 10.8813C4.18265 10.9393 4.625 11.4183 4.625 12.0005C4.62475 12.5825 4.18254 13.0617 3.61572 13.1196L3.5 13.1255H2C1.37884 13.1255 0.875264 12.6216 0.875 12.0005C0.875 11.3792 1.37868 10.8755 2 10.8755H3.5ZM21.9995 10.8755C22.6208 10.8755 23.1245 11.3792 23.1245 12.0005C23.1242 12.6216 22.6207 13.1255 21.9995 13.1255H20.4995C19.8786 13.1252 19.3748 12.6214 19.3745 12.0005C19.3745 11.3793 19.8784 10.8758 20.4995 10.8755H21.9995ZM4.13281 4.13281C4.5447 3.72092 5.1968 3.69622 5.63867 4.05664L5.7251 4.13281L6.78564 5.19482L6.86182 5.27979C7.22229 5.72166 7.19756 6.37373 6.78564 6.78564C6.37373 7.19756 5.72166 7.22229 5.27979 6.86182L5.19482 6.78564L4.13281 5.7251L4.05664 5.63867C3.69622 5.1968 3.72092 4.5447 4.13281 4.13281ZM18.3608 4.05664C18.8026 3.69605 19.4547 3.72107 19.8667 4.13281C20.306 4.57215 20.306 5.28576 19.8667 5.7251L18.8062 6.78564C18.367 7.22467 17.6547 7.22444 17.2153 6.78564C16.776 6.34636 16.7761 5.63418 17.2153 5.19482L18.2759 4.13281L18.3608 4.05664ZM10.8755 3.5V2C10.8755 1.37868 11.3792 0.875 12.0005 0.875C12.6216 0.875264 13.1255 1.37884 13.1255 2V3.5C13.1255 4.12116 12.6216 4.62474 12.0005 4.625C11.3792 4.625 10.8755 4.12132 10.8755 3.5Z" fill="currentColor"/>
25
+ </svg>
26
+ );
27
+ };
@@ -0,0 +1,29 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as SwitchPrimitives from "@radix-ui/react-switch"
5
+
6
+ import { cn } from "../utils/cn"
7
+
8
+ const Switch = React.forwardRef<
9
+ React.ElementRef<typeof SwitchPrimitives.Root>,
10
+ React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>
11
+ >(({ className, ...props }, ref) => (
12
+ <SwitchPrimitives.Root
13
+ className={cn(
14
+ "peer inline-flex h-6 w-11 shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
15
+ className,
16
+ )}
17
+ {...props}
18
+ ref={ref}
19
+ >
20
+ <SwitchPrimitives.Thumb
21
+ className={cn(
22
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",
23
+ )}
24
+ />
25
+ </SwitchPrimitives.Root>
26
+ ))
27
+ Switch.displayName = SwitchPrimitives.Root.displayName
28
+
29
+ export { Switch }
@@ -0,0 +1,22 @@
1
+ import * as React from "react"
2
+
3
+ import { cn } from "../utils/cn"
4
+
5
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
6
+
7
+ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {
8
+ return (
9
+ <textarea
10
+ className={cn(
11
+ "flex min-h-[80px] w-full rounded-md border border-ods-border bg-ods-card px-3 py-2 text-h4 placeholder:text-ods-text-secondary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:bg-ods-bg",
12
+ "touch-manipulation", // Prevent double-tap zoom
13
+ className,
14
+ )}
15
+ ref={ref}
16
+ {...props}
17
+ />
18
+ )
19
+ })
20
+ Textarea.displayName = "Textarea"
21
+
22
+ export { Textarea }
@@ -55,6 +55,15 @@ const buttonVariants = cva(
55
55
  // metadata rather than CTAs — author-page social rows, share rows.
56
56
  // Pair with variant="transparent" for the ghost treatment.
57
57
  'icon-sm': 'p-[var(--spacing-system-xxs)] h-8 w-8 [&_svg]:h-4 [&_svg]:w-4',
58
+ // 20px inline glyph for affordances that sit INSIDE a line of text —
59
+ // an info hint beside a badge, a copy glyph after an id. `icon-sm`'s
60
+ // 32px target is correct for a metadata row but visually swamps a
61
+ // 10px badge or a 14px label, so hosts were reaching for className
62
+ // overrides to shrink it. Below the WCAG 2.5.8 target floor on purpose:
63
+ // this is only for glyphs whose information is ALSO available another
64
+ // way (tooltip content mirrored into an aria-describedby node), never
65
+ // for a sole means of performing an action.
66
+ 'icon-inline': 'p-0 h-5 w-5 min-h-0 min-w-0 shrink-0 [&_svg]:h-3.5 [&_svg]:w-3.5',
58
67
  // Bare 56px media glyph (play / unmute over video). A size variant so
59
68
  // hosts stop re-implementing a <button> to escape the 20px svg cap.
60
69
  'icon-glyph': 'p-0 h-14 w-14 [&_svg]:h-14 [&_svg]:w-14',