@flamingo-stack/openframe-frontend-core 0.0.518-1660.4292.1 → 0.0.518-1663.4312.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 (331) hide show
  1. package/dist/{chunk-7EFJJMNH.cjs → chunk-25JSVBPR.cjs} +7 -7
  2. package/dist/{chunk-7EFJJMNH.cjs.map → chunk-25JSVBPR.cjs.map} +1 -1
  3. package/dist/{chunk-NJADHL2G.cjs → chunk-3M2MFP2Y.cjs} +30 -2
  4. package/dist/chunk-3M2MFP2Y.cjs.map +1 -0
  5. package/dist/{chunk-QXUMLLYV.cjs → chunk-BQXHC336.cjs} +3 -3
  6. package/dist/{chunk-QXUMLLYV.cjs.map → chunk-BQXHC336.cjs.map} +1 -1
  7. package/dist/{chunk-66GH54DV.cjs → chunk-CHMQCXYO.cjs} +40 -40
  8. package/dist/{chunk-66GH54DV.cjs.map → chunk-CHMQCXYO.cjs.map} +1 -1
  9. package/dist/{chunk-RWYNJC2F.cjs → chunk-DN3GKQ47.cjs} +98 -98
  10. package/dist/{chunk-RWYNJC2F.cjs.map → chunk-DN3GKQ47.cjs.map} +1 -1
  11. package/dist/{chunk-O7L2VJDW.cjs → chunk-GH5YZSQQ.cjs} +12 -12
  12. package/dist/{chunk-O7L2VJDW.cjs.map → chunk-GH5YZSQQ.cjs.map} +1 -1
  13. package/dist/{chunk-XURRAFIB.js → chunk-GJAHN7LH.js} +404 -376
  14. package/dist/chunk-GJAHN7LH.js.map +1 -0
  15. package/dist/{chunk-FS3YSNSU.js → chunk-GS4HJA2G.js} +2 -2
  16. package/dist/{chunk-HIV2GIFP.cjs → chunk-GYONSC3U.cjs} +3 -3
  17. package/dist/{chunk-HIV2GIFP.cjs.map → chunk-GYONSC3U.cjs.map} +1 -1
  18. package/dist/{chunk-XURCARSX.cjs → chunk-I6IWT62M.cjs} +5 -5
  19. package/dist/{chunk-XURCARSX.cjs.map → chunk-I6IWT62M.cjs.map} +1 -1
  20. package/dist/{chunk-43ZZYJ3M.js → chunk-KRBH3PI4.js} +5 -5
  21. package/dist/{chunk-3LMOLDFT.cjs → chunk-KW7GDLSG.cjs} +14 -14
  22. package/dist/{chunk-3LMOLDFT.cjs.map → chunk-KW7GDLSG.cjs.map} +1 -1
  23. package/dist/{chunk-JLO2O5R4.js → chunk-LL4C2NXG.js} +5388 -5249
  24. package/dist/chunk-LL4C2NXG.js.map +1 -0
  25. package/dist/{chunk-DPFQWIZJ.cjs → chunk-LQ2R7IA2.cjs} +32 -32
  26. package/dist/{chunk-DPFQWIZJ.cjs.map → chunk-LQ2R7IA2.cjs.map} +1 -1
  27. package/dist/{chunk-P63LOLTB.js → chunk-MI7WNVWX.js} +6 -6
  28. package/dist/{chunk-BXRB4MQI.cjs → chunk-MKN6S7SU.cjs} +381 -242
  29. package/dist/chunk-MKN6S7SU.cjs.map +1 -0
  30. package/dist/{chunk-ZKVARGSO.js → chunk-MOZUJ7IN.js} +3 -3
  31. package/dist/{chunk-MIFJLUZK.js → chunk-MVY3WDFZ.js} +2 -2
  32. package/dist/{chunk-FXT2OZ5Q.js → chunk-NJJWY7SO.js} +3 -3
  33. package/dist/{chunk-H6K73RK2.cjs → chunk-O4XLTA5G.cjs} +40 -40
  34. package/dist/{chunk-H6K73RK2.cjs.map → chunk-O4XLTA5G.cjs.map} +1 -1
  35. package/dist/{chunk-MEXZZOBO.js → chunk-P6M5MN3L.js} +9 -9
  36. package/dist/{chunk-5KBQECAY.js → chunk-PUBL2NCH.js} +2 -2
  37. package/dist/{chunk-NBJ7L65H.js → chunk-PV3LXEHJ.js} +2 -2
  38. package/dist/{chunk-XZ6WTSVQ.js → chunk-QJHBYNHI.js} +6 -6
  39. package/dist/{chunk-Z3ADCYC5.js → chunk-RCBRCZUF.js} +2 -2
  40. package/dist/{chunk-KP4JRPUE.js → chunk-RJU7YCN3.js} +2 -2
  41. package/dist/{chunk-GA7BHFXD.cjs → chunk-RLVJISO4.cjs} +77 -77
  42. package/dist/{chunk-GA7BHFXD.cjs.map → chunk-RLVJISO4.cjs.map} +1 -1
  43. package/dist/{chunk-OGVIGAMZ.cjs → chunk-SXLEPNY2.cjs} +31 -31
  44. package/dist/{chunk-OGVIGAMZ.cjs.map → chunk-SXLEPNY2.cjs.map} +1 -1
  45. package/dist/{chunk-WI4XHZ2B.js → chunk-TFIPJAA5.js} +3 -3
  46. package/dist/{chunk-HPPCPGBR.cjs → chunk-URU6YKOA.cjs} +29 -29
  47. package/dist/{chunk-HPPCPGBR.cjs.map → chunk-URU6YKOA.cjs.map} +1 -1
  48. package/dist/{chunk-WSRPNLTY.cjs → chunk-WQDDSJWN.cjs} +18 -18
  49. package/dist/{chunk-WSRPNLTY.cjs.map → chunk-WQDDSJWN.cjs.map} +1 -1
  50. package/dist/{chunk-56OUH3UF.js → chunk-XARCNHWZ.js} +2 -2
  51. package/dist/{chunk-J7ZJ4KM2.cjs → chunk-YH627NWE.cjs} +4 -4
  52. package/dist/{chunk-J7ZJ4KM2.cjs.map → chunk-YH627NWE.cjs.map} +1 -1
  53. package/dist/{chunk-AI7WIW4E.js → chunk-YUQNJXSC.js} +4 -4
  54. package/dist/components/about-icon.d.ts +9 -0
  55. package/dist/components/about-icon.d.ts.map +1 -0
  56. package/dist/components/aspect-ratio.d.ts +4 -0
  57. package/dist/components/aspect-ratio.d.ts.map +1 -0
  58. package/dist/components/avatar.d.ts +7 -0
  59. package/dist/components/avatar.d.ts.map +1 -0
  60. package/dist/components/case-studies/index.cjs +14 -14
  61. package/dist/components/case-studies/index.js +4 -4
  62. package/dist/components/chart.d.ts +72 -0
  63. package/dist/components/chart.d.ts.map +1 -0
  64. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts +7 -1
  65. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  66. package/dist/components/chat/index.cjs +6 -4
  67. package/dist/components/chat/index.cjs.map +1 -1
  68. package/dist/components/chat/index.js +5 -3
  69. package/dist/components/chat/types/api.types.d.ts +22 -4
  70. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  71. package/dist/components/check-circle-icon.d.ts +7 -0
  72. package/dist/components/check-circle-icon.d.ts.map +1 -0
  73. package/dist/components/checkbox.d.ts +5 -0
  74. package/dist/components/checkbox.d.ts.map +1 -0
  75. package/dist/components/claude-icon.d.ts +6 -0
  76. package/dist/components/claude-icon.d.ts.map +1 -0
  77. package/dist/components/coins-icon.d.ts +9 -0
  78. package/dist/components/coins-icon.d.ts.map +1 -0
  79. package/dist/components/command.d.ts +81 -0
  80. package/dist/components/command.d.ts.map +1 -0
  81. package/dist/components/community-hub-icon.d.ts +9 -0
  82. package/dist/components/community-hub-icon.d.ts.map +1 -0
  83. package/dist/components/community-icon.d.ts +9 -0
  84. package/dist/components/community-icon.d.ts.map +1 -0
  85. package/dist/components/compare-icon.d.ts +9 -0
  86. package/dist/components/compare-icon.d.ts.map +1 -0
  87. package/dist/components/contact/index.cjs +5 -5
  88. package/dist/components/contact/index.js +4 -4
  89. package/dist/components/context-menu.d.ts +28 -0
  90. package/dist/components/context-menu.d.ts.map +1 -0
  91. package/dist/components/custom-external-link-icon.d.ts +9 -0
  92. package/dist/components/custom-external-link-icon.d.ts.map +1 -0
  93. package/dist/components/custom-fork-icon.d.ts +9 -0
  94. package/dist/components/custom-fork-icon.d.ts.map +1 -0
  95. package/dist/components/custom-icons.d.ts +8 -0
  96. package/dist/components/custom-icons.d.ts.map +1 -0
  97. package/dist/components/custom-license-icon.d.ts +9 -0
  98. package/dist/components/custom-license-icon.d.ts.map +1 -0
  99. package/dist/components/custom-star-icon.d.ts +9 -0
  100. package/dist/components/custom-star-icon.d.ts.map +1 -0
  101. package/dist/components/custom-time-icon.d.ts +9 -0
  102. package/dist/components/custom-time-icon.d.ts.map +1 -0
  103. package/dist/components/docs/index.cjs +7 -7
  104. package/dist/components/docs/index.js +6 -6
  105. package/dist/components/donut-icon.d.ts +4 -0
  106. package/dist/components/donut-icon.d.ts.map +1 -0
  107. package/dist/components/edit-profile-icon.d.ts +7 -0
  108. package/dist/components/edit-profile-icon.d.ts.map +1 -0
  109. package/dist/components/elestio-logo.d.ts +9 -0
  110. package/dist/components/elestio-logo.d.ts.map +1 -0
  111. package/dist/components/embeds/index.cjs +5 -5
  112. package/dist/components/embeds/index.js +4 -4
  113. package/dist/components/empty-vendor-icon.d.ts +7 -0
  114. package/dist/components/empty-vendor-icon.d.ts.map +1 -0
  115. package/dist/components/faq/index.cjs +6 -6
  116. package/dist/components/faq/index.js +5 -5
  117. package/dist/components/features/index.cjs +4 -4
  118. package/dist/components/features/index.js +3 -3
  119. package/dist/components/features/provider-button.d.ts +1 -1
  120. package/dist/components/features/provider-button.d.ts.map +1 -1
  121. package/dist/components/flamingo-logo.d.ts +9 -0
  122. package/dist/components/flamingo-logo.d.ts.map +1 -0
  123. package/dist/components/form.d.ts +26 -0
  124. package/dist/components/form.d.ts.map +1 -0
  125. package/dist/components/github-icon.d.ts +9 -0
  126. package/dist/components/github-icon.d.ts.map +1 -0
  127. package/dist/components/google-logo.d.ts +5 -0
  128. package/dist/components/google-logo.d.ts.map +1 -0
  129. package/dist/components/hamburger-icon.d.ts +9 -0
  130. package/dist/components/hamburger-icon.d.ts.map +1 -0
  131. package/dist/components/help-center-pages/index.cjs +25 -25
  132. package/dist/components/help-center-pages/index.js +16 -16
  133. package/dist/components/hubspot-icon.d.ts +7 -0
  134. package/dist/components/hubspot-icon.d.ts.map +1 -0
  135. package/dist/components/icon-utils.d.ts +7 -0
  136. package/dist/components/icon-utils.d.ts.map +1 -0
  137. package/dist/components/icons/apple-icon.d.ts +10 -0
  138. package/dist/components/icons/apple-icon.d.ts.map +1 -0
  139. package/dist/components/icons/index.cjs +4 -2
  140. package/dist/components/icons/index.cjs.map +1 -1
  141. package/dist/components/icons/index.d.ts +1 -0
  142. package/dist/components/icons/index.d.ts.map +1 -1
  143. package/dist/components/icons/index.js +3 -1
  144. package/dist/components/index.cjs +222 -266
  145. package/dist/components/index.cjs.map +1 -1
  146. package/dist/components/index.js +374 -418
  147. package/dist/components/index.js.map +1 -1
  148. package/dist/components/interactive-wrapper.d.ts +84 -0
  149. package/dist/components/interactive-wrapper.d.ts.map +1 -0
  150. package/dist/components/join-waitlist-button-stub.d.ts +10 -0
  151. package/dist/components/join-waitlist-button-stub.d.ts.map +1 -0
  152. package/dist/components/made-with-love.d.ts.map +1 -1
  153. package/dist/components/meeting-scheduler/index.cjs +41 -41
  154. package/dist/components/meeting-scheduler/index.js +5 -5
  155. package/dist/components/menu-icon.d.ts +9 -0
  156. package/dist/components/menu-icon.d.ts.map +1 -0
  157. package/dist/components/minus-circle-icon.d.ts +7 -0
  158. package/dist/components/minus-circle-icon.d.ts.map +1 -0
  159. package/dist/components/moon-icon.d.ts +9 -0
  160. package/dist/components/moon-icon.d.ts.map +1 -0
  161. package/dist/components/ms-icon.d.ts +9 -0
  162. package/dist/components/ms-icon.d.ts.map +1 -0
  163. package/dist/components/navigation/index.cjs +4 -4
  164. package/dist/components/navigation/index.js +3 -3
  165. package/dist/components/onboarding-guides/index.cjs +8 -8
  166. package/dist/components/onboarding-guides/index.js +7 -7
  167. package/dist/components/open-source-features.d.ts +1 -1
  168. package/dist/components/open-source-features.d.ts.map +1 -1
  169. package/dist/components/open-source-icon.d.ts +9 -0
  170. package/dist/components/open-source-icon.d.ts.map +1 -0
  171. package/dist/components/openframe-logo.d.ts +7 -0
  172. package/dist/components/openframe-logo.d.ts.map +1 -0
  173. package/dist/components/openmsp-logo.d.ts +11 -0
  174. package/dist/components/openmsp-logo.d.ts.map +1 -0
  175. package/dist/components/plus-circle-icon.d.ts +9 -0
  176. package/dist/components/plus-circle-icon.d.ts.map +1 -0
  177. package/dist/components/progress.d.ts +7 -0
  178. package/dist/components/progress.d.ts.map +1 -0
  179. package/dist/components/provider-button.d.ts +10 -0
  180. package/dist/components/provider-button.d.ts.map +1 -0
  181. package/dist/components/reddit-icon.d.ts +10 -0
  182. package/dist/components/reddit-icon.d.ts.map +1 -0
  183. package/dist/components/related-content/index.cjs +6 -6
  184. package/dist/components/related-content/index.js +5 -5
  185. package/dist/components/resizable.d.ts +24 -0
  186. package/dist/components/resizable.d.ts.map +1 -0
  187. package/dist/components/scroll-area.d.ts +13 -0
  188. package/dist/components/scroll-area.d.ts.map +1 -0
  189. package/dist/components/send-icon.d.ts +7 -0
  190. package/dist/components/send-icon.d.ts.map +1 -0
  191. package/dist/components/separator.d.ts +5 -0
  192. package/dist/components/separator.d.ts.map +1 -0
  193. package/dist/components/skeleton.d.ts +4 -0
  194. package/dist/components/skeleton.d.ts.map +1 -0
  195. package/dist/components/slack-icon.d.ts +9 -0
  196. package/dist/components/slack-icon.d.ts.map +1 -0
  197. package/dist/components/slider.d.ts +5 -0
  198. package/dist/components/slider.d.ts.map +1 -0
  199. package/dist/components/smooth-accordion.d.ts +12 -0
  200. package/dist/components/smooth-accordion.d.ts.map +1 -0
  201. package/dist/components/steps.d.ts +17 -0
  202. package/dist/components/steps.d.ts.map +1 -0
  203. package/dist/components/sun-icon.d.ts +9 -0
  204. package/dist/components/sun-icon.d.ts.map +1 -0
  205. package/dist/components/switch.d.ts +5 -0
  206. package/dist/components/switch.d.ts.map +1 -0
  207. package/dist/components/textarea.d.ts +6 -0
  208. package/dist/components/textarea.d.ts.map +1 -0
  209. package/dist/components/tickets/index.cjs +8 -8
  210. package/dist/components/tickets/index.js +7 -7
  211. package/dist/components/ui/index.cjs +6 -4
  212. package/dist/components/ui/index.cjs.map +1 -1
  213. package/dist/components/ui/index.js +5 -3
  214. package/dist/components/ui/pagination-stub.d.ts +6 -0
  215. package/dist/components/ui/pagination-stub.d.ts.map +1 -0
  216. package/dist/components/ui/responsive-icons-block-stub.d.ts +7 -0
  217. package/dist/components/ui/responsive-icons-block-stub.d.ts.map +1 -0
  218. package/dist/components/user-icon.d.ts +9 -0
  219. package/dist/components/user-icon.d.ts.map +1 -0
  220. package/dist/components/vendor-directory-icon.d.ts +9 -0
  221. package/dist/components/vendor-directory-icon.d.ts.map +1 -0
  222. package/dist/components/vendors-icon.d.ts +9 -0
  223. package/dist/components/vendors-icon.d.ts.map +1 -0
  224. package/dist/components/why-it-matters.d.ts +1 -1
  225. package/dist/components/why-it-matters.d.ts.map +1 -1
  226. package/dist/components/x-icon.d.ts +9 -0
  227. package/dist/components/x-icon.d.ts.map +1 -0
  228. package/dist/components/x-logo.d.ts +7 -0
  229. package/dist/components/x-logo.d.ts.map +1 -0
  230. package/dist/hooks/index.cjs +3 -3
  231. package/dist/hooks/index.js +2 -2
  232. package/dist/index.cjs +8 -4
  233. package/dist/index.cjs.map +1 -1
  234. package/dist/index.js +7 -3
  235. package/package.json +1 -1
  236. package/src/components/about-icon.tsx +29 -0
  237. package/src/components/aspect-ratio.tsx +7 -0
  238. package/src/components/avatar.tsx +40 -0
  239. package/src/components/chart.tsx +364 -0
  240. package/src/components/chat/chat-container.tsx +1 -1
  241. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +11 -4
  242. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +71 -6
  243. package/src/components/chat/types/api.types.ts +22 -4
  244. package/src/components/chat/utils/__tests__/history-merge.test.ts +99 -0
  245. package/src/components/check-circle-icon.tsx +29 -0
  246. package/src/components/checkbox.tsx +30 -0
  247. package/src/components/claude-icon.tsx +24 -0
  248. package/src/components/coins-icon.tsx +29 -0
  249. package/src/components/command.tsx +153 -0
  250. package/src/components/community-hub-icon.tsx +27 -0
  251. package/src/components/community-icon.tsx +27 -0
  252. package/src/components/compare-icon.tsx +27 -0
  253. package/src/components/context-menu.tsx +200 -0
  254. package/src/components/custom-external-link-icon.tsx +33 -0
  255. package/src/components/custom-fork-icon.tsx +33 -0
  256. package/src/components/custom-icons.tsx +47 -0
  257. package/src/components/custom-license-icon.tsx +33 -0
  258. package/src/components/custom-star-icon.tsx +29 -0
  259. package/src/components/custom-time-icon.tsx +33 -0
  260. package/src/components/donut-icon.tsx +21 -0
  261. package/src/components/edit-profile-icon.tsx +23 -0
  262. package/src/components/elestio-logo.tsx +67 -0
  263. package/src/components/empty-vendor-icon.tsx +44 -0
  264. package/src/components/features/auth-providers-list.tsx +1 -1
  265. package/src/components/features/platform-badge.tsx +2 -2
  266. package/src/components/features/provider-button.tsx +6 -2
  267. package/src/components/flamingo-logo.tsx +27 -0
  268. package/src/components/form.tsx +138 -0
  269. package/src/components/github-icon.tsx +26 -0
  270. package/src/components/google-logo.tsx +32 -0
  271. package/src/components/hamburger-icon.tsx +29 -0
  272. package/src/components/hubspot-icon.tsx +20 -0
  273. package/src/components/icon-utils.tsx +36 -0
  274. package/src/components/icons/apple-icon.tsx +30 -0
  275. package/src/components/icons/index.ts +1 -0
  276. package/src/components/interactive-wrapper.tsx +336 -0
  277. package/src/components/join-waitlist-button-stub.tsx +30 -0
  278. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  279. package/src/components/made-with-love.tsx +3 -4
  280. package/src/components/menu-icon.tsx +22 -0
  281. package/src/components/minus-circle-icon.tsx +28 -0
  282. package/src/components/moon-icon.tsx +26 -0
  283. package/src/components/ms-icon.tsx +31 -0
  284. package/src/components/open-source-features.tsx +1 -1
  285. package/src/components/open-source-icon.tsx +27 -0
  286. package/src/components/openframe-logo.tsx +46 -0
  287. package/src/components/openmsp-logo.tsx +36 -0
  288. package/src/components/plus-circle-icon.tsx +30 -0
  289. package/src/components/progress.tsx +27 -0
  290. package/src/components/provider-button.tsx +40 -0
  291. package/src/components/reddit-icon.tsx +50 -0
  292. package/src/components/resizable.tsx +45 -0
  293. package/src/components/scroll-area.tsx +49 -0
  294. package/src/components/send-icon.tsx +26 -0
  295. package/src/components/separator.tsx +22 -0
  296. package/src/components/skeleton.tsx +8 -0
  297. package/src/components/slack-icon.tsx +43 -0
  298. package/src/components/slider.tsx +28 -0
  299. package/src/components/smooth-accordion.tsx +124 -0
  300. package/src/components/steps.tsx +98 -0
  301. package/src/components/sun-icon.tsx +27 -0
  302. package/src/components/switch.tsx +29 -0
  303. package/src/components/textarea.tsx +22 -0
  304. package/src/components/ui/pagination-stub.tsx +38 -0
  305. package/src/components/ui/responsive-icons-block-stub.tsx +14 -0
  306. package/src/components/user-icon.tsx +33 -0
  307. package/src/components/vendor-directory-icon.tsx +27 -0
  308. package/src/components/vendor-tag.tsx +1 -1
  309. package/src/components/vendors-icon.tsx +27 -0
  310. package/src/components/why-it-matters.tsx +1 -1
  311. package/src/components/x-icon.tsx +29 -0
  312. package/src/components/x-logo.tsx +22 -0
  313. package/dist/chunk-BXRB4MQI.cjs.map +0 -1
  314. package/dist/chunk-JLO2O5R4.js.map +0 -1
  315. package/dist/chunk-NJADHL2G.cjs.map +0 -1
  316. package/dist/chunk-XURRAFIB.js.map +0 -1
  317. /package/dist/{chunk-FS3YSNSU.js.map → chunk-GS4HJA2G.js.map} +0 -0
  318. /package/dist/{chunk-43ZZYJ3M.js.map → chunk-KRBH3PI4.js.map} +0 -0
  319. /package/dist/{chunk-P63LOLTB.js.map → chunk-MI7WNVWX.js.map} +0 -0
  320. /package/dist/{chunk-ZKVARGSO.js.map → chunk-MOZUJ7IN.js.map} +0 -0
  321. /package/dist/{chunk-MIFJLUZK.js.map → chunk-MVY3WDFZ.js.map} +0 -0
  322. /package/dist/{chunk-FXT2OZ5Q.js.map → chunk-NJJWY7SO.js.map} +0 -0
  323. /package/dist/{chunk-MEXZZOBO.js.map → chunk-P6M5MN3L.js.map} +0 -0
  324. /package/dist/{chunk-5KBQECAY.js.map → chunk-PUBL2NCH.js.map} +0 -0
  325. /package/dist/{chunk-NBJ7L65H.js.map → chunk-PV3LXEHJ.js.map} +0 -0
  326. /package/dist/{chunk-XZ6WTSVQ.js.map → chunk-QJHBYNHI.js.map} +0 -0
  327. /package/dist/{chunk-Z3ADCYC5.js.map → chunk-RCBRCZUF.js.map} +0 -0
  328. /package/dist/{chunk-KP4JRPUE.js.map → chunk-RJU7YCN3.js.map} +0 -0
  329. /package/dist/{chunk-WI4XHZ2B.js.map → chunk-TFIPJAA5.js.map} +0 -0
  330. /package/dist/{chunk-56OUH3UF.js.map → chunk-XARCNHWZ.js.map} +0 -0
  331. /package/dist/{chunk-AI7WIW4E.js.map → chunk-YUQNJXSC.js.map} +0 -0
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+
3
+ interface HamburgerIconProps {
4
+ width?: number;
5
+ height?: number;
6
+ className?: string;
7
+ }
8
+
9
+ export function HamburgerIcon({ width = 16, height = 16, className = '' }: HamburgerIconProps) {
10
+ return (
11
+ <svg
12
+ width={width}
13
+ height={height}
14
+ viewBox="0 0 16 16"
15
+ fill="none"
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ className={className}
18
+ >
19
+ <path
20
+ d="M14 11.25C14.4142 11.25 14.75 11.5858 14.75 12C14.75 12.4142 14.4142 12.75 14 12.75H2C1.58579 12.75 1.25 12.4142 1.25 12C1.25 11.5858 1.58579 11.25 2 11.25H14Z"
21
+ fill="#FAFAFA"
22
+ />
23
+ <path
24
+ d="M14 7.25C14.4142 7.25 14.75 7.58579 14.75 8C14.75 8.41421 14.4142 8.75 14 8.75H2C1.58579 8.75 1.25 8.41421 1.25 8C1.25 7.58579 1.58579 7.25 2 7.25H14ZM14 3.25C14.4142 3.25 14.75 3.58579 14.75 4C14.75 4.41421 14.4142 4.75 14 4.75H2C1.58579 4.75 1.25 4.41421 1.25 4C1.25 3.58579 1.58579 3.25 2 3.25H14Z"
25
+ fill="#FAFAFA"
26
+ />
27
+ </svg>
28
+ );
29
+ }
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { cn } from "../utils/cn";
3
+
4
+ /**
5
+ * HubSpot brand logo (solid orange)
6
+ * Usage: <HubspotIcon className="h-4 w-4" />
7
+ */
8
+ export function HubspotIcon({ className, fill = '#FF7A59', ...props }: React.SVGProps<SVGSVGElement>) {
9
+ return (
10
+ <svg
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ viewBox="0 0 512 512"
13
+ fill={fill}
14
+ className={cn('inline-block', className)}
15
+ {...props}
16
+ >
17
+ <path d="M266.197 216.109c-22.551 21.293-36.655 51.48-36.655 84.991 0 26.326 8.714 50.582 23.359 70.08l-44.473 44.74c-3.953-1.438-8.176-2.245-12.579-2.245-9.702 0-18.776 3.774-25.605 10.602-6.828 6.827-10.602 15.989-10.602 25.696 0 9.701 3.773 18.775 10.602 25.605 6.829 6.826 15.993 10.42 25.605 10.42 9.703 0 18.777-3.505 25.695-10.42 6.829-6.83 10.602-15.994 10.602-25.605 0-3.774-.538-7.369-1.707-10.873l44.923-45.102c19.765 15.183 44.381 24.169 71.244 24.169 64.599 0 116.797-52.38 116.797-116.977 0-58.578-42.854-107.093-99.007-115.628v-55.343c15.723-6.65 25.335-21.384 25.335-38.545 0-23.449-18.777-43.034-42.227-43.034-23.448 0-41.956 19.585-41.956 43.034 0 17.161 9.613 31.895 25.335 38.545v54.983c-13.655 1.887-26.593 6.019-38.362 12.219-24.796-18.778-105.565-76.997-151.746-112.126 1.078-3.953 1.798-8.085 1.798-12.397 0-25.875-21.113-46.898-47.078-46.898-25.875 0-46.898 21.023-46.898 46.898 0 25.965 21.023 46.988 46.898 46.988 8.805 0 16.98-2.606 24.078-6.828L266.197 216.109zM346.606 363.095c-34.229 0-61.991-27.763-61.991-61.994 0-34.229 27.762-61.99 61.991-61.99 34.23 0 61.992 27.761 61.992 61.99 0 34.231-27.762 61.994-61.992 61.994z" />
18
+ </svg>
19
+ );
20
+ }
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import {
3
+ Megaphone,
4
+ Bell,
5
+ Info,
6
+ Star,
7
+ Rocket,
8
+ Package,
9
+ } from 'lucide-react';
10
+ import { OpenFrameLogo } from './openframe-logo';
11
+ import { OpenmspLogo } from './openmsp-logo';
12
+ import { FlamingoLogo } from './flamingo-logo';
13
+
14
+ /**
15
+ * Returns a JSX element for a known icon name, spreading any extra props.
16
+ * Falls back to Megaphone if the name is not recognised.
17
+ */
18
+ export function renderSvgIcon(
19
+ name: string,
20
+ props: React.SVGProps<SVGSVGElement | SVGElement> = {}
21
+ ): React.ReactElement {
22
+ const map: Record<string, (p: any) => React.ReactElement> = {
23
+ megaphone: (p) => <Megaphone {...p} />,
24
+ bell: (p) => <Bell {...p} />,
25
+ info: (p) => <Info {...p} />,
26
+ star: (p) => <Star {...p} />,
27
+ rocket: (p) => <Rocket {...p} />,
28
+ package: (p) => <Package {...p} />,
29
+ 'openframe-logo': (p) => <OpenFrameLogo {...p} />,
30
+ 'openmsp-logo': (p) => <OpenmspLogo {...p} />,
31
+ 'flamingo': (p)=> <FlamingoLogo {...p} />,
32
+ };
33
+
34
+ const renderer = map[name] || map['megaphone'];
35
+ return renderer(props);
36
+ }
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+
3
+ interface AppleIconProps {
4
+ width?: number | string
5
+ height?: number | string
6
+ className?: string
7
+ }
8
+
9
+ /** @deprecated Use icons from icons-v2-generated instead. */
10
+ export function AppleIcon({
11
+ width = 24,
12
+ height = 24,
13
+ className = "text-current"
14
+ }: AppleIconProps) {
15
+ return (
16
+ <svg
17
+ width={width}
18
+ height={height}
19
+ viewBox="0 0 24 24"
20
+ fill="none"
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ className={className}
23
+ >
24
+ <path
25
+ d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.56-1.702"
26
+ fill="currentColor"
27
+ />
28
+ </svg>
29
+ )
30
+ }
@@ -81,6 +81,7 @@ export { GitHubIcon } from './github-icon';
81
81
  export { SlackIcon } from './slack-icon';
