@psnext/design-system 1.0.0
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/README.md +126 -0
- package/dist/AiChatPanel.cjs +1603 -0
- package/dist/AiChatPanel.cjs.map +1 -0
- package/dist/AiChatPanel.js +1526 -0
- package/dist/AiChatPanel.js.map +1 -0
- package/dist/BodhiLogo.cjs +240 -0
- package/dist/BodhiLogo.cjs.map +1 -0
- package/dist/BodhiLogo.js +194 -0
- package/dist/BodhiLogo.js.map +1 -0
- package/dist/Skeleton.cjs +19 -0
- package/dist/Skeleton.cjs.map +1 -0
- package/dist/Skeleton.js +14 -0
- package/dist/Skeleton.js.map +1 -0
- package/dist/SustainLogo.cjs +415 -0
- package/dist/SustainLogo.cjs.map +1 -0
- package/dist/SustainLogo.js +378 -0
- package/dist/SustainLogo.js.map +1 -0
- package/dist/contexts/index.cjs +60 -0
- package/dist/contexts/index.cjs.map +1 -0
- package/dist/contexts/index.d.cts +23 -0
- package/dist/contexts/index.d.cts.map +1 -0
- package/dist/contexts/index.d.ts +23 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +58 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/index.cjs +273 -0
- package/dist/index.d.cts +1440 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1440 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index2.d.cts +16 -0
- package/dist/index2.d.cts.map +1 -0
- package/dist/index2.d.ts +16 -0
- package/dist/index2.d.ts.map +1 -0
- package/dist/layouts/index.cjs +13 -0
- package/dist/layouts/index.d.cts +133 -0
- package/dist/layouts/index.d.cts.map +1 -0
- package/dist/layouts/index.d.ts +133 -0
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/layouts/index.js +2 -0
- package/dist/layouts.cjs +3245 -0
- package/dist/layouts.cjs.map +1 -0
- package/dist/layouts.js +3180 -0
- package/dist/layouts.js.map +1 -0
- package/dist/patterns/index.cjs +7375 -0
- package/dist/patterns/index.cjs.map +1 -0
- package/dist/patterns/index.d.cts +418 -0
- package/dist/patterns/index.d.cts.map +1 -0
- package/dist/patterns/index.d.ts +418 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +7344 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/primitives/index.cjs +256 -0
- package/dist/primitives/index.d.cts +2 -0
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.js +5 -0
- package/dist/primitives.cjs +4292 -0
- package/dist/primitives.cjs.map +1 -0
- package/dist/primitives.js +2807 -0
- package/dist/primitives.js.map +1 -0
- package/dist/styles/base/colors.css +300 -0
- package/dist/styles/base/component-tokens.css +240 -0
- package/dist/styles/base/elevation.css +7 -0
- package/dist/styles/base/fonts.css +14 -0
- package/dist/styles/base/global.css +305 -0
- package/dist/styles/base/radius.css +22 -0
- package/dist/styles/base/semantic-aliases.css +53 -0
- package/dist/styles/base/spacing.css +33 -0
- package/dist/styles/base/typography.css +48 -0
- package/dist/styles/generated/bodhi-vars.css +34 -0
- package/dist/styles/generated/dark.css +87 -0
- package/dist/styles/generated/light.css +87 -0
- package/dist/styles/generated/slingshot-vars.css +34 -0
- package/dist/styles/generated/sustain-vars.css +34 -0
- package/dist/styles/index.css +32 -0
- package/dist/styles/theme.css +65 -0
- package/dist/styles/themes/bodhi.css +166 -0
- package/dist/styles/themes/slingshot.css +144 -0
- package/dist/styles/themes/sustain.css +130 -0
- package/package.json +131 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiChatPanel.js","names":["svgPaths","svgPaths"],"sources":["../src/patterns/AccountProjectSwitcher/svg-bjgn069b5k.ts","../src/patterns/AccountProjectSwitcher/AccountProjectSwitcher.tsx","../src/patterns/ProductSwitcher/ProductSwitcher.tsx","../src/patterns/AiChatPanel/right-panel-context.tsx","../src/patterns/AiChatPanel/svg-9ebyigi4zl.ts","../src/patterns/AiChatPanel/AiChatPanel.tsx","../src/patterns/AiChatPanel/activity-context.tsx"],"sourcesContent":["export default {\n p12b7c400:\n \"M25.0353 11.3671C25.7847 12.1326 25.7847 13.3723 25.0353 14.1359C24.2859 14.8994 23.0722 14.9014 22.3247 14.1359C21.5771 13.3704 21.5753 12.1307 22.3247 11.3671C23.0741 10.6017 24.2878 10.6017 25.0353 11.3671Z\",\n p168d8900:\n \"M2.81315 6.81311C3.00841 6.61785 3.32492 6.61785 3.52018 6.81311C3.71544 7.00838 3.71544 7.32488 3.52018 7.52014L1.20703 9.8333L3.52018 12.1464C3.71544 12.3417 3.71544 12.6582 3.52018 12.8535C3.32492 13.0487 3.00841 13.0487 2.81315 12.8535L0.146484 10.1868C-0.0487777 9.99155 -0.0487777 9.67504 0.146484 9.47978L2.81315 6.81311Z\",\n p176ffd80:\n \"M34.6619 2.22648C33.9384 2.22648 33.2538 2.5281 32.7581 3.05942V2.22648H32.0224V8.84232H32.7581V4.92419C32.7832 3.85861 33.6367 2.99117 34.6619 2.99117C35.687 2.99117 36.552 3.85714 36.552 4.92198V8.84232H37.3006V4.92198C37.3006 3.43516 36.1166 2.22574 34.6619 2.22574\",\n p198d14a0:\n \"M4.58649 12.7439C4.85661 12.0799 5.60227 11.7657 6.25413 12.0397C6.90412 12.3156 7.21176 13.0773 6.94164 13.7412C6.67151 14.4051 5.92586 14.7193 5.27587 14.4434C4.62588 14.1675 4.31824 13.4059 4.58649 12.7419\",\n p19a9df00:\n \"M4.75708 3.5C4.75708 2.65314 4.98412 1.82984 5.40357 1.11068C4.70712 1.25236 4.04133 1.52838 3.44458 1.92708C2.54012 2.53142 1.83483 3.3902 1.41854 4.39518C1.00228 5.40014 0.893205 6.50606 1.10539 7.57292C1.31761 8.63981 1.84141 9.62013 2.6106 10.3893C3.37979 11.1585 4.36011 11.6823 5.42701 11.8945C6.49387 12.1067 7.59978 11.9976 8.60474 11.5814C9.60972 11.1651 10.4685 10.4598 11.0728 9.55534C11.4716 8.95846 11.7469 8.29233 11.8886 7.5957C11.1695 8.01507 10.3467 8.24284 9.49992 8.24284C8.2421 8.24284 7.03582 7.74293 6.14641 6.85352C5.25699 5.9641 4.75708 4.75783 4.75708 3.5ZM5.75708 3.5C5.75708 4.49261 6.15156 5.4446 6.85344 6.14648C7.55532 6.84836 8.50731 7.24284 9.49992 7.24284C10.4925 7.24284 11.4445 6.84836 12.1464 6.14648C12.2894 6.0035 12.5045 5.9604 12.6913 6.03776C12.8782 6.11515 12.9999 6.29777 12.9999 6.5C12.9999 7.78558 12.6185 9.04241 11.9042 10.1113C11.19 11.1801 10.1751 12.0133 8.98755 12.5052C7.79983 12.9972 6.49257 13.1258 5.23169 12.875C3.97088 12.6242 2.81257 12.0054 1.90357 11.0964C0.994566 10.1874 0.375747 9.02905 0.124923 7.76823C-0.125881 6.50735 0.00274539 5.20009 0.494715 4.01237C0.986662 2.8248 1.81982 1.80989 2.8886 1.0957C3.95751 0.381474 5.21435 5.02751e-07 6.49992 0C6.70215 0 6.88477 0.121757 6.96216 0.308594C7.03952 0.495419 6.99643 0.710529 6.85344 0.853516C6.15156 1.5554 5.75708 2.50739 5.75708 3.5Z\",\n p19b24080:\n \"M72.0375 22.6361C72.0375 24.4252 73.4068 25.824 75.136 25.824C76.8652 25.824 78.2568 24.4018 78.2568 22.6823C78.2568 20.9628 76.8422 19.5406 75.136 19.5406C73.4298 19.5406 72.0375 20.9856 72.0375 22.6368V22.6361ZM69.1897 22.5898C69.1897 19.5751 71.521 16.6961 75.1583 16.6961C78.4091 16.6961 81.0823 19.1729 81.0823 22.6588C81.0823 25.9084 78.7733 28.6443 75.0915 28.6443C71.4096 28.6443 69.1904 25.6046 69.1904 22.5898H69.1897Z\",\n p1c738580:\n \"M25.0372 25.5739C24.2878 26.3394 23.0741 26.3394 22.3247 25.5739C21.5753 24.8085 21.5753 23.5688 22.3247 22.8052C23.0741 22.0397 24.2859 22.0397 25.0353 22.8052C25.7847 23.5707 25.7847 24.8104 25.0353 25.5739\",\n p1cc79400:\n \"M54.8878 17.8422L53.3612 19.6769C52.7326 19.1955 52.1262 18.943 51.5429 18.943C50.869 18.943 50.3532 19.3562 50.3532 19.8831C50.3532 20.41 50.6449 20.617 52.104 21.1446C54.6637 22.062 55.4496 22.8421 55.4496 24.6305C55.4496 26.9929 53.5408 28.6668 50.8467 28.6668C49.1628 28.6668 47.7712 28.0474 46.6706 26.8094L48.2648 24.883C49.1175 25.7548 49.9933 26.2128 50.869 26.2128C51.655 26.2128 52.2613 25.6851 52.2613 24.9747C52.2613 24.3553 52.0142 24.0801 50.5773 23.5525C47.9056 22.5889 47.3667 21.855 47.3667 20.2273C47.3667 18.0484 49.0952 16.6497 51.2957 16.6497C52.6428 16.6497 53.8325 17.0394 54.8878 17.8422Z\",\n p1d6d7f80:\n \"M8.14648 0.146447C8.34175 -0.0488155 8.65825 -0.0488155 8.85352 0.146447L11.5202 2.81311C11.7154 3.00838 11.7154 3.32488 11.5202 3.52014L8.85352 6.18681C8.65825 6.38207 8.34175 6.38207 8.14648 6.18681C7.95122 5.99155 7.95122 5.67504 8.14648 5.47978L10.4596 3.16663L8.14648 0.853478C7.95122 0.658216 7.95122 0.341709 8.14648 0.146447Z\",\n p1ff1c880:\n \"M21.4593 28.3008V17.063H24.5571V18.4618C25.4551 17.292 26.6003 16.6961 27.9918 16.6961C30.2146 16.6961 32.0782 18.0031 32.0782 21.0303V28.3008H28.9797V22.1312C28.9797 20.2502 28.4631 19.3791 26.892 19.3791C25.3208 19.3791 24.5571 20.3655 24.5571 22.4753V28.3008H21.4593Z\",\n p2008000:\n \"M13.174 22.7703C13.174 24.5132 13.4656 25.5223 14.6108 25.5223C14.7451 25.5223 14.8809 25.4995 15.0375 25.4768V28.2288C14.7006 28.275 14.2968 28.2971 14.0044 28.2971C11.2651 28.2971 10.0754 26.3479 10.0754 23.7566V11.8613H13.174V22.771V22.7703Z\",\n p21215b00:\n \"M12.5026 4.67236C13.1545 4.39836 13.8983 4.71452 14.1684 5.37844C14.4367 6.04236 14.1271 6.804 13.4762 7.078C12.8262 7.352 12.0806 7.03585 11.8123 6.37193C11.5441 5.70609 11.8536 4.94636 12.5036 4.67045\",\n p23f5ac40:\n \"M12.4764 32.2553C11.8264 31.9794 11.5187 31.2177 11.787 30.5538C12.0571 29.8899 12.8028 29.5757 13.4546 29.8497C14.1046 30.1256 14.4123 30.8872 14.1421 31.5511C13.872 32.2151 13.1264 32.5312 12.4764 32.2534\",\n p24988480:\n \"M18.0824 0C8.11124 0 0 8.28513 0 18.4701C0 28.655 8.11124 36.9401 18.0824 36.9401C28.0536 36.9401 36.1648 28.655 36.1648 18.4701C36.1648 8.28513 28.0517 0 18.0824 0Z\",\n p2721b380: \"M21.8142 8.84331H22.5757V2.22673H21.8142V8.84257V8.84331Z\",\n p274a6800:\n \"M17.2812 8.05586C16.0039 8.05586 14.9637 6.98662 14.9119 5.62015V5.51667C14.9119 4.13186 15.9745 3.0039 17.2812 3.0039C18.588 3.0039 19.6499 4.13113 19.6499 5.51667C19.6499 6.90222 18.5873 8.05586 17.2812 8.05586ZM20.4114 5.51741C20.4114 3.70255 19.0069 2.22673 17.2805 2.22673C16.3552 2.22673 15.5017 2.63697 14.9112 3.35983V2.22673H14.149V11.2277H14.9112V7.68893C15.5061 8.41986 16.3602 8.8345 17.2805 8.8345C19.0069 8.8345 20.4114 7.34695 20.4114 5.51741Z\",\n p28366208:\n \"M23.6875 4.68482C24.3375 4.96073 24.6451 5.72238 24.375 6.3863C24.1049 7.05022 23.3592 7.36446 22.7092 7.08854C22.0592 6.81263 21.7516 6.05098 22.0198 5.38706C22.29 4.72314 23.0356 4.40699 23.6856 4.6829\",\n p2a326440:\n \"M8.14645 0.146447C8.34171 -0.0488155 8.65822 -0.0488155 8.85348 0.146447C9.04874 0.341709 9.04874 0.658216 8.85348 0.853478L4.85348 4.85348C4.65822 5.04874 4.34171 5.04874 4.14645 4.85348L0.146447 0.853478C-0.0488155 0.658216 -0.0488155 0.341709 0.146447 0.146447C0.341709 -0.0488155 0.658216 -0.0488155 0.853478 0.146447L4.49996 3.79293L8.14645 0.146447Z\",\n p2da44af0:\n \"M16.172 17.0596H19.2705V28.2973H16.172V17.0596ZM15.8804 13.6148C15.8804 12.583 16.7108 11.7339 17.7209 11.7339C18.731 11.7339 19.5615 12.5823 19.5615 13.6148C19.5615 14.6474 18.731 15.4957 17.7209 15.4957C16.7108 15.4957 15.8804 14.6474 15.8804 13.6148Z\",\n p2e85db80:\n \"M41.2401 8.08449L41.1647 8.10578C41.0921 8.12632 40.9693 8.15054 40.7947 8.15054C40.4886 8.15054 40.3572 7.9524 40.3572 7.48712V2.98263H41.2559V2.22307H40.3572V0.000180664H39.577V2.22234H38.6732V2.9819H39.577V7.50914C39.577 8.0067 39.6646 8.33107 39.8514 8.52849C40.0245 8.73103 40.2904 8.83818 40.6194 8.83818C40.8665 8.83818 41.0856 8.80369 41.2358 8.73984L41.2782 8.72223L41.2401 8.08449Z\",\n p2f623f20:\n \"M45.4121 27.1709L45.379 28.9476C45.328 29.7505 45.2188 30.3721 45.0751 30.797C44.379 32.8841 42.2015 34.3291 39.5297 34.3291C36.3414 34.3291 33.9168 32.2882 33.6703 29.6279H36.993C37.3077 30.9812 38.1827 31.6461 39.5972 31.6461C41.2158 31.6461 42.1605 30.7867 42.3136 29.0151V27.245C38.0203 30.182 33.6509 26.5662 33.6509 22.6591C33.6509 19.4946 35.9017 17.307 38.6317 17.0171C40.0908 17.0171 41.371 17.2695 42.3136 18.4848V17.0171H45.4121V27.1716V27.1709ZM39.3717 19.4932C37.6654 19.4932 36.2961 20.9609 36.2961 22.6121C36.2961 24.3551 37.6209 25.7773 39.3717 25.7773C41.1232 25.7773 42.4695 24.3323 42.4695 22.6356C42.4695 20.9389 41.0779 19.4939 39.3717 19.4939V19.4932Z\",\n p34540040:\n \"M4.66665 10.6667C4.66665 11.0203 4.80722 11.3593 5.05727 11.6094C5.30732 11.8594 5.64636 12 5.99998 12C6.3536 12 6.69264 11.8594 6.94269 11.6094C7.19274 11.3593 7.33331 11.0203 7.33331 10.6667H4.66665ZM9.32355 5.74219C9.27726 5.14395 9.07012 4.56747 8.72199 4.07487C8.32399 3.5118 7.7607 3.08611 7.11066 2.85612C6.84446 2.76186 6.66665 2.50962 6.66665 2.22721V2C6.66665 1.82319 6.59636 1.65367 6.47134 1.52865C6.34631 1.40362 6.17679 1.33333 5.99998 1.33333C5.82317 1.33333 5.65365 1.40362 5.52863 1.52865C5.4036 1.65367 5.33331 1.82319 5.33331 2V2.22721C5.33331 2.50971 5.15499 2.76193 4.88865 2.85612C3.5934 3.31434 2.66665 4.55012 2.66665 6V8.10612C2.66662 8.55232 2.51727 8.9826 2.24868 9.33333H9.75128C9.64447 9.19385 9.55446 9.04192 9.48696 8.87891C9.38544 8.63371 9.3333 8.37085 9.33331 8.10547V6L9.32355 5.74219ZM10.6666 8.10547C10.6666 8.1957 10.6843 8.2851 10.7187 8.36849C10.7533 8.45187 10.804 8.52795 10.8678 8.5918L11.8047 9.52865C11.9953 9.71931 12.0524 10.0061 11.9492 10.2552C11.846 10.5043 11.6029 10.6667 11.3333 10.6667H8.66665C8.66665 11.3739 8.38549 12.052 7.8854 12.5521C7.3853 13.0522 6.70722 13.3333 5.99998 13.3333C5.29274 13.3333 4.61466 13.0522 4.11456 12.5521C3.61447 12.052 3.33331 11.3739 3.33331 10.6667H0.666648C0.397037 10.6667 0.15397 10.5043 0.0507623 10.2552C-0.0524249 10.0061 0.00462818 9.71931 0.195294 9.52865L1.13214 8.5918C1.26099 8.46285 1.33328 8.28783 1.33331 8.10612V6C1.33331 4.13272 2.43038 2.52292 4.013 1.77669C4.06337 1.32845 4.26388 0.907981 4.58592 0.585937C4.96099 0.210865 5.46955 0 5.99998 0C6.53041 0 7.03897 0.210865 7.41404 0.585937C7.73607 0.907963 7.93593 1.32848 7.98631 1.77669C8.7138 2.11911 9.34339 2.64446 9.81053 3.30534C10.3676 4.09349 10.6667 5.03486 10.6666 6V8.10547Z\",\n p34d35380:\n \"M11.1667 9.3333C11.4428 9.3333 11.6667 9.55715 11.6667 9.8333C11.6667 10.1094 11.4428 10.3333 11.1667 10.3333H0.5C0.223858 10.3333 0 10.1094 0 9.8333C0 9.55715 0.223858 9.3333 0.5 9.3333H11.1667Z\",\n p37401480:\n \"M11.1276 11.3671C11.877 10.6017 13.0907 10.6017 13.8383 11.3671C14.5877 12.1326 14.5877 13.3723 13.8383 14.1378C13.0888 14.9033 11.8752 14.9033 11.1276 14.1378C10.3782 13.3723 10.3782 12.1345 11.1276 11.3691\",\n p3895de80:\n \"M11.1276 25.5739C10.3782 24.8085 10.3782 23.5688 11.1276 22.8052C11.877 22.0397 13.0907 22.0397 13.8383 22.8052C14.5877 23.5707 14.5877 24.8104 13.8383 25.5739C13.0888 26.3394 11.8752 26.3394 11.1276 25.5739Z\",\n p38feb400:\n \"M8.21697 17.8422L6.69035 19.6769C6.06173 19.1955 5.45539 18.943 4.87204 18.943C4.19889 18.943 3.68235 19.3562 3.68235 19.8831C3.68235 20.41 3.97403 20.617 5.43384 21.1446C7.99283 22.062 8.77877 22.8421 8.77877 24.6305C8.77877 26.9929 6.87067 28.6668 4.17662 28.6668C2.49266 28.6668 1.10109 28.0474 0.000482818 26.8094L1.59464 24.883C2.44812 25.7548 3.32314 26.2128 4.19889 26.2128C4.98483 26.2128 5.59046 25.6851 5.59046 24.9747C5.59046 24.3553 5.34404 24.0801 3.9065 23.5525C1.23472 22.5889 0.695908 21.855 0.695908 20.2273C0.695908 18.0484 2.42441 16.6497 4.62491 16.6497C5.97193 16.6497 7.16162 17.0394 8.21697 17.8422Z\",\n p3b3b2980:\n \"M27.3486 2.99413C28.465 2.99413 29.4227 3.819 29.6526 4.96531H25.0066C25.2616 3.80066 26.2143 2.99413 27.3479 2.99413H27.3486ZM29.3336 6.93355C28.9184 7.63586 28.1583 8.07252 27.3479 8.07252C26.0885 8.07252 25.0504 7.04363 24.957 5.71679H30.0915C30.3013 5.71679 30.4658 5.56121 30.4658 5.36087V5.30289C30.3315 3.55041 28.9909 2.22871 27.3479 2.22871C25.6151 2.22871 24.2041 3.717 24.2041 5.5458C24.2041 7.37461 25.6144 8.83647 27.3479 8.83647C28.4068 8.83647 29.381 8.2802 29.9579 7.34892L29.3336 6.93355Z\",\n p3d3e9500:\n \"M4.5743 24.1675C4.30605 23.5036 4.61556 22.742 5.26555 22.468C5.91741 22.194 6.66119 22.5101 6.92944 23.174C7.19769 23.8399 6.88817 24.5996 6.23819 24.8755C5.5882 25.1495 4.84254 24.8334 4.5743 24.1694\",\n p3d444a80:\n \"M19.4161 20.9658C18.4247 22.3597 17.7194 24.6149 19.0297 25.9524C19.9189 26.8606 19.2482 28.3666 18.0496 28.3666C16.8509 28.3666 16.1803 26.8606 17.0694 25.9524C18.3797 24.614 17.6763 22.3607 16.683 20.9658C16.5104 20.7234 15.8557 19.9962 15.6363 19.8343C14.2697 18.8217 12.0637 18.1012 10.7543 19.4396C9.86517 20.3478 8.39074 19.6628 8.39074 18.4384C8.39074 17.2141 9.86611 16.5291 10.7543 17.4373C12.0646 18.7757 14.2706 18.0552 15.6363 17.0426C15.8736 16.8663 16.5855 16.1976 16.744 15.9734C17.7354 14.5775 18.4407 12.3261 17.1304 10.9868C16.2412 10.0786 16.9119 8.57255 18.1105 8.57255C19.3092 8.57255 19.9798 10.0795 19.0907 10.9868C17.7804 12.3252 18.4857 14.5785 19.4771 15.9734C19.6497 16.2158 20.3044 16.9429 20.5238 17.1049C21.8904 18.1175 24.0945 18.8379 25.4058 17.4996C26.2949 16.5913 27.7694 17.2763 27.7694 18.5007C27.7694 19.7251 26.2949 20.4101 25.4058 19.5019C24.0955 18.1635 21.8895 18.8839 20.5238 19.8966C20.2865 20.0729 19.5746 20.7416 19.4161 20.9658Z\",\n p4082ae0:\n \"M83.1162 19.7652H81.9042V17.0587H83.1162V13.2286H86.2147V17.0587H88.3699V19.7652H86.2147V23.1139C86.2147 24.8568 86.4166 25.8659 87.5617 25.8659C87.7636 25.8659 87.9655 25.8431 88.1228 25.8204V28.5724C87.7859 28.6186 87.1573 28.6414 86.8203 28.6414C84.418 28.6414 83.1162 26.8295 83.1162 24.2382V19.766V19.7652Z\",\n p6bb7c80:\n \"M22.2011 1.28269C22.4698 1.28269 22.6882 1.05959 22.6882 0.78439C22.6882 0.509188 22.469 0.286092 22.2011 0.286092C21.9331 0.286092 21.7133 0.509188 21.7133 0.78439C21.7133 1.05959 21.9324 1.28269 22.2011 1.28269Z\",\n p6dcdf00:\n \"M23.6622 32.2649C23.0103 32.5389 22.2665 32.2227 21.9964 31.5588C21.7281 30.8949 22.0377 30.1313 22.6876 29.8573C23.3395 29.5833 24.0852 29.8995 24.3534 30.5634C24.6217 31.2292 24.3121 31.989 23.6622 32.2649Z\",\n p70e7000:\n \"M11.1667 2.66663C11.4428 2.66663 11.6667 2.89049 11.6667 3.16663C11.6667 3.44277 11.4428 3.66663 11.1667 3.66663H0.5C0.223858 3.66663 0 3.44277 0 3.16663C0 2.89049 0.223858 2.66663 0.5 2.66663H11.1667Z\",\n p77261c0:\n \"M4.13303 5.64491C4.13303 5.64491 3.93546 5.48713 3.72138 5.39613C3.50801 5.30439 3.20196 5.19798 2.56689 5.03947C2.48068 5.01818 2.39662 4.99984 2.3176 4.97929C1.89302 4.87068 1.55752 4.72464 1.32116 4.5441C1.08624 4.33715 0.998592 4.16543 1.00865 3.93279C1.01943 3.68694 1.16311 3.44844 1.41527 3.26057C1.70192 3.04407 2.12004 2.93619 2.59347 2.95748C3.13012 2.98169 3.53818 3.25543 3.97857 3.58347L4.02095 3.61502L4.57485 3.08811C4.50804 3.02353 4.49511 3.01325 4.30976 2.88336C3.8744 2.58247 3.3399 2.26397 2.62436 2.23241C2.0015 2.20453 1.44545 2.33442 1.01512 2.60962C0.548868 2.93253 0.254318 3.40147 0.24857 3.8983C0.243541 4.2689 0.318255 4.61602 0.681054 4.97268C1.11426 5.39906 1.78813 5.62363 2.40453 5.74545C2.93328 5.84966 3.4218 6.05001 3.6675 6.25843C3.96133 6.53363 4.0655 6.73324 4.0655 7.01945C4.054 7.29392 3.87871 7.55591 3.57913 7.74158C3.27884 7.97128 2.84922 8.09163 2.40093 8.07109C1.8104 8.04467 1.20047 7.78194 0.585506 7.29025L0.54312 7.25576L0 7.76433L0.053881 7.81203C0.76942 8.44316 1.54818 8.78734 2.36789 8.83431C2.98213 8.8622 3.51735 8.71249 4.00659 8.37858C4.51235 8.02118 4.79181 7.56251 4.81408 7.05247C4.83707 6.51014 4.57629 5.97075 4.13303 5.64418\",\n p9e248c0:\n \"M31.5896 12.7707C31.8578 13.4365 31.5483 14.1982 30.8983 14.4722C30.2483 14.7462 29.5027 14.43 29.2325 13.7661C28.9643 13.1022 29.2738 12.3405 29.9238 12.0665C30.5757 11.7925 31.3194 12.1087 31.5896 12.7726\",\n pdd0a600:\n \"M31.5783 24.1953C31.3082 24.8592 30.5625 25.1735 29.9125 24.8976C29.2626 24.6216 28.9549 23.86 29.2232 23.1961C29.4933 22.5322 30.2389 22.2179 30.8889 22.4919C31.5389 22.7678 31.8466 23.5295 31.5764 24.1934\",\n pdf6da80:\n \"M6.65164 5.51741C6.65164 4.13259 7.71418 3.00464 9.02097 3.00464C10.3278 3.00464 11.3903 4.13186 11.3903 5.51741V5.62088C11.34 6.98735 10.299 8.0566 9.02097 8.0566C7.74292 8.0566 6.65164 6.91763 6.65164 5.51741ZM9.02025 8.8345C9.94054 8.8345 10.794 8.41913 11.3889 7.68893V8.84257H12.1511V2.22673H11.3889V3.35983C10.799 2.6377 9.94557 2.22673 9.02025 2.22673C7.29391 2.22673 5.88941 3.70255 5.88941 5.51741C5.88941 7.33227 7.29391 8.8345 9.02025 8.8345Z\",\n pf3a7200:\n \"M60.0288 18.5273C60.9045 17.312 62.0489 16.6927 63.4635 16.6927C65.0354 16.6927 66.0455 17.2893 66.7862 18.2294C67.3702 18.986 67.5498 19.9958 67.5498 21.2338V28.2973H64.452V22.1284C64.452 20.133 63.8909 19.3757 62.3636 19.3757C60.7924 19.3757 60.0295 20.431 60.0295 22.5409V28.2973H56.931V11.7339H60.0295V18.5273H60.0288Z\",\n};\n","import { Building2, Check, FolderKanban, Search } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport svgPaths from \"./svg-bjgn069b5k\";\n\n/* ════════════════════════════════════════════════════════════\n Swap Icon (from Figma SVG)\n ════════════════════════════════════════════════════════════ */\nfunction SwapIcon() {\n return (\n <div className=\"overflow-clip relative shrink-0 size-[16px]\">\n <div className=\"absolute inset-[9.38%_13.54%]\">\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 11.6667 12.9999\"\n >\n <g>\n <path d={svgPaths.p1d6d7f80} fill=\"currentColor\" />\n <path d={svgPaths.p70e7000} fill=\"currentColor\" />\n <path d={svgPaths.p168d8900} fill=\"currentColor\" />\n <path d={svgPaths.p34d35380} fill=\"currentColor\" />\n </g>\n </svg>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Mock Data\n ════════════════════════════════════════════════════════════ */\ninterface Organization {\n id: string;\n name: string;\n initial: string;\n color: string;\n}\n\ninterface Project {\n id: string;\n name: string;\n orgId: string;\n}\n\nconst ORGANIZATIONS: Organization[] = [\n { id: \"org-1\", name: \"Stellar Solutions\", initial: \"S\", color: \"#6366f1\" },\n { id: \"org-2\", name: \"Nebula Corp\", initial: \"N\", color: \"#ec4899\" },\n { id: \"org-3\", name: \"Orbit Labs\", initial: \"O\", color: \"#f59e0b\" },\n { id: \"org-4\", name: \"Quantum Systems\", initial: \"Q\", color: \"#10b981\" },\n];\n\nconst PROJECTS: Project[] = [\n { id: \"proj-1\", name: \"Engineering\", orgId: \"org-1\" },\n { id: \"proj-2\", name: \"project_north_star\", orgId: \"org-1\" },\n { id: \"proj-3\", name: \"Design System\", orgId: \"org-1\" },\n { id: \"proj-4\", name: \"Mobile App\", orgId: \"org-1\" },\n { id: \"proj-5\", name: \"Infrastructure\", orgId: \"org-1\" },\n { id: \"proj-6\", name: \"Analytics\", orgId: \"org-2\" },\n { id: \"proj-7\", name: \"Marketing Site\", orgId: \"org-2\" },\n { id: \"proj-8\", name: \"Core Platform\", orgId: \"org-3\" },\n { id: \"proj-9\", name: \"Research\", orgId: \"org-4\" },\n];\n\n/* ════════════════════════════════════════════════════════════\n Org Avatar\n ════════════════════════════════════════════════════════════ */\nfunction OrgAvatar({ org, size = 28 }: { org: Organization; size?: number }) {\n return (\n <div\n className=\"flex items-center justify-center shrink-0 rounded-[6px]\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n backgroundColor: org.color,\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: size <= 20 ? \"10px\" : \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"1\",\n color: \"#ffffff\",\n }}\n >\n {org.initial}\n </span>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Account Project Switcher\n ════════════════════════════════════════════════════════════ */\nexport function AccountProjectSwitcher() {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedOrg, setSelectedOrg] = useState(ORGANIZATIONS[0]);\n const [selectedProject, setSelectedProject] = useState(PROJECTS[1]); // project_north_star\n const [orgSearch, setOrgSearch] = useState(\"\");\n const [projectSearch, setProjectSearch] = useState(\"\");\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n /* Close on click outside */\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [isOpen]);\n\n /* Close on Escape */\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isOpen]);\n\n /* Reset search on close */\n useEffect(() => {\n if (!isOpen) {\n setOrgSearch(\"\");\n setProjectSearch(\"\");\n }\n }, [isOpen]);\n\n const handleSelectOrg = useCallback((org: Organization) => {\n setSelectedOrg(org);\n /* Auto-select first project for this org */\n const orgProjects = PROJECTS.filter((p) => p.orgId === org.id);\n if (orgProjects.length > 0) {\n setSelectedProject(orgProjects[0]);\n }\n setOrgSearch(\"\");\n }, []);\n\n const handleSelectProject = useCallback((project: Project) => {\n setSelectedProject(project);\n setIsOpen(false);\n }, []);\n\n const filteredOrgs = ORGANIZATIONS.filter((o) =>\n o.name.toLowerCase().includes(orgSearch.toLowerCase()),\n );\n\n const orgProjects = PROJECTS.filter((p) => p.orgId === selectedOrg.id);\n const filteredProjects = orgProjects.filter((p) =>\n p.name.toLowerCase().includes(projectSearch.toLowerCase()),\n );\n\n /* Truncate display text */\n const displayText = `${selectedOrg.name} / ${selectedProject.name}`;\n const truncatedText = displayText.length > 30 ? displayText.slice(0, 27) + \"..\" : displayText;\n\n return (\n <div className=\"relative\">\n {/* ── Trigger Button ── */}\n <button\n ref={triggerRef}\n onClick={() => setIsOpen((v) => !v)}\n className=\"hidden sm:flex items-center justify-center gap-[8px] px-[24px] py-[10px] min-h-[40px] rounded-[9999px] bg-transparent transition-colors cursor-pointer whitespace-nowrap\"\n style={{ color: \"var(--sidebar-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--sidebar-foreground)\",\n }}\n >\n {truncatedText}\n </span>\n <SwapIcon />\n </button>\n\n {/* ── Mobile Trigger (icon only) ── */}\n <button\n onClick={() => setIsOpen((v) => !v)}\n className=\"flex sm:hidden items-center justify-center size-[40px] rounded-full bg-transparent transition-colors cursor-pointer\"\n style={{ color: \"var(--sidebar-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Switch account and project\"\n >\n <SwapIcon />\n </button>\n\n {/* ── Popover ── */}\n {isOpen && (\n <div\n ref={popoverRef}\n className=\"absolute top-[calc(100%+8px)] left-0 z-[100] flex flex-col rounded-[12px] overflow-hidden\"\n style={{\n width: \"340px\",\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 8px 30px rgba(0, 0, 0, 0.12), 0px 2px 8px rgba(0, 0, 0, 0.06)\",\n animation: \"switcher-popover-in 200ms ease-out\",\n }}\n >\n {/* ── Organization Section ── */}\n <div className=\"flex flex-col\">\n {/* Section Header */}\n <div className=\"flex items-center gap-[8px] px-[16px] pt-[14px] pb-[8px]\">\n <Building2\n className=\"size-[14px] shrink-0\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n Organization\n </span>\n </div>\n\n {/* Search */}\n <div className=\"px-[12px] pb-[8px]\">\n <div\n className=\"relative flex items-center rounded-[8px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <Search\n className=\"absolute left-[10px] size-[14px]\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <input\n type=\"text\"\n placeholder=\"Search organizations...\"\n value={orgSearch}\n onChange={(e) => setOrgSearch(e.target.value)}\n className=\"w-full pl-[32px] pr-[10px] py-[7px] bg-transparent outline-none\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n border: \"none\",\n }}\n autoFocus\n />\n </div>\n </div>\n\n {/* Org List */}\n <div\n className=\"flex flex-col px-[8px] pb-[8px] overflow-y-auto\"\n style={{ maxHeight: \"160px\" }}\n >\n {filteredOrgs.length === 0 ? (\n <div className=\"flex items-center justify-center py-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n No organizations found\n </span>\n </div>\n ) : (\n filteredOrgs.map((org) => {\n const isActive = org.id === selectedOrg.id;\n return (\n <button\n key={org.id}\n onClick={() => handleSelectOrg(org)}\n className=\"flex items-center gap-[10px] px-[8px] py-[8px] rounded-[8px] cursor-pointer transition-colors w-full\"\n style={{\n backgroundColor: isActive ? \"var(--accent)\" : \"transparent\",\n }}\n onMouseEnter={(e) => {\n if (!isActive)\n e.currentTarget.style.backgroundColor = \"var(--glass-medium)\";\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n <OrgAvatar org={org} size={28} />\n <span\n className=\"flex-1 min-w-0 text-left\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {org.name}\n </span>\n {isActive && (\n <Check\n className=\"size-[16px] shrink-0\"\n style={{ color: \"var(--foreground)\" }}\n />\n )}\n </button>\n );\n })\n )}\n </div>\n </div>\n\n {/* ── Divider ── */}\n <div\n className=\"mx-[12px]\"\n style={{\n height: \"1px\",\n backgroundColor: \"var(--border)\",\n }}\n />\n\n {/* ── Project Section ── */}\n <div className=\"flex flex-col\">\n {/* Section Header */}\n <div className=\"flex items-center gap-[8px] px-[16px] pt-[14px] pb-[8px]\">\n <FolderKanban\n className=\"size-[14px] shrink-0\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n Project\n </span>\n {/* Badge with project count */}\n <div\n className=\"flex items-center justify-center h-[18px] min-w-[18px] px-[5px] rounded-[9px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: 600,\n lineHeight: \"14px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {orgProjects.length}\n </span>\n </div>\n </div>\n\n {/* Search */}\n <div className=\"px-[12px] pb-[8px]\">\n <div\n className=\"relative flex items-center rounded-[8px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <Search\n className=\"absolute left-[10px] size-[14px]\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <input\n type=\"text\"\n placeholder=\"Search projects...\"\n value={projectSearch}\n onChange={(e) => setProjectSearch(e.target.value)}\n className=\"w-full pl-[32px] pr-[10px] py-[7px] bg-transparent outline-none\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n border: \"none\",\n }}\n />\n </div>\n </div>\n\n {/* Project List */}\n <div\n className=\"flex flex-col px-[8px] pb-[8px] overflow-y-auto\"\n style={{ maxHeight: \"200px\" }}\n >\n {filteredProjects.length === 0 ? (\n <div className=\"flex items-center justify-center py-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n No projects found\n </span>\n </div>\n ) : (\n filteredProjects.map((project) => {\n const isActive = project.id === selectedProject.id;\n return (\n <button\n key={project.id}\n onClick={() => handleSelectProject(project)}\n className=\"flex items-center gap-[10px] px-[8px] py-[8px] rounded-[8px] cursor-pointer transition-colors w-full\"\n style={{\n backgroundColor: isActive ? \"var(--accent)\" : \"transparent\",\n }}\n onMouseEnter={(e) => {\n if (!isActive)\n e.currentTarget.style.backgroundColor = \"var(--glass-medium)\";\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n <div\n className=\"flex items-center justify-center shrink-0 size-[28px] rounded-[6px]\"\n style={{\n backgroundColor: \"var(--muted)\",\n }}\n >\n <FolderKanban\n className=\"size-[14px]\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n </div>\n <span\n className=\"flex-1 min-w-0 text-left\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {project.name}\n </span>\n {isActive && (\n <Check\n className=\"size-[16px] shrink-0\"\n style={{ color: \"var(--foreground)\" }}\n />\n )}\n </button>\n );\n })\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Animation keyframe */}\n <style>{`\n @keyframes switcher-popover-in {\n 0% {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n 100% {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n `}</style>\n </div>\n );\n}\n","import { Brain, Check, ChevronDown, ExternalLink, Leaf, Rocket } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { BodhiLogo } from \"../../primitives/BodhiLogo\";\n\n/* ════════════════════════════════════════════════════════════\n Product Data\n ════════════════════════════════════════════════════════════ */\ninterface Product {\n id: string;\n name: string;\n description: string;\n icon: React.ReactNode;\n accentColor: string;\n}\n\nfunction SlingshotMark() {\n return (\n <div\n className=\"flex items-center justify-center shrink-0 rounded-[8px]\"\n style={{\n width: \"32px\",\n height: \"32px\",\n background: \"linear-gradient(135deg, #EF4444 0%, #DC2626 100%)\",\n }}\n >\n <Rocket className=\"size-[16px]\" style={{ color: \"#ffffff\" }} />\n </div>\n );\n}\n\nfunction BodhiMark() {\n return (\n <div\n className=\"flex items-center justify-center shrink-0 rounded-[8px]\"\n style={{\n width: \"32px\",\n height: \"32px\",\n background: \"linear-gradient(135deg, #8B5CF6 0%, #7C3AED 100%)\",\n }}\n >\n <Brain className=\"size-[16px]\" style={{ color: \"#ffffff\" }} />\n </div>\n );\n}\n\nfunction SustainMark() {\n return (\n <div\n className=\"flex items-center justify-center shrink-0 rounded-[8px]\"\n style={{\n width: \"32px\",\n height: \"32px\",\n background: \"linear-gradient(135deg, #10B981 0%, #059669 100%)\",\n }}\n >\n <Leaf className=\"size-[16px]\" style={{ color: \"#ffffff\" }} />\n </div>\n );\n}\n\nconst PRODUCTS: Product[] = [\n {\n id: \"slingshot\",\n name: \"Slingshot\",\n description: \"Enterprise context & resource management\",\n icon: <SlingshotMark />,\n accentColor: \"#EF4444\",\n },\n {\n id: \"bodhi\",\n name: \"Bodhi\",\n description: \"AI knowledge & insight engine\",\n icon: <BodhiMark />,\n accentColor: \"#8B5CF6\",\n },\n {\n id: \"sustain-ai\",\n name: \"Sustain.ai\",\n description: \"Sustainability intelligence platform\",\n icon: <SustainMark />,\n accentColor: \"#10B981\",\n },\n];\n\n/* ════════════════════════════════════════════════════════════\n Product Switcher\n ════════════════════════════════════════════════════════════ */\ninterface ProductSwitcherProps {\n isDarkMode: boolean;\n}\n\nexport function ProductSwitcher({ isDarkMode }: ProductSwitcherProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedProduct, setSelectedProduct] = useState(PRODUCTS[0]);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n /* Close on click outside */\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [isOpen]);\n\n /* Close on Escape */\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isOpen]);\n\n const handleSelect = (product: Product) => {\n setSelectedProduct(product);\n setIsOpen(false);\n };\n\n return (\n <div className=\"relative flex items-center gap-[8px] shrink-0\">\n {/* Logo */}\n <BodhiLogo isDarkMode={isDarkMode} />\n\n {/* Chevron trigger */}\n <button\n ref={triggerRef}\n onClick={() => setIsOpen((v) => !v)}\n className=\"flex items-center justify-center min-h-[24px] min-w-[24px] p-[4px] rounded-[9999px] bg-transparent transition-all cursor-pointer\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Switch product\"\n >\n <ChevronDown\n className=\"size-[16px] transition-transform\"\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transitionDuration: \"200ms\",\n }}\n />\n </button>\n\n {/* Popover */}\n {isOpen && (\n <div\n ref={popoverRef}\n className=\"absolute top-[calc(100%+10px)] left-0 z-[100] flex flex-col rounded-[12px] overflow-hidden\"\n style={{\n width: \"300px\",\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 8px 30px rgba(0, 0, 0, 0.12), 0px 2px 8px rgba(0, 0, 0, 0.06)\",\n animation: \"product-popover-in 200ms ease-out\",\n }}\n >\n {/* Header */}\n <div className=\"px-[16px] pt-[14px] pb-[10px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n Switch Product\n </span>\n </div>\n\n {/* Product List */}\n <div className=\"flex flex-col px-[8px] pb-[8px]\">\n {PRODUCTS.map((product) => {\n const isActive = product.id === selectedProduct.id;\n return (\n <button\n key={product.id}\n onClick={() => handleSelect(product)}\n className=\"flex items-center gap-[12px] px-[8px] py-[10px] rounded-[8px] cursor-pointer transition-colors w-full\"\n style={{\n backgroundColor: isActive ? \"var(--accent)\" : \"transparent\",\n }}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"var(--glass-medium)\";\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {/* Product Icon */}\n {product.icon}\n\n {/* Name + Description */}\n <div className=\"flex flex-col items-start flex-1 min-w-0 gap-[2px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {product.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n maxWidth: \"100%\",\n }}\n >\n {product.description}\n </span>\n </div>\n\n {/* Checkmark */}\n {isActive && (\n <Check\n className=\"size-[16px] shrink-0\"\n style={{ color: \"var(--foreground)\" }}\n />\n )}\n </button>\n );\n })}\n </div>\n\n {/* Divider */}\n <div\n className=\"mx-[12px]\"\n style={{\n height: \"1px\",\n backgroundColor: \"var(--border)\",\n }}\n />\n\n {/* Footer link */}\n <div className=\"px-[8px] py-[8px]\">\n <button\n className=\"flex items-center gap-[8px] px-[8px] py-[8px] rounded-[8px] cursor-pointer transition-colors w-full\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <ExternalLink className=\"size-[14px]\" style={{ color: \"var(--muted-foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Explore all products\n </span>\n </button>\n </div>\n </div>\n )}\n\n {/* Animation */}\n <style>{`\n @keyframes product-popover-in {\n 0% {\n opacity: 0;\n transform: translateY(-4px) scale(0.98);\n }\n 100% {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n `}</style>\n </div>\n );\n}\n","/* TECH DEBT: App/feature state colocated with this component to keep it out of\n a generic DS contexts bucket. Ideally lifted to the consuming app or passed\n via props so DS components stay presentational. See docs/tech-debt.md. */\nimport { type ReactNode, createContext, useCallback, useContext, useMemo, useState } from \"react\";\n\nexport type RightPanelType = \"activity\" | \"ai-chat\" | null;\n\ninterface RightPanelContextValue {\n /** Which panel is currently open (null = collapsed icons only) */\n activePanel: RightPanelType;\n /** Open a specific panel */\n openPanel: (panel: \"activity\" | \"ai-chat\") => void;\n /** Close whatever panel is open */\n closePanel: () => void;\n /** Toggle a panel (open if closed, close if already open) */\n togglePanel: (panel: \"activity\" | \"ai-chat\") => void;\n /** Whether the entire right sidebar (icons + panel) is visible */\n sidebarVisible: boolean;\n /** Show/hide the entire right sidebar */\n setSidebarVisible: (visible: boolean) => void;\n /** Pending message to be sent to AI chat when it opens */\n pendingMessage: string | null;\n /** Send a message to the AI chat panel (opens it automatically) */\n sendToAIChat: (message: string) => void;\n /** Clear the pending message (called by AI chat panel after consuming it) */\n clearPendingMessage: () => void;\n}\n\nconst RightPanelContext = createContext<RightPanelContextValue | null>(null);\n\nexport function RightPanelProvider({ children }: { children: ReactNode }) {\n const [activePanel, setActivePanel] = useState<RightPanelType>(null);\n const [sidebarVisible, setSidebarVisible] = useState(true);\n const [pendingMessage, setPendingMessage] = useState<string | null>(null);\n\n const openPanel = useCallback((panel: \"activity\" | \"ai-chat\") => {\n setActivePanel(panel);\n }, []);\n\n const closePanel = useCallback(() => {\n setActivePanel(null);\n }, []);\n\n const togglePanel = useCallback((panel: \"activity\" | \"ai-chat\") => {\n setActivePanel((prev) => (prev === panel ? null : panel));\n }, []);\n\n const sendToAIChat = useCallback(\n (message: string) => {\n setPendingMessage(message);\n openPanel(\"ai-chat\");\n },\n [openPanel],\n );\n\n const clearPendingMessage = useCallback(() => {\n setPendingMessage(null);\n }, []);\n\n const value = useMemo(\n () => ({\n activePanel,\n openPanel,\n closePanel,\n togglePanel,\n sidebarVisible,\n setSidebarVisible,\n pendingMessage,\n sendToAIChat,\n clearPendingMessage,\n }),\n [\n activePanel,\n openPanel,\n closePanel,\n togglePanel,\n sidebarVisible,\n pendingMessage,\n sendToAIChat,\n clearPendingMessage,\n ],\n );\n\n return <RightPanelContext.Provider value={value}>{children}</RightPanelContext.Provider>;\n}\n\nexport function useRightPanel() {\n const ctx = useContext(RightPanelContext);\n if (!ctx) throw new Error(\"useRightPanel must be used within RightPanelProvider\");\n return ctx;\n}\n","export default {\n p1104e600:\n \"M9.04215 0.00325521C9.21127 0.0170432 9.37435 0.0723439 9.51742 0.163574L9.5874 0.211589L9.65251 0.266113C9.77872 0.379217 9.87528 0.521388 9.93408 0.680339L9.96094 0.760905L9.96419 0.773112L11.2817 5.88542L11.3249 6.01807C11.3771 6.14644 11.4549 6.26365 11.5535 6.3623C11.6851 6.49381 11.8495 6.58761 12.0296 6.63411L17.1419 7.95166L17.1525 7.9541C17.3448 8.00714 17.5171 8.11434 17.6497 8.26172L17.7043 8.32764L17.7531 8.39762C17.8598 8.56457 17.9174 8.75902 17.9175 8.95833C17.9175 9.18633 17.8424 9.40845 17.7043 9.58984C17.5662 9.77115 17.3722 9.90194 17.1525 9.96256L17.1419 9.96582L12.0296 11.2826C11.8494 11.3291 11.6851 11.4236 11.5535 11.5552C11.422 11.6868 11.3282 11.8511 11.2817 12.0312L9.96338 17.1436C9.96235 17.1475 9.96123 17.1518 9.96012 17.1558C9.8989 17.3745 9.76751 17.5677 9.58659 17.7051C9.40549 17.8425 9.18402 17.9175 8.95671 17.9175C8.72937 17.9175 8.50794 17.8425 8.32682 17.7051C8.14586 17.5677 8.01452 17.3746 7.95329 17.1558C7.95217 17.1518 7.95107 17.1476 7.95003 17.1436L6.63249 12.0312C6.58599 11.8511 6.49221 11.6867 6.36068 11.5552C6.22911 11.4236 6.06476 11.3291 5.8846 11.2826L0.771484 9.96419C0.766745 9.96297 0.761545 9.96227 0.756836 9.96094C0.538941 9.89902 0.347369 9.7673 0.210775 9.58659C0.0741149 9.40574 0 9.18501 0 8.95833C4.50802e-05 8.73179 0.0742267 8.51166 0.210775 8.33089L0.264486 8.26497C0.39565 8.11799 0.56624 8.01072 0.756836 7.95654L0.771484 7.95247L5.8846 6.6333C6.06469 6.58682 6.22911 6.49296 6.36068 6.36149C6.49226 6.22999 6.5859 6.06552 6.63249 5.88542L7.95085 0.773112C7.9519 0.769036 7.95297 0.764959 7.9541 0.760905C8.01535 0.54203 8.14658 0.348974 8.32764 0.211589L8.39762 0.163574C8.56443 0.0572197 8.75853 0 8.95752 0L9.04215 0.00325521ZM7.84342 6.19792L7.84261 6.19873C7.74013 6.59472 7.53374 6.95609 7.24447 7.24528C6.9549 7.53464 6.59269 7.74122 6.19629 7.84342L1.87581 8.95752L6.19629 10.0724C6.59283 10.1747 6.95489 10.3818 7.24447 10.6714C7.53392 10.9609 7.74112 11.3224 7.84342 11.7187L8.95671 16.0392L10.0708 11.7187C10.1731 11.3223 10.3803 10.9609 10.6698 10.6714C10.9593 10.3818 11.3214 10.1747 11.7179 10.0724L16.04 8.95833L11.7179 7.84424C11.3215 7.74195 10.9593 7.5356 10.6698 7.24609C10.4164 6.99274 10.226 6.68405 10.1139 6.34521L10.0708 6.19792L8.95671 1.87744L7.84342 6.19792Z\",\n p110afe80:\n \"M12.2917 5.83333C12.6368 5.83333 12.9167 6.11316 12.9167 6.45833C12.9167 6.80351 12.6368 7.08333 12.2917 7.08333H0.625C0.279822 7.08333 0 6.80351 0 6.45833C0 6.11316 0.279822 5.83333 0.625 5.83333H12.2917Z\",\n p1581c00:\n \"M6.45833 0C6.63859 0 6.81379 0.058707 6.95801 0.166829C7.06617 0.247948 7.15262 0.353622 7.21029 0.474447L7.2583 0.599772L7.25993 0.606283L11.4583 15.542L13.0151 10.0057C13.1504 9.52378 13.4395 9.09919 13.8387 8.7972C14.2376 8.49543 14.7245 8.33264 15.2246 8.33333H17.2917C17.6368 8.33333 17.9167 8.61316 17.9167 8.95833C17.9167 9.30351 17.6368 9.58333 17.2917 9.58333H15.2238C14.9962 9.58285 14.7746 9.65685 14.5931 9.79411C14.4117 9.93135 14.2803 10.1244 14.2187 10.3434L12.2599 17.3112L12.2583 17.3169C12.2078 17.4899 12.1022 17.6417 11.958 17.7498C11.8138 17.858 11.6386 17.9167 11.4583 17.9167C11.2781 17.9167 11.1029 17.858 10.9587 17.7498C10.8145 17.6417 10.7089 17.4899 10.6584 17.3169L10.6567 17.3104L6.45752 2.37386L4.90153 7.91097C4.76679 8.39101 4.47892 8.81441 4.08203 9.11621C3.68506 9.41794 3.20045 9.5819 2.70182 9.58333H0.625C0.279822 9.58333 0 9.30351 0 8.95833C0 8.61316 0.279822 8.33333 0.625 8.33333H2.69857C2.92517 8.33261 3.14563 8.2581 3.32601 8.12093C3.50642 7.9837 3.63671 7.79069 3.69792 7.57243L5.65674 0.605469L5.65837 0.599772C5.70888 0.426766 5.81447 0.274969 5.95866 0.166829L6.07178 0.0952148C6.19049 0.0330467 6.32301 0 6.45833 0Z\",\n p17e22500:\n \"M6 3.16667C6 2.89052 6.22386 2.66667 6.5 2.66667C6.77614 2.66667 7 2.89052 7 3.16667V6.19076L9.38997 7.38607C9.63688 7.50952 9.73723 7.8097 9.61393 8.05664C9.49048 8.30354 9.1903 8.40389 8.94336 8.2806L6.27669 6.94727C6.1073 6.86257 6 6.68939 6 6.5V3.16667Z\",\n p188f5780:\n \"M11.3334 3.16667C11.3334 2.59209 11.1049 2.04108 10.6986 1.63477C10.2923 1.22849 9.74125 1.00008 9.1667 1C8.59205 1 8.04049 1.22842 7.63415 1.63477L2.05212 7.33138L2.04561 7.33789C1.71627 7.66191 1.45419 8.04821 1.27478 8.47396C1.09536 8.89973 1.00192 9.35699 1.00004 9.81901C0.998176 10.281 1.08779 10.7389 1.26371 11.166C1.43965 11.5932 1.69875 11.9813 2.02543 12.3079C2.3521 12.6346 2.74019 12.8937 3.16735 13.0697C3.59451 13.2455 4.05241 13.3352 4.51436 13.3333C4.97636 13.3314 5.43367 13.238 5.85941 13.0586C6.28508 12.8792 6.67086 12.617 6.99483 12.2878L12.5801 6.58789C12.7734 6.39067 13.0899 6.3875 13.2871 6.58073C13.4844 6.774 13.4876 7.09052 13.2943 7.28776L7.70837 12.9883L7.70772 12.9889C7.29111 13.4124 6.79484 13.7491 6.24743 13.9798C5.70002 14.2105 5.11229 14.3309 4.51827 14.3333C3.9243 14.3357 3.33572 14.2203 2.78649 13.9941C2.23722 13.7679 1.73779 13.435 1.31774 13.015C0.897849 12.595 0.565398 12.096 0.339229 11.5469C0.113061 10.9977 -0.00233955 10.409 3.59415e-05 9.8151C0.00245429 9.2212 0.122317 8.63326 0.352901 8.08594C0.583575 7.53852 0.920335 7.04161 1.34379 6.625L6.92387 0.93099L6.92712 0.927734C7.521 0.333856 8.32683 0 9.1667 0C10.0065 7.92949e-05 10.8118 0.333927 11.4056 0.927734C11.9994 1.52159 12.3334 2.32688 12.3334 3.16667C12.3334 4.00654 11.9995 4.81237 11.4056 5.40625L11.405 5.4056L5.80017 11.1263L5.79626 11.1302C5.45248 11.4739 4.98616 11.6672 4.50004 11.6673C4.01379 11.6673 3.54702 11.474 3.20316 11.1302C2.85929 10.7863 2.66605 10.3196 2.66605 9.83333C2.66607 9.34712 2.8594 8.88095 3.20316 8.53711L8.80928 2.81641C9.00258 2.61936 9.31915 2.61603 9.51631 2.80924C9.71336 3.00247 9.71653 3.31908 9.52348 3.51628L3.9141 9.24023L3.91019 9.24414C3.75397 9.40044 3.66607 9.61234 3.66605 9.83333C3.66605 10.0543 3.75399 10.2662 3.91019 10.4225C4.06652 10.5789 4.27895 10.6673 4.50004 10.6673C4.72101 10.6672 4.93297 10.5788 5.08923 10.4225L10.6947 4.70247L10.6986 4.69857C11.1048 4.29224 11.3334 3.74123 11.3334 3.16667Z\",\n p18accf00:\n \"M17.2904 2.50021C17.6356 2.50021 17.9154 2.78003 17.9154 3.12521C17.9154 3.47039 17.6356 3.75021 17.2904 3.75021H13.9571C13.6119 3.75021 13.3321 3.47039 13.3321 3.12521C13.3321 2.78003 13.6119 2.50021 13.9571 2.50021H17.2904Z\",\n p1ad262c0:\n \"M5.27631 0.168086C5.57089 -0.0722232 6.00561 -0.0547602 6.28022 0.219844L11.2802 5.21984C11.5731 5.51274 11.5731 5.9875 11.2802 6.28039C10.9873 6.57328 10.5126 6.57328 10.2197 6.28039L5.74994 1.81066L1.28022 6.28039C0.987324 6.57328 0.512563 6.57328 0.21967 6.28039C-0.0732233 5.9875 -0.0732233 5.51274 0.21967 5.21984L5.21967 0.219844L5.27631 0.168086Z\",\n p1b4ead00:\n \"M7.21967 11.2197C7.51256 10.9268 7.98732 10.9268 8.28022 11.2197C8.57311 11.5126 8.57311 11.9873 8.28022 12.2802L1.28022 19.2802C0.987324 19.5731 0.512563 19.5731 0.21967 19.2802C-0.0732233 18.9873 -0.0732233 18.5126 0.21967 18.2197L7.21967 11.2197Z\",\n p1d77b100:\n \"M10.2197 11.2198C10.5126 10.9269 10.9873 10.9269 11.2802 11.2198C11.5731 11.5127 11.5731 11.9875 11.2802 12.2804L6.28022 17.2804C5.98732 17.5733 5.51256 17.5733 5.21967 17.2804L0.21967 12.2804C-0.0732233 11.9875 -0.0732233 11.5127 0.21967 11.2198C0.512563 10.9269 0.987324 10.9269 1.28022 11.2198L5.74994 15.6896L10.2197 11.2198Z\",\n p1f6c7bc0:\n \"M5.83333 12.2917V0.625C5.83333 0.279822 6.11316 0 6.45833 0C6.80351 0 7.08333 0.279822 7.08333 0.625V12.2917C7.08333 12.6368 6.80351 12.9167 6.45833 12.9167C6.11316 12.9167 5.83333 12.6368 5.83333 12.2917Z\",\n p25220980:\n \"M0 0.5C0 0.223858 0.223858 0 0.5 0C0.776142 0 1 0.223858 1 0.5V3.33333H3.83333C4.10948 3.33333 4.33333 3.55719 4.33333 3.83333C4.33333 4.10948 4.10948 4.33333 3.83333 4.33333H0.5C0.223858 4.33333 0 4.10948 0 3.83333V0.5Z\",\n p28871d00:\n \"M6.99994 17.7499V12.4999H1.74994C1.33573 12.4999 0.999943 12.1642 0.999943 11.7499C0.999943 11.3357 1.33573 10.9999 1.74994 10.9999H7.74994C8.16416 10.9999 8.49994 11.3357 8.49994 11.7499V17.7499C8.49994 18.1642 8.16416 18.4999 7.74994 18.4999C7.33573 18.4999 6.99994 18.1642 6.99994 17.7499Z\",\n p29b5f100:\n \"M3.12373 13.3335C3.46891 13.3335 3.74873 13.6134 3.74873 13.9585C3.74873 14.3037 3.46891 14.5835 3.12373 14.5835H1.45706C1.11188 14.5835 0.832063 14.3037 0.832063 13.9585C0.832063 13.6134 1.11188 13.3335 1.45706 13.3335H3.12373Z\",\n p2b445ef2:\n \"M1.6654 14.7919V13.1252C1.6654 12.78 1.94522 12.5002 2.2904 12.5002C2.63557 12.5002 2.9154 12.78 2.9154 13.1252V14.7919C2.9154 15.1371 2.63557 15.4169 2.2904 15.4169C1.94522 15.4169 1.6654 15.1371 1.6654 14.7919Z\",\n p2ddae400:\n \"M4.66667 13.8333V11.8333C4.66667 11.5572 4.89052 11.3333 5.16667 11.3333C5.44281 11.3333 5.66667 11.5572 5.66667 11.8333V13.8333C5.66667 14.1095 5.44281 14.3333 5.16667 14.3333C4.89052 14.3333 4.66667 14.1095 4.66667 13.8333Z\",\n p2ea5b600:\n \"M12.0004 5.00028C12.0004 5.13289 11.9477 5.26006 11.8539 5.35383C11.7602 5.4476 11.633 5.50028 11.5004 5.50028H1.70727L5.35414 9.14653C5.4006 9.19298 5.43745 9.24813 5.46259 9.30883C5.48773 9.36953 5.50067 9.43458 5.50067 9.50028C5.50067 9.56598 5.48773 9.63103 5.46259 9.69173C5.43745 9.75242 5.4006 9.80757 5.35414 9.85403C5.30769 9.90048 5.25254 9.93733 5.19184 9.96247C5.13115 9.98762 5.06609 10.0006 5.00039 10.0006C4.9347 10.0006 4.86964 9.98762 4.80895 9.96247C4.74825 9.93733 4.6931 9.90048 4.64664 9.85403L0.146643 5.35403C0.100155 5.30759 0.0632756 5.25245 0.0381135 5.19175C0.0129513 5.13105 0 5.06599 0 5.00028C0 4.93457 0.0129513 4.86951 0.0381135 4.80881C0.0632756 4.74811 0.100155 4.69296 0.146643 4.64653L4.64664 0.146528C4.74046 0.0527077 4.86771 -9.88558e-10 5.00039 0C5.13308 9.88558e-10 5.26032 0.0527077 5.35414 0.146528C5.44796 0.240348 5.50067 0.367596 5.50067 0.500278C5.50067 0.63296 5.44796 0.760208 5.35414 0.854028L1.70727 4.50028H11.5004C11.633 4.50028 11.7602 4.55296 11.8539 4.64672C11.9477 4.74049 12.0004 4.86767 12.0004 5.00028Z\",\n p2fe30c00:\n \"M14.9987 4.79187V1.45854C14.9987 1.11336 15.2786 0.833541 15.6237 0.833541C15.9689 0.833541 16.2487 1.11336 16.2487 1.45854V4.79187C16.2487 5.13705 15.9689 5.41687 15.6237 5.41687C15.2786 5.41687 14.9987 5.13705 14.9987 4.79187Z\",\n p3040d140:\n \"M18.2197 0.21967C18.5126 -0.0732233 18.9873 -0.0732233 19.2802 0.21967C19.5731 0.512563 19.5731 0.987324 19.2802 1.28022L12.2802 8.28022C11.9873 8.57311 11.5126 8.57311 11.2197 8.28022C10.9268 7.98732 10.9268 7.51256 11.2197 7.21967L18.2197 0.21967Z\",\n p37873c40:\n \"M6.66667 2.5C6.66667 2.10217 6.50852 1.72076 6.22721 1.43945C5.94591 1.15815 5.56449 1 5.16667 1C4.76884 1 4.38742 1.15815 4.10612 1.43945C3.82482 1.72076 3.66667 2.10217 3.66667 2.5V7.16667C3.66667 7.56449 3.82482 7.94591 4.10612 8.22721C4.38742 8.50852 4.76884 8.66667 5.16667 8.66667C5.56449 8.66667 5.94591 8.50852 6.22721 8.22721C6.50852 7.94591 6.66667 7.56449 6.66667 7.16667V2.5ZM7.66667 7.16667C7.66667 7.82971 7.40309 8.4654 6.93424 8.93424C6.4654 9.40309 5.82971 9.66667 5.16667 9.66667C4.50363 9.66667 3.86793 9.40309 3.39909 8.93424C2.93025 8.4654 2.66667 7.82971 2.66667 7.16667V2.5C2.66667 1.83696 2.93025 1.20126 3.39909 0.732422C3.86793 0.263581 4.50363 0 5.16667 0C5.82971 0 6.4654 0.263581 6.93424 0.732422C7.40309 1.20126 7.66667 1.83696 7.66667 2.5V7.16667Z\",\n p3b2f0700:\n \"M0 7.16667V5.83333C0 5.55719 0.223858 5.33333 0.5 5.33333C0.776142 5.33333 1 5.55719 1 5.83333V7.16667C1 8.27174 1.4393 9.33123 2.2207 10.1126C3.0021 10.894 4.0616 11.3333 5.16667 11.3333C6.27174 11.3333 7.33123 10.894 8.11263 10.1126C8.89403 9.33123 9.33333 8.27173 9.33333 7.16667V5.83333C9.33333 5.55719 9.55719 5.33333 9.83333 5.33333C10.1095 5.33333 10.3333 5.55719 10.3333 5.83333V7.16667C10.3333 8.53695 9.78925 9.85137 8.82031 10.8203C7.85137 11.7892 6.53695 12.3333 5.16667 12.3333C3.79638 12.3333 2.48196 11.7892 1.51302 10.8203C0.544083 9.85137 3.97364e-08 8.53695 0 7.16667Z\",\n pccb6cf0:\n \"M10.9999 1.74994C10.9999 1.33573 11.3357 0.999943 11.7499 0.999943C12.1642 0.999943 12.4999 1.33573 12.4999 1.74994V6.99994H17.7499C18.1642 6.99994 18.4999 7.33573 18.4999 7.74994C18.4999 8.16416 18.1642 8.49994 17.7499 8.49994H11.7499C11.3357 8.49994 10.9999 8.16416 10.9999 7.74994V1.74994Z\",\n pfeb4a00:\n \"M6.5 0C7.78558 0 9.04241 0.381474 10.1113 1.0957C11.1801 1.80989 12.0133 2.8248 12.5052 4.01237C12.9972 5.20009 13.1258 6.50735 12.875 7.76823C12.6242 9.02905 12.0054 10.1874 11.0964 11.0964C10.1874 12.0054 9.02905 12.6242 7.76823 12.875C6.50735 13.1258 5.20009 12.9972 4.01237 12.5052C2.8248 12.0133 1.80989 11.1801 1.0957 10.1113C0.381474 9.04241 0 7.78558 0 6.5C0 6.22386 0.223858 6 0.5 6C0.776142 6 1 6.22386 1 6.5C1 7.58775 1.32279 8.6509 1.92708 9.55534C2.53142 10.4598 3.3902 11.1651 4.39518 11.5814C5.40014 11.9976 6.50606 12.1067 7.57292 11.8945C8.63981 11.6823 9.62013 11.1585 10.3893 10.3893C11.1585 9.62013 11.6823 8.63981 11.8945 7.57292C12.1067 6.50606 11.9976 5.40014 11.5814 4.39518C11.1651 3.3902 10.4598 2.53142 9.55534 1.92708C8.65108 1.32291 7.58817 1.00013 6.50065 1C4.95276 1.00614 3.46708 1.61031 2.35417 2.6862L0.853516 4.18685C0.658254 4.38211 0.341746 4.38211 0.146484 4.18685C-0.0487777 3.99159 -0.0487777 3.67508 0.146484 3.47982L1.65885 1.96745C2.95758 0.711933 4.69168 0.00681402 6.49805 0H6.5Z\",\n};\n","import {\n ChevronLeft,\n ChevronRight,\n History,\n Mic,\n Minimize2,\n Paperclip,\n Plus,\n Sparkles,\n X,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useRightPanel } from \"./right-panel-context\";\nimport svgPaths from \"./svg-9ebyigi4zl\";\n\n/* ════════════════════════════════════════════════════════════\n Types\n ════════════════════════════════════════════════════════════ */\ninterface ChatMessage {\n id: string;\n role: \"user\" | \"assistant\";\n content: string;\n timestamp: Date;\n}\n\ninterface Conversation {\n id: string;\n name: string;\n messages: ChatMessage[];\n}\n\n/* ════════════════════════════════════════════════════════════\n Default Slingshot prompts & responses\n ════════════════════════════════════════════════════════════ */\nexport const defaultSuggestedPrompts = [\n \"Summarize recent activity\",\n \"How do I add a new user?\",\n \"Explain role permissions\",\n \"Show account hierarchy\",\n];\n\nexport const defaultMockResponses: Record<string, string> = {\n \"summarize recent activity\":\n \"In the last 24 hours there were 3 successful ingestion runs, 1 warning about an expiring token for the GitHub connector, and no critical errors. Overall system health is good.\",\n \"how do i add a new user?\":\n 'Navigate to the Users page from the left sidebar, then click the \"Invite Users\" button in the top-right corner. Fill in the user\\'s email, select their role, and choose which platforms they should have access to.',\n \"explain role permissions\":\n \"Roles control what actions a user can perform within each platform. You can view and manage roles on the Role Management page. Each platform (Bodhi, Slingshot, Sustain, ECS) has its own set of role templates that can be customized.\",\n \"show account hierarchy\":\n \"You can view the full account hierarchy on the Hierarchy page. It displays the organizational structure from Account \\u2192 Business Unit \\u2192 Sub-Business Unit \\u2192 Team \\u2192 Application.\",\n};\n\nexport const defaultFallbackResponse = `Thanks for your question! I can help with navigating the platform, understanding roles & permissions, managing users, and reviewing activity logs. Could you provide a bit more detail so I can assist you better?`;\n\nfunction buildGetAIResponse(\n responses: Record<string, string>,\n fallback: string,\n): (input: string) => string {\n return (input: string) => {\n const lower = input.toLowerCase().trim();\n for (const [key, val] of Object.entries(responses)) {\n if (lower.includes(key) || key.includes(lower)) return val;\n }\n return fallback;\n };\n}\n\n/* ════════════════════════════════════════════════════════════\n Sparkles Icon (from Figma SVG)\n ════════════════════════════════════════════════════════════ */\nfunction SparklesIcon({\n size = 20,\n color = \"var(--foreground)\",\n}: { size?: number; color?: string }) {\n return (\n <div\n className=\"overflow-clip relative rounded-[24px] shrink-0\"\n style={{ width: size, height: size }}\n >\n <div className=\"absolute\" style={{ inset: \"5.21%\" }}>\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 17.9175 17.9175\"\n >\n <path d={svgPaths.p1104e600} fill={color} />\n <path d={svgPaths.p2fe30c00} fill={color} />\n <path d={svgPaths.p18accf00} fill={color} />\n <path d={svgPaths.p2b445ef2} fill={color} />\n <path d={svgPaths.p29b5f100} fill={color} />\n </svg>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Chat Message Bubble (Figma-aligned)\n ════════════════════════════════════════════════════════════ */\nfunction MessageBubble({ message }: { message: ChatMessage }) {\n const isUser = message.role === \"user\";\n\n return (\n <div className=\"shrink-0 w-full\">\n <div\n className=\"flex items-start w-full\"\n style={{\n paddingLeft: isUser ? \"40%\" : \"0\",\n paddingRight: isUser ? \"0\" : \"32px\",\n }}\n >\n <div\n className=\"flex-1 min-w-0 relative backdrop-blur-[50px] rounded-[16px]\"\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n >\n <div className=\"flex flex-col gap-[8px] items-start p-[16px] w-full\">\n {/* Message text */}\n <div className=\"flex items-center justify-center w-full\">\n <p\n className=\"flex-1 min-w-0\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24.4px\",\n color: \"var(--foreground)\",\n }}\n >\n {message.content}\n </p>\n </div>\n {/* Timestamp */}\n <div className=\"flex h-[14px] items-start w-full\">\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"14px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {message.timestamp.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Typing Indicator (Figma-aligned dots)\n ════════════════════════════════════════════════════════════ */\nfunction TypingIndicator() {\n return (\n <div className=\"flex flex-col gap-[24px] items-start shrink-0 w-full\">\n <div\n className=\"flex gap-[16px] items-center px-[16px] py-[8px] rounded-[16px] shrink-0\"\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n >\n <div className=\"h-[12px] overflow-clip relative shrink-0 w-[32px]\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"absolute top-[2px] size-[8px]\" style={{ left: `${i * 12}px` }}>\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 8 8\"\n >\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n fill=\"var(--foreground)\"\n style={{\n opacity: i === 2 ? 0.15 : 1,\n animation: `typingDot 1.2s ease-in-out ${i * 0.2}s infinite`,\n }}\n />\n </svg>\n </div>\n ))}\n </div>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"1px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"1.5\",\n color: \"var(--foreground)\",\n }}\n >\n Analyzing..\n </p>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n AI Chat Panel\n ════════════════════════════════════════════════════════════ */\nexport function AIChatPanel({\n onClose,\n suggestedPrompts = defaultSuggestedPrompts,\n mockResponses = defaultMockResponses,\n fallbackResponse = defaultFallbackResponse,\n}: {\n onClose: () => void;\n suggestedPrompts?: string[];\n mockResponses?: Record<string, string>;\n fallbackResponse?: string;\n}) {\n const { pendingMessage, clearPendingMessage } = useRightPanel();\n const getAIResponse = buildGetAIResponse(mockResponses, fallbackResponse);\n const [conversations, setConversations] = useState<Conversation[]>([\n { id: \"default\", name: \"Default\", messages: [] },\n ]);\n const [activeConversationId, setActiveConversationId] = useState(\"default\");\n const [input, setInput] = useState(\"\");\n const [isTyping, setIsTyping] = useState(false);\n const [inputFocused, setInputFocused] = useState(false);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const tabsScrollRef = useRef<HTMLDivElement>(null);\n const tabConvCounter = useRef(0);\n const hasSentPending = useRef(false);\n\n const activeConversation =\n conversations.find((c) => c.id === activeConversationId) || conversations[0];\n const messages = activeConversation.messages;\n\n /* ── Check scroll overflow for tab slider arrows ── */\n const checkTabsOverflow = useCallback(() => {\n const el = tabsScrollRef.current;\n if (!el) return;\n setCanScrollLeft(el.scrollLeft > 1);\n setCanScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);\n }, []);\n\n useEffect(() => {\n checkTabsOverflow();\n const el = tabsScrollRef.current;\n if (!el) return;\n el.addEventListener(\"scroll\", checkTabsOverflow);\n const ro = new ResizeObserver(checkTabsOverflow);\n ro.observe(el);\n return () => {\n el.removeEventListener(\"scroll\", checkTabsOverflow);\n ro.disconnect();\n };\n }, [checkTabsOverflow, conversations]);\n\n const scrollTabs = (direction: \"left\" | \"right\") => {\n const el = tabsScrollRef.current;\n if (!el) return;\n el.scrollBy({ left: direction === \"left\" ? -100 : 100, behavior: \"smooth\" });\n };\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }\n }, [messages, isTyping]);\n\n /* ── Add new conversation ── */\n const addConversation = useCallback(() => {\n tabConvCounter.current += 1;\n const newId = `conv-${Date.now()}`;\n const newConv: Conversation = {\n id: newId,\n name: `Chat ${tabConvCounter.current}`,\n messages: [],\n };\n setConversations((prev) => [...prev, newConv]);\n setActiveConversationId(newId);\n\n // Scroll tabs to end after adding\n requestAnimationFrame(() => {\n const el = tabsScrollRef.current;\n if (el) el.scrollTo({ left: el.scrollWidth, behavior: \"smooth\" });\n checkTabsOverflow();\n });\n }, [checkTabsOverflow]);\n\n /* ── Close a conversation tab ── */\n const closeConversation = useCallback(\n (convId: string) => {\n setConversations((prev) => {\n const filtered = prev.filter((c) => c.id !== convId);\n if (filtered.length === 0) return prev; // never remove all\n return filtered;\n });\n // If closing the active tab, switch to the last remaining\n setActiveConversationId((currentActiveId) => {\n if (currentActiveId !== convId) return currentActiveId;\n const remaining = conversations.filter((c) => c.id !== convId);\n return remaining.length > 0 ? remaining[remaining.length - 1].id : \"default\";\n });\n requestAnimationFrame(checkTabsOverflow);\n },\n [conversations, checkTabsOverflow],\n );\n\n const sendMessage = useCallback(\n (text: string) => {\n if (!text.trim()) return;\n\n const userMsg: ChatMessage = {\n id: `msg-${Date.now()}`,\n role: \"user\",\n content: text.trim(),\n timestamp: new Date(),\n };\n\n setConversations((prev) =>\n prev.map((c) =>\n c.id === activeConversationId ? { ...c, messages: [...c.messages, userMsg] } : c,\n ),\n );\n setInput(\"\");\n setIsTyping(true);\n\n // Reset textarea height\n if (textareaRef.current) {\n textareaRef.current.style.height = \"40px\";\n }\n\n setTimeout(\n () => {\n const aiMsg: ChatMessage = {\n id: `msg-${Date.now()}-ai`,\n role: \"assistant\",\n content: getAIResponse(text),\n timestamp: new Date(),\n };\n setConversations((prev) =>\n prev.map((c) =>\n c.id === activeConversationId ? { ...c, messages: [...c.messages, aiMsg] } : c,\n ),\n );\n setIsTyping(false);\n },\n 800 + Math.random() * 600,\n );\n },\n [activeConversationId],\n );\n\n const handleTextareaChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInput(e.target.value);\n // Auto-resize\n e.target.style.height = \"40px\";\n e.target.style.height = Math.min(e.target.scrollHeight, 120) + \"px\";\n };\n\n /* ── Whether we need slider arrows (more than ~3 tabs) ── */\n const showSliderArrows = canScrollLeft || canScrollRight;\n\n /* ── Consume pending message from home page ── */\n useEffect(() => {\n if (pendingMessage) {\n hasSentPending.current = false;\n }\n }, [pendingMessage]);\n\n useEffect(() => {\n if (pendingMessage && !hasSentPending.current) {\n hasSentPending.current = true;\n sendMessage(pendingMessage);\n clearPendingMessage();\n }\n }, [pendingMessage, clearPendingMessage, sendMessage]);\n\n return (\n <div className=\"flex flex-col gap-[16px] items-start p-[16px] size-full overflow-hidden\">\n {/* ── Header ── */}\n <div className=\"flex gap-[16px] h-[24px] items-center justify-center shrink-0 w-full\">\n <SparklesIcon size={20} color=\"var(--foreground)\" />\n <div className=\"flex flex-1 flex-col gap-[8px] items-start min-w-0\">\n <div className=\"flex gap-[8px] items-center w-full\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n AI Assistance\n </p>\n </div>\n </div>\n <button\n onClick={onClose}\n className=\"flex items-center justify-center shrink-0 size-[24px] rounded-[24px] cursor-pointer bg-transparent transition-all\"\n aria-label=\"Minimize panel\"\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Minimize2 className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </div>\n\n {/* ── Tab Row ── */}\n <div className=\"flex items-center gap-[8px] shrink-0 w-full\">\n {/* Left slider arrow */}\n {showSliderArrows && (\n <button\n onClick={() => scrollTabs(\"left\")}\n className=\"flex items-center justify-center min-h-[28px] min-w-[28px] rounded-[8px] cursor-pointer transition-all shrink-0\"\n style={{\n backgroundColor: canScrollLeft ? \"var(--tile-bg)\" : \"transparent\",\n opacity: canScrollLeft ? 1 : 0.3,\n pointerEvents: canScrollLeft ? \"auto\" : \"none\",\n }}\n onMouseEnter={(e) =>\n canScrollLeft && (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n canScrollLeft && (e.currentTarget.style.backgroundColor = \"var(--tile-bg)\")\n }\n aria-label=\"Scroll tabs left\"\n >\n <ChevronLeft className=\"size-[14px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n )}\n\n {/* Scrollable tabs container */}\n <div className=\"flex-1 min-w-0 overflow-hidden\">\n <div\n ref={tabsScrollRef}\n className=\"flex items-start p-[4px] rounded-[12px] overflow-x-auto\"\n style={{\n backgroundColor: \"var(--tab-container-bg)\",\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n }}\n >\n {/* Conversation tabs */}\n {conversations.map((conv) => (\n <button\n key={conv.id}\n onClick={() => setActiveConversationId(conv.id)}\n className=\"group flex gap-[4px] items-center justify-center min-h-[32px] px-[10px] py-[5.5px] rounded-[10px] cursor-pointer transition-all shrink-0\"\n style={{\n backgroundColor:\n activeConversationId === conv.id ? \"var(--tab-active-bg)\" : \"transparent\",\n boxShadow: activeConversationId === conv.id ? \"var(--elevation-sm)\" : \"none\",\n }}\n >\n <span\n className=\"whitespace-nowrap\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n maxWidth: \"80px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {conv.name}\n </span>\n {/* Close button (not for default) */}\n {conv.id !== \"default\" && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n closeConversation(conv.id);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n closeConversation(conv.id);\n }\n }}\n className=\"flex items-center justify-center size-[16px] rounded-full transition-all opacity-0 group-hover:opacity-100\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label={`Close ${conv.name}`}\n >\n <X className=\"size-[10px]\" style={{ color: \"var(--muted-foreground)\" }} />\n </span>\n )}\n </button>\n ))}\n\n {/* Add/New conversation tab */}\n <button\n onClick={addConversation}\n className=\"flex gap-[8px] items-center justify-center min-h-[32px] min-w-[32px] px-[5.5px] py-[5.5px] rounded-[10px] cursor-pointer transition-all shrink-0\"\n style={{\n backgroundColor: \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"New conversation\"\n >\n <Plus className=\"size-[20px]\" style={{ color: \"var(--muted-foreground)\" }} />\n </button>\n </div>\n </div>\n\n {/* Right slider arrow */}\n {showSliderArrows && (\n <button\n onClick={() => scrollTabs(\"right\")}\n className=\"flex items-center justify-center min-h-[28px] min-w-[28px] rounded-[8px] cursor-pointer transition-all shrink-0\"\n style={{\n backgroundColor: canScrollRight ? \"var(--tile-bg)\" : \"transparent\",\n opacity: canScrollRight ? 1 : 0.3,\n pointerEvents: canScrollRight ? \"auto\" : \"none\",\n }}\n onMouseEnter={(e) =>\n canScrollRight && (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n canScrollRight && (e.currentTarget.style.backgroundColor = \"var(--tile-bg)\")\n }\n aria-label=\"Scroll tabs right\"\n >\n <ChevronRight className=\"size-[14px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n )}\n\n {/* History button */}\n <button\n className=\"flex items-center justify-center min-h-[40px] min-w-[40px] p-[10px] rounded-[8px] cursor-pointer transition-all shrink-0\"\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--tile-bg)\")}\n aria-label=\"Chat history\"\n >\n <History className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </div>\n\n {/* ── Response Panel (scrollable messages) ── */}\n <div className=\"flex-1 min-h-0 relative w-full\">\n <div className=\"overflow-y-auto rounded-[inherit] size-full\">\n <div ref={scrollRef} className=\"flex flex-col items-end justify-end min-h-full\">\n {messages.length === 0 && !isTyping ? (\n /* Empty state with suggested prompts */\n <div className=\"flex flex-col items-center justify-center flex-1 min-h-[200px] gap-[16px] w-full py-[20px]\">\n <div\n className=\"size-[48px] flex items-center justify-center rounded-full\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <SparklesIcon size={24} color=\"var(--muted-foreground)\" />\n </div>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n How can I help you today?\n </span>\n <div className=\"flex flex-col gap-[8px] w-full\">\n {suggestedPrompts.map((prompt) => (\n <button\n key={prompt}\n onClick={() => sendMessage(prompt)}\n className=\"relative flex items-center gap-[8px] w-full px-[12px] py-[10px] rounded-[10px] cursor-pointer transition-colors text-left\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--input-background)\")\n }\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[10px]\"\n style={{ borderColor: \"var(--border)\" }}\n />\n <Sparkles\n className=\"size-[12px] shrink-0\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {prompt}\n </span>\n </button>\n ))}\n </div>\n </div>\n ) : (\n <>\n {/* User messages (right-aligned) & AI messages (left-aligned) */}\n {messages.map((msg) => (\n <div key={msg.id} className=\"pb-[20px] w-full\">\n <MessageBubble message={msg} />\n </div>\n ))}\n {isTyping && <TypingIndicator />}\n </>\n )}\n </div>\n </div>\n </div>\n\n {/* ── Chat Input (Figma-aligned) ── */}\n <div className=\"shrink-0 w-full\">\n <div\n className=\"relative flex flex-col items-start rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div\n aria-hidden=\"true\"\n className={`absolute border-2 border-solid inset-0 pointer-events-none rounded-[12px] transition-colors${isTyping ? \" chat-input-glow-active\" : \"\"}`}\n style={{\n borderColor: isTyping\n ? \"transparent\"\n : inputFocused\n ? \"var(--primary)\"\n : \"var(--border)\",\n boxShadow: isTyping ? undefined : \"2px 2px 4px 0px rgba(0,0,0,0.02)\",\n }}\n />\n <div className=\"flex flex-col gap-[12px] items-start px-[16px] py-[12px] w-full\">\n {/* Text area container */}\n <div className=\"flex flex-col items-start py-[8px] rounded-[8px] shrink-0 w-full\">\n <div className=\"flex items-start overflow-clip shrink-0 w-full\">\n <textarea\n ref={textareaRef}\n value={input}\n onChange={handleTextareaChange}\n onFocus={() => setInputFocused(true)}\n onBlur={() => setInputFocused(false)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n sendMessage(input);\n }\n }}\n placeholder=\"Ask a question...\"\n rows={1}\n className=\"flex-1 min-w-0 bg-transparent outline-none border-none resize-none\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n height: \"40px\",\n maxHeight: \"120px\",\n }}\n />\n </div>\n </div>\n {/* Action row */}\n <div className=\"flex gap-[16px] h-[36px] items-center rounded-[8px] shrink-0 w-full\">\n {/* Left icons */}\n <div className=\"flex flex-1 gap-[8px] items-center min-w-0\">\n <div className=\"flex flex-1 items-center min-w-0 rounded-[4px]\">\n {/* Attachment icon */}\n <button\n className=\"flex items-center justify-center min-h-[24px] min-w-[24px] overflow-clip p-[4px] rounded-full shrink-0 cursor-pointer bg-transparent transition-all\"\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Attach file\"\n >\n <Paperclip className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </div>\n {/* Microphone icon */}\n <button\n className=\"flex items-center justify-center min-h-[24px] min-w-[24px] overflow-clip p-[4px] rounded-full shrink-0 cursor-pointer bg-transparent transition-all\"\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Voice input\"\n >\n <Mic className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </div>\n {/* Send button (dark circle) */}\n <button\n onClick={() => sendMessage(input)}\n disabled={!input.trim()}\n className=\"flex items-center justify-center min-h-[36px] min-w-[36px] p-[8px] rounded-full shrink-0 cursor-pointer transition-opacity\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: input.trim() ? 1 : 0.4,\n }}\n aria-label=\"Send message\"\n >\n <div className=\"relative rounded-[8px] shrink-0 size-[16px]\">\n <div className=\"absolute flex inset-[18.75%_12.5%] items-center justify-center\">\n <div className=\"-scale-y-100 rotate-180\" style={{ width: 18, height: 15 }}>\n <svg\n className=\"block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 12.0004 10.0006\"\n >\n <path d={svgPaths.p2ea5b600} fill=\"var(--primary-foreground)\" />\n </svg>\n </div>\n </div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","/* TECH DEBT: App/feature state colocated with this component to keep it out of\n a generic DS contexts bucket. Ideally lifted to the consuming app or passed\n via props so DS components stay presentational. See docs/tech-debt.md. */\nimport { type ReactNode, createContext, useCallback, useContext, useMemo, useState } from \"react\";\n\n/* ════════════════════════════════════════════════════════════\n Activity Event Types\n ════════════════════════════════════════════════════════════ */\nexport type ActivityType =\n | \"context_added\"\n | \"analyzing_started\"\n | \"analyzing_complete\"\n | \"ingestion_started\"\n | \"ingestion_complete\"\n | \"error_detected\"\n | \"token_expired\"\n | \"sync_triggered\";\n\nexport type ActivitySeverity = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport type ActivityFilterType = \"all\" | \"errors\" | \"token_expired\" | \"warnings\" | null;\n\nexport interface ActivityEvent {\n id: string;\n type: ActivityType;\n severity: ActivitySeverity;\n title: string;\n source: string;\n category: string;\n description: string;\n timestamp: Date;\n metadata?: {\n resourceId?: string;\n phase?: string;\n progress?: number;\n filesCount?: number;\n errorsCount?: number;\n completedCount?: number;\n pendingCount?: number;\n activeRepoCount?: number;\n tokenExpiredCount?: number;\n eta?: string;\n errorDetails?: string[];\n repositories?: string[];\n };\n}\n\n/* ════════════════════════════════════════════════════════════\n Helper: human-readable labels\n ════════════════════════════════════════════════════════════ */\nexport const activityTypeLabels: Record<ActivityType, string> = {\n context_added: \"Context Source Added\",\n analyzing_started: \"Analysis Started\",\n analyzing_complete: \"Analysis Complete\",\n ingestion_started: \"Ingestion Started\",\n ingestion_complete: \"Ingestion Complete\",\n error_detected: \"Error Detected\",\n token_expired: \"Token Expired\",\n sync_triggered: \"Sync Triggered\",\n};\n\nexport const severityMap: Record<ActivityType, ActivitySeverity> = {\n context_added: \"info\",\n analyzing_started: \"info\",\n analyzing_complete: \"success\",\n ingestion_started: \"info\",\n ingestion_complete: \"success\",\n error_detected: \"error\",\n token_expired: \"warning\",\n sync_triggered: \"info\",\n};\n\n/* ════════════════════════════════════════════════════════════\n Context\n ════════════════════════════════════════════════════════════ */\ninterface ActivityContextValue {\n activities: ActivityEvent[];\n unreadCount: number;\n pushActivity: (event: Omit<ActivityEvent, \"id\" | \"timestamp\">) => void;\n markAllRead: () => void;\n clearActivities: () => void;\n /* Panel expansion & filtering — used by resources-page badges → right-sidebar */\n panelExpanded: boolean;\n setPanelExpanded: (v: boolean) => void;\n filterType: ActivityFilterType;\n setFilterType: (v: ActivityFilterType) => void;\n filterResourceId: string | null;\n setFilterResourceId: (v: string | null) => void;\n}\n\nconst ActivityContext = createContext<ActivityContextValue | null>(null);\n\nexport function useActivity() {\n const ctx = useContext(ActivityContext);\n if (!ctx) throw new Error(\"useActivity must be used within ActivityProvider\");\n return ctx;\n}\n\n/* ════════════════════════════════════════════════════════════\n Provider\n ════════════════════════════════════════════════════════════ */\nexport function ActivityProvider({ children }: { children: ReactNode }) {\n const [activities, setActivities] = useState<ActivityEvent[]>([]);\n const [readCount, setReadCount] = useState(0);\n const [panelExpanded, setPanelExpanded] = useState(false);\n const [filterType, setFilterType] = useState<ActivityFilterType>(null);\n const [filterResourceId, setFilterResourceId] = useState<string | null>(null);\n\n const pushActivity = useCallback((event: Omit<ActivityEvent, \"id\" | \"timestamp\">) => {\n const newEvent: ActivityEvent = {\n ...event,\n id: `act-${crypto.randomUUID()}`,\n timestamp: new Date(),\n };\n // Cap the log to the most recent 200 entries to prevent unbounded growth.\n setActivities((prev) => [newEvent, ...prev].slice(0, 200));\n }, []);\n\n const markAllRead = useCallback(() => {\n setReadCount(activities.length);\n }, [activities.length]);\n\n const clearActivities = useCallback(() => {\n setActivities([]);\n setReadCount(0);\n }, []);\n\n const unreadCount = Math.max(0, activities.length - readCount);\n\n const value = useMemo(\n () => ({\n activities,\n unreadCount,\n pushActivity,\n markAllRead,\n clearActivities,\n panelExpanded,\n setPanelExpanded,\n filterType,\n setFilterType,\n filterResourceId,\n setFilterResourceId,\n }),\n [\n activities,\n unreadCount,\n pushActivity,\n markAllRead,\n clearActivities,\n panelExpanded,\n filterType,\n filterResourceId,\n ],\n );\n\n return <ActivityContext.Provider value={value}>{children}</ActivityContext.Provider>;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
let clsx = require("clsx");
|
|
24
|
+
let tailwind_merge = require("tailwind-merge");
|
|
25
|
+
let react = require("react");
|
|
26
|
+
react = __toESM(react, 1);
|
|
27
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
28
|
+
//#region src/utils/cn.ts
|
|
29
|
+
function cn(...inputs) {
|
|
30
|
+
return (0, tailwind_merge.twMerge)((0, clsx.clsx)(inputs));
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/utils/use-mobile.ts
|
|
34
|
+
const MOBILE_BREAKPOINT = 768;
|
|
35
|
+
function useIsMobile() {
|
|
36
|
+
const [isMobile, setIsMobile] = react.useState(void 0);
|
|
37
|
+
react.useEffect(() => {
|
|
38
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
39
|
+
const onChange = () => {
|
|
40
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
41
|
+
};
|
|
42
|
+
mql.addEventListener("change", onChange);
|
|
43
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
44
|
+
return () => mql.removeEventListener("change", onChange);
|
|
45
|
+
}, []);
|
|
46
|
+
return !!isMobile;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/primitives/BodhiLogo/BodhiLogo.tsx
|
|
50
|
+
function BodhiLogo({ isDarkMode = false }) {
|
|
51
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
52
|
+
width: "101",
|
|
53
|
+
height: "37",
|
|
54
|
+
viewBox: "0 0 101 37",
|
|
55
|
+
fill: "none",
|
|
56
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
57
|
+
style: {
|
|
58
|
+
"--logo-circle-bg": isDarkMode ? "#1a1a1a" : "#ffffff",
|
|
59
|
+
"--logo-icon-red": "var(--color-red-500)",
|
|
60
|
+
"--logo-text-dark": isDarkMode ? "#FFFFFF" : "#030712"
|
|
61
|
+
},
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
64
|
+
d: "M35.6 18.28c0 9.74-7.9 18.03-17.66 18.03S.28 28.02.28 18.28 8.18.64 17.94.64s17.67 7.9 17.67 17.64",
|
|
65
|
+
fill: "var(--logo-circle-bg)"
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
68
|
+
d: "M18 .31a18 18 0 0 1 1.48 35.95l-.44-6.52.23-.56 4.83-4.95a1.34 1.34 0 0 0 2.49-.47l4.8-.5a1.34 1.34 0 1 0 1.55-1.63l.09-5.45c.5-.02.9-.42.9-.95a.95.95 0 0 0-1.46-.8l-3.17-4.3a1.28 1.28 0 0 0-1.89-1.74L24.67 6q.06-.15.06-.33a.95.95 0 0 0-1.79-.45l-3.68-.71a.95.95 0 0 0-1.87 0l-3.71.71a.95.95 0 0 0-1.73.78L9.2 8.4a1.29 1.29 0 0 0-1.89 1.74l-3.16 4.3a1 1 0 0 0-.52-.15.95.95 0 0 0-.04 1.9l.1 5.54a1.34 1.34 0 1 0 1.83 1.57l4.5.47a1.34 1.34 0 0 0 2.3.75l4.72 5.08-.44 6.68C7.3 35.55 0 28.26 0 18.3a18 18 0 0 1 18-18",
|
|
69
|
+
fill: "var(--logo-icon-red)"
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
72
|
+
d: "M22.8 19.73a1.3 1.3 0 0 0 1.1.16l.8 2.45c-.46.21-.78.68-.78 1.22v.04l-5.01 3.89L18.8 23z",
|
|
73
|
+
fill: "var(--logo-icon-red)"
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
76
|
+
d: "m17.35 22.99-.24 4.47-4.47-3.49a1.34 1.34 0 0 0-.73-1.63l.85-2.55q.54-.01.9-.37z",
|
|
77
|
+
fill: "var(--logo-icon-red)"
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
80
|
+
d: "M7.06 18.7a1.5 1.5 0 0 0 1.5.1l2.08 3.63a1.3 1.3 0 0 0-.62 1.2l-4.47-.45.02-.23c0-.53-.31-.99-.76-1.2z",
|
|
81
|
+
fill: "var(--logo-icon-red)"
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
84
|
+
d: "M31.88 21.88a1.3 1.3 0 0 0-.51 1.26l-4.77.5v-.08c0-.47-.25-.9-.62-1.13l2.09-3.64a1.5 1.5 0 0 0 1.47-.09z",
|
|
85
|
+
fill: "var(--logo-icon-red)"
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
88
|
+
d: "M22.4 17.88a1.34 1.34 0 0 0 .3 1.78l-3.9 3.2-.16-6.42q.26-.13.45-.36z",
|
|
89
|
+
fill: "var(--logo-icon-red)"
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
92
|
+
d: "M17.22 16.27q.2.17.46.25l-.33 6.3-3.6-3.48a1.3 1.3 0 0 0 .27-1.33z",
|
|
93
|
+
fill: "var(--logo-icon-red)"
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
96
|
+
d: "M11.41 18.52c.04.67.56 1.2 1.22 1.26l-.83 2.52a1.3 1.3 0 0 0-1.06.07l-2.08-3.64q.32-.2.52-.53z",
|
|
97
|
+
fill: "var(--logo-icon-red)"
|
|
98
|
+
}),
|
|
99
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
100
|
+
d: "M27.44 18.2q.2.33.52.53l-2.09 3.64a1 1 0 0 0-.45-.14l-.16-.01q-.23 0-.44.08l-.8-2.45c.5-.19.85-.68.85-1.25v-.03z",
|
|
101
|
+
fill: "var(--logo-icon-red)"
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
104
|
+
d: "M32.2 15.77q.26.36.7.4l-.09 5.44h-.12q-.37 0-.67.18l-2.35-3.18a1.5 1.5 0 0 0 .47-1.6z",
|
|
105
|
+
fill: "var(--logo-icon-red)"
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
108
|
+
d: "M6.47 17.01a1.5 1.5 0 0 0 .49 1.61L4.7 21.7a1.3 1.3 0 0 0-.9-.02l-.1-5.5q.47-.04.71-.4z",
|
|
109
|
+
fill: "var(--logo-icon-red)"
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
112
|
+
d: "M27.68 16.4a1.5 1.5 0 0 0-.3 1.69l-2.52.36a1.3 1.3 0 0 0-.75-1.05l.48-4.53q.29-.01.5-.14z",
|
|
113
|
+
fill: "var(--logo-icon-red)"
|
|
114
|
+
}),
|
|
115
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
116
|
+
d: "M11.53 12.73q.2.13.49.14h.01l.45 4.26c-.6.12-1.05.64-1.07 1.27l-2.17-.31a1.5 1.5 0 0 0-.3-1.68z",
|
|
117
|
+
fill: "var(--logo-icon-red)"
|
|
118
|
+
}),
|
|
119
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
120
|
+
d: "M16.78 14.8a1.3 1.3 0 0 0 .31 1.36l-3.13 1.7a1.3 1.3 0 0 0-1.36-.75l-.45-4.25q.3-.05.52-.26z",
|
|
121
|
+
fill: "var(--logo-icon-red)"
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
124
|
+
d: "M23.94 12.6q.23.21.53.26l-.48 4.49a1.3 1.3 0 0 0-1.43.32l-.1.11-3.3-1.8a1.3 1.3 0 0 0 .23-.93z",
|
|
125
|
+
fill: "var(--logo-icon-red)"
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
128
|
+
d: "M27.23 9.9c.32.58 1.02.81 1.62.55l.12-.05q.14-.08.25-.18l3.16 4.29a.95.95 0 0 0-.24 1.16l-2.04 1.22a1.5 1.5 0 0 0-2.33-.57l-2.58-3.66a.95.95 0 0 0 .19-1.29z",
|
|
129
|
+
fill: "var(--logo-icon-red)"
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
132
|
+
d: "M11.24 11.37a.95.95 0 0 0 .19 1.29l-2.58 3.66a1.48 1.48 0 0 0-2.33.57l-2.04-1.22a.94.94 0 0 0-.24-1.17l3.16-4.28q.11.1.25.18c.62.34 1.4.12 1.74-.5z",
|
|
133
|
+
fill: "var(--logo-icon-red)"
|
|
134
|
+
}),
|
|
135
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
136
|
+
d: "m23.66 11.77-.01.15q0 .34.21.6l-4.5 2.4a1.3 1.3 0 0 0-1.07-1.01l.04-2.33c.47 0 .85-.35.93-.8z",
|
|
137
|
+
fill: "var(--logo-icon-red)"
|
|
138
|
+
}),
|
|
139
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
140
|
+
d: "M17.4 10.85c.1.38.41.67.81.72l-.04 2.32h-.11c-.55 0-1.03.33-1.23.8l-4.07-2.18a1 1 0 0 0 .2-.73z",
|
|
141
|
+
fill: "var(--logo-icon-red)"
|
|
142
|
+
}),
|
|
143
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
144
|
+
d: "M12 6.13c.14.26.4.45.7.5h.14q.4 0 .68-.29l4.17 3.59a1 1 0 0 0-.3.8l-4.46.93a.95.95 0 0 0-1.61-.38L9.45 9.79c.2-.44.12-.95-.17-1.31z",
|
|
145
|
+
fill: "var(--logo-icon-red)"
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
148
|
+
d: "M27.34 8.48c-.3.36-.36.87-.17 1.3l-1.87 1.5a.95.95 0 0 0-1.61.37l-4.42-.99v-.03q0-.3-.16-.54l4.02-3.72a.95.95 0 0 0 1.49-.24z",
|
|
149
|
+
fill: "var(--logo-icon-red)"
|
|
150
|
+
}),
|
|
151
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
152
|
+
d: "M22.9 5.35a1 1 0 0 0 .15.94L19.03 10a1 1 0 0 0-.66-.32l.08-4.06a.95.95 0 0 0 .82-.94v-.04z",
|
|
153
|
+
fill: "var(--logo-icon-red)"
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
156
|
+
d: "M17.38 4.68c0 .52.42.95.94.95l-.07 4.05a1 1 0 0 0-.47.17l-4.18-3.6a1 1 0 0 0 .13-.9l3.65-.71z",
|
|
157
|
+
fill: "var(--logo-icon-red)"
|
|
158
|
+
}),
|
|
159
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
160
|
+
"fill-rule": "evenodd",
|
|
161
|
+
"clip-rule": "evenodd",
|
|
162
|
+
d: "M66.27 5.17a.5.5 0 0 0 .49-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.48.5c0 .28.22.5.49.5",
|
|
163
|
+
fill: "var(--logo-text-dark)"
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
166
|
+
"fill-rule": "evenodd",
|
|
167
|
+
"clip-rule": "evenodd",
|
|
168
|
+
d: "M65.88 12.73h.76V6.1h-.76z",
|
|
169
|
+
fill: "var(--logo-text-dark)"
|
|
170
|
+
}),
|
|
171
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
172
|
+
"fill-rule": "evenodd",
|
|
173
|
+
"clip-rule": "evenodd",
|
|
174
|
+
d: "M50.72 9.4c0-1.38 1.06-2.5 2.37-2.5 1.3 0 2.37 1.12 2.37 2.5v.1c-.05 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.41 2.37-1.15v1.16h.76V6.1h-.76v1.14a3 3 0 0 0-2.37-1.14 3.2 3.2 0 0 0-3.13 3.3c0 1.8 1.4 3.31 3.13 3.31",
|
|
175
|
+
fill: "var(--logo-text-dark)"
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
178
|
+
"fill-rule": "evenodd",
|
|
179
|
+
"clip-rule": "evenodd",
|
|
180
|
+
d: "M61.35 11.94c-1.28 0-2.32-1.07-2.37-2.43v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.37 1.13 2.37 2.51 0 1.39-1.07 2.54-2.37 2.54m3.13-2.54c0-1.81-1.4-3.29-3.13-3.29-.93 0-1.78.41-2.37 1.14V6.1h-.76v9h.76v-3.53c.6.73 1.45 1.14 2.37 1.14 1.72 0 3.13-1.49 3.13-3.32",
|
|
181
|
+
fill: "var(--logo-text-dark)"
|
|
182
|
+
}),
|
|
183
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
184
|
+
"fill-rule": "evenodd",
|
|
185
|
+
"clip-rule": "evenodd",
|
|
186
|
+
d: "M78.73 6.11c-.72 0-1.4.3-1.9.84V6.1h-.74v6.62h.73V8.8a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.75V8.8c0-1.49-1.19-2.7-2.64-2.7",
|
|
187
|
+
fill: "var(--logo-text-dark)"
|
|
188
|
+
}),
|
|
189
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
190
|
+
"fill-rule": "evenodd",
|
|
191
|
+
"clip-rule": "evenodd",
|
|
192
|
+
d: "m85.3 11.97-.07.02q-.11.04-.37.05-.44.02-.44-.67v-4.5h.9V6.1h-.9V3.89h-.78V6.1h-.9v.76h.9v4.53q0 .74.28 1.01.27.3.77.31.37 0 .61-.1l.05-.01z",
|
|
193
|
+
fill: "var(--logo-text-dark)"
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
196
|
+
"fill-rule": "evenodd",
|
|
197
|
+
"clip-rule": "evenodd",
|
|
198
|
+
d: "M71.42 6.88c1.11 0 2.07.83 2.3 1.97h-4.65a2.4 2.4 0 0 1 2.34-1.97m1.98 3.94a2.3 2.3 0 0 1-1.99 1.14 2.46 2.46 0 0 1-2.39-2.36h5.14c.2 0 .37-.15.37-.35v-.06c-.13-1.75-1.47-3.08-3.12-3.08a3.24 3.24 0 0 0-3.14 3.32c0 1.83 1.41 3.3 3.14 3.3 1.06 0 2.04-.56 2.61-1.5z",
|
|
199
|
+
fill: "var(--logo-text-dark)"
|
|
200
|
+
}),
|
|
201
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
202
|
+
"fill-rule": "evenodd",
|
|
203
|
+
"clip-rule": "evenodd",
|
|
204
|
+
d: "M48.2 9.53s-.2-.16-.41-.25c-.22-.09-.52-.2-1.16-.35q-.12-.04-.25-.06-.63-.17-1-.44-.33-.28-.3-.61.01-.39.4-.67.45-.34 1.18-.3c.54.02.95.3 1.39.62l.04.03.55-.53-.26-.2c-.44-.3-.97-.62-1.69-.65q-.95-.04-1.6.38c-.47.32-.77.79-.77 1.28-.01.37.07.72.43 1.08.43.43 1.1.65 1.72.77.53.1 1.02.3 1.26.51.3.28.4.48.4.77q-.02.42-.48.72c-.3.23-.73.35-1.18.33a3.2 3.2 0 0 1-1.82-.78l-.04-.04-.54.51.05.05q1.09.95 2.31 1.02a2.6 2.6 0 0 0 1.64-.46q.77-.54.81-1.32a1.7 1.7 0 0 0-.68-1.41",
|
|
205
|
+
fill: "var(--logo-text-dark)"
|
|
206
|
+
}),
|
|
207
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
208
|
+
d: "M53.33 27.23a2.75 2.75 0 1 0-5.5-.02 2.77 2.77 0 0 0 2.76 2.74 2.77 2.77 0 0 0 2.74-2.72m-7.96-12.08h2.76v8.42Q49.5 22 51.39 22c2.7 0 4.76 2.24 4.76 5.2 0 3.04-2.04 5.22-4.82 5.22a3.9 3.9 0 0 1-3.2-1.58v1.28h-2.76zm15.19 12.02a2.74 2.74 0 0 0 2.76 2.78 2.8 2.8 0 0 0 2.78-2.74 2.8 2.8 0 0 0-2.78-2.74 2.8 2.8 0 0 0-2.76 2.7m-2.84-.04c0-2.98 2.38-5.14 5.62-5.14s5.58 2.16 5.58 5.2c0 3.16-2.36 5.22-5.64 5.22-3.34 0-5.56-2.18-5.56-5.28m21.1.1a2.76 2.76 0 0 0-2.75-2.76 2.76 2.76 0 0 0-2.74 2.74c0 1.5 1.24 2.74 2.74 2.74a2.8 2.8 0 0 0 2.74-2.72m-.3-3.66v-8.42h2.75v16.96h-2.76v-1.28a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.22-4.82-5.22 0-2.92 2.06-5.2 4.76-5.2q1.92.01 3.26 1.58m5.34 8.54V15.15h2.76v8.44a3.6 3.6 0 0 1 3.06-1.6c1.4 0 2.3.52 2.96 1.34.52.66.68 1.54.68 2.62v6.16h-2.76v-5.38c0-1.74-.5-2.4-1.86-2.4q-2.09 0-2.08 2.76v5.02zm12.01-9.8h2.76v9.8h-2.76zm-.26-4.14c0-.9.74-1.64 1.64-1.64s1.64.74 1.64 1.64-.74 1.64-1.64 1.64-1.64-.74-1.64-1.64",
|
|
209
|
+
fill: "var(--logo-text-dark)"
|
|
210
|
+
})
|
|
211
|
+
]
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//#endregion
|
|
215
|
+
Object.defineProperty(exports, "BodhiLogo", {
|
|
216
|
+
enumerable: true,
|
|
217
|
+
get: function() {
|
|
218
|
+
return BodhiLogo;
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
Object.defineProperty(exports, "__toESM", {
|
|
222
|
+
enumerable: true,
|
|
223
|
+
get: function() {
|
|
224
|
+
return __toESM;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
Object.defineProperty(exports, "cn", {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function() {
|
|
230
|
+
return cn;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
Object.defineProperty(exports, "useIsMobile", {
|
|
234
|
+
enumerable: true,
|
|
235
|
+
get: function() {
|
|
236
|
+
return useIsMobile;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
//# sourceMappingURL=BodhiLogo.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BodhiLogo.cjs","names":["React"],"sources":["../src/utils/cn.ts","../src/utils/use-mobile.ts","../src/primitives/BodhiLogo/BodhiLogo.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n","interface BodhiLogoProps {\n isDarkMode?: boolean;\n}\n\nexport function BodhiLogo({ isDarkMode = false }: BodhiLogoProps) {\n return (\n <svg\n width=\"101\"\n height=\"37\"\n viewBox=\"0 0 101 37\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={\n {\n \"--logo-circle-bg\": isDarkMode ? \"#1a1a1a\" : \"#ffffff\",\n \"--logo-icon-red\": \"var(--color-red-500)\",\n \"--logo-text-dark\": isDarkMode ? \"#FFFFFF\" : \"#030712\",\n } as React.CSSProperties\n }\n >\n <path\n d=\"M35.6 18.28c0 9.74-7.9 18.03-17.66 18.03S.28 28.02.28 18.28 8.18.64 17.94.64s17.67 7.9 17.67 17.64\"\n fill=\"var(--logo-circle-bg)\"\n />\n <path\n d=\"M18 .31a18 18 0 0 1 1.48 35.95l-.44-6.52.23-.56 4.83-4.95a1.34 1.34 0 0 0 2.49-.47l4.8-.5a1.34 1.34 0 1 0 1.55-1.63l.09-5.45c.5-.02.9-.42.9-.95a.95.95 0 0 0-1.46-.8l-3.17-4.3a1.28 1.28 0 0 0-1.89-1.74L24.67 6q.06-.15.06-.33a.95.95 0 0 0-1.79-.45l-3.68-.71a.95.95 0 0 0-1.87 0l-3.71.71a.95.95 0 0 0-1.73.78L9.2 8.4a1.29 1.29 0 0 0-1.89 1.74l-3.16 4.3a1 1 0 0 0-.52-.15.95.95 0 0 0-.04 1.9l.1 5.54a1.34 1.34 0 1 0 1.83 1.57l4.5.47a1.34 1.34 0 0 0 2.3.75l4.72 5.08-.44 6.68C7.3 35.55 0 28.26 0 18.3a18 18 0 0 1 18-18\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.8 19.73a1.3 1.3 0 0 0 1.1.16l.8 2.45c-.46.21-.78.68-.78 1.22v.04l-5.01 3.89L18.8 23z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"m17.35 22.99-.24 4.47-4.47-3.49a1.34 1.34 0 0 0-.73-1.63l.85-2.55q.54-.01.9-.37z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M7.06 18.7a1.5 1.5 0 0 0 1.5.1l2.08 3.63a1.3 1.3 0 0 0-.62 1.2l-4.47-.45.02-.23c0-.53-.31-.99-.76-1.2z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M31.88 21.88a1.3 1.3 0 0 0-.51 1.26l-4.77.5v-.08c0-.47-.25-.9-.62-1.13l2.09-3.64a1.5 1.5 0 0 0 1.47-.09z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.4 17.88a1.34 1.34 0 0 0 .3 1.78l-3.9 3.2-.16-6.42q.26-.13.45-.36z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.22 16.27q.2.17.46.25l-.33 6.3-3.6-3.48a1.3 1.3 0 0 0 .27-1.33z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.41 18.52c.04.67.56 1.2 1.22 1.26l-.83 2.52a1.3 1.3 0 0 0-1.06.07l-2.08-3.64q.32-.2.52-.53z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.44 18.2q.2.33.52.53l-2.09 3.64a1 1 0 0 0-.45-.14l-.16-.01q-.23 0-.44.08l-.8-2.45c.5-.19.85-.68.85-1.25v-.03z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M32.2 15.77q.26.36.7.4l-.09 5.44h-.12q-.37 0-.67.18l-2.35-3.18a1.5 1.5 0 0 0 .47-1.6z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M6.47 17.01a1.5 1.5 0 0 0 .49 1.61L4.7 21.7a1.3 1.3 0 0 0-.9-.02l-.1-5.5q.47-.04.71-.4z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.68 16.4a1.5 1.5 0 0 0-.3 1.69l-2.52.36a1.3 1.3 0 0 0-.75-1.05l.48-4.53q.29-.01.5-.14z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.53 12.73q.2.13.49.14h.01l.45 4.26c-.6.12-1.05.64-1.07 1.27l-2.17-.31a1.5 1.5 0 0 0-.3-1.68z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M16.78 14.8a1.3 1.3 0 0 0 .31 1.36l-3.13 1.7a1.3 1.3 0 0 0-1.36-.75l-.45-4.25q.3-.05.52-.26z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M23.94 12.6q.23.21.53.26l-.48 4.49a1.3 1.3 0 0 0-1.43.32l-.1.11-3.3-1.8a1.3 1.3 0 0 0 .23-.93z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.23 9.9c.32.58 1.02.81 1.62.55l.12-.05q.14-.08.25-.18l3.16 4.29a.95.95 0 0 0-.24 1.16l-2.04 1.22a1.5 1.5 0 0 0-2.33-.57l-2.58-3.66a.95.95 0 0 0 .19-1.29z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.24 11.37a.95.95 0 0 0 .19 1.29l-2.58 3.66a1.48 1.48 0 0 0-2.33.57l-2.04-1.22a.94.94 0 0 0-.24-1.17l3.16-4.28q.11.1.25.18c.62.34 1.4.12 1.74-.5z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"m23.66 11.77-.01.15q0 .34.21.6l-4.5 2.4a1.3 1.3 0 0 0-1.07-1.01l.04-2.33c.47 0 .85-.35.93-.8z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.4 10.85c.1.38.41.67.81.72l-.04 2.32h-.11c-.55 0-1.03.33-1.23.8l-4.07-2.18a1 1 0 0 0 .2-.73z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M12 6.13c.14.26.4.45.7.5h.14q.4 0 .68-.29l4.17 3.59a1 1 0 0 0-.3.8l-4.46.93a.95.95 0 0 0-1.61-.38L9.45 9.79c.2-.44.12-.95-.17-1.31z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.34 8.48c-.3.36-.36.87-.17 1.3l-1.87 1.5a.95.95 0 0 0-1.61.37l-4.42-.99v-.03q0-.3-.16-.54l4.02-3.72a.95.95 0 0 0 1.49-.24z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.9 5.35a1 1 0 0 0 .15.94L19.03 10a1 1 0 0 0-.66-.32l.08-4.06a.95.95 0 0 0 .82-.94v-.04z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.38 4.68c0 .52.42.95.94.95l-.07 4.05a1 1 0 0 0-.47.17l-4.18-3.6a1 1 0 0 0 .13-.9l3.65-.71z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.27 5.17a.5.5 0 0 0 .49-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.48.5c0 .28.22.5.49.5\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.88 12.73h.76V6.1h-.76z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.72 9.4c0-1.38 1.06-2.5 2.37-2.5 1.3 0 2.37 1.12 2.37 2.5v.1c-.05 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.41 2.37-1.15v1.16h.76V6.1h-.76v1.14a3 3 0 0 0-2.37-1.14 3.2 3.2 0 0 0-3.13 3.3c0 1.8 1.4 3.31 3.13 3.31\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.35 11.94c-1.28 0-2.32-1.07-2.37-2.43v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.37 1.13 2.37 2.51 0 1.39-1.07 2.54-2.37 2.54m3.13-2.54c0-1.81-1.4-3.29-3.13-3.29-.93 0-1.78.41-2.37 1.14V6.1h-.76v9h.76v-3.53c.6.73 1.45 1.14 2.37 1.14 1.72 0 3.13-1.49 3.13-3.32\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.73 6.11c-.72 0-1.4.3-1.9.84V6.1h-.74v6.62h.73V8.8a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.75V8.8c0-1.49-1.19-2.7-2.64-2.7\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m85.3 11.97-.07.02q-.11.04-.37.05-.44.02-.44-.67v-4.5h.9V6.1h-.9V3.89h-.78V6.1h-.9v.76h.9v4.53q0 .74.28 1.01.27.3.77.31.37 0 .61-.1l.05-.01z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.42 6.88c1.11 0 2.07.83 2.3 1.97h-4.65a2.4 2.4 0 0 1 2.34-1.97m1.98 3.94a2.3 2.3 0 0 1-1.99 1.14 2.46 2.46 0 0 1-2.39-2.36h5.14c.2 0 .37-.15.37-.35v-.06c-.13-1.75-1.47-3.08-3.12-3.08a3.24 3.24 0 0 0-3.14 3.32c0 1.83 1.41 3.3 3.14 3.3 1.06 0 2.04-.56 2.61-1.5z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.2 9.53s-.2-.16-.41-.25c-.22-.09-.52-.2-1.16-.35q-.12-.04-.25-.06-.63-.17-1-.44-.33-.28-.3-.61.01-.39.4-.67.45-.34 1.18-.3c.54.02.95.3 1.39.62l.04.03.55-.53-.26-.2c-.44-.3-.97-.62-1.69-.65q-.95-.04-1.6.38c-.47.32-.77.79-.77 1.28-.01.37.07.72.43 1.08.43.43 1.1.65 1.72.77.53.1 1.02.3 1.26.51.3.28.4.48.4.77q-.02.42-.48.72c-.3.23-.73.35-1.18.33a3.2 3.2 0 0 1-1.82-.78l-.04-.04-.54.51.05.05q1.09.95 2.31 1.02a2.6 2.6 0 0 0 1.64-.46q.77-.54.81-1.32a1.7 1.7 0 0 0-.68-1.41\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n d=\"M53.33 27.23a2.75 2.75 0 1 0-5.5-.02 2.77 2.77 0 0 0 2.76 2.74 2.77 2.77 0 0 0 2.74-2.72m-7.96-12.08h2.76v8.42Q49.5 22 51.39 22c2.7 0 4.76 2.24 4.76 5.2 0 3.04-2.04 5.22-4.82 5.22a3.9 3.9 0 0 1-3.2-1.58v1.28h-2.76zm15.19 12.02a2.74 2.74 0 0 0 2.76 2.78 2.8 2.8 0 0 0 2.78-2.74 2.8 2.8 0 0 0-2.78-2.74 2.8 2.8 0 0 0-2.76 2.7m-2.84-.04c0-2.98 2.38-5.14 5.62-5.14s5.58 2.16 5.58 5.2c0 3.16-2.36 5.22-5.64 5.22-3.34 0-5.56-2.18-5.56-5.28m21.1.1a2.76 2.76 0 0 0-2.75-2.76 2.76 2.76 0 0 0-2.74 2.74c0 1.5 1.24 2.74 2.74 2.74a2.8 2.8 0 0 0 2.74-2.72m-.3-3.66v-8.42h2.75v16.96h-2.76v-1.28a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.22-4.82-5.22 0-2.92 2.06-5.2 4.76-5.2q1.92.01 3.26 1.58m5.34 8.54V15.15h2.76v8.44a3.6 3.6 0 0 1 3.06-1.6c1.4 0 2.3.52 2.96 1.34.52.66.68 1.54.68 2.62v6.16h-2.76v-5.38c0-1.74-.5-2.4-1.86-2.4q-2.09 0-2.08 2.76v5.02zm12.01-9.8h2.76v9.8h-2.76zm-.26-4.14c0-.9.74-1.64 1.64-1.64s1.64.74 1.64 1.64-.74 1.64-1.64 1.64-1.64-.74-1.64-1.64\"\n fill=\"var(--logo-text-dark)\"\n />\n </svg>\n );\n}\n\nexport default BodhiLogo;\n"],"mappings":"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"}
|