@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.
- package/dist/{chunk-7EFJJMNH.cjs → chunk-25JSVBPR.cjs} +7 -7
- package/dist/{chunk-7EFJJMNH.cjs.map → chunk-25JSVBPR.cjs.map} +1 -1
- package/dist/{chunk-NJADHL2G.cjs → chunk-3M2MFP2Y.cjs} +30 -2
- package/dist/chunk-3M2MFP2Y.cjs.map +1 -0
- package/dist/{chunk-QXUMLLYV.cjs → chunk-BQXHC336.cjs} +3 -3
- package/dist/{chunk-QXUMLLYV.cjs.map → chunk-BQXHC336.cjs.map} +1 -1
- package/dist/{chunk-66GH54DV.cjs → chunk-CHMQCXYO.cjs} +40 -40
- package/dist/{chunk-66GH54DV.cjs.map → chunk-CHMQCXYO.cjs.map} +1 -1
- package/dist/{chunk-RWYNJC2F.cjs → chunk-DN3GKQ47.cjs} +98 -98
- package/dist/{chunk-RWYNJC2F.cjs.map → chunk-DN3GKQ47.cjs.map} +1 -1
- package/dist/{chunk-O7L2VJDW.cjs → chunk-GH5YZSQQ.cjs} +12 -12
- package/dist/{chunk-O7L2VJDW.cjs.map → chunk-GH5YZSQQ.cjs.map} +1 -1
- package/dist/{chunk-XURRAFIB.js → chunk-GJAHN7LH.js} +404 -376
- package/dist/chunk-GJAHN7LH.js.map +1 -0
- package/dist/{chunk-FS3YSNSU.js → chunk-GS4HJA2G.js} +2 -2
- package/dist/{chunk-HIV2GIFP.cjs → chunk-GYONSC3U.cjs} +3 -3
- package/dist/{chunk-HIV2GIFP.cjs.map → chunk-GYONSC3U.cjs.map} +1 -1
- package/dist/{chunk-XURCARSX.cjs → chunk-I6IWT62M.cjs} +5 -5
- package/dist/{chunk-XURCARSX.cjs.map → chunk-I6IWT62M.cjs.map} +1 -1
- package/dist/{chunk-43ZZYJ3M.js → chunk-KRBH3PI4.js} +5 -5
- package/dist/{chunk-3LMOLDFT.cjs → chunk-KW7GDLSG.cjs} +14 -14
- package/dist/{chunk-3LMOLDFT.cjs.map → chunk-KW7GDLSG.cjs.map} +1 -1
- package/dist/{chunk-JLO2O5R4.js → chunk-LL4C2NXG.js} +5388 -5249
- package/dist/chunk-LL4C2NXG.js.map +1 -0
- package/dist/{chunk-DPFQWIZJ.cjs → chunk-LQ2R7IA2.cjs} +32 -32
- package/dist/{chunk-DPFQWIZJ.cjs.map → chunk-LQ2R7IA2.cjs.map} +1 -1
- package/dist/{chunk-P63LOLTB.js → chunk-MI7WNVWX.js} +6 -6
- package/dist/{chunk-BXRB4MQI.cjs → chunk-MKN6S7SU.cjs} +381 -242
- package/dist/chunk-MKN6S7SU.cjs.map +1 -0
- package/dist/{chunk-ZKVARGSO.js → chunk-MOZUJ7IN.js} +3 -3
- package/dist/{chunk-MIFJLUZK.js → chunk-MVY3WDFZ.js} +2 -2
- package/dist/{chunk-FXT2OZ5Q.js → chunk-NJJWY7SO.js} +3 -3
- package/dist/{chunk-H6K73RK2.cjs → chunk-O4XLTA5G.cjs} +40 -40
- package/dist/{chunk-H6K73RK2.cjs.map → chunk-O4XLTA5G.cjs.map} +1 -1
- package/dist/{chunk-MEXZZOBO.js → chunk-P6M5MN3L.js} +9 -9
- package/dist/{chunk-5KBQECAY.js → chunk-PUBL2NCH.js} +2 -2
- package/dist/{chunk-NBJ7L65H.js → chunk-PV3LXEHJ.js} +2 -2
- package/dist/{chunk-XZ6WTSVQ.js → chunk-QJHBYNHI.js} +6 -6
- package/dist/{chunk-Z3ADCYC5.js → chunk-RCBRCZUF.js} +2 -2
- package/dist/{chunk-KP4JRPUE.js → chunk-RJU7YCN3.js} +2 -2
- package/dist/{chunk-GA7BHFXD.cjs → chunk-RLVJISO4.cjs} +77 -77
- package/dist/{chunk-GA7BHFXD.cjs.map → chunk-RLVJISO4.cjs.map} +1 -1
- package/dist/{chunk-OGVIGAMZ.cjs → chunk-SXLEPNY2.cjs} +31 -31
- package/dist/{chunk-OGVIGAMZ.cjs.map → chunk-SXLEPNY2.cjs.map} +1 -1
- package/dist/{chunk-WI4XHZ2B.js → chunk-TFIPJAA5.js} +3 -3
- package/dist/{chunk-HPPCPGBR.cjs → chunk-URU6YKOA.cjs} +29 -29
- package/dist/{chunk-HPPCPGBR.cjs.map → chunk-URU6YKOA.cjs.map} +1 -1
- package/dist/{chunk-WSRPNLTY.cjs → chunk-WQDDSJWN.cjs} +18 -18
- package/dist/{chunk-WSRPNLTY.cjs.map → chunk-WQDDSJWN.cjs.map} +1 -1
- package/dist/{chunk-56OUH3UF.js → chunk-XARCNHWZ.js} +2 -2
- package/dist/{chunk-J7ZJ4KM2.cjs → chunk-YH627NWE.cjs} +4 -4
- package/dist/{chunk-J7ZJ4KM2.cjs.map → chunk-YH627NWE.cjs.map} +1 -1
- package/dist/{chunk-AI7WIW4E.js → chunk-YUQNJXSC.js} +4 -4
- package/dist/components/about-icon.d.ts +9 -0
- package/dist/components/about-icon.d.ts.map +1 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/avatar.d.ts +7 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/case-studies/index.cjs +14 -14
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/chart.d.ts +72 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts +7 -1
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +6 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +5 -3
- package/dist/components/chat/types/api.types.d.ts +22 -4
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/check-circle-icon.d.ts +7 -0
- package/dist/components/check-circle-icon.d.ts.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/claude-icon.d.ts +6 -0
- package/dist/components/claude-icon.d.ts.map +1 -0
- package/dist/components/coins-icon.d.ts +9 -0
- package/dist/components/coins-icon.d.ts.map +1 -0
- package/dist/components/command.d.ts +81 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/community-hub-icon.d.ts +9 -0
- package/dist/components/community-hub-icon.d.ts.map +1 -0
- package/dist/components/community-icon.d.ts +9 -0
- package/dist/components/community-icon.d.ts.map +1 -0
- package/dist/components/compare-icon.d.ts +9 -0
- package/dist/components/compare-icon.d.ts.map +1 -0
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/context-menu.d.ts +28 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/custom-external-link-icon.d.ts +9 -0
- package/dist/components/custom-external-link-icon.d.ts.map +1 -0
- package/dist/components/custom-fork-icon.d.ts +9 -0
- package/dist/components/custom-fork-icon.d.ts.map +1 -0
- package/dist/components/custom-icons.d.ts +8 -0
- package/dist/components/custom-icons.d.ts.map +1 -0
- package/dist/components/custom-license-icon.d.ts +9 -0
- package/dist/components/custom-license-icon.d.ts.map +1 -0
- package/dist/components/custom-star-icon.d.ts +9 -0
- package/dist/components/custom-star-icon.d.ts.map +1 -0
- package/dist/components/custom-time-icon.d.ts +9 -0
- package/dist/components/custom-time-icon.d.ts.map +1 -0
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/donut-icon.d.ts +4 -0
- package/dist/components/donut-icon.d.ts.map +1 -0
- package/dist/components/edit-profile-icon.d.ts +7 -0
- package/dist/components/edit-profile-icon.d.ts.map +1 -0
- package/dist/components/elestio-logo.d.ts +9 -0
- package/dist/components/elestio-logo.d.ts.map +1 -0
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/empty-vendor-icon.d.ts +7 -0
- package/dist/components/empty-vendor-icon.d.ts.map +1 -0
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/features/provider-button.d.ts +1 -1
- package/dist/components/features/provider-button.d.ts.map +1 -1
- package/dist/components/flamingo-logo.d.ts +9 -0
- package/dist/components/flamingo-logo.d.ts.map +1 -0
- package/dist/components/form.d.ts +26 -0
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/github-icon.d.ts +9 -0
- package/dist/components/github-icon.d.ts.map +1 -0
- package/dist/components/google-logo.d.ts +5 -0
- package/dist/components/google-logo.d.ts.map +1 -0
- package/dist/components/hamburger-icon.d.ts +9 -0
- package/dist/components/hamburger-icon.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +25 -25
- package/dist/components/help-center-pages/index.js +16 -16
- package/dist/components/hubspot-icon.d.ts +7 -0
- package/dist/components/hubspot-icon.d.ts.map +1 -0
- package/dist/components/icon-utils.d.ts +7 -0
- package/dist/components/icon-utils.d.ts.map +1 -0
- package/dist/components/icons/apple-icon.d.ts +10 -0
- package/dist/components/icons/apple-icon.d.ts.map +1 -0
- package/dist/components/icons/index.cjs +4 -2
- package/dist/components/icons/index.cjs.map +1 -1
- package/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.d.ts.map +1 -1
- package/dist/components/icons/index.js +3 -1
- package/dist/components/index.cjs +222 -266
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +374 -418
- package/dist/components/index.js.map +1 -1
- package/dist/components/interactive-wrapper.d.ts +84 -0
- package/dist/components/interactive-wrapper.d.ts.map +1 -0
- package/dist/components/join-waitlist-button-stub.d.ts +10 -0
- package/dist/components/join-waitlist-button-stub.d.ts.map +1 -0
- package/dist/components/made-with-love.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +41 -41
- package/dist/components/meeting-scheduler/index.js +5 -5
- package/dist/components/menu-icon.d.ts +9 -0
- package/dist/components/menu-icon.d.ts.map +1 -0
- package/dist/components/minus-circle-icon.d.ts +7 -0
- package/dist/components/minus-circle-icon.d.ts.map +1 -0
- package/dist/components/moon-icon.d.ts +9 -0
- package/dist/components/moon-icon.d.ts.map +1 -0
- package/dist/components/ms-icon.d.ts +9 -0
- package/dist/components/ms-icon.d.ts.map +1 -0
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/open-source-features.d.ts +1 -1
- package/dist/components/open-source-features.d.ts.map +1 -1
- package/dist/components/open-source-icon.d.ts +9 -0
- package/dist/components/open-source-icon.d.ts.map +1 -0
- package/dist/components/openframe-logo.d.ts +7 -0
- package/dist/components/openframe-logo.d.ts.map +1 -0
- package/dist/components/openmsp-logo.d.ts +11 -0
- package/dist/components/openmsp-logo.d.ts.map +1 -0
- package/dist/components/plus-circle-icon.d.ts +9 -0
- package/dist/components/plus-circle-icon.d.ts.map +1 -0
- package/dist/components/progress.d.ts +7 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/provider-button.d.ts +10 -0
- package/dist/components/provider-button.d.ts.map +1 -0
- package/dist/components/reddit-icon.d.ts +10 -0
- package/dist/components/reddit-icon.d.ts.map +1 -0
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/resizable.d.ts +24 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/scroll-area.d.ts +13 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/send-icon.d.ts +7 -0
- package/dist/components/send-icon.d.ts.map +1 -0
- package/dist/components/separator.d.ts +5 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/skeleton.d.ts +4 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/slack-icon.d.ts +9 -0
- package/dist/components/slack-icon.d.ts.map +1 -0
- package/dist/components/slider.d.ts +5 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/smooth-accordion.d.ts +12 -0
- package/dist/components/smooth-accordion.d.ts.map +1 -0
- package/dist/components/steps.d.ts +17 -0
- package/dist/components/steps.d.ts.map +1 -0
- package/dist/components/sun-icon.d.ts +9 -0
- package/dist/components/sun-icon.d.ts.map +1 -0
- package/dist/components/switch.d.ts +5 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/textarea.d.ts +6 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/tickets/index.js +7 -7
- package/dist/components/ui/index.cjs +6 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +5 -3
- package/dist/components/ui/pagination-stub.d.ts +6 -0
- package/dist/components/ui/pagination-stub.d.ts.map +1 -0
- package/dist/components/ui/responsive-icons-block-stub.d.ts +7 -0
- package/dist/components/ui/responsive-icons-block-stub.d.ts.map +1 -0
- package/dist/components/user-icon.d.ts +9 -0
- package/dist/components/user-icon.d.ts.map +1 -0
- package/dist/components/vendor-directory-icon.d.ts +9 -0
- package/dist/components/vendor-directory-icon.d.ts.map +1 -0
- package/dist/components/vendors-icon.d.ts +9 -0
- package/dist/components/vendors-icon.d.ts.map +1 -0
- package/dist/components/why-it-matters.d.ts +1 -1
- package/dist/components/why-it-matters.d.ts.map +1 -1
- package/dist/components/x-icon.d.ts +9 -0
- package/dist/components/x-icon.d.ts.map +1 -0
- package/dist/components/x-logo.d.ts +7 -0
- package/dist/components/x-logo.d.ts.map +1 -0
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +8 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -3
- package/package.json +1 -1
- package/src/components/about-icon.tsx +29 -0
- package/src/components/aspect-ratio.tsx +7 -0
- package/src/components/avatar.tsx +40 -0
- package/src/components/chart.tsx +364 -0
- package/src/components/chat/chat-container.tsx +1 -1
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +11 -4
- package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +71 -6
- package/src/components/chat/types/api.types.ts +22 -4
- package/src/components/chat/utils/__tests__/history-merge.test.ts +99 -0
- package/src/components/check-circle-icon.tsx +29 -0
- package/src/components/checkbox.tsx +30 -0
- package/src/components/claude-icon.tsx +24 -0
- package/src/components/coins-icon.tsx +29 -0
- package/src/components/command.tsx +153 -0
- package/src/components/community-hub-icon.tsx +27 -0
- package/src/components/community-icon.tsx +27 -0
- package/src/components/compare-icon.tsx +27 -0
- package/src/components/context-menu.tsx +200 -0
- package/src/components/custom-external-link-icon.tsx +33 -0
- package/src/components/custom-fork-icon.tsx +33 -0
- package/src/components/custom-icons.tsx +47 -0
- package/src/components/custom-license-icon.tsx +33 -0
- package/src/components/custom-star-icon.tsx +29 -0
- package/src/components/custom-time-icon.tsx +33 -0
- package/src/components/donut-icon.tsx +21 -0
- package/src/components/edit-profile-icon.tsx +23 -0
- package/src/components/elestio-logo.tsx +67 -0
- package/src/components/empty-vendor-icon.tsx +44 -0
- package/src/components/features/auth-providers-list.tsx +1 -1
- package/src/components/features/platform-badge.tsx +2 -2
- package/src/components/features/provider-button.tsx +6 -2
- package/src/components/flamingo-logo.tsx +27 -0
- package/src/components/form.tsx +138 -0
- package/src/components/github-icon.tsx +26 -0
- package/src/components/google-logo.tsx +32 -0
- package/src/components/hamburger-icon.tsx +29 -0
- package/src/components/hubspot-icon.tsx +20 -0
- package/src/components/icon-utils.tsx +36 -0
- package/src/components/icons/apple-icon.tsx +30 -0
- package/src/components/icons/index.ts +1 -0
- package/src/components/interactive-wrapper.tsx +336 -0
- package/src/components/join-waitlist-button-stub.tsx +30 -0
- package/src/components/loading/openmsp-heartbeat.tsx +1 -1
- package/src/components/made-with-love.tsx +3 -4
- package/src/components/menu-icon.tsx +22 -0
- package/src/components/minus-circle-icon.tsx +28 -0
- package/src/components/moon-icon.tsx +26 -0
- package/src/components/ms-icon.tsx +31 -0
- package/src/components/open-source-features.tsx +1 -1
- package/src/components/open-source-icon.tsx +27 -0
- package/src/components/openframe-logo.tsx +46 -0
- package/src/components/openmsp-logo.tsx +36 -0
- package/src/components/plus-circle-icon.tsx +30 -0
- package/src/components/progress.tsx +27 -0
- package/src/components/provider-button.tsx +40 -0
- package/src/components/reddit-icon.tsx +50 -0
- package/src/components/resizable.tsx +45 -0
- package/src/components/scroll-area.tsx +49 -0
- package/src/components/send-icon.tsx +26 -0
- package/src/components/separator.tsx +22 -0
- package/src/components/skeleton.tsx +8 -0
- package/src/components/slack-icon.tsx +43 -0
- package/src/components/slider.tsx +28 -0
- package/src/components/smooth-accordion.tsx +124 -0
- package/src/components/steps.tsx +98 -0
- package/src/components/sun-icon.tsx +27 -0
- package/src/components/switch.tsx +29 -0
- package/src/components/textarea.tsx +22 -0
- package/src/components/ui/pagination-stub.tsx +38 -0
- package/src/components/ui/responsive-icons-block-stub.tsx +14 -0
- package/src/components/user-icon.tsx +33 -0
- package/src/components/vendor-directory-icon.tsx +27 -0
- package/src/components/vendor-tag.tsx +1 -1
- package/src/components/vendors-icon.tsx +27 -0
- package/src/components/why-it-matters.tsx +1 -1
- package/src/components/x-icon.tsx +29 -0
- package/src/components/x-logo.tsx +22 -0
- package/dist/chunk-BXRB4MQI.cjs.map +0 -1
- package/dist/chunk-JLO2O5R4.js.map +0 -1
- package/dist/chunk-NJADHL2G.cjs.map +0 -1
- package/dist/chunk-XURRAFIB.js.map +0 -1
- /package/dist/{chunk-FS3YSNSU.js.map → chunk-GS4HJA2G.js.map} +0 -0
- /package/dist/{chunk-43ZZYJ3M.js.map → chunk-KRBH3PI4.js.map} +0 -0
- /package/dist/{chunk-P63LOLTB.js.map → chunk-MI7WNVWX.js.map} +0 -0
- /package/dist/{chunk-ZKVARGSO.js.map → chunk-MOZUJ7IN.js.map} +0 -0
- /package/dist/{chunk-MIFJLUZK.js.map → chunk-MVY3WDFZ.js.map} +0 -0
- /package/dist/{chunk-FXT2OZ5Q.js.map → chunk-NJJWY7SO.js.map} +0 -0
- /package/dist/{chunk-MEXZZOBO.js.map → chunk-P6M5MN3L.js.map} +0 -0
- /package/dist/{chunk-5KBQECAY.js.map → chunk-PUBL2NCH.js.map} +0 -0
- /package/dist/{chunk-NBJ7L65H.js.map → chunk-PV3LXEHJ.js.map} +0 -0
- /package/dist/{chunk-XZ6WTSVQ.js.map → chunk-QJHBYNHI.js.map} +0 -0
- /package/dist/{chunk-Z3ADCYC5.js.map → chunk-RCBRCZUF.js.map} +0 -0
- /package/dist/{chunk-KP4JRPUE.js.map → chunk-RJU7YCN3.js.map} +0 -0
- /package/dist/{chunk-WI4XHZ2B.js.map → chunk-TFIPJAA5.js.map} +0 -0
- /package/dist/{chunk-56OUH3UF.js.map → chunk-XARCNHWZ.js.map} +0 -0
- /package/dist/{chunk-AI7WIW4E.js.map → chunk-YUQNJXSC.js.map} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
export const OpenFrameLogo = ({ className, lowerPathColor, upperPathColor, ...props }: { className?: string, lowerPathColor?: string, upperPathColor?: string } & React.SVGProps<SVGSVGElement>) => {
|
|
4
|
+
return (
|
|
5
|
+
<svg
|
|
6
|
+
{...props}
|
|
7
|
+
className={className}
|
|
8
|
+
width="32"
|
|
9
|
+
height="32"
|
|
10
|
+
viewBox="0 0 32 32"
|
|
11
|
+
fill="none"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
style={{
|
|
14
|
+
'--fill-0': 'currentColor',
|
|
15
|
+
...props.style
|
|
16
|
+
} as React.CSSProperties}
|
|
17
|
+
>
|
|
18
|
+
<g>
|
|
19
|
+
<g>
|
|
20
|
+
{/* White squares - top right, bottom left, bottom right, bottom center */}
|
|
21
|
+
<path
|
|
22
|
+
d="M21.3333 16.5333C21.3333 16.2388 21.5721 16 21.8667 16H26.1333C26.4279 16 26.6667 16.2388 26.6667 16.5333V20.8C26.6667 21.0946 26.4279 21.3333 26.1333 21.3333H21.8667C21.5721 21.3333 21.3333 21.0946 21.3333 20.8V16.5333Z"
|
|
23
|
+
fill={lowerPathColor ?? '#ffffff'}
|
|
24
|
+
/>
|
|
25
|
+
<path
|
|
26
|
+
d="M16 21.8667C16 21.5721 16.2388 21.3333 16.5333 21.3333H20.8C21.0946 21.3333 21.3333 21.5721 21.3333 21.8667V26.1333C21.3333 26.4279 21.0946 26.6667 20.8 26.6667H16.5333C16.2388 26.6667 16 26.4279 16 26.1333V21.8667Z"
|
|
27
|
+
fill={lowerPathColor ?? '#ffffff'}
|
|
28
|
+
/>
|
|
29
|
+
<path
|
|
30
|
+
d="M26.6667 21.8667C26.6667 21.5721 26.9054 21.3333 27.2 21.3333H31.4667C31.7612 21.3333 32 21.5721 32 21.8667V26.1333C32 26.4279 31.7612 26.6667 31.4667 26.6667H27.2C26.9054 26.6667 26.6667 26.4279 26.6667 26.1333V21.8667Z"
|
|
31
|
+
fill={lowerPathColor ?? '#ffffff'}
|
|
32
|
+
/>
|
|
33
|
+
<path
|
|
34
|
+
d="M21.3333 27.2C21.3333 26.9054 21.5721 26.6667 21.8667 26.6667H26.1333C26.4279 26.6667 26.6667 26.9054 26.6667 27.2V31.4667C26.6667 31.7612 26.4279 32 26.1333 32H21.8667C21.5721 32 21.3333 31.7612 21.3333 31.4667V27.2Z"
|
|
35
|
+
fill={lowerPathColor ?? '#ffffff'}
|
|
36
|
+
/>
|
|
37
|
+
</g>
|
|
38
|
+
{/* Black frame/border */}
|
|
39
|
+
<path
|
|
40
|
+
d="M30.9333 0H1.06667C0.477563 0 0 0.477564 0 1.06667V30.9333C0 31.5224 0.477563 32 1.06667 32H14.9333C15.5224 32 16 31.5224 16 30.9333V27.7333C16 27.1442 15.5224 26.6667 14.9333 26.6667H5.86667C5.57211 26.6667 5.33333 26.4279 5.33333 26.1333V5.86667C5.33333 5.57211 5.57211 5.33333 5.86667 5.33333H26.1333C26.4279 5.33333 26.6667 5.57212 26.6667 5.86667V14.9333C26.6667 15.5224 27.1442 16 27.7333 16H30.9333C31.5224 16 32 15.5224 32 14.9333V1.06667C32 0.477563 31.5224 0 30.9333 0Z"
|
|
41
|
+
fill={upperPathColor ?? '#1A1A1A'}
|
|
42
|
+
/>
|
|
43
|
+
</g>
|
|
44
|
+
</svg>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
interface OpenmspLogoProps extends React.SVGProps<SVGSVGElement> {
|
|
4
|
+
className?: string;
|
|
5
|
+
frontBubbleColor?: string;
|
|
6
|
+
innerFrontBubbleColor?: string;
|
|
7
|
+
backBubbleColor?: string;
|
|
8
|
+
color?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function OpenmspLogo({ className = '', frontBubbleColor = '#000000', innerFrontBubbleColor = '#ffffff', backBubbleColor = '#ffffff', ...props }: OpenmspLogoProps) {
|
|
12
|
+
return (
|
|
13
|
+
<svg
|
|
14
|
+
width="97"
|
|
15
|
+
height="96"
|
|
16
|
+
viewBox="0 0 97 96"
|
|
17
|
+
fill="none"
|
|
18
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
19
|
+
className={className}
|
|
20
|
+
{...props}
|
|
21
|
+
>
|
|
22
|
+
<path
|
|
23
|
+
d="M73.933 0C75.7003 0 77.133 1.43269 77.133 3.2V54.4C77.133 56.1673 75.7003 57.6 73.933 57.6H3.53301C1.7657 57.6 0.333008 56.1673 0.333008 54.4V3.2C0.333008 1.43269 1.7657 0 3.53301 0H73.933ZM10.1076 47.6494C10.1076 48.0912 10.4658 48.4494 10.9076 48.4494H66.5584C67.0002 48.4494 67.3584 48.0912 67.3584 47.6494V9.95059C67.3584 9.50876 67.0002 9.15059 66.5584 9.15059H10.9076C10.4658 9.15059 10.1076 9.50876 10.1076 9.95059V47.6494Z"
|
|
24
|
+
fill={backBubbleColor} />
|
|
25
|
+
<path
|
|
26
|
+
d="M19.5332 22.4C19.5332 20.6326 20.9659 19.2 22.7332 19.2H93.1332C94.9005 19.2 96.3332 20.6326 96.3332 22.4V76.8C96.3332 78.2222 95.3945 79.4737 94.0292 79.8719L39.7572 95.7013C39.2452 95.8506 38.7332 95.4666 38.7332 94.9333V80C38.7332 79.5581 38.375 79.2 37.9332 79.2H22.7332C20.9659 79.2 19.5332 77.7673 19.5332 76V22.4Z"
|
|
27
|
+
fill={innerFrontBubbleColor} />
|
|
28
|
+
<path
|
|
29
|
+
d="M93.1332 19.2C94.9005 19.2 96.3332 20.6326 96.3332 22.4V76.8C96.3332 78.2222 95.3945 79.4737 94.0292 79.8719L39.7572 95.7013C39.2452 95.8506 38.7332 95.4666 38.7332 94.9333V80C38.7332 79.5581 38.375 79.2 37.9332 79.2H22.7332C20.9659 79.2 19.5332 77.7673 19.5332 76V22.4C19.5332 20.6326 20.9659 19.2 22.7332 19.2H93.1332ZM48.3377 82.1286C48.3355 82.6633 48.8484 83.0497 49.3617 82.9L86.1572 72.1672C86.4985 72.0676 86.7332 71.7547 86.7332 71.3992V29.6C86.7332 29.1581 86.375 28.8 85.9332 28.8H29.9332C29.4914 28.8 29.1332 29.1581 29.1332 29.6V68.8C29.1332 69.2418 29.4914 69.6 29.9332 69.6H47.5869C48.03 69.6 48.3887 69.9602 48.3869 70.4033L48.3377 82.1286Z"
|
|
30
|
+
fill={frontBubbleColor} />
|
|
31
|
+
<circle
|
|
32
|
+
cx="45.1334" cy="44.8" r="6.4"
|
|
33
|
+
fill={frontBubbleColor} />
|
|
34
|
+
</svg>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
interface PlusCircleIconProps extends React.SVGProps<SVGSVGElement> {
|
|
4
|
+
className?: string
|
|
5
|
+
whiteOverlay?: boolean
|
|
6
|
+
iconSize?: number
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function PlusCircleIcon({ className, whiteOverlay = false, iconSize = 24, ...props }: PlusCircleIconProps) {
|
|
10
|
+
return (
|
|
11
|
+
<svg
|
|
12
|
+
width={iconSize}
|
|
13
|
+
height={iconSize}
|
|
14
|
+
viewBox="0 0 24 24"
|
|
15
|
+
fill="none"
|
|
16
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
17
|
+
className={className}
|
|
18
|
+
{...props}
|
|
19
|
+
>
|
|
20
|
+
<path
|
|
21
|
+
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"
|
|
22
|
+
fill={whiteOverlay ? "white" : "#5EA62E"}
|
|
23
|
+
/>
|
|
24
|
+
<path
|
|
25
|
+
d="M10.8755 15.9995V13.1255H8C7.37884 13.1255 6.87526 12.6216 6.875 12.0005C6.875 11.3792 7.37868 10.8755 8 10.8755H10.8755V8C10.8755 7.37868 11.3792 6.875 12.0005 6.875C12.6216 6.87526 13.1255 7.37884 13.1255 8V10.8755H15.9995L16.1152 10.8813C16.6824 10.9391 17.1245 11.4181 17.1245 12.0005C17.1243 12.5827 16.6823 13.062 16.1152 13.1196L15.9995 13.1255H13.1255V15.9995C13.1255 16.6207 12.6216 17.1242 12.0005 17.1245C11.3792 17.1245 10.8755 16.6208 10.8755 15.9995Z"
|
|
26
|
+
fill={whiteOverlay ? "white" : "#5EA62E"}
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -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';
|