82
82
  export { ClickUpIcon } from './clickup-icon';
83
83
  export { MicrosoftIcon } from './ms-icon';
84
+ export { AppleIcon } from './apple-icon';
84
85
  export { GoogleLogo } from './google-logo';
85
86
  export { RedditIcon } from './reddit-icon';
86
87
  export { XLogo } from './x-logo';
@@ -0,0 +1,336 @@
1
+ "use client";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { useInteractiveState } from '../hooks/use-interactive-state';
5
+ import { cn } from "../utils/cn";
6
+
7
+ interface InteractiveOptions {
8
+ enableHover?: boolean;
9
+ enableFocus?: boolean;
10
+ enablePress?: boolean;
11
+ enableRipple?: boolean;
12
+ enableAnimations?: boolean;
13
+ enableColorShifts?: boolean;
14
+ enableAccessibilityEnhancements?: boolean;
15
+ animations?: boolean;
16
+ enableHapticFeedback?: boolean;
17
+ }
18
+
19
+ interface InteractiveWrapperProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ /**
21
+ * Interactive state options
22
+ */
23
+ interactive?: InteractiveOptions;
24
+
25
+ /**
26
+ * Element type to render
27
+ */
28
+ as?: keyof React.JSX.IntrinsicElements;
29
+
30
+ /**
31
+ * Whether to render ripple effect
32
+ */
33
+ showRipple?: boolean;
34
+
35
+ /**
36
+ * Custom ripple color
37
+ */
38
+ rippleColor?: string;
39
+
40
+ /**
41
+ * Accessibility role
42
+ */
43
+ role?: string;
44
+
45
+ /**
46
+ * Whether element should be focusable
47
+ */
48
+ focusable?: boolean;
49
+
50
+ /**
51
+ * Loading state
52
+ */
53
+ loading?: boolean;
54
+
55
+ /**
56
+ * Disabled state
57
+ */
58
+ disabled?: boolean;
59
+
60
+ /**
61
+ * Active state
62
+ */
63
+ active?: boolean;
64
+
65
+ /**
66
+ * Callback for state changes
67
+ */
68
+ onStateChange?: (state: any) => void;
69
+ }
70
+
71
+ export const InteractiveWrapper = forwardRef<HTMLElement, InteractiveWrapperProps>(({
72
+ interactive = {},
73
+ as = 'div',
74
+ showRipple = true,
75
+ rippleColor,
76
+ role,
77
+ focusable = false,
78
+ loading = false,
79
+ disabled = false,
80
+ active = false,
81
+ onStateChange,
82
+ className,
83
+ children,
84
+ onClick,
85
+ ...props
86
+ }, ref) => {
87
+ const {
88
+ state,
89
+ handlers,
90
+ getStateStyles,
91
+ getStateClasses,
92
+ ripplePosition,
93
+ setLoading,
94
+ setDisabled,
95
+ ref: interactiveRef
96
+ } = useInteractiveState();
97
+
98
+ // Update loading and disabled states
99
+ React.useEffect(() => {
100
+ setLoading(loading);
101
+ }, [loading, setLoading]);
102
+
103
+ React.useEffect(() => {
104
+ setDisabled(disabled);
105
+ }, [disabled, setDisabled]);
106
+
107
+ // Notify parent of state changes
108
+ React.useEffect(() => {
109
+ if (onStateChange) {
110
+ onStateChange(state);
111
+ }
112
+ }, [state, onStateChange]);
113
+
114
+ // Merge refs
115
+ React.useEffect(() => {
116
+ if (ref) {
117
+ if (typeof ref === 'function') {
118
+ ref(interactiveRef.current);
119
+ } else {
120
+ ref.current = interactiveRef.current;
121
+ }
122
+ }
123
+ }, [ref, interactiveRef]);
124
+
125
+ const Component = as as any;
126
+
127
+ const mergedHandlers = {
128
+ ...handlers,
129
+ onClick: (event: React.MouseEvent<HTMLDivElement>) => {
130
+ handlers.onClick();
131
+ if (onClick && !event.defaultPrevented) {
132
+ onClick(event);
133
+ }
134
+ }
135
+ };
136
+
137
+ const computedClassName = cn(
138
+ 'interactive-wrapper',
139
+ 'relative overflow-hidden transition-all duration-200',
140
+ getStateClasses(),
141
+ focusable && 'focus:outline-none',
142
+ className
143
+ );
144
+
145
+ return (
146
+ <Component
147
+ ref={interactiveRef}
148
+ className={computedClassName}
149
+ style={{ ...getStateStyles(), ...props.style }}
150
+ role={role}
151
+ tabIndex={focusable ? 0 : undefined}
152
+ aria-disabled={disabled}
153
+ aria-busy={loading}
154
+ aria-pressed={active}
155
+ {...mergedHandlers}
156
+ {...props}
157
+ >
158
+ {children}
159
+
160
+ {/* Ripple Effect */}
161
+ {showRipple && ripplePosition && (
162
+ <RippleEffect
163
+ x={ripplePosition.x}
164
+ y={ripplePosition.y}
165
+ color={rippleColor}
166
+ />
167
+ )}
168
+
169
+ {/* Loading Overlay */}
170
+ {loading && (
171
+ <div className="absolute inset-0 bg-current opacity-10 animate-pulse pointer-events-none" />
172
+ )}
173
+ </Component>
174
+ );
175
+ });
176
+
177
+ InteractiveWrapper.displayName = 'InteractiveWrapper';
178
+
179
+ /**
180
+ * Ripple effect component
181
+ */
182
+ function RippleEffect({
183
+ x,
184
+ y,
185
+ color = 'currentColor'
186
+ }: {
187
+ x: number;
188
+ y: number;
189
+ color?: string;
190
+ }) {
191
+ return (
192
+ <div
193
+ className="absolute pointer-events-none"
194
+ style={{
195
+ left: x,
196
+ top: y,
197
+ transform: 'translate(-50%, -50%)',
198
+ }}
199
+ >
200
+ <div
201
+ className="w-2 h-2 rounded-full animate-ping"
202
+ style={{
203
+ backgroundColor: color,
204
+ opacity: 0.3,
205
+ animationDuration: '0.6s',
206
+ animationTimingFunction: 'cubic-bezier(0, 0, 0.2, 1)',
207
+ transform: 'scale(0)',
208
+ animation: 'ripple-expand 0.6s cubic-bezier(0, 0, 0.2, 1)'
209
+ }}
210
+ />
211
+ </div>
212
+ );
213
+ }
214
+
215
+ /**
216
+ * Pre-configured interactive components
217
+ */
218
+ export const InteractivePresets = {
219
+ /**
220
+ * Card with hover and click interactions
221
+ */
222
+ Card: forwardRef<HTMLDivElement, Omit<InteractiveWrapperProps, 'interactive'>>((props, ref) => (
223
+ <InteractiveWrapper
224
+ ref={ref}
225
+ interactive={{
226
+ enableAnimations: true,
227
+ enableColorShifts: true,
228
+ animations: true
229
+ }}
230
+ className={cn('bg-ods-card border border-ods-border rounded-lg p-4', props.className)}
231
+ focusable={true}
232
+ role="button"
233
+ {...props}
234
+ />
235
+ )),
236
+
237
+ /**
238
+ * Button-like interactive element
239
+ */
240
+ Button: forwardRef<HTMLButtonElement, Omit<InteractiveWrapperProps, 'interactive' | 'as'>>((props, ref) => (
241
+ <InteractiveWrapper
242
+ ref={ref}
243
+ as="button"
244
+ interactive={{
245
+ enableAnimations: true,
246
+ enableColorShifts: true,
247
+ enableAccessibilityEnhancements: true,
248
+ enableHapticFeedback: true,
249
+ animations: true
250
+ }}
251
+ className={cn('bg-ods-accent text-ods-text-on-accent px-4 py-2 rounded-md font-medium', props.className)}
252
+ role="button"
253
+ {...props}
254
+ />
255
+ )),
256
+
257
+ /**
258
+ * Navigation item with subtle interactions
259
+ */
260
+ NavItem: forwardRef<HTMLAnchorElement, Omit<InteractiveWrapperProps, 'interactive' | 'as'>>((props, ref) => (
261
+ <InteractiveWrapper
262
+ ref={ref}
263
+ as="a"
264
+ interactive={{
265
+ enableAnimations: true,
266
+ enableColorShifts: true,
267
+ animations: true
268
+ }}
269
+ className={cn('block px-3 py-2 rounded-md text-ods-text-secondary hover:text-ods-text-primary', props.className)}
270
+ focusable={true}
271
+ {...props}
272
+ />
273
+ )),
274
+
275
+ /**
276
+ * Input field with enhanced focus states
277
+ */
278
+ Input: forwardRef<HTMLInputElement, Omit<InteractiveWrapperProps, 'interactive' | 'as'>>((props, ref) => (
279
+ <InteractiveWrapper
280
+ ref={ref}
281
+ as="input"
282
+ interactive={{
283
+ enableAnimations: false,
284
+ enableColorShifts: true,
285
+ enableAccessibilityEnhancements: true,
286
+ animations: true
287
+ }}
288
+ className={cn('w-full px-3 py-2 bg-ods-bg border border-ods-border rounded-md text-ods-text-primary', props.className)}
289
+ focusable={true}
290
+ {...props}
291
+ />
292
+ )),
293
+
294
+ /**
295
+ * Toggle switch with visual feedback
296
+ */
297
+ Toggle: forwardRef<HTMLDivElement, Omit<InteractiveWrapperProps, 'interactive'> & { checked?: boolean }>((props, ref) => {
298
+ const { checked, ...restProps } = props;
299
+
300
+ return (
301
+ <InteractiveWrapper
302
+ ref={ref}
303
+ interactive={{
304
+ enableAnimations: true,
305
+ enableColorShifts: true,
306
+ enableHapticFeedback: true,
307
+ animations: true
308
+ }}
309
+ className={cn(
310
+ 'relative inline-flex w-12 h-6 rounded-full cursor-pointer transition-colors',
311
+ checked ? 'bg-ods-accent' : 'bg-ods-border',
312
+ props.className
313
+ )}
314
+ role="switch"
315
+ aria-checked={checked}
316
+ focusable={true}
317
+ {...restProps}
318
+ >
319
+ <div
320
+ className={cn(
321
+ 'inline-block w-5 h-5 rounded-full bg-white transform transition-transform',
322
+ checked ? 'translate-x-6' : 'translate-x-0.5',
323
+ 'mt-0.5'
324
+ )}
325
+ />
326
+ </InteractiveWrapper>
327
+ );
328
+ })
329
+ };
330
+
331
+ // Export individual preset components with display names
332
+ InteractivePresets.Card.displayName = 'InteractiveCard';
333
+ InteractivePresets.Button.displayName = 'InteractiveButton';
334
+ InteractivePresets.NavItem.displayName = 'InteractiveNavItem';
335
+ InteractivePresets.Input.displayName = 'InteractiveInput';
336
+ InteractivePresets.Toggle.displayName = 'InteractiveToggle';
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Button } from './ui/button';
3
+
4
+ export interface JoinWaitlistButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
+ lowerPathColor?: string;
6
+ upperPathColor?: string;
7
+ buttonBackgroundColor?: string;
8
+ buttonTextColor?: string;
9
+ loading?: boolean;
10
+ }
11
+
12
+ export const JoinWaitlistButton = React.forwardRef<HTMLButtonElement, JoinWaitlistButtonProps>(
13
+ ({ className, lowerPathColor, upperPathColor, buttonBackgroundColor, buttonTextColor, children, ...props }, ref) => {
14
+ return (
15
+ <Button
16
+ ref={ref}
17
+ className={className}
18
+ style={{
19
+ backgroundColor: buttonBackgroundColor,
20
+ color: buttonTextColor
21
+ }}
22
+ {...props}
23
+ >
24
+ {children || 'Join Waitlist'}
25
+ </Button>
26
+ );
27
+ }
28
+ );
29
+
30
+ JoinWaitlistButton.displayName = "JoinWaitlistButton";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import React from 'react';
4
- import { OpenmspLogo } from '../icons/openmsp-logo';
4
+ import { OpenmspLogo } from '../openmsp-logo';
5
5
 
