academe-kit 0.9.4 → 0.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +976 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +75 -12863
- package/dist/index.esm.js +974 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/CosmicDecor/CosmicDecor.d.ts +10 -0
- package/dist/types/components/CosmicDecor/index.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/astronaut.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/black-hole.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/earth.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/giant.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/index.d.ts +10 -0
- package/dist/types/components/CosmicDecor/planets/moon.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/neptune.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/satellite.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/saturn.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/sun.d.ts +2 -0
- package/dist/types/components/CosmicDecor/planets/types.d.ts +4 -0
- package/dist/types/components/CosmicStarsCanvas/CosmicStarsCanvas.d.ts +5 -0
- package/dist/types/components/CosmicStarsCanvas/index.d.ts +2 -0
- package/dist/types/components/JourneyStep/JourneyCrystalPin.d.ts +7 -0
- package/dist/types/components/JourneyStep/JourneyStep.d.ts +20 -0
- package/dist/types/components/JourneyStep/frames/circle-laurel.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/hexagon-ribbon.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/hexagon-wings.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/index.d.ts +4 -0
- package/dist/types/components/JourneyStep/frames/pentagon-crown.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/pentagon.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/shield-wings.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/sphere.d.ts +2 -0
- package/dist/types/components/JourneyStep/frames/types.d.ts +34 -0
- package/dist/types/components/JourneyStep/frames/utils.d.ts +23 -0
- package/dist/types/components/JourneyStep/index.d.ts +5 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/services/CertificateService.d.ts +28 -12804
- package/dist/types/services/userService.d.ts +3 -56
- package/package.json +6 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import React2, { forwardRef, createElement, createContext, useContext, useState, useRef, useMemo, useEffect, useCallback } from 'react';
|
|
2
|
+
import React2, { forwardRef, createElement, createContext, useContext, useState, useRef, useMemo, useEffect, useCallback, useId } from 'react';
|
|
3
|
+
import { useReducedMotion, motion } from 'framer-motion';
|
|
4
|
+
import { animated, useSpring } from '@react-spring/web';
|
|
3
5
|
|
|
4
6
|
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
5
7
|
|
|
@@ -4558,8 +4560,9 @@ function createUserService(apiClient) {
|
|
|
4558
4560
|
});
|
|
4559
4561
|
},
|
|
4560
4562
|
updateMe(body) {
|
|
4563
|
+
// openapi-fetch narrows deviceId to string (drops null) — cast to bypass
|
|
4561
4564
|
return apiClient.PUT("/users/me", {
|
|
4562
|
-
body,
|
|
4565
|
+
body: body,
|
|
4563
4566
|
});
|
|
4564
4567
|
},
|
|
4565
4568
|
/**
|
|
@@ -5551,6 +5554,7 @@ function createCertificateService(apiClient) {
|
|
|
5551
5554
|
* List all certificates
|
|
5552
5555
|
*/
|
|
5553
5556
|
getAll(query) {
|
|
5557
|
+
// spec declares query?: never on this route — cast until spec is updated
|
|
5554
5558
|
return apiClient.GET("/certificates", {
|
|
5555
5559
|
params: { query },
|
|
5556
5560
|
});
|
|
@@ -5567,6 +5571,7 @@ function createCertificateService(apiClient) {
|
|
|
5567
5571
|
* Download all certificates of a given user as a single merged PDF
|
|
5568
5572
|
*/
|
|
5569
5573
|
downloadAll(userId) {
|
|
5574
|
+
// path not yet in the API spec
|
|
5570
5575
|
return apiClient.GET("/certificates/{userId}/download-all", {
|
|
5571
5576
|
params: { path: { userId } },
|
|
5572
5577
|
parseAs: 'blob',
|
|
@@ -5576,6 +5581,7 @@ function createCertificateService(apiClient) {
|
|
|
5576
5581
|
* Download certificate PDF
|
|
5577
5582
|
*/
|
|
5578
5583
|
download(id) {
|
|
5584
|
+
// path not yet in the API spec
|
|
5579
5585
|
return apiClient.GET("/certificates/{id}/download", {
|
|
5580
5586
|
params: { path: { id } },
|
|
5581
5587
|
parseAs: 'blob',
|
|
@@ -5593,6 +5599,7 @@ function createCertificateService(apiClient) {
|
|
|
5593
5599
|
* Generate a certificate PDF server-side
|
|
5594
5600
|
*/
|
|
5595
5601
|
generate(data) {
|
|
5602
|
+
// path not yet in the API spec
|
|
5596
5603
|
return apiClient.POST("/certificates/generate", {
|
|
5597
5604
|
body: data,
|
|
5598
5605
|
});
|
|
@@ -6332,7 +6339,6 @@ const SecurityProvider = ({ apiBaseUrl = "https://stg-api.academe.com.br", skipA
|
|
|
6332
6339
|
const isAuthenticated = auth.isAuthenticated || !!accessToken;
|
|
6333
6340
|
const isLoading = auth.isLoading;
|
|
6334
6341
|
const activeNavigator = auth.activeNavigator;
|
|
6335
|
-
auth.user?.profile;
|
|
6336
6342
|
const currentTokenRef = useRef(undefined);
|
|
6337
6343
|
// Efeito para sincronizar o token do auth com o state
|
|
6338
6344
|
// e também verificar cookies periodicamente
|
|
@@ -9666,10 +9672,972 @@ function styleInject(css, ref) {
|
|
|
9666
9672
|
}
|
|
9667
9673
|
}
|
|
9668
9674
|
|
|
9669
|
-
var css_248z$
|
|
9675
|
+
var css_248z$3 = ".cosmic-decor{inset:0;-webkit-mask-image:radial-gradient(ellipse 82% 78% at 50% 46%,transparent 0,transparent 34%,rgba(0,0,0,.55) 58%,#000 100%);mask-image:radial-gradient(ellipse 82% 78% at 50% 46%,transparent 0,transparent 34%,rgba(0,0,0,.55) 58%,#000 100%);pointer-events:none;position:absolute;z-index:2}.cosmic-decor--session{inset:0 auto 0 50%;-webkit-mask-image:none;mask-image:none;right:auto;transform:translateX(-50%);width:100vw;z-index:0}.cosmic-decor__planet{display:block;height:auto;position:absolute;will-change:transform}.cosmic-decor__planet--saturn{animation:cosmicFloat 7s ease-in-out infinite;aspect-ratio:120/80;filter:drop-shadow(0 0 14px rgba(139,92,246,.28));left:max(-18px,2vw);opacity:.94;overflow:visible;right:auto;top:44px;width:180px}.cosmic-decor__planet--giant{animation:cosmicFloat 8.5s ease-in-out infinite;animation-delay:-2s;aspect-ratio:1;filter:drop-shadow(0 0 22px rgba(59,130,246,.3));left:auto;opacity:.9;right:max(-20px,2vw);top:72px;width:148px}.cosmic-decor__planet--earth{animation:cosmicFloat 9.8s ease-in-out infinite;animation-delay:-1.2s;aspect-ratio:1;filter:drop-shadow(0 0 18px rgba(147,197,253,.28));left:max(10px,8vw);opacity:.88;right:auto;top:208px;width:116px}.cosmic-decor__planet--neptune{animation:cosmicFloat 11.2s ease-in-out infinite;animation-delay:-3.1s;aspect-ratio:1;filter:drop-shadow(0 0 28px rgba(37,99,235,.26));left:auto;opacity:.82;right:100px;top:132px;width:180px}.cosmic-decor__planet--black-hole{animation:cosmicBlackHolePulse 5.4s ease-in-out infinite;aspect-ratio:1;bottom:72px;filter:drop-shadow(0 0 34px rgba(167,139,250,.22));left:max(22px,10vw);opacity:.88;right:auto;width:124px}.cosmic-decor__planet--sun{animation:cosmicFloat 8s ease-in-out infinite;animation-delay:-.8s;aspect-ratio:1;filter:drop-shadow(0 0 32px rgba(250,204,21,.4)) drop-shadow(0 0 18px rgba(249,115,22,.25));left:auto;opacity:.95;overflow:visible;right:max(-12px,2vw);top:28px;width:160px}.cosmic-decor__planet--moon{animation:cosmicFloat 12s ease-in-out infinite;animation-delay:-4.4s;aspect-ratio:1;filter:drop-shadow(0 0 14px rgba(226,232,240,.32));left:auto;opacity:.9;right:max(20px,6vw);top:268px;width:92px}.cosmic-decor__planet--satellite{animation:cosmicFloat 7.6s ease-in-out infinite;animation-delay:-1.6s;aspect-ratio:160/100;filter:drop-shadow(0 0 16px rgba(56,189,248,.28));left:max(40px,14vw);opacity:.9;overflow:visible;right:auto;top:152px;width:150px}.cosmic-decor__planet--astronaut{animation:cosmicAstronautDrift 10s ease-in-out infinite;aspect-ratio:110/140;bottom:96px;filter:drop-shadow(0 0 18px rgba(167,139,250,.32)) drop-shadow(0 0 8px rgba(56,189,248,.2));left:auto;opacity:.92;overflow:visible;right:max(8px,4vw);width:100px}.cosmic-decor__sparkle{animation:cosmicSparkle 2.6s ease-in-out infinite;filter:drop-shadow(0 0 4px rgba(253,224,71,.65));height:12px;opacity:.88;position:absolute;width:12px}.cosmic-decor__sparkle--1{left:4%;top:5%}.cosmic-decor__sparkle--2{animation-delay:.5s;height:10px;right:5%;top:22%;width:10px}.cosmic-decor__sparkle--3{animation-delay:1.1s;left:5%;top:48%}.cosmic-decor__sparkle--4{animation-delay:1.6s;height:10px;right:5%;top:78%;width:10px}@keyframes cosmicFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes cosmicBlackHolePulse{0%,to{opacity:.82;transform:scale(1)}50%{opacity:.98;transform:scale(1.06)}}@keyframes cosmicAstronautDrift{0%,to{transform:translate(0)}25%{transform:translate(4px,-8px)}50%{transform:translate(-2px,-14px)}75%{transform:translate(-5px,-4px)}}@keyframes cosmicSparkle{0%,to{opacity:.92;transform:scale(1)}50%{opacity:.55;transform:scale(1.2)}}@media (min-width:1024px){.cosmic-decor.cosmic-decor--page{-webkit-mask-image:radial-gradient(ellipse min(96%,1400px) min(88%,900px) at 50% 42%,transparent 0,transparent 38%,rgba(0,0,0,.5) 62%,#000 100%);mask-image:radial-gradient(ellipse min(96%,1400px) min(88%,900px) at 50% 42%,transparent 0,transparent 38%,rgba(0,0,0,.5) 62%,#000 100%)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--saturn{filter:drop-shadow(0 0 28px rgba(139,92,246,.35));left:clamp(12px,3vw,40px);right:auto;top:clamp(48px,10vh,140px);width:clamp(190px,14vw,270px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--giant{filter:drop-shadow(0 0 36px rgba(59,130,246,.38));left:auto;right:clamp(-100px,-4vw,-24px);top:clamp(80px,14vh,200px);width:clamp(200px,17vw,300px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--earth{filter:drop-shadow(0 0 30px rgba(147,197,253,.28));left:clamp(40px,7vw,140px);right:auto;top:clamp(170px,24vh,320px);width:clamp(170px,12vw,260px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--neptune{filter:drop-shadow(0 0 42px rgba(37,99,235,.26));left:auto;right:clamp(-110px,-5.5vw,-45px);top:clamp(52px,12vh,160px);width:clamp(200px,14vw,310px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--black-hole{bottom:clamp(34px,9vh,160px);left:clamp(50px,9vw,170px);right:auto;width:clamp(210px,17vw,360px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--sun{filter:drop-shadow(0 0 44px rgba(250,204,21,.42)) drop-shadow(0 0 22px rgba(249,115,22,.3));left:auto;right:clamp(40px,7vw,160px);top:clamp(36px,8vh,120px);width:clamp(180px,13vw,260px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--moon{filter:drop-shadow(0 0 22px rgba(226,232,240,.36));left:auto;right:clamp(140px,14vw,280px);top:clamp(220px,28vh,360px);width:clamp(110px,8vw,170px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--satellite{filter:drop-shadow(0 0 24px rgba(56,189,248,.32));left:clamp(160px,18vw,320px);right:auto;top:clamp(140px,18vh,240px);width:clamp(170px,12vw,250px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--astronaut{bottom:clamp(60px,12vh,200px);filter:drop-shadow(0 0 28px rgba(167,139,250,.36)) drop-shadow(0 0 12px rgba(56,189,248,.22));left:auto;right:clamp(120px,13vw,260px);width:clamp(120px,9vw,180px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__sparkle{opacity:.92}.cosmic-decor.cosmic-decor--page .cosmic-decor__sparkle--1{height:14px;left:max(16px,3vw);top:10%;width:14px}.cosmic-decor.cosmic-decor--page .cosmic-decor__sparkle--2{height:12px;right:max(20px,4vw);top:18%;width:12px}.cosmic-decor.cosmic-decor--page .cosmic-decor__sparkle--3{height:13px;left:max(12px,2.5vw);top:46%;width:13px}.cosmic-decor.cosmic-decor--page .cosmic-decor__sparkle--4{height:12px;right:max(18px,3.5vw);top:72%;width:12px}}@media (min-width:1440px){.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--saturn{width:clamp(220px,12vw,290px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--giant{left:auto;right:clamp(-120px,-5vw,-32px);width:clamp(240px,14vw,320px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--earth{width:clamp(240px,13vw,300px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--neptune{width:clamp(260px,15vw,340px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--black-hole{width:clamp(280px,18vw,420px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--sun{width:clamp(210px,12vw,290px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--moon{width:clamp(130px,7vw,200px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--satellite{width:clamp(200px,11vw,290px)}.cosmic-decor.cosmic-decor--page .cosmic-decor__planet--astronaut{width:clamp(140px,8vw,210px)}}@media (prefers-reduced-motion:reduce){.cosmic-decor__planet--astronaut,.cosmic-decor__planet--black-hole,.cosmic-decor__planet--earth,.cosmic-decor__planet--giant,.cosmic-decor__planet--moon,.cosmic-decor__planet--neptune,.cosmic-decor__planet--satellite,.cosmic-decor__planet--saturn,.cosmic-decor__planet--sun{animation:none}.cosmic-decor__sparkle{animation:none;opacity:.9;transform:none}}";
|
|
9676
|
+
styleInject(css_248z$3,{"insertAt":"top"});
|
|
9677
|
+
|
|
9678
|
+
const SATURN_ORIGIN = {
|
|
9679
|
+
transformOrigin: '50% 50%',
|
|
9680
|
+
transformBox: 'fill-box',
|
|
9681
|
+
};
|
|
9682
|
+
function PlanetSaturn({ id }) {
|
|
9683
|
+
const reduceMotion = useReducedMotion();
|
|
9684
|
+
const saturnBodyId = `cosmic-saturn-body-${id}`;
|
|
9685
|
+
const saturnRingId = `cosmic-saturn-ring-${id}`;
|
|
9686
|
+
const ringAnimate = reduceMotion ? { rotate: 0 } : { rotate: 360 };
|
|
9687
|
+
const ringTransition = reduceMotion
|
|
9688
|
+
? { duration: 0 }
|
|
9689
|
+
: { duration: 105, repeat: Infinity, ease: 'linear' };
|
|
9690
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--saturn", viewBox: "0 0 120 80", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: saturnBodyId, cx: "30%", cy: "30%", children: [jsx("stop", { offset: "0%", stopColor: "#c4b5fd" }), jsx("stop", { offset: "55%", stopColor: "#7c3aed" }), jsx("stop", { offset: "100%", stopColor: "#1e1b4b" })] }), jsxs("linearGradient", { id: saturnRingId, x1: "0", y1: "0", x2: "1", y2: "0", children: [jsx("stop", { offset: "0%", stopColor: "#c4b5fd", stopOpacity: "0" }), jsx("stop", { offset: "20%", stopColor: "#c4b5fd", stopOpacity: "0.7" }), jsx("stop", { offset: "80%", stopColor: "#c4b5fd", stopOpacity: "0.7" }), jsx("stop", { offset: "100%", stopColor: "#c4b5fd", stopOpacity: "0" })] })] }), jsx(motion.g, { style: SATURN_ORIGIN, animate: ringAnimate, transition: ringTransition, children: jsx("ellipse", { cx: "60", cy: "40", rx: "56", ry: "11", fill: "none", stroke: `url(#${saturnRingId})`, strokeWidth: "2.5" }) }), jsx("circle", { cx: "60", cy: "40", r: "24", fill: `url(#${saturnBodyId})` }), jsx(motion.g, { style: SATURN_ORIGIN, animate: ringAnimate, transition: ringTransition, children: jsx("path", { d: "M 4 42 Q 60 56 116 42", stroke: `url(#${saturnRingId})`, strokeWidth: "2.5", fill: "none" }) })] }));
|
|
9691
|
+
}
|
|
9692
|
+
|
|
9693
|
+
const AnimatedGroup = animated('g');
|
|
9694
|
+
function PlanetGiant({ id }) {
|
|
9695
|
+
const reduceMotion = useReducedMotion();
|
|
9696
|
+
const giantBodyId = `cosmic-giant-body-${id}`;
|
|
9697
|
+
const giantClipId = `cosmic-giant-clip-${id}`;
|
|
9698
|
+
const bandsSpring = useSpring(reduceMotion
|
|
9699
|
+
? { from: { x: 0 }, to: { x: 0 }, immediate: true }
|
|
9700
|
+
: {
|
|
9701
|
+
from: { x: -5 },
|
|
9702
|
+
to: { x: 5 },
|
|
9703
|
+
loop: { reverse: true },
|
|
9704
|
+
config: { duration: 6500 },
|
|
9705
|
+
});
|
|
9706
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--giant", viewBox: "0 0 120 120", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: giantBodyId, cx: "32%", cy: "30%", children: [jsx("stop", { offset: "0%", stopColor: "#bae6fd" }), jsx("stop", { offset: "55%", stopColor: "#3b82f6" }), jsx("stop", { offset: "100%", stopColor: "#1e3a8a" })] }), jsx("clipPath", { id: giantClipId, children: jsx("circle", { cx: "60", cy: "60", r: "55" }) })] }), jsx("circle", { cx: "60", cy: "60", r: "55", fill: `url(#${giantBodyId})` }), jsxs(AnimatedGroup, { clipPath: `url(#${giantClipId})`, fill: "none", stroke: "#1e3a8a", strokeWidth: "1.4", strokeOpacity: "0.55", style: { transform: bandsSpring.x.to((x) => `translate(${x}px, 0px)`) }, children: [jsx("path", { d: "M -5 35 Q 30 30 60 35 T 125 35" }), jsx("path", { d: "M -5 55 Q 30 60 60 55 T 125 55" }), jsx("path", { d: "M -5 75 Q 30 70 60 75 T 125 75" }), jsx("path", { d: "M -5 92 Q 30 96 60 92 T 125 92" })] })] }));
|
|
9707
|
+
}
|
|
9708
|
+
|
|
9709
|
+
function PlanetEarth({ id }) {
|
|
9710
|
+
const earthBodyId = `cosmic-earth-body-${id}`;
|
|
9711
|
+
const earthAtmosId = `cosmic-earth-atmos-${id}`;
|
|
9712
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--earth", viewBox: "0 0 120 120", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: earthBodyId, cx: "30%", cy: "30%", children: [jsx("stop", { offset: "0%", stopColor: "#93c5fd" }), jsx("stop", { offset: "55%", stopColor: "#3b82f6" }), jsx("stop", { offset: "100%", stopColor: "#052e3a" })] }), jsxs("linearGradient", { id: earthAtmosId, x1: "0", y1: "0", x2: "1", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0" }), jsx("stop", { offset: "25%", stopColor: "#60a5fa", stopOpacity: "0.6" }), jsx("stop", { offset: "70%", stopColor: "#a78bfa", stopOpacity: "0.45" }), jsx("stop", { offset: "100%", stopColor: "#a78bfa", stopOpacity: "0" })] })] }), jsx("circle", { cx: "60", cy: "60", r: "48", fill: `url(#${earthBodyId})` }), jsx("path", { d: "M 38 63 C 40 54 54 50 60 56 C 63 59 65 66 61 70 C 56 75 45 74 41 68 C 39 66 37 65 38 63 Z", fill: "#22c55e", opacity: "0.82" }), jsx("path", { d: "M 56 44 C 60 42 68 43 71 49 C 73 53 69 57 64 58 C 58 59 53 55 52 51 C 51 48 53 45 56 44 Z", fill: "#16a34a", opacity: "0.6" }), jsx("path", { d: "M 28 52 C 33 46 44 44 49 47 C 53 49 53 55 49 58 C 43 63 30 59 27 55 C 26 54 26 53 28 52 Z", fill: "#15803d", opacity: "0.45" }), jsx("ellipse", { cx: "60", cy: "60", rx: "52", ry: "12", fill: "none", stroke: `url(#${earthAtmosId})`, strokeWidth: "2.2", opacity: "0.9" })] }));
|
|
9713
|
+
}
|
|
9714
|
+
|
|
9715
|
+
function PlanetNeptune({ id }) {
|
|
9716
|
+
const neptuneBodyId = `cosmic-neptune-body-${id}`;
|
|
9717
|
+
const neptuneBandId = `cosmic-neptune-band-${id}`;
|
|
9718
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--neptune", viewBox: "0 0 120 120", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: neptuneBodyId, cx: "32%", cy: "28%", children: [jsx("stop", { offset: "0%", stopColor: "#93c5fd" }), jsx("stop", { offset: "50%", stopColor: "#2563eb" }), jsx("stop", { offset: "100%", stopColor: "#0b1226" })] }), jsxs("linearGradient", { id: neptuneBandId, x1: "0", y1: "0", x2: "1", y2: "0", children: [jsx("stop", { offset: "0%", stopColor: "#60a5fa", stopOpacity: "0" }), jsx("stop", { offset: "20%", stopColor: "#60a5fa", stopOpacity: "0.7" }), jsx("stop", { offset: "70%", stopColor: "#a78bfa", stopOpacity: "0.55" }), jsx("stop", { offset: "100%", stopColor: "#a78bfa", stopOpacity: "0" })] })] }), jsx("circle", { cx: "60", cy: "60", r: "50", fill: `url(#${neptuneBodyId})` }), jsxs("g", { fill: "none", stroke: `url(#${neptuneBandId})`, strokeWidth: "2.2", opacity: "0.65", children: [jsx("path", { d: "M 22 54 Q 60 44 98 54" }), jsx("path", { d: "M 18 70 Q 60 60 102 70" }), jsx("path", { d: "M 26 86 Q 60 80 94 86" })] }), jsx("ellipse", { cx: "60", cy: "60", rx: "56", ry: "10", fill: "none", stroke: "#a5b4fc", strokeWidth: "1.6", opacity: "0.35" })] }));
|
|
9719
|
+
}
|
|
9720
|
+
|
|
9721
|
+
function PlanetBlackHole({ id }) {
|
|
9722
|
+
const blackHoleCoreId = `cosmic-black-hole-core-${id}`;
|
|
9723
|
+
const blackHoleRingId = `cosmic-black-hole-ring-${id}`;
|
|
9724
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--black-hole", viewBox: "0 0 120 120", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: blackHoleCoreId, cx: "50%", cy: "50%", children: [jsx("stop", { offset: "0%", stopColor: "#05050a" }), jsx("stop", { offset: "35%", stopColor: "#000000" }), jsx("stop", { offset: "70%", stopColor: "#09091f" }), jsx("stop", { offset: "100%", stopColor: "#000000" })] }), jsxs("linearGradient", { id: blackHoleRingId, x1: "0", y1: "0", x2: "1", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: "#a78bfa", stopOpacity: "0.0" }), jsx("stop", { offset: "25%", stopColor: "#a78bfa", stopOpacity: "0.55" }), jsx("stop", { offset: "60%", stopColor: "#22d3ee", stopOpacity: "0.42" }), jsx("stop", { offset: "100%", stopColor: "#22d3ee", stopOpacity: "0.0" })] })] }), jsx("circle", { cx: "60", cy: "60", r: "38", fill: `url(#${blackHoleCoreId})` }), jsx("circle", { cx: "60", cy: "60", r: "52", fill: "none", stroke: `url(#${blackHoleRingId})`, strokeWidth: "3", opacity: "0.48" }), jsx("circle", { cx: "60", cy: "60", r: "60", fill: "none", stroke: "#22d3ee", strokeWidth: "1.6", opacity: "0.18" }), jsx("path", { d: "M 30 62 Q 60 40 90 62 Q 60 84 30 62 Z", fill: "none", stroke: "#a78bfa", strokeWidth: "2", opacity: "0.22" }), jsx("circle", { cx: "60", cy: "60", r: "6", fill: "#ffffff", opacity: "0.55" })] }));
|
|
9725
|
+
}
|
|
9726
|
+
|
|
9727
|
+
const ORIGIN$2 = {
|
|
9728
|
+
transformOrigin: '50% 50%',
|
|
9729
|
+
transformBox: 'fill-box',
|
|
9730
|
+
};
|
|
9731
|
+
function PlanetSun({ id }) {
|
|
9732
|
+
const reduceMotion = useReducedMotion();
|
|
9733
|
+
const sunBodyId = `cosmic-sun-body-${id}`;
|
|
9734
|
+
const sunCoronaId = `cosmic-sun-corona-${id}`;
|
|
9735
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--sun", viewBox: "0 0 140 140", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: sunBodyId, cx: "42%", cy: "38%", children: [jsx("stop", { offset: "0%", stopColor: "#fffbeb" }), jsx("stop", { offset: "30%", stopColor: "#fde68a" }), jsx("stop", { offset: "60%", stopColor: "#f59e0b" }), jsx("stop", { offset: "90%", stopColor: "#ea580c" }), jsx("stop", { offset: "100%", stopColor: "#7c2d12" })] }), jsxs("radialGradient", { id: sunCoronaId, cx: "50%", cy: "50%", children: [jsx("stop", { offset: "0%", stopColor: "#fde68a", stopOpacity: "0.55" }), jsx("stop", { offset: "55%", stopColor: "#fbbf24", stopOpacity: "0.18" }), jsx("stop", { offset: "100%", stopColor: "#fbbf24", stopOpacity: "0" })] })] }), jsx("circle", { cx: "70", cy: "70", r: "62", fill: `url(#${sunCoronaId})` }), jsx(motion.g, { style: ORIGIN$2, animate: reduceMotion ? { rotate: 0 } : { rotate: 360 }, transition: reduceMotion
|
|
9736
|
+
? { duration: 0 }
|
|
9737
|
+
: { duration: 130, repeat: Infinity, ease: 'linear' }, stroke: "#fcd34d", strokeWidth: "2.4", strokeLinecap: "round", opacity: "0.7", children: Array.from({ length: 12 }).map((_, i) => {
|
|
9738
|
+
const angle = (i / 12) * Math.PI * 2;
|
|
9739
|
+
const x1 = 70 + Math.cos(angle) * 46;
|
|
9740
|
+
const y1 = 70 + Math.sin(angle) * 46;
|
|
9741
|
+
const x2 = 70 + Math.cos(angle) * 58;
|
|
9742
|
+
const y2 = 70 + Math.sin(angle) * 58;
|
|
9743
|
+
return jsx("line", { x1: x1, y1: y1, x2: x2, y2: y2 }, i);
|
|
9744
|
+
}) }), jsx("circle", { cx: "70", cy: "70", r: "36", fill: `url(#${sunBodyId})` }), jsx("ellipse", { cx: "58", cy: "58", rx: "13", ry: "8", fill: "#fef3c7", opacity: "0.5" })] }));
|
|
9745
|
+
}
|
|
9746
|
+
|
|
9747
|
+
function PlanetMoon({ id }) {
|
|
9748
|
+
const moonBodyId = `cosmic-moon-body-${id}`;
|
|
9749
|
+
const moonShadowId = `cosmic-moon-shadow-${id}`;
|
|
9750
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--moon", viewBox: "0 0 120 120", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: moonBodyId, cx: "34%", cy: "30%", children: [jsx("stop", { offset: "0%", stopColor: "#f8fafc" }), jsx("stop", { offset: "35%", stopColor: "#e2e8f0" }), jsx("stop", { offset: "75%", stopColor: "#94a3b8" }), jsx("stop", { offset: "100%", stopColor: "#1e293b" })] }), jsxs("radialGradient", { id: moonShadowId, cx: "78%", cy: "58%", children: [jsx("stop", { offset: "0%", stopColor: "#0f172a", stopOpacity: "0" }), jsx("stop", { offset: "60%", stopColor: "#0f172a", stopOpacity: "0.32" }), jsx("stop", { offset: "100%", stopColor: "#020617", stopOpacity: "0.55" })] })] }), jsx("circle", { cx: "60", cy: "60", r: "48", fill: `url(#${moonBodyId})` }), jsxs("g", { fill: "#475569", opacity: "0.55", children: [jsx("ellipse", { cx: "44", cy: "48", rx: "6", ry: "4.5" }), jsx("ellipse", { cx: "72", cy: "44", rx: "4", ry: "3" }), jsx("ellipse", { cx: "56", cy: "76", rx: "7.5", ry: "5" }), jsx("ellipse", { cx: "80", cy: "72", rx: "3.5", ry: "3" }), jsx("ellipse", { cx: "38", cy: "70", rx: "3", ry: "2.5" }), jsx("ellipse", { cx: "66", cy: "62", rx: "2.2", ry: "1.6" })] }), jsxs("g", { fill: "#cbd5e1", opacity: "0.32", children: [jsx("ellipse", { cx: "44", cy: "46", rx: "6", ry: "1.2" }), jsx("ellipse", { cx: "56", cy: "74", rx: "7.5", ry: "1.4" }), jsx("ellipse", { cx: "72", cy: "43", rx: "4", ry: "0.9" })] }), jsx("circle", { cx: "60", cy: "60", r: "48", fill: `url(#${moonShadowId})` }), jsx("ellipse", { cx: "44", cy: "42", rx: "14", ry: "8", fill: "#ffffff", opacity: "0.16" })] }));
|
|
9751
|
+
}
|
|
9752
|
+
|
|
9753
|
+
const ORIGIN$1 = {
|
|
9754
|
+
transformOrigin: '50% 50%',
|
|
9755
|
+
transformBox: 'fill-box',
|
|
9756
|
+
};
|
|
9757
|
+
function PlanetSatellite({ id }) {
|
|
9758
|
+
const reduceMotion = useReducedMotion();
|
|
9759
|
+
const satelliteBodyId = `cosmic-satellite-body-${id}`;
|
|
9760
|
+
const satellitePanelId = `cosmic-satellite-panel-${id}`;
|
|
9761
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--satellite", viewBox: "0 0 160 100", children: [jsxs("defs", { children: [jsxs("linearGradient", { id: satelliteBodyId, x1: "0", y1: "0", x2: "1", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: "#e2e8f0" }), jsx("stop", { offset: "50%", stopColor: "#94a3b8" }), jsx("stop", { offset: "100%", stopColor: "#334155" })] }), jsxs("linearGradient", { id: satellitePanelId, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: "#1d4ed8" }), jsx("stop", { offset: "55%", stopColor: "#1e3a8a" }), jsx("stop", { offset: "100%", stopColor: "#0b1226" })] })] }), jsxs(motion.g, { style: ORIGIN$1, animate: reduceMotion ? { rotate: 0 } : { rotate: [-4, 4, -4] }, transition: reduceMotion
|
|
9762
|
+
? { duration: 0 }
|
|
9763
|
+
: { duration: 9, repeat: Infinity, ease: 'easeInOut' }, children: [jsx("g", { fill: `url(#${satellitePanelId})`, stroke: "#0f172a", strokeWidth: "0.8", children: jsx("rect", { x: "6", y: "40", width: "46", height: "20", rx: "1.5" }) }), jsxs("g", { stroke: "#38bdf8", strokeWidth: "0.5", opacity: "0.55", children: [jsx("line", { x1: "18", y1: "40", x2: "18", y2: "60" }), jsx("line", { x1: "30", y1: "40", x2: "30", y2: "60" }), jsx("line", { x1: "42", y1: "40", x2: "42", y2: "60" }), jsx("line", { x1: "6", y1: "50", x2: "52", y2: "50" })] }), jsx("rect", { x: "52", y: "48", width: "10", height: "4", fill: "#475569" }), jsx("g", { fill: `url(#${satellitePanelId})`, stroke: "#0f172a", strokeWidth: "0.8", children: jsx("rect", { x: "108", y: "40", width: "46", height: "20", rx: "1.5" }) }), jsxs("g", { stroke: "#38bdf8", strokeWidth: "0.5", opacity: "0.55", children: [jsx("line", { x1: "120", y1: "40", x2: "120", y2: "60" }), jsx("line", { x1: "132", y1: "40", x2: "132", y2: "60" }), jsx("line", { x1: "144", y1: "40", x2: "144", y2: "60" }), jsx("line", { x1: "108", y1: "50", x2: "154", y2: "50" })] }), jsx("rect", { x: "98", y: "48", width: "10", height: "4", fill: "#475569" }), jsx("rect", { x: "62", y: "36", width: "36", height: "28", rx: "3", fill: `url(#${satelliteBodyId})`, stroke: "#1e293b", strokeWidth: "1" }), jsx("rect", { x: "68", y: "42", width: "10", height: "6", rx: "1", fill: "#22d3ee", opacity: "0.9" }), jsx("rect", { x: "82", y: "42", width: "10", height: "6", rx: "1", fill: "#0ea5e9", opacity: "0.65" }), jsx("line", { x1: "80", y1: "36", x2: "80", y2: "18", stroke: "#475569", strokeWidth: "1.5" }), jsx("path", { d: "M 70 22 Q 80 8 90 22 Z", fill: "#cbd5e1", stroke: "#1e293b", strokeWidth: "0.8" }), jsx("ellipse", { cx: "80", cy: "22", rx: "10", ry: "2.5", fill: "#475569" }), jsx("circle", { cx: "80", cy: "15", r: "1.6", fill: "#fb923c" }), jsx("line", { x1: "92", y1: "38", x2: "100", y2: "30", stroke: "#475569", strokeWidth: "1.2" }), jsx("circle", { cx: "100", cy: "30", r: "1.6", fill: "#22d3ee" }), jsx("circle", { cx: "92", cy: "56", r: "1.6", fill: "#22c55e" })] })] }));
|
|
9764
|
+
}
|
|
9765
|
+
|
|
9766
|
+
const ORIGIN = {
|
|
9767
|
+
transformOrigin: '50% 50%',
|
|
9768
|
+
transformBox: 'fill-box',
|
|
9769
|
+
};
|
|
9770
|
+
function PlanetAstronaut({ id }) {
|
|
9771
|
+
const reduceMotion = useReducedMotion();
|
|
9772
|
+
const astronautSuitId = `cosmic-astronaut-suit-${id}`;
|
|
9773
|
+
const astronautVisorId = `cosmic-astronaut-visor-${id}`;
|
|
9774
|
+
return (jsxs("svg", { className: "cosmic-decor__planet cosmic-decor__planet--astronaut", viewBox: "0 0 110 140", children: [jsxs("defs", { children: [jsxs("radialGradient", { id: astronautSuitId, cx: "40%", cy: "35%", children: [jsx("stop", { offset: "0%", stopColor: "#ffffff" }), jsx("stop", { offset: "55%", stopColor: "#e2e8f0" }), jsx("stop", { offset: "100%", stopColor: "#475569" })] }), jsxs("radialGradient", { id: astronautVisorId, cx: "32%", cy: "28%", children: [jsx("stop", { offset: "0%", stopColor: "#bae6fd" }), jsx("stop", { offset: "40%", stopColor: "#1e3a8a" }), jsx("stop", { offset: "100%", stopColor: "#0b1226" })] })] }), jsxs(motion.g, { style: ORIGIN, animate: reduceMotion ? { rotate: 0 } : { rotate: [-5, 5, -5] }, transition: reduceMotion
|
|
9775
|
+
? { duration: 0 }
|
|
9776
|
+
: { duration: 8, repeat: Infinity, ease: 'easeInOut' }, children: [jsx("rect", { x: "34", y: "56", width: "42", height: "42", rx: "6", fill: "#475569", stroke: "#0f172a", strokeWidth: "0.8" }), jsx("rect", { x: "40", y: "62", width: "30", height: "3", rx: "1", fill: "#1e293b" }), jsx("rect", { x: "40", y: "70", width: "30", height: "3", rx: "1", fill: "#1e293b" }), jsx("rect", { x: "40", y: "78", width: "30", height: "3", rx: "1", fill: "#1e293b" }), jsx("path", { d: "M 32 56 Q 32 50 40 48 H 70 Q 78 50 78 56 V 100 Q 78 108 72 108 H 38 Q 32 108 32 100 Z", fill: `url(#${astronautSuitId})`, stroke: "#0f172a", strokeWidth: "0.8" }), jsx("path", { d: "M 32 60 Q 18 64 14 82 Q 14 90 22 92 L 30 86 V 70 Z", fill: `url(#${astronautSuitId})`, stroke: "#0f172a", strokeWidth: "0.8" }), jsx("path", { d: "M 78 60 Q 92 64 96 82 Q 96 90 88 92 L 80 86 V 70 Z", fill: `url(#${astronautSuitId})`, stroke: "#0f172a", strokeWidth: "0.8" }), jsx("ellipse", { cx: "20", cy: "92", rx: "6", ry: "3", fill: "#1e293b" }), jsx("ellipse", { cx: "90", cy: "92", rx: "6", ry: "3", fill: "#1e293b" }), jsx("path", { d: "M 38 106 Q 36 124 44 132 Q 52 132 52 124 V 106 Z", fill: `url(#${astronautSuitId})`, stroke: "#0f172a", strokeWidth: "0.8" }), jsx("path", { d: "M 58 106 V 124 Q 58 132 66 132 Q 74 124 72 106 Z", fill: `url(#${astronautSuitId})`, stroke: "#0f172a", strokeWidth: "0.8" }), jsx("ellipse", { cx: "48", cy: "132", rx: "7", ry: "3", fill: "#1e293b" }), jsx("ellipse", { cx: "66", cy: "132", rx: "7", ry: "3", fill: "#1e293b" }), jsx("rect", { x: "44", y: "68", width: "22", height: "14", rx: "2", fill: "#cbd5e1", stroke: "#0f172a", strokeWidth: "0.6" }), jsx("circle", { cx: "50", cy: "75", r: "1.6", fill: "#22c55e" }), jsx("circle", { cx: "55", cy: "75", r: "1.6", fill: "#fb923c" }), jsx("circle", { cx: "60", cy: "75", r: "1.6", fill: "#22d3ee" }), jsx("circle", { cx: "55", cy: "36", r: "22", fill: "#f8fafc", stroke: "#1e293b", strokeWidth: "1" }), jsx("circle", { cx: "55", cy: "36", r: "17", fill: `url(#${astronautVisorId})` }), jsx("path", { d: "M 44 26 Q 50 22 60 24", stroke: "#ffffff", strokeWidth: "2", strokeLinecap: "round", opacity: "0.7", fill: "none" }), jsx("ellipse", { cx: "48", cy: "30", rx: "3", ry: "1.5", fill: "#ffffff", opacity: "0.55" })] })] }));
|
|
9777
|
+
}
|
|
9778
|
+
|
|
9779
|
+
const ALL_PLANETS = [
|
|
9780
|
+
'saturn',
|
|
9781
|
+
'giant',
|
|
9782
|
+
'earth',
|
|
9783
|
+
'neptune',
|
|
9784
|
+
'black-hole',
|
|
9785
|
+
'sun',
|
|
9786
|
+
'moon',
|
|
9787
|
+
'satellite',
|
|
9788
|
+
'astronaut',
|
|
9789
|
+
];
|
|
9790
|
+
const SPARKLE_PATH = 'M 6 0 L 7 5 L 12 6 L 7 7 L 6 12 L 5 7 L 0 6 L 5 5 Z';
|
|
9791
|
+
function CosmicDecor({ planets, showSparkles = true, decorVariant = 'page', }) {
|
|
9792
|
+
const rawId = useId();
|
|
9793
|
+
const id = rawId.replace(/:/g, '');
|
|
9794
|
+
const effectivePlanets = planets ?? ALL_PLANETS;
|
|
9795
|
+
const planetSet = new Set(effectivePlanets);
|
|
9796
|
+
const rootClassName = decorVariant === 'page'
|
|
9797
|
+
? 'cosmic-decor cosmic-decor--page'
|
|
9798
|
+
: 'cosmic-decor cosmic-decor--session';
|
|
9799
|
+
return (jsxs("div", { className: rootClassName, "aria-hidden": true, children: [planetSet.has('saturn') && jsx(PlanetSaturn, { id: id }), planetSet.has('giant') && jsx(PlanetGiant, { id: id }), planetSet.has('earth') && jsx(PlanetEarth, { id: id }), planetSet.has('neptune') && jsx(PlanetNeptune, { id: id }), planetSet.has('black-hole') && jsx(PlanetBlackHole, { id: id }), planetSet.has('sun') && jsx(PlanetSun, { id: id }), planetSet.has('moon') && jsx(PlanetMoon, { id: id }), planetSet.has('satellite') && jsx(PlanetSatellite, { id: id }), planetSet.has('astronaut') && jsx(PlanetAstronaut, { id: id }), showSparkles && (jsxs(Fragment, { children: [jsx("svg", { className: "cosmic-decor__sparkle cosmic-decor__sparkle--1", viewBox: "0 0 12 12", children: jsx("path", { d: SPARKLE_PATH, fill: "#fcd34d" }) }), jsx("svg", { className: "cosmic-decor__sparkle cosmic-decor__sparkle--2", viewBox: "0 0 12 12", children: jsx("path", { d: SPARKLE_PATH, fill: "#ffffff" }) }), jsx("svg", { className: "cosmic-decor__sparkle cosmic-decor__sparkle--3", viewBox: "0 0 12 12", children: jsx("path", { d: SPARKLE_PATH, fill: "#fcd34d" }) }), jsx("svg", { className: "cosmic-decor__sparkle cosmic-decor__sparkle--4", viewBox: "0 0 12 12", children: jsx("path", { d: SPARKLE_PATH, fill: "#ffffff" }) })] }))] }));
|
|
9800
|
+
}
|
|
9801
|
+
|
|
9802
|
+
function randomStar(w, h) {
|
|
9803
|
+
const roll = Math.random();
|
|
9804
|
+
let hue;
|
|
9805
|
+
let sat;
|
|
9806
|
+
let light;
|
|
9807
|
+
if (roll > 0.85) {
|
|
9808
|
+
hue = Math.random() * 60 + 200;
|
|
9809
|
+
sat = 80;
|
|
9810
|
+
light = 80;
|
|
9811
|
+
}
|
|
9812
|
+
else if (Math.random() > 0.9) {
|
|
9813
|
+
hue = Math.random() * 40 + 10;
|
|
9814
|
+
sat = 70;
|
|
9815
|
+
light = 80;
|
|
9816
|
+
}
|
|
9817
|
+
else {
|
|
9818
|
+
hue = 0;
|
|
9819
|
+
sat = 0;
|
|
9820
|
+
light = 100;
|
|
9821
|
+
}
|
|
9822
|
+
return {
|
|
9823
|
+
x: Math.random() * w,
|
|
9824
|
+
y: Math.random() * h,
|
|
9825
|
+
r: Math.random() * 1.5 + 0.3,
|
|
9826
|
+
alpha: Math.random() * 0.7 + 0.1,
|
|
9827
|
+
twinkleSpeed: Math.random() * 0.02 + 0.005,
|
|
9828
|
+
twinklePhase: Math.random() * Math.PI * 2,
|
|
9829
|
+
hue,
|
|
9830
|
+
sat,
|
|
9831
|
+
light,
|
|
9832
|
+
};
|
|
9833
|
+
}
|
|
9834
|
+
function generateStars(w, h) {
|
|
9835
|
+
const count = Math.max(40, Math.floor((w * h) / 2500));
|
|
9836
|
+
return Array.from({ length: count }, () => randomStar(w, h));
|
|
9837
|
+
}
|
|
9838
|
+
const CANVAS_STYLE = {
|
|
9839
|
+
position: 'absolute',
|
|
9840
|
+
inset: 0,
|
|
9841
|
+
display: 'block',
|
|
9842
|
+
width: '100%',
|
|
9843
|
+
height: '100%',
|
|
9844
|
+
zIndex: 0,
|
|
9845
|
+
};
|
|
9846
|
+
function CosmicStarsCanvas({ containerRef }) {
|
|
9847
|
+
const canvasRef = useRef(null);
|
|
9848
|
+
const starsRef = useRef([]);
|
|
9849
|
+
const shootingRef = useRef([]);
|
|
9850
|
+
const timeRef = useRef(0);
|
|
9851
|
+
const rafRef = useRef(0);
|
|
9852
|
+
useEffect(() => {
|
|
9853
|
+
const canvas = canvasRef.current;
|
|
9854
|
+
const container = containerRef.current;
|
|
9855
|
+
if (!canvas || !container)
|
|
9856
|
+
return;
|
|
9857
|
+
const ctx = canvas.getContext('2d');
|
|
9858
|
+
if (!ctx)
|
|
9859
|
+
return;
|
|
9860
|
+
const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
9861
|
+
const drawStars = (w, h, t, staticFlicker) => {
|
|
9862
|
+
ctx.clearRect(0, 0, w, h);
|
|
9863
|
+
const stars = starsRef.current;
|
|
9864
|
+
for (const s of stars) {
|
|
9865
|
+
const flicker = staticFlicker
|
|
9866
|
+
? 0.85
|
|
9867
|
+
: Math.sin(t * s.twinkleSpeed * 60 + s.twinklePhase) * 0.3 + 0.7;
|
|
9868
|
+
const a = s.alpha * flicker;
|
|
9869
|
+
ctx.beginPath();
|
|
9870
|
+
ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2);
|
|
9871
|
+
ctx.fillStyle = `hsla(${s.hue}, ${s.sat}%, ${s.light}%, ${a.toFixed(3)})`;
|
|
9872
|
+
ctx.fill();
|
|
9873
|
+
if (s.r > 1 && !staticFlicker) {
|
|
9874
|
+
ctx.beginPath();
|
|
9875
|
+
ctx.arc(s.x, s.y, s.r * 3, 0, Math.PI * 2);
|
|
9876
|
+
ctx.fillStyle = `hsla(${s.hue}, ${s.sat}%, ${s.light}%, ${(a * 0.1).toFixed(3)})`;
|
|
9877
|
+
ctx.fill();
|
|
9878
|
+
}
|
|
9879
|
+
}
|
|
9880
|
+
};
|
|
9881
|
+
const resize = () => {
|
|
9882
|
+
const w = container.clientWidth;
|
|
9883
|
+
const h = container.clientHeight;
|
|
9884
|
+
const dpr = Math.min(window.devicePixelRatio ?? 1, 2);
|
|
9885
|
+
canvas.width = Math.floor(w * dpr);
|
|
9886
|
+
canvas.height = Math.floor(h * dpr);
|
|
9887
|
+
canvas.style.width = `${w}px`;
|
|
9888
|
+
canvas.style.height = `${h}px`;
|
|
9889
|
+
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
|
9890
|
+
starsRef.current = generateStars(w, h);
|
|
9891
|
+
if (reduced) {
|
|
9892
|
+
drawStars(w, h, 0, true);
|
|
9893
|
+
}
|
|
9894
|
+
};
|
|
9895
|
+
resize();
|
|
9896
|
+
const ro = new ResizeObserver(resize);
|
|
9897
|
+
ro.observe(container);
|
|
9898
|
+
if (reduced) {
|
|
9899
|
+
return () => {
|
|
9900
|
+
ro.disconnect();
|
|
9901
|
+
};
|
|
9902
|
+
}
|
|
9903
|
+
const spawnShooting = () => {
|
|
9904
|
+
if (shootingRef.current.length > 2)
|
|
9905
|
+
return;
|
|
9906
|
+
const w = container.clientWidth;
|
|
9907
|
+
const h = container.clientHeight;
|
|
9908
|
+
shootingRef.current.push({
|
|
9909
|
+
x: Math.random() * w,
|
|
9910
|
+
y: Math.random() * h * 0.5,
|
|
9911
|
+
vx: (Math.random() * 4 + 3) * (Math.random() > 0.5 ? 1 : -1),
|
|
9912
|
+
vy: Math.random() * 2 + 1.5,
|
|
9913
|
+
life: 1,
|
|
9914
|
+
decay: Math.random() * 0.015 + 0.008,
|
|
9915
|
+
len: Math.random() * 40 + 20,
|
|
9916
|
+
});
|
|
9917
|
+
};
|
|
9918
|
+
let last = performance.now();
|
|
9919
|
+
const tick = (now) => {
|
|
9920
|
+
const w = container.clientWidth;
|
|
9921
|
+
const h = container.clientHeight;
|
|
9922
|
+
const dt = Math.min(0.05, (now - last) / 1000);
|
|
9923
|
+
last = now;
|
|
9924
|
+
timeRef.current += dt;
|
|
9925
|
+
drawStars(w, h, timeRef.current, false);
|
|
9926
|
+
const ssList = shootingRef.current;
|
|
9927
|
+
for (let i = ssList.length - 1; i >= 0; i--) {
|
|
9928
|
+
const ss = ssList[i];
|
|
9929
|
+
ss.x += ss.vx;
|
|
9930
|
+
ss.y += ss.vy;
|
|
9931
|
+
ss.life -= ss.decay;
|
|
9932
|
+
if (ss.life <= 0) {
|
|
9933
|
+
ssList.splice(i, 1);
|
|
9934
|
+
continue;
|
|
9935
|
+
}
|
|
9936
|
+
const gradient = ctx.createLinearGradient(ss.x, ss.y, ss.x - (ss.vx * ss.len) / 4, ss.y - (ss.vy * ss.len) / 4);
|
|
9937
|
+
gradient.addColorStop(0, `rgba(255,255,255,${ss.life})`);
|
|
9938
|
+
gradient.addColorStop(1, 'rgba(255,255,255,0)');
|
|
9939
|
+
ctx.strokeStyle = gradient;
|
|
9940
|
+
ctx.lineWidth = 1.5;
|
|
9941
|
+
ctx.beginPath();
|
|
9942
|
+
ctx.moveTo(ss.x, ss.y);
|
|
9943
|
+
ctx.lineTo(ss.x - (ss.vx * ss.len) / 4, ss.y - (ss.vy * ss.len) / 4);
|
|
9944
|
+
ctx.stroke();
|
|
9945
|
+
ctx.beginPath();
|
|
9946
|
+
ctx.arc(ss.x, ss.y, 2, 0, Math.PI * 2);
|
|
9947
|
+
ctx.fillStyle = `rgba(255,255,255,${ss.life})`;
|
|
9948
|
+
ctx.fill();
|
|
9949
|
+
}
|
|
9950
|
+
if (Math.random() < 0.003)
|
|
9951
|
+
spawnShooting();
|
|
9952
|
+
rafRef.current = requestAnimationFrame(tick);
|
|
9953
|
+
};
|
|
9954
|
+
rafRef.current = requestAnimationFrame(tick);
|
|
9955
|
+
return () => {
|
|
9956
|
+
ro.disconnect();
|
|
9957
|
+
cancelAnimationFrame(rafRef.current);
|
|
9958
|
+
};
|
|
9959
|
+
}, [containerRef]);
|
|
9960
|
+
return jsx("canvas", { ref: canvasRef, style: CANVAS_STYLE, "aria-hidden": true });
|
|
9961
|
+
}
|
|
9962
|
+
|
|
9963
|
+
var css_248z$2 = ".journey-step,.journey-step__badge{align-items:center;display:inline-flex;justify-content:center;position:relative}.journey-step__svg{display:block;overflow:visible}.journey-step__interactive{align-items:center;background:transparent;border:0;cursor:pointer;display:inline-flex;height:100%;justify-content:center;padding:0;position:relative;transition:transform .18s ease;width:100%}.journey-step__interactive:hover:not([aria-disabled=true]):not(:disabled){transform:translateY(-2px)}.journey-step__interactive:disabled,.journey-step__interactive[aria-disabled=true]{cursor:not-allowed;pointer-events:none}.journey-step__icon{align-items:center;color:#fff;display:inline-flex;filter:drop-shadow(0 2px 4px rgba(0,0,0,.55)) drop-shadow(0 1px 2px rgba(0,0,0,.3));justify-content:center;left:50%;pointer-events:none;position:absolute;transform:translate(-50%,-50%);z-index:2}.journey-step__icon>.anticon,.journey-step__icon>.anticon>svg,.journey-step__icon>svg{font-size:inherit;height:100%;width:100%}.journey-step__icon.is-locked{color:#cbd5e1;filter:none}.journey-step.is-locked{opacity:.65}.journey-step.is-inactive-state .journey-step__svg{filter:saturate(.35) brightness(.85)}.journey-step.is-active .journey-step__interactive:hover:not(:disabled) .journey-step__svg{filter:brightness(1.06) drop-shadow(0 0 8px rgba(255,255,255,.18))}.journey-crystal-pin{animation:journey-float 2.5s ease-in-out infinite;display:inline-flex;justify-content:center;position:relative}.journey-crystal-pin__glow{animation:journey-pulse-glow 1.5s ease-in-out infinite;filter:blur(6px);inset:0;position:absolute}.journey-crystal-pin__svg{display:block;height:2.5rem;width:1.5rem}.journey-crystal-pin__crystal{filter:drop-shadow(0 2px 6px rgba(139,92,246,.6));position:relative}@keyframes journey-float{0%,to{transform:translateY(0) rotate(0deg)}25%{transform:translateY(-8px) rotate(2deg)}50%{transform:translateY(-4px) rotate(0deg)}75%{transform:translateY(-10px) rotate(-2deg)}}@keyframes journey-pulse-glow{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}";
|
|
9964
|
+
styleInject(css_248z$2,{"insertAt":"top"});
|
|
9965
|
+
|
|
9966
|
+
function buildWavyCirclePath(cx, cy, radius, amplitude, waves) {
|
|
9967
|
+
const steps = waves * 8;
|
|
9968
|
+
let d = '';
|
|
9969
|
+
for (let i = 0; i <= steps; i += 1) {
|
|
9970
|
+
const t = (i / steps) * Math.PI * 2;
|
|
9971
|
+
const r = radius + Math.sin(t * waves) * amplitude;
|
|
9972
|
+
const x = cx + Math.cos(t) * r;
|
|
9973
|
+
const y = cy + Math.sin(t) * r;
|
|
9974
|
+
d += i === 0 ? `M ${x.toFixed(2)} ${y.toFixed(2)} ` : `L ${x.toFixed(2)} ${y.toFixed(2)} `;
|
|
9975
|
+
}
|
|
9976
|
+
return `${d}Z`;
|
|
9977
|
+
}
|
|
9978
|
+
const circleLaurelFrame = {
|
|
9979
|
+
kind: 'circleLaurel',
|
|
9980
|
+
layout(scale) {
|
|
9981
|
+
const bodyPx = 110 * scale;
|
|
9982
|
+
const ornamentPadX = 18 * scale;
|
|
9983
|
+
const ornamentPadY = 12 * scale;
|
|
9984
|
+
const width = bodyPx + ornamentPadX * 2;
|
|
9985
|
+
const height = bodyPx * 1.073 + ornamentPadY * 2;
|
|
9986
|
+
const cardW = bodyPx * 0.58;
|
|
9987
|
+
const cardH = bodyPx * 0.58;
|
|
9988
|
+
return {
|
|
9989
|
+
width,
|
|
9990
|
+
height,
|
|
9991
|
+
bodyCenterX: width / 2,
|
|
9992
|
+
bodyCenterY: height / 2,
|
|
9993
|
+
iconCenterX: width / 2,
|
|
9994
|
+
iconCenterY: height / 2,
|
|
9995
|
+
iconWidth: cardW * 0.7,
|
|
9996
|
+
iconHeight: cardH * 0.7,
|
|
9997
|
+
};
|
|
9998
|
+
},
|
|
9999
|
+
render({ theme, scale, layout, progress }) {
|
|
10000
|
+
const bodyPx = 110 * scale;
|
|
10001
|
+
const cx = layout.width / 2;
|
|
10002
|
+
const cy = layout.height / 2;
|
|
10003
|
+
const outerR = bodyPx * 0.44;
|
|
10004
|
+
const midR = outerR * 0.88;
|
|
10005
|
+
const innerR = outerR * 0.77;
|
|
10006
|
+
const cardR = outerR * 0.56;
|
|
10007
|
+
const shineR = cardR * 0.74;
|
|
10008
|
+
const outerWavyPath = buildWavyCirclePath(cx, cy, outerR, 1.8 * scale, 14);
|
|
10009
|
+
const midWavyPath = buildWavyCirclePath(cx, cy, midR, 1.4 * scale, 14);
|
|
10010
|
+
const innerWavyPath = buildWavyCirclePath(cx, cy, innerR, 1.0 * scale, 14);
|
|
10011
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("ellipse", { cx: cx, cy: cy + 4 * scale, rx: outerR, ry: outerR, fill: theme.shadow, opacity: 0.5 }), jsx("path", { d: outerWavyPath, fill: theme.outer }), jsx("path", { d: outerWavyPath, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("circle", { cx: cx, cy: cy, r: midR, fill: theme.mid }), jsx("circle", { cx: cx, cy: cy, r: innerR, fill: theme.inner }), jsx("circle", { cx: cx, cy: cy, r: innerR * 0.88, fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.55 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: midWavyPath, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: innerWavyPath, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("circle", { cx: cx, cy: cy, r: cardR, fill: theme.card }), jsx("path", { d: [
|
|
10012
|
+
`M ${cx - shineR * 0.75} ${cy - shineR * 0.7}`,
|
|
10013
|
+
`A ${shineR} ${shineR * 0.8} 0 0 1 ${cx + shineR * 0.75} ${cy - shineR * 0.7}`,
|
|
10014
|
+
`L ${cx + shineR * 0.55} ${cy - shineR * 0.2}`,
|
|
10015
|
+
`A ${shineR * 0.72} ${shineR * 0.58} 0 0 0 ${cx - shineR * 0.55} ${cy - shineR * 0.2}`,
|
|
10016
|
+
'Z',
|
|
10017
|
+
].join(' '), fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10018
|
+
},
|
|
10019
|
+
};
|
|
10020
|
+
|
|
10021
|
+
const THEMES = {
|
|
10022
|
+
blue: {
|
|
10023
|
+
shadow: '#0A1F4A',
|
|
10024
|
+
outer: '#1A3A8A',
|
|
10025
|
+
outerStroke: '#4A80D8',
|
|
10026
|
+
mid: '#1E3F94',
|
|
10027
|
+
inner: '#1A3680',
|
|
10028
|
+
innerStroke: '#3A6AC8',
|
|
10029
|
+
card: '#D63EA0',
|
|
10030
|
+
cardShine: '#F07EC0',
|
|
10031
|
+
bookmark: '#A02878',
|
|
10032
|
+
},
|
|
10033
|
+
green: {
|
|
10034
|
+
shadow: '#062810',
|
|
10035
|
+
outer: '#0B4A1E',
|
|
10036
|
+
outerStroke: '#2AAA50',
|
|
10037
|
+
mid: '#0E5422',
|
|
10038
|
+
inner: '#0C4A1C',
|
|
10039
|
+
innerStroke: '#40C868',
|
|
10040
|
+
card: '#1AC84A',
|
|
10041
|
+
cardShine: '#70EE90',
|
|
10042
|
+
bookmark: '#0A8830',
|
|
10043
|
+
},
|
|
10044
|
+
purple: {
|
|
10045
|
+
shadow: '#1A0840',
|
|
10046
|
+
outer: '#2E1060',
|
|
10047
|
+
outerStroke: '#7A40E0',
|
|
10048
|
+
mid: '#341268',
|
|
10049
|
+
inner: '#2C1060',
|
|
10050
|
+
innerStroke: '#9A60F0',
|
|
10051
|
+
card: '#8030D8',
|
|
10052
|
+
cardShine: '#C080FF',
|
|
10053
|
+
bookmark: '#5010A0',
|
|
10054
|
+
},
|
|
10055
|
+
orange: {
|
|
10056
|
+
shadow: '#3A1400',
|
|
10057
|
+
outer: '#6A2800',
|
|
10058
|
+
outerStroke: '#E86010',
|
|
10059
|
+
mid: '#7A3000',
|
|
10060
|
+
inner: '#6A2800',
|
|
10061
|
+
innerStroke: '#F09040',
|
|
10062
|
+
card: '#E86010',
|
|
10063
|
+
cardShine: '#FFAA60',
|
|
10064
|
+
bookmark: '#A03800',
|
|
10065
|
+
},
|
|
10066
|
+
red: {
|
|
10067
|
+
shadow: '#3A0A0A',
|
|
10068
|
+
outer: '#7A1010',
|
|
10069
|
+
outerStroke: '#E03030',
|
|
10070
|
+
mid: '#8A1818',
|
|
10071
|
+
inner: '#701010',
|
|
10072
|
+
innerStroke: '#F06060',
|
|
10073
|
+
card: '#CC2020',
|
|
10074
|
+
cardShine: '#FF8080',
|
|
10075
|
+
bookmark: '#901010',
|
|
10076
|
+
},
|
|
10077
|
+
gold: {
|
|
10078
|
+
shadow: '#3A2800',
|
|
10079
|
+
outer: '#7A5000',
|
|
10080
|
+
outerStroke: '#E8C020',
|
|
10081
|
+
mid: '#8A5C00',
|
|
10082
|
+
inner: '#704800',
|
|
10083
|
+
innerStroke: '#F0D840',
|
|
10084
|
+
card: '#C89000',
|
|
10085
|
+
cardShine: '#FFE060',
|
|
10086
|
+
bookmark: '#906800',
|
|
10087
|
+
},
|
|
10088
|
+
};
|
|
10089
|
+
const STEP_TYPE_TO_THEME = {
|
|
10090
|
+
challenge: 'green',
|
|
10091
|
+
course: 'purple',
|
|
10092
|
+
tutorial: 'blue',
|
|
10093
|
+
publication: 'orange',
|
|
10094
|
+
evaluation: 'gold',
|
|
10095
|
+
certificate: 'green',
|
|
10096
|
+
};
|
|
10097
|
+
const STEP_TYPE_TO_FRAME = {
|
|
10098
|
+
challenge: 'pentagon',
|
|
10099
|
+
course: 'hexagonWings',
|
|
10100
|
+
tutorial: 'circleLaurel',
|
|
10101
|
+
publication: 'hexagonRibbon',
|
|
10102
|
+
evaluation: 'shieldWings',
|
|
10103
|
+
certificate: 'pentagonCrown',
|
|
10104
|
+
};
|
|
10105
|
+
const INACTIVE_THEME = {
|
|
10106
|
+
shadow: '#0a0a0a',
|
|
10107
|
+
outer: '#2a2f3a',
|
|
10108
|
+
outerStroke: '#4a5160',
|
|
10109
|
+
mid: '#2f3441',
|
|
10110
|
+
inner: '#262b36',
|
|
10111
|
+
innerStroke: '#535a6c',
|
|
10112
|
+
card: '#3f4a5e',
|
|
10113
|
+
cardShine: '#5b6577',
|
|
10114
|
+
bookmark: '#2a3142',
|
|
10115
|
+
};
|
|
10116
|
+
function hexToRgb(hex) {
|
|
10117
|
+
if (!hex)
|
|
10118
|
+
return null;
|
|
10119
|
+
const normalized = hex.replace('#', '').trim();
|
|
10120
|
+
const expanded = normalized.length === 3
|
|
10121
|
+
? normalized
|
|
10122
|
+
.split('')
|
|
10123
|
+
.map((c) => c + c)
|
|
10124
|
+
.join('')
|
|
10125
|
+
: normalized;
|
|
10126
|
+
if (!/^[0-9a-fA-F]{6}$/.test(expanded))
|
|
10127
|
+
return null;
|
|
10128
|
+
const int = Number.parseInt(expanded, 16);
|
|
10129
|
+
return { r: (int >> 16) & 255, g: (int >> 8) & 255, b: int & 255 };
|
|
10130
|
+
}
|
|
10131
|
+
function rgbToHsl(r, g, b) {
|
|
10132
|
+
const rn = r / 255;
|
|
10133
|
+
const gn = g / 255;
|
|
10134
|
+
const bn = b / 255;
|
|
10135
|
+
const max = Math.max(rn, gn, bn);
|
|
10136
|
+
const min = Math.min(rn, gn, bn);
|
|
10137
|
+
const l = (max + min) / 2;
|
|
10138
|
+
let h = 0;
|
|
10139
|
+
let s = 0;
|
|
10140
|
+
if (max !== min) {
|
|
10141
|
+
const d = max - min;
|
|
10142
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
10143
|
+
switch (max) {
|
|
10144
|
+
case rn:
|
|
10145
|
+
h = (gn - bn) / d + (gn < bn ? 6 : 0);
|
|
10146
|
+
break;
|
|
10147
|
+
case gn:
|
|
10148
|
+
h = (bn - rn) / d + 2;
|
|
10149
|
+
break;
|
|
10150
|
+
default:
|
|
10151
|
+
h = (rn - gn) / d + 4;
|
|
10152
|
+
break;
|
|
10153
|
+
}
|
|
10154
|
+
h /= 6;
|
|
10155
|
+
}
|
|
10156
|
+
return { h: h * 360, s: s * 100, l: l * 100 };
|
|
10157
|
+
}
|
|
10158
|
+
function hsl(h, s, l) {
|
|
10159
|
+
const clamp = (v) => Math.max(0, Math.min(100, v));
|
|
10160
|
+
return `hsl(${h.toFixed(2)} ${clamp(s).toFixed(2)}% ${clamp(l).toFixed(2)}%)`;
|
|
10161
|
+
}
|
|
10162
|
+
function buildThemeFromColor(color) {
|
|
10163
|
+
const rgb = hexToRgb(color);
|
|
10164
|
+
if (!rgb)
|
|
10165
|
+
return THEMES.blue;
|
|
10166
|
+
const { h, s, l } = rgbToHsl(rgb.r, rgb.g, rgb.b);
|
|
10167
|
+
return {
|
|
10168
|
+
shadow: hsl(h, s, Math.max(8, l - 40)),
|
|
10169
|
+
outer: hsl(h, s, Math.max(14, l - 28)),
|
|
10170
|
+
outerStroke: hsl(h, s, Math.min(72, l + 8)),
|
|
10171
|
+
mid: hsl(h, s, Math.max(18, l - 22)),
|
|
10172
|
+
inner: hsl(h, s, Math.max(14, l - 28)),
|
|
10173
|
+
innerStroke: hsl(h, s, Math.min(80, l + 18)),
|
|
10174
|
+
card: hsl(h, s, l),
|
|
10175
|
+
cardShine: hsl(h, s, Math.min(88, l + 24)),
|
|
10176
|
+
bookmark: hsl(h, s, Math.max(20, l - 16)),
|
|
10177
|
+
};
|
|
10178
|
+
}
|
|
10179
|
+
function polygonPoints(cx, cy, radius, sides, rotationDeg = 0) {
|
|
10180
|
+
const rotationRad = (rotationDeg * Math.PI) / 180;
|
|
10181
|
+
const points = [];
|
|
10182
|
+
for (let i = 0; i < sides; i += 1) {
|
|
10183
|
+
const angle = rotationRad + (Math.PI * 2 * i) / sides;
|
|
10184
|
+
points.push([cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius]);
|
|
10185
|
+
}
|
|
10186
|
+
return points;
|
|
10187
|
+
}
|
|
10188
|
+
function norm([x, y]) {
|
|
10189
|
+
const len = Math.sqrt(x * x + y * y) || 1;
|
|
10190
|
+
return [x / len, y / len];
|
|
10191
|
+
}
|
|
10192
|
+
function scalePts(pts, cx, cy, factor) {
|
|
10193
|
+
return pts.map(([x, y]) => [cx + (x - cx) * factor, cy + (y - cy) * factor]);
|
|
10194
|
+
}
|
|
10195
|
+
function roundedPolygonPath(pts, radius) {
|
|
10196
|
+
const n = pts.length;
|
|
10197
|
+
let d = '';
|
|
10198
|
+
for (let i = 0; i < n; i += 1) {
|
|
10199
|
+
const prev = pts[(i - 1 + n) % n];
|
|
10200
|
+
const curr = pts[i];
|
|
10201
|
+
const next = pts[(i + 1) % n];
|
|
10202
|
+
const v1 = norm([prev[0] - curr[0], prev[1] - curr[1]]);
|
|
10203
|
+
const v2 = norm([next[0] - curr[0], next[1] - curr[1]]);
|
|
10204
|
+
const p1 = [curr[0] + v1[0] * radius, curr[1] + v1[1] * radius];
|
|
10205
|
+
const p2 = [curr[0] + v2[0] * radius, curr[1] + v2[1] * radius];
|
|
10206
|
+
d +=
|
|
10207
|
+
i === 0
|
|
10208
|
+
? `M ${p1[0].toFixed(2)},${p1[1].toFixed(2)} `
|
|
10209
|
+
: `L ${p1[0].toFixed(2)},${p1[1].toFixed(2)} `;
|
|
10210
|
+
d += `Q ${curr[0].toFixed(2)},${curr[1].toFixed(2)} ${p2[0].toFixed(2)},${p2[1].toFixed(2)} `;
|
|
10211
|
+
}
|
|
10212
|
+
return `${d}Z`;
|
|
10213
|
+
}
|
|
10214
|
+
function crownPath(cx, baseY, width, height) {
|
|
10215
|
+
const half = width / 2;
|
|
10216
|
+
const topY = baseY - height;
|
|
10217
|
+
return [
|
|
10218
|
+
`M ${cx - half} ${baseY}`,
|
|
10219
|
+
`L ${cx - half * 0.55} ${topY + height * 0.55}`,
|
|
10220
|
+
`L ${cx - half * 0.2} ${topY + height * 0.05}`,
|
|
10221
|
+
`L ${cx} ${topY + height * 0.48}`,
|
|
10222
|
+
`L ${cx + half * 0.2} ${topY}`,
|
|
10223
|
+
`L ${cx + half * 0.55} ${topY + height * 0.56}`,
|
|
10224
|
+
`L ${cx + half} ${baseY}`,
|
|
10225
|
+
'Z',
|
|
10226
|
+
].join(' ');
|
|
10227
|
+
}
|
|
10228
|
+
|
|
10229
|
+
const hexagonRibbonFrame = {
|
|
10230
|
+
kind: 'hexagonRibbon',
|
|
10231
|
+
layout(scale) {
|
|
10232
|
+
const bodyPx = 110 * scale;
|
|
10233
|
+
const ornamentPad = 14 * scale;
|
|
10234
|
+
const width = bodyPx;
|
|
10235
|
+
const height = bodyPx * 1.073 + ornamentPad * 2;
|
|
10236
|
+
const cardW = bodyPx * 0.6;
|
|
10237
|
+
const cardH = bodyPx * 0.46;
|
|
10238
|
+
return {
|
|
10239
|
+
width,
|
|
10240
|
+
height,
|
|
10241
|
+
bodyCenterX: width / 2,
|
|
10242
|
+
bodyCenterY: height / 2,
|
|
10243
|
+
iconCenterX: width / 2,
|
|
10244
|
+
iconCenterY: height / 2 - 3.8 * scale,
|
|
10245
|
+
iconWidth: cardW * 0.8,
|
|
10246
|
+
iconHeight: cardH * 0.8,
|
|
10247
|
+
};
|
|
10248
|
+
},
|
|
10249
|
+
render({ theme, scale, layout, progress }) {
|
|
10250
|
+
const bodyPx = 110 * scale;
|
|
10251
|
+
const cx = layout.width / 2;
|
|
10252
|
+
const cy = layout.height / 2 - 4 * scale;
|
|
10253
|
+
const radius = bodyPx * 0.44;
|
|
10254
|
+
const pts = polygonPoints(cx, cy, radius, 6, -90);
|
|
10255
|
+
const r = 7 * scale;
|
|
10256
|
+
const pathOuter = roundedPolygonPath(pts, r);
|
|
10257
|
+
const pathMid = roundedPolygonPath(scalePts(pts, cx, cy, 0.9), r * 0.9);
|
|
10258
|
+
const pathInner = roundedPolygonPath(scalePts(pts, cx, cy, 0.8), r * 0.8);
|
|
10259
|
+
const pathShadow = roundedPolygonPath(pts.map(([x, y]) => [x, y + 4 * scale]), r);
|
|
10260
|
+
const cardRadius = radius * 0.65;
|
|
10261
|
+
const cardCy = cy + scale * 0.2;
|
|
10262
|
+
const cardPts = polygonPoints(cx, cardCy, cardRadius, 6, -90);
|
|
10263
|
+
const cardPath = roundedPolygonPath(cardPts, 4 * scale);
|
|
10264
|
+
const [top, upperRight, , , , upperLeft] = cardPts;
|
|
10265
|
+
const lerp = (a, b, t) => a + (b - a) * t;
|
|
10266
|
+
const shineTopY = top[1] + scale * 1.4;
|
|
10267
|
+
const shineRightOuter = [
|
|
10268
|
+
lerp(top[0], upperRight[0], 0.9),
|
|
10269
|
+
lerp(top[1], upperRight[1], 0.9),
|
|
10270
|
+
];
|
|
10271
|
+
const shineRightInner = [
|
|
10272
|
+
lerp(top[0], upperRight[0], 0.56),
|
|
10273
|
+
lerp(shineTopY, upperRight[1], 0.58),
|
|
10274
|
+
];
|
|
10275
|
+
const shineLeftInner = [
|
|
10276
|
+
lerp(top[0], upperLeft[0], 0.56),
|
|
10277
|
+
lerp(shineTopY, upperLeft[1], 0.58),
|
|
10278
|
+
];
|
|
10279
|
+
const shineLeftOuter = [
|
|
10280
|
+
lerp(top[0], upperLeft[0], 0.9),
|
|
10281
|
+
lerp(top[1], upperLeft[1], 0.9),
|
|
10282
|
+
];
|
|
10283
|
+
const shinePath = [
|
|
10284
|
+
`M ${cx} ${shineTopY}`,
|
|
10285
|
+
`L ${shineRightOuter[0]} ${shineRightOuter[1]}`,
|
|
10286
|
+
`L ${shineRightInner[0]} ${shineRightInner[1]}`,
|
|
10287
|
+
`L ${shineLeftInner[0]} ${shineLeftInner[1]}`,
|
|
10288
|
+
`L ${shineLeftOuter[0]} ${shineLeftOuter[1]}`,
|
|
10289
|
+
'Z',
|
|
10290
|
+
].join(' ');
|
|
10291
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("path", { d: pathShadow, fill: theme.shadow, opacity: 0.55 }), jsx("path", { d: pathOuter, fill: theme.outer }), jsx("path", { d: pathOuter, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("path", { d: pathMid, fill: theme.mid }), jsx("path", { d: pathInner, fill: theme.inner }), jsx("path", { d: roundedPolygonPath(scalePts(pts, cx, cy, 0.72), r * 0.72), fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.55 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: pathMid, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: pathInner, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("path", { d: cardPath, fill: theme.card }), jsx("path", { d: shinePath, fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10292
|
+
},
|
|
10293
|
+
};
|
|
10294
|
+
|
|
10295
|
+
const hexagonWingsFrame = {
|
|
10296
|
+
kind: 'hexagonWings',
|
|
10297
|
+
layout(scale) {
|
|
10298
|
+
const bodyPx = 110 * scale;
|
|
10299
|
+
const ornamentPad = 24 * scale;
|
|
10300
|
+
const width = bodyPx + ornamentPad * 2;
|
|
10301
|
+
const height = bodyPx * 1.073;
|
|
10302
|
+
const cardW = bodyPx * 0.6;
|
|
10303
|
+
const cardH = bodyPx * 0.46;
|
|
10304
|
+
return {
|
|
10305
|
+
width,
|
|
10306
|
+
height,
|
|
10307
|
+
bodyCenterX: width / 2,
|
|
10308
|
+
bodyCenterY: height / 2,
|
|
10309
|
+
iconCenterX: width / 2,
|
|
10310
|
+
iconCenterY: bodyPx * 0.55 + scale * 0.2,
|
|
10311
|
+
iconWidth: cardW * 0.7,
|
|
10312
|
+
iconHeight: cardH * 0.7,
|
|
10313
|
+
};
|
|
10314
|
+
},
|
|
10315
|
+
render({ theme, scale, layout, progress }) {
|
|
10316
|
+
const bodyPx = 110 * scale;
|
|
10317
|
+
const cx = layout.width / 2;
|
|
10318
|
+
const cy = bodyPx * 0.55;
|
|
10319
|
+
const radius = bodyPx * 0.45;
|
|
10320
|
+
const pts = polygonPoints(cx, cy, radius, 6, -30);
|
|
10321
|
+
const r = 7 * scale;
|
|
10322
|
+
const pathOuter = roundedPolygonPath(pts, r);
|
|
10323
|
+
const pathMid = roundedPolygonPath(scalePts(pts, cx, cy, 0.9), r * 0.9);
|
|
10324
|
+
const pathInner = roundedPolygonPath(scalePts(pts, cx, cy, 0.8), r * 0.8);
|
|
10325
|
+
const pathShadow = roundedPolygonPath(pts.map(([x, y]) => [x, y + 4 * scale]), r);
|
|
10326
|
+
const cardPts = polygonPoints(cx, cy + scale * 0.2, radius * 0.56, 6, -30);
|
|
10327
|
+
const cardPath = roundedPolygonPath(cardPts, 3.5 * scale);
|
|
10328
|
+
const top = cardPts[5];
|
|
10329
|
+
const upperRight = cardPts[0];
|
|
10330
|
+
const upperLeft = cardPts[4];
|
|
10331
|
+
const lerp = (a, b, t) => a + (b - a) * t;
|
|
10332
|
+
const shinePath = [
|
|
10333
|
+
`M ${top[0]} ${top[1] + 1.6 * scale}`,
|
|
10334
|
+
`L ${lerp(top[0], upperRight[0], 0.9)} ${lerp(top[1], upperRight[1], 0.9)}`,
|
|
10335
|
+
`L ${lerp(top[0], upperRight[0], 0.62)} ${lerp(top[1], upperRight[1], 0.62) + 1.4 * scale}`,
|
|
10336
|
+
`L ${lerp(top[0], upperLeft[0], 0.62)} ${lerp(top[1], upperLeft[1], 0.62) + 1.4 * scale}`,
|
|
10337
|
+
`L ${lerp(top[0], upperLeft[0], 0.9)} ${lerp(top[1], upperLeft[1], 0.9)}`,
|
|
10338
|
+
'Z',
|
|
10339
|
+
].join(' ');
|
|
10340
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("path", { d: pathShadow, fill: theme.shadow, opacity: 0.55 }), jsx("path", { d: pathOuter, fill: theme.outer }), jsx("path", { d: pathOuter, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("path", { d: pathMid, fill: theme.mid }), jsx("path", { d: pathInner, fill: theme.inner }), jsx("path", { d: roundedPolygonPath(scalePts(pts, cx, cy, 0.72), r * 0.72), fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.55 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: pathMid, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: pathInner, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("path", { d: cardPath, fill: theme.card }), jsx("path", { d: shinePath, fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10341
|
+
},
|
|
10342
|
+
};
|
|
10343
|
+
|
|
10344
|
+
const pentagonCrownFrame = {
|
|
10345
|
+
kind: 'pentagonCrown',
|
|
10346
|
+
layout(scale) {
|
|
10347
|
+
const bodyPx = 110 * scale;
|
|
10348
|
+
const ornamentPad = 14 * scale;
|
|
10349
|
+
const width = bodyPx;
|
|
10350
|
+
const height = bodyPx * 1.073 + ornamentPad * 2;
|
|
10351
|
+
const cardW = bodyPx * 0.56;
|
|
10352
|
+
const cardH = bodyPx * 0.43;
|
|
10353
|
+
return {
|
|
10354
|
+
width,
|
|
10355
|
+
height,
|
|
10356
|
+
bodyCenterX: width / 2,
|
|
10357
|
+
bodyCenterY: height / 2,
|
|
10358
|
+
iconCenterX: width / 2,
|
|
10359
|
+
iconCenterY: height / 2 + 2 * scale,
|
|
10360
|
+
iconWidth: cardW * 0.7,
|
|
10361
|
+
iconHeight: cardH * 0.7,
|
|
10362
|
+
};
|
|
10363
|
+
},
|
|
10364
|
+
render({ theme, scale, layout, progress }) {
|
|
10365
|
+
const bodyPx = 110 * scale;
|
|
10366
|
+
const cx = layout.width / 2;
|
|
10367
|
+
const cy = layout.height / 2 + 4 * scale;
|
|
10368
|
+
const pts = polygonPoints(cx, cy, bodyPx * 0.44, 5, -90);
|
|
10369
|
+
const r = 7 * scale;
|
|
10370
|
+
const pathOuter = roundedPolygonPath(pts, r);
|
|
10371
|
+
const pathMid = roundedPolygonPath(scalePts(pts, cx, cy, 0.9), r * 0.9);
|
|
10372
|
+
const pathInner = roundedPolygonPath(scalePts(pts, cx, cy, 0.8), r * 0.8);
|
|
10373
|
+
const pathShadow = roundedPolygonPath(pts.map(([x, y]) => [x, y + 4 * scale]), r);
|
|
10374
|
+
const crown = crownPath(cx, cy - bodyPx * 0.38, 34 * scale, 18 * scale);
|
|
10375
|
+
const cardPts = polygonPoints(cx, cy + scale * 0.4, bodyPx * 0.23, 5, -90);
|
|
10376
|
+
const cardPath = roundedPolygonPath(cardPts, 4 * scale);
|
|
10377
|
+
const [top, rightTop, , , leftTop] = cardPts;
|
|
10378
|
+
const shinePath = [
|
|
10379
|
+
`M ${top[0]} ${top[1] + 1.3 * scale}`,
|
|
10380
|
+
`L ${rightTop[0] - 1.2 * scale} ${rightTop[1] + 2 * scale}`,
|
|
10381
|
+
`L ${cx} ${cy - 1 * scale}`,
|
|
10382
|
+
`L ${leftTop[0] + 1.2 * scale} ${leftTop[1] + 2 * scale}`,
|
|
10383
|
+
'Z',
|
|
10384
|
+
].join(' ');
|
|
10385
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("path", { d: crown, fill: theme.outer }), jsx("path", { d: crown, fill: "none", stroke: theme.outerStroke, strokeWidth: 1.4 * scale }), jsx("circle", { cx: cx, cy: cy - bodyPx * 0.46, r: 3.8 * scale, fill: theme.cardShine }), jsx("path", { d: pathShadow, fill: theme.shadow, opacity: 0.55 }), jsx("path", { d: pathOuter, fill: theme.outer }), jsx("path", { d: pathOuter, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("path", { d: pathMid, fill: theme.mid }), jsx("path", { d: pathInner, fill: theme.inner }), jsx("path", { d: roundedPolygonPath(scalePts(pts, cx, cy, 0.72), r * 0.72), fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.55 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: pathMid, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: pathInner, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("path", { d: cardPath, fill: theme.card }), jsx("path", { d: shinePath, fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10386
|
+
},
|
|
10387
|
+
};
|
|
10388
|
+
|
|
10389
|
+
const BASE_PTS = [
|
|
10390
|
+
[27, 16],
|
|
10391
|
+
[83, 16],
|
|
10392
|
+
[101, 70],
|
|
10393
|
+
[55, 103],
|
|
10394
|
+
[9, 70],
|
|
10395
|
+
];
|
|
10396
|
+
const CX = 55;
|
|
10397
|
+
const CY = 60;
|
|
10398
|
+
const CORNER_RADIUS = 8;
|
|
10399
|
+
const SVG_HEIGHT_RATIO = 1.073;
|
|
10400
|
+
const pentagonFrame = {
|
|
10401
|
+
kind: 'pentagon',
|
|
10402
|
+
layout(scale) {
|
|
10403
|
+
const bodyPx = 110 * scale;
|
|
10404
|
+
const height = bodyPx * SVG_HEIGHT_RATIO;
|
|
10405
|
+
const cardW = bodyPx * 0.58;
|
|
10406
|
+
const cardH = bodyPx * 0.45;
|
|
10407
|
+
return {
|
|
10408
|
+
width: bodyPx,
|
|
10409
|
+
height,
|
|
10410
|
+
bodyCenterX: bodyPx / 2,
|
|
10411
|
+
bodyCenterY: height / 2,
|
|
10412
|
+
iconCenterX: bodyPx / 2,
|
|
10413
|
+
iconCenterY: bodyPx * 0.5,
|
|
10414
|
+
iconWidth: cardW * 0.7,
|
|
10415
|
+
iconHeight: cardH * 0.7,
|
|
10416
|
+
};
|
|
10417
|
+
},
|
|
10418
|
+
render({ theme, scale, layout, progress }) {
|
|
10419
|
+
const pts = BASE_PTS.map(([x, y]) => [x * scale, y * scale]);
|
|
10420
|
+
const cx = CX * scale;
|
|
10421
|
+
const cy = CY * scale;
|
|
10422
|
+
const r = CORNER_RADIUS * scale;
|
|
10423
|
+
const shadowPts = pts.map(([x, y]) => [x, y + 4 * scale]);
|
|
10424
|
+
const pathShadow = roundedPolygonPath(shadowPts, r);
|
|
10425
|
+
const pathOuter = roundedPolygonPath(pts, r);
|
|
10426
|
+
const pathMid = roundedPolygonPath(scalePts(pts, cx, cy, 0.92), r * 0.92);
|
|
10427
|
+
const pathInner = roundedPolygonPath(scalePts(pts, cx, cy, 0.84), r * 0.84);
|
|
10428
|
+
const pathFace = roundedPolygonPath(scalePts(pts, cx, cy, 0.76), r * 0.76);
|
|
10429
|
+
const cardPts = scalePts(pts, cx, cy, 0.58);
|
|
10430
|
+
const cardPath = roundedPolygonPath(cardPts, r * 0.58);
|
|
10431
|
+
const shinePts = scalePts(cardPts, cx, cy - 3 * scale, 0.85)
|
|
10432
|
+
.map(([x, y]) => [x, y - 2 * scale])
|
|
10433
|
+
.slice(0, 3);
|
|
10434
|
+
const shinePath = [
|
|
10435
|
+
`M ${shinePts[0][0]} ${shinePts[0][1]}`,
|
|
10436
|
+
`L ${shinePts[1][0]} ${shinePts[1][1]}`,
|
|
10437
|
+
`L ${shinePts[2][0]} ${shinePts[2][1]}`,
|
|
10438
|
+
`L ${cx} ${cy - 2 * scale}`,
|
|
10439
|
+
'Z',
|
|
10440
|
+
].join(' ');
|
|
10441
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("path", { d: pathShadow, fill: theme.shadow, opacity: 0.55 }), jsx("path", { d: pathOuter, fill: theme.outer }), jsx("path", { d: pathOuter, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("path", { d: pathMid, fill: theme.mid }), jsx("path", { d: pathInner, fill: theme.inner }), jsx("path", { d: pathFace, fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.5 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: pathMid, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: pathInner, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("path", { d: cardPath, fill: theme.card }), jsx("path", { d: shinePath, fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10442
|
+
},
|
|
10443
|
+
};
|
|
10444
|
+
|
|
10445
|
+
function classicShieldPath(cx, cy, w, h) {
|
|
10446
|
+
const l = cx - w / 2;
|
|
10447
|
+
const r = cx + w / 2;
|
|
10448
|
+
const t = cy - h * 0.48;
|
|
10449
|
+
const m = cy + h * 0.08;
|
|
10450
|
+
const b = cy + h * 0.52;
|
|
10451
|
+
return [
|
|
10452
|
+
`M ${(l + w * 0.06).toFixed(2)} ${t.toFixed(2)}`,
|
|
10453
|
+
`L ${(r - w * 0.06).toFixed(2)} ${t.toFixed(2)}`,
|
|
10454
|
+
`Q ${r.toFixed(2)} ${t.toFixed(2)} ${r.toFixed(2)} ${(t + h * 0.06).toFixed(2)}`,
|
|
10455
|
+
`L ${r.toFixed(2)} ${m.toFixed(2)}`,
|
|
10456
|
+
`C ${r.toFixed(2)} ${(b - h * 0.08).toFixed(2)} ${(cx + w * 0.18).toFixed(2)} ${b.toFixed(2)} ${cx.toFixed(2)} ${b.toFixed(2)}`,
|
|
10457
|
+
`C ${(cx - w * 0.18).toFixed(2)} ${b.toFixed(2)} ${l.toFixed(2)} ${(b - h * 0.08).toFixed(2)} ${l.toFixed(2)} ${m.toFixed(2)}`,
|
|
10458
|
+
`L ${l.toFixed(2)} ${(t + h * 0.06).toFixed(2)}`,
|
|
10459
|
+
`Q ${l.toFixed(2)} ${t.toFixed(2)} ${(l + w * 0.06).toFixed(2)} ${t.toFixed(2)}`,
|
|
10460
|
+
'Z',
|
|
10461
|
+
].join(' ');
|
|
10462
|
+
}
|
|
10463
|
+
const shieldWingsFrame = {
|
|
10464
|
+
kind: 'shieldWings',
|
|
10465
|
+
layout(scale) {
|
|
10466
|
+
const bodyPx = 110 * scale;
|
|
10467
|
+
const width = bodyPx;
|
|
10468
|
+
const height = bodyPx * 1.15;
|
|
10469
|
+
const shieldW = bodyPx * 0.82;
|
|
10470
|
+
const shieldH = bodyPx * 0.9;
|
|
10471
|
+
const cardW = shieldW * 0.58;
|
|
10472
|
+
const cardH = shieldH * 0.58;
|
|
10473
|
+
return {
|
|
10474
|
+
width,
|
|
10475
|
+
height,
|
|
10476
|
+
bodyCenterX: width / 2,
|
|
10477
|
+
bodyCenterY: height * 0.46,
|
|
10478
|
+
iconCenterX: width / 2,
|
|
10479
|
+
iconCenterY: height * 0.44,
|
|
10480
|
+
iconWidth: cardW * 0.72,
|
|
10481
|
+
iconHeight: cardH * 0.72,
|
|
10482
|
+
};
|
|
10483
|
+
},
|
|
10484
|
+
render({ theme, scale, layout, progress }) {
|
|
10485
|
+
const bodyPx = 110 * scale;
|
|
10486
|
+
const cx = layout.width / 2;
|
|
10487
|
+
const cy = layout.height * 0.46;
|
|
10488
|
+
const sw = bodyPx * 0.82;
|
|
10489
|
+
const sh = bodyPx * 0.9;
|
|
10490
|
+
const pathShadow = classicShieldPath(cx, cy + 4 * scale, sw, sh);
|
|
10491
|
+
const pathOuter = classicShieldPath(cx, cy, sw, sh);
|
|
10492
|
+
const pathMid = classicShieldPath(cx, cy, sw * 0.9, sh * 0.9);
|
|
10493
|
+
const pathInner = classicShieldPath(cx, cy, sw * 0.8, sh * 0.8);
|
|
10494
|
+
const pathFace = classicShieldPath(cx, cy, sw * 0.72, sh * 0.72);
|
|
10495
|
+
const pathCard = classicShieldPath(cx, cy + 2 * scale, sw * 0.58, sh * 0.58);
|
|
10496
|
+
const cw = sw * 0.58;
|
|
10497
|
+
const ch = sh * 0.58;
|
|
10498
|
+
const cardTop = cy + 2 * scale - ch * 0.48;
|
|
10499
|
+
const shineW1 = cw * 0.78;
|
|
10500
|
+
const shineW2 = cw * 0.5;
|
|
10501
|
+
const shineH = ch * 0.18;
|
|
10502
|
+
const shinePath = [
|
|
10503
|
+
`M ${(cx - shineW1 / 2).toFixed(2)} ${(cardTop + scale).toFixed(2)}`,
|
|
10504
|
+
`L ${(cx + shineW1 / 2).toFixed(2)} ${(cardTop + scale).toFixed(2)}`,
|
|
10505
|
+
`L ${(cx + shineW2 / 2).toFixed(2)} ${(cardTop + shineH).toFixed(2)}`,
|
|
10506
|
+
`L ${(cx - shineW2 / 2).toFixed(2)} ${(cardTop + shineH).toFixed(2)}`,
|
|
10507
|
+
'Z',
|
|
10508
|
+
].join(' ');
|
|
10509
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsx("path", { d: pathShadow, fill: theme.shadow, opacity: 0.55 }), jsx("path", { d: pathOuter, fill: theme.outer }), jsx("path", { d: pathOuter, fill: "none", stroke: theme.outerStroke, strokeWidth: 2.5 * scale, opacity: 0.65 }), jsx("path", { d: pathMid, fill: theme.mid }), jsx("path", { d: pathInner, fill: theme.inner }), jsx("path", { d: pathFace, fill: "none", stroke: theme.innerStroke, strokeWidth: scale, opacity: 0.55 }), progress !== undefined && (jsxs(Fragment, { children: [jsx("path", { d: pathMid, fill: "none", stroke: theme.shadow, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", opacity: 0.55, pathLength: 1000 }), jsx("path", { d: pathInner, fill: "none", stroke: theme.outerStroke, strokeWidth: 4.5 * scale, strokeLinecap: "round", strokeLinejoin: "round", pathLength: 1000, strokeDasharray: 1000, strokeDashoffset: 1000 * (1 - progress / 100) })] })), jsx("path", { d: pathCard, fill: theme.card }), jsx("path", { d: shinePath, fill: theme.cardShine, opacity: 0.55 })] }));
|
|
10510
|
+
},
|
|
10511
|
+
};
|
|
10512
|
+
|
|
10513
|
+
const SPHERE_R_RATIO = 0.418; // 46 / 110 — sphere radius / bodyPx (desktop original)
|
|
10514
|
+
const RING_R_RATIO = 1.174; // 54 / 46 — ring radius / sphere radius
|
|
10515
|
+
const STROKE_RATIO = 0.055; // 6 / 110 — ring stroke width / bodyPx
|
|
10516
|
+
const TRACK_COLOR = '#1f1f23'; // matches original ProgressRing inactiveColor
|
|
10517
|
+
function parseColorToHsl(color) {
|
|
10518
|
+
if (!color)
|
|
10519
|
+
return null;
|
|
10520
|
+
// hsl(h s% l%) or hsl(h, s%, l%) or hsla(...)
|
|
10521
|
+
const m = color.match(/hsl[a]?\(\s*([\d.]+)[\s,]+([\d.]+)%[\s,]+([\d.]+)%/i);
|
|
10522
|
+
if (m)
|
|
10523
|
+
return { h: +m[1], s: +m[2], l: +m[3] };
|
|
10524
|
+
const rgb = hexToRgb(color);
|
|
10525
|
+
if (rgb)
|
|
10526
|
+
return rgbToHsl(rgb.r, rgb.g, rgb.b);
|
|
10527
|
+
return null;
|
|
10528
|
+
}
|
|
10529
|
+
const sphereFrame = {
|
|
10530
|
+
kind: 'sphere',
|
|
10531
|
+
layout(scale) {
|
|
10532
|
+
const bodyPx = 110 * scale;
|
|
10533
|
+
const sphereR = bodyPx * SPHERE_R_RATIO;
|
|
10534
|
+
const iconSize = sphereR * 0.9;
|
|
10535
|
+
return {
|
|
10536
|
+
width: bodyPx,
|
|
10537
|
+
height: bodyPx,
|
|
10538
|
+
bodyCenterX: bodyPx / 2,
|
|
10539
|
+
bodyCenterY: bodyPx / 2,
|
|
10540
|
+
iconCenterX: bodyPx / 2,
|
|
10541
|
+
iconCenterY: bodyPx / 2,
|
|
10542
|
+
iconWidth: iconSize,
|
|
10543
|
+
iconHeight: iconSize,
|
|
10544
|
+
};
|
|
10545
|
+
},
|
|
10546
|
+
render({ theme, scale, layout, progress }) {
|
|
10547
|
+
const cx = layout.width / 2;
|
|
10548
|
+
const cy = layout.height / 2;
|
|
10549
|
+
const bodyPx = 110 * scale;
|
|
10550
|
+
const sphereR = bodyPx * SPHERE_R_RATIO;
|
|
10551
|
+
const ringR = sphereR * RING_R_RATIO;
|
|
10552
|
+
const ringStroke = bodyPx * STROKE_RATIO;
|
|
10553
|
+
const circumference = 2 * Math.PI * ringR;
|
|
10554
|
+
// Derive the gradient stops by tweaking the source color's lightness.
|
|
10555
|
+
// The original config.gradient (e.g. DESAFIO: #14b8a6 → #10b981 → #059669)
|
|
10556
|
+
// spans roughly l+1, l, l-17 from the mid color — a subtle slope, not the
|
|
10557
|
+
// dramatic light-to-dark range of cardShine→outer in the PentagonTheme.
|
|
10558
|
+
const baseHsl = parseColorToHsl(theme.card);
|
|
10559
|
+
const topStop = baseHsl
|
|
10560
|
+
? hsl(baseHsl.h, baseHsl.s, Math.min(92, baseHsl.l + 4))
|
|
10561
|
+
: theme.cardShine;
|
|
10562
|
+
const midStop = theme.card;
|
|
10563
|
+
const bottomStop = baseHsl
|
|
10564
|
+
? hsl(baseHsl.h, baseHsl.s, Math.max(10, baseHsl.l - 18))
|
|
10565
|
+
: theme.outer;
|
|
10566
|
+
// Unique IDs derived from theme colors to avoid clashes across the document.
|
|
10567
|
+
const uid = (theme.card + theme.outerStroke)
|
|
10568
|
+
.replace(/[^a-zA-Z0-9]/g, '')
|
|
10569
|
+
.slice(0, 16);
|
|
10570
|
+
const lgId = `slg-${uid}`; // sphere body linear gradient
|
|
10571
|
+
const rgId = `srg-${uid}`; // center radial glow
|
|
10572
|
+
const glowFilterId = `sgf-${uid}`; // gaussian blur for the colored halo
|
|
10573
|
+
return (jsxs("svg", { className: "journey-step__svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", overflow: "visible", children: [jsxs("defs", { children: [jsxs("linearGradient", { id: lgId, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: topStop }), jsx("stop", { offset: "50%", stopColor: midStop }), jsx("stop", { offset: "100%", stopColor: bottomStop })] }), jsxs("radialGradient", { id: rgId, cx: "50%", cy: "50%", r: "50%", children: [jsx("stop", { offset: "0%", stopColor: theme.card, stopOpacity: 0.5 }), jsx("stop", { offset: "100%", stopColor: theme.card, stopOpacity: 0 })] }), jsx("filter", { id: glowFilterId, x: "-50%", y: "-50%", width: "200%", height: "200%", children: jsx("feGaussianBlur", { stdDeviation: 6 * scale }) })] }), jsx("circle", { cx: cx, cy: cy, r: sphereR, fill: theme.card, opacity: 0.3, filter: `url(#${glowFilterId})` }), progress !== undefined && (jsxs(Fragment, { children: [jsx("circle", { cx: cx, cy: cy, r: ringR, fill: "none", stroke: TRACK_COLOR, strokeWidth: ringStroke }), jsx("circle", { cx: cx, cy: cy, r: ringR, fill: "none", stroke: theme.card, strokeWidth: ringStroke, strokeDasharray: circumference, strokeDashoffset: circumference * (1 - progress / 100), strokeLinecap: "round", transform: `rotate(-90 ${cx} ${cy})`, style: { transition: 'stroke-dashoffset 0.5s ease' } })] })), jsx("circle", { cx: cx, cy: cy, r: sphereR, fill: `url(#${lgId})` }), jsx("circle", { cx: cx, cy: cy, r: sphereR - 3 * scale, fill: `url(#${rgId})` })] }));
|
|
10574
|
+
},
|
|
10575
|
+
};
|
|
10576
|
+
|
|
10577
|
+
const FRAMES_BY_KIND = {
|
|
10578
|
+
sphere: sphereFrame,
|
|
10579
|
+
pentagon: pentagonFrame,
|
|
10580
|
+
hexagonWings: hexagonWingsFrame,
|
|
10581
|
+
circleLaurel: circleLaurelFrame,
|
|
10582
|
+
hexagonRibbon: hexagonRibbonFrame,
|
|
10583
|
+
shieldWings: shieldWingsFrame,
|
|
10584
|
+
pentagonCrown: pentagonCrownFrame,
|
|
10585
|
+
};
|
|
10586
|
+
const FRAME_BY_TYPE = {
|
|
10587
|
+
challenge: pentagonFrame};
|
|
10588
|
+
|
|
10589
|
+
const SIZE_PX = {
|
|
10590
|
+
md: 110,
|
|
10591
|
+
sm: 60,
|
|
10592
|
+
};
|
|
10593
|
+
function JourneyStep({ color, stepType = 'challenge', frame, icon, isActive = true, isLocked = false, progress, size = 'md', ariaLabel, className, onClick, }) {
|
|
10594
|
+
const inactive = !isActive || isLocked;
|
|
10595
|
+
const interactive = typeof onClick === 'function';
|
|
10596
|
+
const theme = useMemo(() => {
|
|
10597
|
+
if (inactive)
|
|
10598
|
+
return INACTIVE_THEME;
|
|
10599
|
+
if (color)
|
|
10600
|
+
return buildThemeFromColor(color);
|
|
10601
|
+
return THEMES[STEP_TYPE_TO_THEME[stepType]] ?? THEMES.blue;
|
|
10602
|
+
}, [color, stepType, inactive]);
|
|
10603
|
+
const bodyPx = SIZE_PX[size];
|
|
10604
|
+
const scale = bodyPx / 110;
|
|
10605
|
+
const defaultFrame = STEP_TYPE_TO_FRAME[stepType] ?? 'pentagon';
|
|
10606
|
+
const selectedFrame = frame
|
|
10607
|
+
? FRAMES_BY_KIND[frame]
|
|
10608
|
+
: (FRAMES_BY_KIND[defaultFrame] ?? FRAME_BY_TYPE.challenge);
|
|
10609
|
+
const layout = useMemo(() => selectedFrame.layout(scale), [scale, selectedFrame]);
|
|
10610
|
+
const rootClassName = [
|
|
10611
|
+
'journey-step',
|
|
10612
|
+
`is-size-${size}`,
|
|
10613
|
+
isActive ? 'is-active' : 'is-inactive-state',
|
|
10614
|
+
isLocked ? 'is-locked' : '',
|
|
10615
|
+
className ?? '',
|
|
10616
|
+
]
|
|
10617
|
+
.filter(Boolean)
|
|
10618
|
+
.join(' ');
|
|
10619
|
+
const wrapperStyle = {
|
|
10620
|
+
width: layout.width,
|
|
10621
|
+
height: layout.height,
|
|
10622
|
+
};
|
|
10623
|
+
const iconStyle = {
|
|
10624
|
+
left: `${(layout.iconCenterX / layout.width) * 100}%`,
|
|
10625
|
+
top: `${(layout.iconCenterY / layout.height) * 100}%`,
|
|
10626
|
+
width: layout.iconWidth,
|
|
10627
|
+
height: layout.iconHeight,
|
|
10628
|
+
};
|
|
10629
|
+
const badge = (jsxs("div", { className: "journey-step__badge", style: wrapperStyle, children: [selectedFrame.render({ theme, scale, layout, progress }), jsx("div", { className: `journey-step__icon${isLocked ? ' is-locked' : ''}`, style: iconStyle, "aria-hidden": "true", children: icon })] }));
|
|
10630
|
+
return (jsx("div", { className: rootClassName, style: wrapperStyle, children: interactive ? (jsx("button", { type: "button", className: "journey-step__interactive", "aria-label": ariaLabel, "aria-disabled": isLocked, disabled: isLocked, onClick: onClick, children: badge })) : (badge) }));
|
|
10631
|
+
}
|
|
10632
|
+
|
|
10633
|
+
function JourneyCrystalPin({ className, style }) {
|
|
10634
|
+
return (jsxs("div", { className: ['journey-crystal-pin', className].filter(Boolean).join(' '), style: style, children: [jsx("div", { className: "journey-crystal-pin__glow", "aria-hidden": "true", children: jsx("svg", { viewBox: "0 0 40 60", className: "journey-crystal-pin__svg", children: jsx("polygon", { points: "20,0 40,20 20,60 0,20", fill: "#a78bfa" }) }) }), jsxs("svg", { viewBox: "0 0 40 60", className: "journey-crystal-pin__svg journey-crystal-pin__crystal", "aria-hidden": "true", focusable: "false", children: [jsx("polygon", { points: "20,0 0,20 20,60", fill: "#7c3aed" }), jsx("polygon", { points: "20,0 40,20 20,60", fill: "#a78bfa" }), jsx("polygon", { points: "20,0 0,20 10,15", fill: "#c4b5fd" }), jsx("polygon", { points: "20,0 40,20 30,15", fill: "#ddd6fe" }), jsx("line", { x1: "20", y1: "0", x2: "20", y2: "60", stroke: "#8b5cf6", strokeWidth: "1", opacity: "0.5" })] })] }));
|
|
10635
|
+
}
|
|
10636
|
+
|
|
10637
|
+
var css_248z$1 = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:222.2 47.4% 11.2%;--primary-foreground:210 40% 98%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:222.2 84% 4.9%;--radius:0.5rem}.dark{--background:222.2 84% 4.9%;--foreground:210 40% 98%;--card:222.2 84% 4.9%;--card-foreground:210 40% 98%;--popover:222.2 84% 4.9%;--popover-foreground:210 40% 98%;--primary:210 40% 98%;--primary-foreground:222.2 47.4% 11.2%;--secondary:217.2 32.6% 17.5%;--secondary-foreground:210 40% 98%;--muted:217.2 32.6% 17.5%;--muted-foreground:215 20.2% 65.1%;--accent:217.2 32.6% 17.5%;--accent-foreground:210 40% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:210 40% 98%;--border:217.2 32.6% 17.5%;--input:217.2 32.6% 17.5%;--ring:212.7 26.8% 83.9%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.\\!container{margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important;width:100%!important}.container{margin-left:auto;margin-right:auto;padding-left:2rem;padding-right:2rem;width:100%}@media (min-width:1400px){.\\!container{max-width:1400px!important}.container{max-width:1400px}}.visible{visibility:visible}.absolute{position:absolute}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.size-10{height:2.5rem;width:2.5rem}.h-screen{height:100vh}.w-screen{width:100vw}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:.75rem}.rounded-lg{border-radius:var(--radius)}.border-2{border-width:2px}.border-\\[\\#892CDD\\]{--tw-border-opacity:1;border-color:rgb(137 44 221/var(--tw-border-opacity,1))}.bg-\\[\\#111111\\]{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity,1))}.bg-\\[\\#892CDD\\]{--tw-bg-opacity:1;background-color:rgb(137 44 221/var(--tw-bg-opacity,1))}.bg-\\[\\#ffffff\\]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-\\[\\#892CDD\\]{--tw-text-opacity:1;color:rgb(137 44 221/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.hover\\:bg-\\[\\#892CDD\\]\\/10:hover{background-color:rgba(137,44,221,.1)}.hover\\:bg-\\[\\#892CDD\\]\\/80:hover{background-color:rgba(137,44,221,.8)}.hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-\\[\\#892CDD\\]:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(137 44 221/var(--tw-ring-opacity,1))}.focus\\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}";
|
|
9670
10638
|
styleInject(css_248z$1,{"insertAt":"top"});
|
|
9671
10639
|
|
|
9672
|
-
var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.mt-4{margin-top:1rem}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.size-10{height:2.5rem;width:2.5rem}.h-screen{height:100vh}.w-screen{width:100vw}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:.75rem}.rounded-lg{border-radius:var(--radius)}.border-2{border-width:2px}.border-\\[\\#892CDD\\]{--tw-border-opacity:1;border-color:rgb(137 44 221/var(--tw-border-opacity,1))}.bg-\\[\\#111111\\]{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity,1))}.bg-\\[\\#892CDD\\]{--tw-bg-opacity:1;background-color:rgb(137 44 221/var(--tw-bg-opacity,1))}.bg-\\[\\#ffffff\\]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-\\[\\#892CDD\\]{--tw-text-opacity:1;color:rgb(137 44 221/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.hover\\:bg-\\[\\#892CDD\\]\\/10:hover{background-color:rgba(137,44,221,.1)}.hover\\:bg-\\[\\#892CDD\\]\\/80:hover{background-color:rgba(137,44,221,.8)}.hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-\\[\\#892CDD\\]:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(137 44 221/var(--tw-ring-opacity,1))}.focus\\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}";
|
|
10640
|
+
var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.\\!container{margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important;width:100%!important}.container{margin-left:auto;margin-right:auto;padding-left:2rem;padding-right:2rem;width:100%}@media (min-width:1400px){.\\!container{max-width:1400px!important}.container{max-width:1400px}}.visible{visibility:visible}.absolute{position:absolute}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.size-10{height:2.5rem;width:2.5rem}.h-screen{height:100vh}.w-screen{width:100vw}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:.75rem}.rounded-lg{border-radius:var(--radius)}.border-2{border-width:2px}.border-\\[\\#892CDD\\]{--tw-border-opacity:1;border-color:rgb(137 44 221/var(--tw-border-opacity,1))}.bg-\\[\\#111111\\]{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity,1))}.bg-\\[\\#892CDD\\]{--tw-bg-opacity:1;background-color:rgb(137 44 221/var(--tw-bg-opacity,1))}.bg-\\[\\#ffffff\\]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-\\[\\#892CDD\\]{--tw-text-opacity:1;color:rgb(137 44 221/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.hover\\:bg-\\[\\#892CDD\\]\\/10:hover{background-color:rgba(137,44,221,.1)}.hover\\:bg-\\[\\#892CDD\\]\\/80:hover{background-color:rgba(137,44,221,.8)}.hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-\\[\\#892CDD\\]:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(137 44 221/var(--tw-ring-opacity,1))}.focus\\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}";
|
|
9673
10641
|
styleInject(css_248z,{"insertAt":"top"});
|
|
9674
10642
|
|
|
9675
10643
|
var BACKOFFICE_ROLES;
|
|
@@ -9720,5 +10688,5 @@ var academeApi = /*#__PURE__*/Object.freeze({
|
|
|
9720
10688
|
__proto__: null
|
|
9721
10689
|
});
|
|
9722
10690
|
|
|
9723
|
-
export { AcademeAuthProvider, BACKOFFICE_ROLES, Button, DASHBOARD_ROLES, GLOBAL_ROLES, MIKE_ROLES, NINA_ROLES, ProtectedApp, ProtectedComponent, ProtectedRouter, STREAMING_ROLES, Spinner, WIDGET_ROLES, academeApi as apiTypes, cn, createAcademeApiClient, index as types, useAcademeAuth, useProtectedAppColors };
|
|
10691
|
+
export { AcademeAuthProvider, BACKOFFICE_ROLES, Button, CosmicDecor, CosmicStarsCanvas, DASHBOARD_ROLES, GLOBAL_ROLES, JourneyCrystalPin, JourneyStep, MIKE_ROLES, NINA_ROLES, ProtectedApp, ProtectedComponent, ProtectedRouter, STREAMING_ROLES, Spinner, WIDGET_ROLES, academeApi as apiTypes, cn, createAcademeApiClient, index as types, useAcademeAuth, useProtectedAppColors };
|
|
9724
10692
|
//# sourceMappingURL=index.esm.js.map
|