6
6
  export function OpenmspHeartbeatLoader({ className = '', progress = 0, label, barWidth = 'w-128' }: { className?: string; progress?: number; label?: string; barWidth?: string }) {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
 
3
3
  import React, { useState, useEffect } from 'react';
4
- import { FlamingoLogo } from './icons/flamingo-logo';
4
+ import { FlamingoLogo } from './flamingo-logo';
5
5
  import { getBaseUrl } from '../utils';
6
6
 
7
7
  interface MadeWithLoveProps {
@@ -117,9 +117,8 @@ export function MadeWithLove({
117
117
  >
118
118
  <div style={logoStyle}>
119
119
  <FlamingoLogo
120
- width={config.logoSize}
121
- height={config.logoSize}
122
- fill="#f357bb" // Direct hex instead of CSS variable for cross-framework compatibility
120
+ size={config.logoSize}
121
+ color="#f357bb" // Direct hex instead of CSS variable for cross-framework compatibility
123
122
  />
124
123
  </div>
125
124
  <span style={textStyle}>Flamingo</span>
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { Menu } from 'lucide-react';
3
+
4
+ interface MenuIconProps {
5
+ className?: string;
6
+ width?: number;
7
+ height?: number;
8
+ }
9
+
10
+ export const MenuIcon: React.FC<MenuIconProps> = ({
11
+ className = "",
12
+ width = 24,
13
+ height = 24
14
+ }) => {
15
+ return (
16
+ <Menu
17
+ width={width}
18
+ height={height}
19
+ className={className}
20
+ />
21
+ );
22
+ };
@@ -0,0 +1,28 @@
1
+ import React from 'react'
2
+
3
+ interface MinusCircleIconProps extends React.SVGProps<SVGSVGElement> {
4
+ className?: string
5
+ }
6
+
7
+ export function MinusCircleIcon({ className, ...props }: MinusCircleIconProps) {
8
+ return (
9
+ <svg
10
+ width="24"
11
+ height="24"
12
+ viewBox="0 0 24 24"
13
+ fill="none"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ className={className}
16
+ {...props}
17
+ >
18
+ <path
19
+ d="M20.8745 12.0005C20.8745 7.09912 16.9018 3.12526 12.0005 3.125C7.09896 3.125 3.125 7.09896 3.125 12.0005C3.12526 16.9018 7.09912 20.8745 12.0005 20.8745C16.9016 20.8742 20.8742 16.9016 20.8745 12.0005ZM23.1245 12.0005C23.1242 18.1443 18.1443 23.1242 12.0005 23.1245C5.85648 23.1245 0.875264 18.1444 0.875 12.0005C0.875 5.85632 5.85632 0.875 12.0005 0.875C18.1444 0.875264 23.1245 5.85648 23.1245 12.0005Z"
20
+ fill="#888888"
21
+ />
22
+ <path
23
+ d="M15.9995 10.875L16.1152 10.8809C16.6824 10.9386 17.1245 11.4176 17.1245 12C17.1245 12.5824 16.6824 13.0614 16.1152 13.1191L15.9995 13.125H8C7.37868 13.125 6.875 12.6213 6.875 12C6.875 11.3787 7.37868 10.875 8 10.875H15.9995Z"
24
+ fill="#888888"
25
+ />
26
+ </svg>
27
+ )
28
+ }
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+
3
+ interface MoonIconProps {
4
+ className?: string;
5
+ width?: number;
6
+ height?: number;
7
+ }
8
+
9
+ export const MoonIcon: React.FC<MoonIconProps> = ({
10
+ className = "",
11
+ width = 23,
12
+ height = 24
13
+ }) => {
14
+ return (
15
+ <svg
16
+ width={width}
17
+ height={height}
18
+ viewBox="0 0 23 24"
19
+ fill="none"
20
+ xmlns="http://www.w3.org/2000/svg"
21
+ className={className}
22
+ >
23
+ <path d="M9.37549 6.69626C9.3755 5.53929 9.55702 4.42358 9.89404 3.37692C6.00935 4.32228 3.125 7.82461 3.125 12.0005C3.12514 16.9019 7.09905 20.8745 12.0005 20.8745C14.846 20.8743 17.3791 19.5349 19.0039 17.4497C13.5887 16.856 9.37549 12.2696 9.37549 6.69626ZM11.6255 6.69626C11.6255 11.43 15.4626 15.2671 20.1963 15.2671C20.4368 15.2671 20.6747 15.2571 20.9097 15.2378C21.3123 15.2046 21.7024 15.3908 21.9307 15.7241C22.1587 16.0573 22.1904 16.4872 22.0142 16.8506C20.2135 20.5621 16.4075 23.1243 12.0005 23.1245C5.85641 23.1245 0.875136 18.1445 0.875 12.0005C0.875 5.96445 5.68179 1.05079 11.6768 0.879363C12.0807 0.867855 12.4598 1.07472 12.6699 1.41989C12.8797 1.76491 12.8889 2.19599 12.6934 2.54928C12.0132 3.77703 11.6255 5.18981 11.6255 6.69626Z" fill="currentColor"/>
24
+ </svg>
25
+ );
26
+ };
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+
3
+ interface MsIconProps {
4
+ width?: number | string
5
+ height?: number | string
6
+ className?: string
7
+ }
8
+
9
+ export function MicrosoftIcon({
10
+ width = 24,
11
+ height = 24,
12
+ className = "text-current"
13
+ }: MsIconProps) {
14
+ return (
15
+ <svg
16
+ width={24}
17
+ height={24}
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 d="M11.5047 11.5032H2V2H11.5047V11.5032Z" fill="#F1511B"/>
25
+ <path d="M22.0002 11.5032H12.4946V2H21.9993V11.5032H22.0002Z" fill="#80CC28"/>
26
+ <path d="M11.5047 21.9993H2V12.4961H11.5047V21.9993Z" fill="#00ADEF"/>
27
+ <path d="M22.0002 21.9993H12.4946V12.4961H21.9993V21.9993H22.0002Z" fill="#FBBC09"/>
28
+ </g>
29
+ </svg>
30
+ )
31
+ }
@@ -33,7 +33,7 @@ const FeatureCard: React.FC<FeatureCardProps> = ({ icon, title, description }) =
33
33
  );
34
34
  };
35
35
 
36
- export const OpenSourceFeatures: React.FC = () => {
36
+ const OpenSourceFeatures: React.FC = () => {
37
37
  const features = [
38
38
  {
39
39
  icon: <Terminal className="w-6 h-6" />,
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+
3
+ interface OpenSourceIconProps {
4
+ className?: string;
5
+ width?: number;
6
+ height?: number;
7
+ }
8
+
9
+ export const OpenSourceIcon: React.FC<OpenSourceIconProps> = ({
10
+ className = "",
11
+ width = 19,
12
+ height = 18
13
+ }) => {
14
+ return (
15
+ <svg
16
+ width={width}
17
+ height={height}
18
+ viewBox="0 0 19 18"
19
+ fill="none"
20
+ xmlns="http://www.w3.org/2000/svg"
21
+ className={className}
22
+ >
23
+ <path d="M10.1103 1.20504C10.2596 0.753862 10.729 0.479825 11.2029 0.584919C11.7083 0.697238 12.0269 1.19887 11.9145 1.7043L8.58202 16.7043C8.46953 17.2095 7.96794 17.5283 7.46264 17.416C6.95742 17.3035 6.63868 16.8019 6.75097 16.2966L10.0847 1.29659L10.1103 1.20504Z" fill="currentColor"/>
24
+ <path d="M4.50325 4.17094C4.86929 3.80489 5.4628 3.80502 5.82893 4.17094C6.19505 4.53705 6.19505 5.1305 5.82893 5.49662L2.32429 9.00004L5.82893 12.5047L5.89363 12.5755C6.19397 12.9437 6.17217 13.4871 5.82893 13.8304C5.48568 14.1732 4.94335 14.194 4.57527 13.8938L4.50325 13.8304L0.336986 9.66288C-0.0289274 9.29675 -0.029063 8.70325 0.336986 8.3372L4.50325 4.17094ZM12.837 4.17094C13.1802 3.82768 13.7236 3.80585 14.0919 4.10624L14.1627 4.17094L18.3289 8.3372C18.695 8.70331 18.695 9.29676 18.3289 9.66288L14.1627 13.8304C13.7966 14.1962 13.2031 14.1962 12.837 13.8304C12.4709 13.4643 12.4711 12.8708 12.837 12.5047L16.3404 9.00004L12.837 5.49662L12.7723 5.42582C12.4719 5.05759 12.4937 4.51419 12.837 4.17094Z" fill="currentColor"/>
25
+ </svg>
26
+ );
27
+ };