academe-kit 0.11.2 → 0.11.4

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.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
- import React2, { forwardRef, createElement, createContext, useContext, useState, useRef, useMemo, useEffect, useCallback, useId } from 'react';
3
- import { useReducedMotion, motion } from 'framer-motion';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import React2, { forwardRef, createElement, createContext, useContext, useState, useRef, useMemo, useEffect, useCallback, useLayoutEffect, useId } from 'react';
3
+ import { useMotionValue, animate, useTransform, motion, useReducedMotion } from 'framer-motion';
4
4
  import { animated, useSpring } from '@react-spring/web';
5
5
 
6
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}
@@ -6837,6 +6837,451 @@ const SecurityProvider = ({ apiBaseUrl = "https://stg-api.academe.com.br", skipA
6837
6837
  };
6838
6838
  const useAcademeAuth = () => useContext(SecurityContext);
6839
6839
 
6840
+ // AUTO-GERADO de src/assets/LOGO A SVG 2.svg (logo herói da Academe).
6841
+ // O SVG inteiro vira um data URI, carregado via <img> no LogoA. Funciona em
6842
+ // vite (storybook) e rollup (build) sem loader de asset, e isola os ids
6843
+ // internos do SVG por instância (cada <img> é um documento próprio).
6844
+ // Para regenerar: `base64 < "src/assets/LOGO A SVG 2.svg"` e colar abaixo.
6845
+ const LOGO_A_DATA_URI = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iQ2FtYWRhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTMyMCAxMzIwLjQyIj4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMzAuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjQgQnVpbGQgMykgIC0tPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuc3QwIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogIzg5MmNkZDsKICAgICAgfQoKICAgICAgLnN0MSB7CiAgICAgICAgZmlsbDogIzg5MmNkZDsKICAgICAgfQoKICAgICAgLnN0MiB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHJlY3QgY2xhc3M9InN0MSIgd2lkdGg9IjEzMjAiIGhlaWdodD0iMTMyMCIgcng9IjEwMCIgcnk9IjEwMCIvPgogIDxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik03NDcuMDgsMzQzLjQybC00NDIuNjIsOTc2LjVoLTE3MC4zM0w2NjkuMzQsMTcwLjI4bDc3Ljc0LDE3My4xNFoiLz4KICA8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNzQ3LjA4LDM0My40MmwtNDQyLjYyLDk3Ni41aC0xNzAuMzNMNjY5LjM0LDE3MC4yOGw3Ny43NCwxNzMuMTRaIi8+CiAgPHBhdGggY2xhc3M9InN0MiIgZD0iTTExODUuNywxMzE5LjkyaC0xNzguNjNsLTExMy42LTI2Mi42NWgtMzg3LjA5bDY5LjU4LTE1My40N2gyNTEuMDJsLTEyMy4xLTI4Mi4xOSw4NC40My0xODYuMjUsMzk3LjQsODg0LjU3WiIvPgogIDxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMTg1LjcsMTMxOS45MmgtMTc4LjYzbC0xMTMuNi0yNjIuNjVoLTM4Ny4wOWw2OS41OC0xNTMuNDdoMjUxLjAybC0xMjMuMS0yODIuMTksODQuNDMtMTg2LjI1LDM5Ny40LDg4NC41N1oiLz4KPC9zdmc+";
6846
+
6847
+ // Dimensões do viewBox do asset (src/assets/LOGO A SVG 2.svg) — usadas só para
6848
+ // derivar a largura a partir da altura, preservando a proporção do logo.
6849
+ const ASSET_W = 1320;
6850
+ const ASSET_H = 1320.42;
6851
+ /**
6852
+ * Logo "A" da Academe (§8) — renderiza o asset oficial
6853
+ * (`src/assets/LOGO A SVG 2.svg`) via data URI. Puramente estático; quem anima é
6854
+ * o container (scale/opacity) no AcademeLoading.
6855
+ */
6856
+ function LogoA({ size }) {
6857
+ const H = size;
6858
+ const W = size * (ASSET_W / ASSET_H);
6859
+ return (jsx("img", { src: LOGO_A_DATA_URI, width: W, height: H, alt: "Academe", draggable: false, style: { display: "block", userSelect: "none", pointerEvents: "none" } }));
6860
+ }
6861
+
6862
+ const TOTAL = 2333;
6863
+ /**
6864
+ * Ponto de `t` onde a animação "segura" no modo controlado. Usamos 0.56 (fim da
6865
+ * fase de assentamento) em vez do meio do hold: nesse ponto o círculo roxo já
6866
+ * está alinhado ao branco (anel simétrico, tudo centralizado) — sem a meia-lua à
6867
+ * esquerda, que num loading estático pareceria "descentralizado". O exit
6868
+ * (0.56→1) passa a ser exatamente o colapso. A meia-lua transitória continua
6869
+ * aparecendo na vinheta completa (modo não-controlado), fiel ao spec.
6870
+ */
6871
+ const HOLD_T = 0.56;
6872
+ const DEFAULT_COLORS = {
6873
+ background: "#F5F5F5",
6874
+ purple: "#7C28D4",
6875
+ white: "#FCFCFC",
6876
+ };
6877
+ // ---- helpers -------------------------------------------------------------
6878
+ const clamp01 = (x) => (x < 0 ? 0 : x > 1 ? 1 : x);
6879
+ /** progresso local [0,1] dentro do trecho [a,b] de `t`. */
6880
+ const seg = (v, a, b) => clamp01((v - a) / (b - a));
6881
+ const mix = (a, b, p) => a + (b - a) * p;
6882
+ /**
6883
+ * cubic-bézier easing self-contained (mesma matemática do CSS `cubic-bezier`):
6884
+ * resolve t para o x dado (Newton-Raphson + bisseção) e devolve y. Evita depender
6885
+ * de exports do framer-motion e permite overshoot (y1>1) para o "pop" do logo.
6886
+ */
6887
+ function cubicBezier(x1, y1, x2, y2) {
6888
+ const cx = 3 * x1;
6889
+ const bx = 3 * (x2 - x1) - cx;
6890
+ const ax = 1 - cx - bx;
6891
+ const cy = 3 * y1;
6892
+ const by = 3 * (y2 - y1) - cy;
6893
+ const ay = 1 - cy - by;
6894
+ const sampleX = (t) => ((ax * t + bx) * t + cx) * t;
6895
+ const sampleY = (t) => ((ay * t + by) * t + cy) * t;
6896
+ const sampleDX = (t) => (3 * ax * t + 2 * bx) * t + cx;
6897
+ const solveX = (x) => {
6898
+ let t = x;
6899
+ for (let i = 0; i < 8; i++) {
6900
+ const xe = sampleX(t) - x;
6901
+ if (Math.abs(xe) < 1e-5)
6902
+ return t;
6903
+ const d = sampleDX(t);
6904
+ if (Math.abs(d) < 1e-6)
6905
+ break;
6906
+ t -= xe / d;
6907
+ }
6908
+ let lo = 0;
6909
+ let hi = 1;
6910
+ t = x;
6911
+ for (let i = 0; i < 20; i++) {
6912
+ const xe = sampleX(t);
6913
+ if (Math.abs(xe - x) < 1e-5)
6914
+ break;
6915
+ if (x > xe)
6916
+ lo = t;
6917
+ else
6918
+ hi = t;
6919
+ t = (lo + hi) / 2;
6920
+ }
6921
+ return t;
6922
+ };
6923
+ return (x) => {
6924
+ if (x <= 0)
6925
+ return 0;
6926
+ if (x >= 1)
6927
+ return 1;
6928
+ return sampleY(solveX(x));
6929
+ };
6930
+ }
6931
+ // easings por fase (§6)
6932
+ const E_ENTER = cubicBezier(0.16, 1, 0.3, 1); // entrada (ease-out rápido)
6933
+ const E_CONV = cubicBezier(0.22, 1, 0.36, 1); // convergência (ease-out)
6934
+ const E_SETTLE = cubicBezier(0.33, 1, 0.68, 1); // assentar (ease-out suave)
6935
+ const E_COLLAPSE = cubicBezier(0.65, 0, 0.35, 1); // colapso (ease-in-out)
6936
+ const E_SHRINK = cubicBezier(0.5, 0, 0.9, 0.2); // encolher (ease-in)
6937
+ const E_POP = cubicBezier(0.34, 1.2, 0.64, 1); // pop leve do logo (overshoot)
6938
+ // ---- component -----------------------------------------------------------
6939
+ function AcademeLoading({ size = 320, duration = TOTAL, loading, autoPlay = true, pulseWhileLoading = true, onFinish, colors, className, style, }) {
6940
+ const S = size;
6941
+ const c = { ...DEFAULT_COLORS, ...colors };
6942
+ const isControlled = loading !== undefined;
6943
+ // Os círculos NÃO são recortados por nenhuma "caixa" interna. O palco antigo
6944
+ // (size×size com overflow:hidden) cortava os círculos na entrada e no herói.
6945
+ // Agora o único container é o backdrop (que o consumidor estica p/ a tela toda)
6946
+ // e os círculos nascem FORA da borda real da tela, deslizando INTEIROS até o
6947
+ // centro. Para isso medimos a largura real do backdrop e derivamos a distância
6948
+ // de entrada `START` — APENAS o ponto de partida é responsivo; o tamanho dos
6949
+ // círculos e toda a convergência continuam fixos em frações de S = size.
6950
+ const containerRef = useRef(null);
6951
+ // Semente: largura da janela (≈ 100vw do backdrop no app). O `useLayoutEffect`
6952
+ // refina para a largura REAL do elemento antes do 1º paint; a semente só fecha a
6953
+ // janela teórica de um paint anterior à medição (React concurrent/futuro).
6954
+ const [vw, setVw] = useState(() => typeof window !== "undefined" ? window.innerWidth : size);
6955
+ useLayoutEffect(() => {
6956
+ const el = containerRef.current;
6957
+ if (!el)
6958
+ return;
6959
+ const measure = () => {
6960
+ const w = el.getBoundingClientRect().width || size;
6961
+ setVw((prev) => (prev === w ? prev : w));
6962
+ };
6963
+ measure();
6964
+ const ro = new ResizeObserver(measure);
6965
+ ro.observe(el);
6966
+ return () => ro.disconnect();
6967
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6968
+ }, []);
6969
+ // Distância de entrada: meia-largura do backdrop + raio do círculo (0.49·S) +
6970
+ // folga → o círculo nasce 100% fora da tela (sem corte e sem ficar parado e
6971
+ // visível perto do centro). Em tela cheia usa a largura real; nas stories (sem
6972
+ // style) o backdrop é size×size e START ≈ 1.05·S, como no design original.
6973
+ const START = vw / 2 + 0.55 * S;
6974
+ const t = useMotionValue(0);
6975
+ const breath = useMotionValue(1);
6976
+ // valores mutáveis lidos imperativamente (sem stale closures nos effects)
6977
+ const durationRef = useRef(duration);
6978
+ durationRef.current = duration;
6979
+ const pulseRef = useRef(pulseWhileLoading);
6980
+ pulseRef.current = pulseWhileLoading;
6981
+ const loadingRef = useRef(loading);
6982
+ loadingRef.current = loading;
6983
+ const onFinishRef = useRef(onFinish);
6984
+ useEffect(() => {
6985
+ onFinishRef.current = onFinish;
6986
+ }, [onFinish]);
6987
+ const phaseRef = useRef("idle");
6988
+ const tAnim = useRef(null);
6989
+ const breathAnim = useRef(null);
6990
+ function startBreathe() {
6991
+ if (!pulseRef.current)
6992
+ return;
6993
+ breathAnim.current?.stop();
6994
+ breathAnim.current = animate(breath, [1, 1.03, 1], {
6995
+ duration: 1.6,
6996
+ ease: "easeInOut",
6997
+ repeat: Infinity,
6998
+ });
6999
+ }
7000
+ function runExit() {
7001
+ if (phaseRef.current === "exiting" || phaseRef.current === "done")
7002
+ return;
7003
+ phaseRef.current = "exiting";
7004
+ breathAnim.current?.stop();
7005
+ animate(breath, 1, { duration: 0.25, ease: "easeOut" });
7006
+ tAnim.current?.stop();
7007
+ const sec = durationRef.current / 1000;
7008
+ tAnim.current = animate(t, 1, {
7009
+ duration: (1 - HOLD_T) * sec,
7010
+ ease: "linear",
7011
+ onComplete: () => {
7012
+ phaseRef.current = "done";
7013
+ onFinishRef.current?.();
7014
+ },
7015
+ });
7016
+ }
7017
+ // ENTRADA (mount). Reseta e reinicia sempre — seguro ao duplo-mount do StrictMode.
7018
+ useEffect(() => {
7019
+ if (!autoPlay)
7020
+ return;
7021
+ t.set(0);
7022
+ breath.set(1);
7023
+ phaseRef.current = "idle";
7024
+ const sec = durationRef.current / 1000;
7025
+ const target = isControlled ? HOLD_T : 1;
7026
+ tAnim.current = animate(t, target, {
7027
+ duration: target * sec,
7028
+ ease: "linear",
7029
+ onComplete: () => {
7030
+ if (!isControlled) {
7031
+ phaseRef.current = "done";
7032
+ onFinishRef.current?.();
7033
+ return;
7034
+ }
7035
+ phaseRef.current = "hold";
7036
+ if (loadingRef.current === false)
7037
+ runExit();
7038
+ else
7039
+ startBreathe();
7040
+ },
7041
+ });
7042
+ return () => {
7043
+ tAnim.current?.stop();
7044
+ breathAnim.current?.stop();
7045
+ };
7046
+ // eslint-disable-next-line react-hooks/exhaustive-deps
7047
+ }, [autoPlay, isControlled]);
7048
+ // SAÍDA / respiração reagindo a `loading` (só após chegar ao hold).
7049
+ useEffect(() => {
7050
+ if (!isControlled || phaseRef.current !== "hold")
7051
+ return;
7052
+ if (loading === false)
7053
+ runExit();
7054
+ else
7055
+ startBreathe();
7056
+ // eslint-disable-next-line react-hooks/exhaustive-deps
7057
+ }, [loading]);
7058
+ // ---- propriedades derivadas de `t` (§7) ----
7059
+ // CÍRCULO ROXO (atrás) — nasce FORA da tela (−START) e desliza INTEIRO até o
7060
+ // centro; a convergência (−0.3S→0) e a meia-lua final continuam fixas em S.
7061
+ const purpleX = useTransform(t, (v) => {
7062
+ if (v <= 0.13)
7063
+ return -START;
7064
+ if (v <= 0.22)
7065
+ return mix(-START, -0.3 * S, E_ENTER(seg(v, 0.13, 0.22)));
7066
+ if (v <= 0.34)
7067
+ return mix(-0.3 * S, -0.18 * S, E_CONV(seg(v, 0.22, 0.34)));
7068
+ if (v <= 0.48)
7069
+ return mix(-0.18 * S, -0.015 * S, E_SETTLE(seg(v, 0.34, 0.48)));
7070
+ if (v <= 0.56)
7071
+ return mix(-0.015 * S, 0, E_COLLAPSE(seg(v, 0.48, 0.56)));
7072
+ return 0;
7073
+ });
7074
+ const purpleScale = useTransform(t, (v) => {
7075
+ if (v <= 0.56)
7076
+ return 1;
7077
+ if (v <= 0.77)
7078
+ return Math.max(0, mix(1, 0, E_SHRINK(seg(v, 0.56, 0.77))));
7079
+ return 0;
7080
+ });
7081
+ const purpleOpacity = useTransform(t, (v) => {
7082
+ if (v <= 0.75)
7083
+ return 1;
7084
+ if (v <= 0.77)
7085
+ return mix(1, 0, seg(v, 0.75, 0.77));
7086
+ return 0;
7087
+ });
7088
+ // CÍRCULO BRANCO (na frente) — nasce de +START (fora da tela) e desliza inteiro até o centro.
7089
+ const whiteX = useTransform(t, (v) => {
7090
+ if (v <= 0.13)
7091
+ return START;
7092
+ if (v <= 0.22)
7093
+ return mix(START, 0.3 * S, E_ENTER(seg(v, 0.13, 0.22)));
7094
+ if (v <= 0.34)
7095
+ return mix(0.3 * S, 0.02 * S, E_CONV(seg(v, 0.22, 0.34)));
7096
+ if (v <= 0.4)
7097
+ return mix(0.02 * S, 0, E_SETTLE(seg(v, 0.34, 0.4)));
7098
+ return 0;
7099
+ });
7100
+ const whiteScale = useTransform(t, (v) => {
7101
+ if (v <= 0.56)
7102
+ return 1;
7103
+ if (v <= 0.72)
7104
+ return Math.max(0, mix(1, 0, E_SHRINK(seg(v, 0.56, 0.72))));
7105
+ return 0;
7106
+ });
7107
+ // LOGO "A" (centralizado)
7108
+ const logoOpacity = useTransform(t, (v) => {
7109
+ if (v <= 0.22)
7110
+ return 0;
7111
+ if (v <= 0.34)
7112
+ return mix(0, 1, E_CONV(seg(v, 0.22, 0.34)));
7113
+ if (v <= 0.66)
7114
+ return 1;
7115
+ if (v <= 0.72)
7116
+ return mix(1, 0, E_SHRINK(seg(v, 0.66, 0.72)));
7117
+ return 0;
7118
+ });
7119
+ const logoScale = useTransform(t, (v) => {
7120
+ if (v <= 0.22)
7121
+ return 0.6;
7122
+ if (v <= 0.4)
7123
+ return mix(0.6, 1, E_POP(seg(v, 0.22, 0.4)));
7124
+ if (v <= 0.56)
7125
+ return 1;
7126
+ if (v <= 0.72)
7127
+ return Math.max(0, mix(1, 0, E_SHRINK(seg(v, 0.56, 0.72))));
7128
+ return 0;
7129
+ });
7130
+ const logoY = useTransform(t, (v) => {
7131
+ if (v <= 0.22)
7132
+ return -0.02 * S;
7133
+ if (v <= 0.4)
7134
+ return mix(-0.02 * S, 0, E_CONV(seg(v, 0.22, 0.4)));
7135
+ return 0;
7136
+ });
7137
+ const LOGO_H = 0.46 * S;
7138
+ const LOGO_W = LOGO_H * (354 / 516);
7139
+ // Centralização determinística: cada camada é absoluta e centralizada por
7140
+ // `inset:0 + margin:auto` sobre um width/height fixo — independe do tamanho
7141
+ // relativo dos elementos (o grid implícito anterior ancorava a célula no canto,
7142
+ // descentralizando tudo). O transform do framer (x, scale) é aplicado por cima
7143
+ // e não afeta a centralização do layout.
7144
+ const layer = {
7145
+ position: "absolute",
7146
+ inset: 0,
7147
+ margin: "auto",
7148
+ };
7149
+ return (
7150
+ // Container ÚNICO = backdrop. O consumidor o estica p/ a tela toda via `style`
7151
+ // e ele pinta o fundo. NÃO há mais "palco" interno recortando a vinheta — os
7152
+ // círculos nascem fora da borda real (translateX ±START) e o `overflow:hidden`
7153
+ // apenas evita scroll dos círculos enquanto ainda estão fora da tela. Os
7154
+ // círculos deslizam INTEIROS (sem corte) até o centro. `width/height: size` são
7155
+ // defaults sobrescritos pelo `...style` (tela cheia no app; size×size nas stories).
7156
+ jsx("div", { ref: containerRef, className: className, style: {
7157
+ width: size,
7158
+ height: size,
7159
+ background: c.background,
7160
+ overflow: "hidden",
7161
+ position: "relative",
7162
+ ...style,
7163
+ }, role: "status", "aria-label": "Carregando", "aria-busy": isControlled ? loading : true, children: jsxs(motion.div, { style: {
7164
+ position: "absolute",
7165
+ inset: 0,
7166
+ scale: breath,
7167
+ willChange: "transform",
7168
+ }, children: [jsx(motion.div, { style: {
7169
+ ...layer,
7170
+ width: 0.98 * S,
7171
+ height: 0.98 * S,
7172
+ borderRadius: "50%",
7173
+ backgroundColor: c.purple,
7174
+ x: purpleX,
7175
+ scale: purpleScale,
7176
+ opacity: purpleOpacity,
7177
+ willChange: "transform, opacity",
7178
+ } }), jsx(motion.div, { style: {
7179
+ ...layer,
7180
+ width: 0.92 * S,
7181
+ height: 0.92 * S,
7182
+ borderRadius: "50%",
7183
+ backgroundColor: c.white,
7184
+ x: whiteX,
7185
+ scale: whiteScale,
7186
+ willChange: "transform",
7187
+ } }), jsx(motion.div, { style: {
7188
+ ...layer,
7189
+ width: LOGO_W,
7190
+ height: LOGO_H,
7191
+ y: logoY,
7192
+ scale: logoScale,
7193
+ opacity: logoOpacity,
7194
+ willChange: "transform, opacity",
7195
+ }, children: jsx(LogoA, { size: LOGO_H }) })] }) }));
7196
+ }
7197
+
7198
+ const themes = {
7199
+ dark: {
7200
+ backgroundColor: "bg-[#111111]",
7201
+ textColors: {
7202
+ textPrimary: "text-white",
7203
+ textSecondary: "text-gray-300",
7204
+ iconColor: "text-[#892CDD]",
7205
+ },
7206
+ },
7207
+ light: {
7208
+ backgroundColor: "bg-[#ffffff]",
7209
+ textColors: {
7210
+ textPrimary: "text-gray-900",
7211
+ textSecondary: "text-gray-600",
7212
+ iconColor: "text-[#892CDD]",
7213
+ },
7214
+ },
7215
+ };
7216
+ const ProtectedAppContext = createContext(null);
7217
+ const useProtectedAppColors = () => {
7218
+ const context = useContext(ProtectedAppContext);
7219
+ return context || themes.dark.textColors;
7220
+ };
7221
+ const ProtectedApp = ({ children, requiredClientRoles, requiredRealmRoles, theme = "dark", pending = false, }) => {
7222
+ const { isInitialized, goToLogin, hasClientRole, hasRealmRole, isAuthenticated, signOut, } = useAcademeAuth();
7223
+ const themeConfig = themes[theme];
7224
+ const { backgroundColor, textColors } = themeConfig;
7225
+ // Está carregando algo do boot: Keycloak inicializando OU dados pós-auth.
7226
+ const loaderActive = !isInitialized || pending;
7227
+ // Mantém a vinheta montada durante a SAÍDA, até o exit concluir (`onFinish`).
7228
+ const [exitDone, setExitDone] = useState(false);
7229
+ // Se o boot recomeçar (re-login / novo fetch), rearma a saída.
7230
+ useEffect(() => {
7231
+ if (loaderActive)
7232
+ setExitDone(false);
7233
+ }, [loaderActive]);
7234
+ const handleContactSupport = () => {
7235
+ window.open("https://wa.me/558540428133", "_blank");
7236
+ };
7237
+ const renderDenied = () => (jsxs("div", { className: `flex flex-col w-screen h-screen items-center justify-center ${backgroundColor}`, children: [jsx(CircleAlert, { className: `size-10 ${textColors.iconColor}` }), jsx("h1", { className: `text-2xl font-bold mt-4 text-center ${textColors.textPrimary}`, children: "Oops, voc\u00EA n\u00E3o tem permiss\u00E3o para acessar aqui." }), jsx("span", { className: `text-center ${textColors.textSecondary}`, children: "Se voc\u00EA acredita que isso \u00E9 um erro, entre em contato com o suporte." }), jsxs("div", { className: "flex gap-3 mt-4", children: [jsx(Button, { variant: "primary", size: "md", onClick: handleContactSupport, children: "Falar com o suporte" }), jsx(Button, { variant: "outline", size: "md", onClick: signOut, children: "Sair da conta" })] })] }));
7238
+ // Checagens de auth/role só fazem sentido depois que o Keycloak inicializa.
7239
+ if (isInitialized) {
7240
+ if (!isAuthenticated()) {
7241
+ goToLogin();
7242
+ return jsx(Fragment, {});
7243
+ }
7244
+ if (requiredClientRoles &&
7245
+ !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
7246
+ return renderDenied();
7247
+ }
7248
+ if (requiredRealmRoles &&
7249
+ !requiredRealmRoles?.some((role) => hasRealmRole(role))) {
7250
+ return renderDenied();
7251
+ }
7252
+ }
7253
+ // Vinheta de marca (AcademeLoading): segura no estado-herói enquanto
7254
+ // `loaderActive` e, quando o carregamento termina, toca a saída sincronizada;
7255
+ // só depois do `onFinish` o app é revelado. Fica montada durante o exit graças
7256
+ // ao `!exitDone`.
7257
+ if (loaderActive || !exitDone) {
7258
+ return (jsx(AcademeLoading, { loading: loaderActive, duration: 1200, onFinish: () => setExitDone(true), style: { width: "100vw", height: "100vh" } }));
7259
+ }
7260
+ return (jsx(ProtectedAppContext.Provider, { value: textColors, children: children }));
7261
+ };
7262
+
7263
+ const ProtectedComponent = ({ children, requiredRealmRoles, requiredClientRoles, }) => {
7264
+ const { hasClientRole, hasRealmRole } = useAcademeAuth();
7265
+ if (requiredClientRoles &&
7266
+ !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
7267
+ return jsx(Fragment, {});
7268
+ }
7269
+ if (requiredRealmRoles &&
7270
+ !requiredRealmRoles?.some((role) => hasRealmRole(role))) {
7271
+ return jsx(Fragment, {});
7272
+ }
7273
+ return children;
7274
+ };
7275
+
7276
+ const ProtectedRouter = ({ children, requiredClientRoles, unauthorizedMessage, }) => {
7277
+ const { hasClientRole } = useAcademeAuth();
7278
+ if (requiredClientRoles &&
7279
+ !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
7280
+ return jsx("h1", { children: unauthorizedMessage || "unauthorized" });
7281
+ }
7282
+ return children;
7283
+ };
7284
+
6840
7285
  const CLASS_PART_SEPARATOR = '-';
6841
7286
  const createClassGroupUtils = config => {
6842
7287
  const classMap = createClassMap(config);
@@ -9800,88 +10245,6 @@ function Spinner({ className, ...props }) {
9800
10245
  return (jsx(LoaderCircle, { role: "status", "aria-label": "Loading", className: cn("size-10 animate-spin text-violet-500", className), ...props }));
9801
10246
  }
9802
10247
 
9803
- const themes = {
9804
- dark: {
9805
- backgroundColor: "bg-[#111111]",
9806
- textColors: {
9807
- textPrimary: "text-white",
9808
- textSecondary: "text-gray-300",
9809
- iconColor: "text-[#892CDD]",
9810
- },
9811
- },
9812
- light: {
9813
- backgroundColor: "bg-[#ffffff]",
9814
- textColors: {
9815
- textPrimary: "text-gray-900",
9816
- textSecondary: "text-gray-600",
9817
- iconColor: "text-[#892CDD]",
9818
- },
9819
- },
9820
- };
9821
- const ProtectedAppContext = createContext(null);
9822
- const useProtectedAppColors = () => {
9823
- const context = useContext(ProtectedAppContext);
9824
- return context || themes.dark.textColors;
9825
- };
9826
- const ProtectedApp = ({ children, requiredClientRoles, requiredRealmRoles, theme = "dark", pending = false, }) => {
9827
- const { isInitialized, goToLogin, hasClientRole, hasRealmRole, isAuthenticated, signOut, } = useAcademeAuth();
9828
- const themeConfig = themes[theme];
9829
- const { backgroundColor, textColors } = themeConfig;
9830
- const handleContactSupport = () => {
9831
- window.open("https://wa.me/558540428133", "_blank");
9832
- };
9833
- // Tela de loading de tela cheia reutilizada em duas fases do boot:
9834
- // (1) enquanto o Keycloak inicializa (`!isInitialized`) e (2) enquanto o app
9835
- // ainda carrega dados pós-auth (`pending`). Por ser o MESMO elemento na mesma
9836
- // posição da árvore, o React reconcilia entre as fases sem remontar o Spinner
9837
- // — a animação fica contínua (um loading só, sem "piscar").
9838
- const loadingScreen = (jsx("div", { className: `!flex !w-screen !h-screen !items-center !justify-center ${backgroundColor}`, children: jsx(Spinner, { className: "!size-10", style: { color: "#892CDD" } }) }));
9839
- if (!isInitialized) {
9840
- return loadingScreen;
9841
- }
9842
- if (!isAuthenticated()) {
9843
- goToLogin();
9844
- return jsx(Fragment, {});
9845
- }
9846
- if (requiredClientRoles &&
9847
- !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
9848
- return (jsxs("div", { className: `flex flex-col w-screen h-screen items-center justify-center ${backgroundColor}`, children: [jsx(CircleAlert, { className: `size-10 ${textColors.iconColor}` }), jsx("h1", { className: `text-2xl font-bold mt-4 text-center ${textColors.textPrimary}`, children: "Oops, voc\u00EA n\u00E3o tem permiss\u00E3o para acessar aqui." }), jsx("span", { className: `text-center ${textColors.textSecondary}`, children: "Se voc\u00EA acredita que isso \u00E9 um erro, entre em contato com o suporte." }), jsxs("div", { className: "flex gap-3 mt-4", children: [jsx(Button, { variant: "primary", size: "md", onClick: handleContactSupport, children: "Falar com o suporte" }), jsx(Button, { variant: "outline", size: "md", onClick: signOut, children: "Sair da conta" })] })] }));
9849
- }
9850
- if (requiredRealmRoles &&
9851
- !requiredRealmRoles?.some((role) => hasRealmRole(role))) {
9852
- return (jsxs("div", { className: `flex flex-col w-screen h-screen items-center justify-center ${backgroundColor}`, children: [jsx(CircleAlert, { className: `size-10 ${textColors.iconColor}` }), jsx("h1", { className: `text-2xl font-bold mt-4 text-center ${textColors.textPrimary}`, children: "Oops, voc\u00EA n\u00E3o tem permiss\u00E3o para acessar aqui." }), jsx("span", { className: `text-center ${textColors.textSecondary}`, children: "Se voc\u00EA acredita que isso \u00E9 um erro, entre em contato com o suporte." }), jsxs("div", { className: "flex gap-3 mt-4", children: [jsx(Button, { variant: "primary", size: "md", onClick: handleContactSupport, children: "Falar com o suporte" }), jsx(Button, { variant: "outline", size: "md", onClick: signOut, children: "Sair da conta" })] })] }));
9853
- }
9854
- // Auth e roles OK, mas o app ainda carrega dados pós-auth (ex.: a lista de
9855
- // instituições do dash). Mantém o MESMO `loadingScreen` do passo `!isInitialized`,
9856
- // então o spinner não remonta entre as fases — continua sendo um loading só.
9857
- if (pending) {
9858
- return loadingScreen;
9859
- }
9860
- return (jsx(ProtectedAppContext.Provider, { value: textColors, children: children }));
9861
- };
9862
-
9863
- const ProtectedComponent = ({ children, requiredRealmRoles, requiredClientRoles, }) => {
9864
- const { hasClientRole, hasRealmRole } = useAcademeAuth();
9865
- if (requiredClientRoles &&
9866
- !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
9867
- return jsx(Fragment, {});
9868
- }
9869
- if (requiredRealmRoles &&
9870
- !requiredRealmRoles?.some((role) => hasRealmRole(role))) {
9871
- return jsx(Fragment, {});
9872
- }
9873
- return children;
9874
- };
9875
-
9876
- const ProtectedRouter = ({ children, requiredClientRoles, unauthorizedMessage, }) => {
9877
- const { hasClientRole } = useAcademeAuth();
9878
- if (requiredClientRoles &&
9879
- !requiredClientRoles.roles.some((role) => hasClientRole(role, requiredClientRoles.clientId))) {
9880
- return jsx("h1", { children: unauthorizedMessage || "unauthorized" });
9881
- }
9882
- return children;
9883
- };
9884
-
9885
10248
  function styleInject(css, ref) {
9886
10249
  if ( ref === void 0 ) ref = {};
9887
10250
  var insertAt = ref.insertAt;
@@ -10911,10 +11274,10 @@ function JourneyCrystalPin({ className, style }) {
10911
11274
  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" })] })] }));
10912
11275
  }
10913
11276
 
10914
- 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}.relative{position:relative}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.\\!flex{display:flex!important}.flex{display:flex}.table{display:table}.grid{display:grid}.\\!size-10{height:2.5rem!important;width:2.5rem!important}.size-10{height:2.5rem;width:2.5rem}.\\!h-screen{height:100vh!important}.h-screen{height:100vh}.\\!w-screen{width:100vw!important}.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!important}.items-center{align-items:center}.\\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.gap-3{gap:.75rem}.rounded{border-radius:.25rem}.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}.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}";
11277
+ 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}.relative{position:relative}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.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{border-radius:.25rem}.rounded-lg{border-radius:var(--radius)}.border{border-width:1px}.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}.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}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@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}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.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}";
10915
11278
  styleInject(css_248z$1,{"insertAt":"top"});
10916
11279
 
10917
- 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}.relative{position:relative}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.\\!flex{display:flex!important}.flex{display:flex}.table{display:table}.grid{display:grid}.\\!size-10{height:2.5rem!important;width:2.5rem!important}.size-10{height:2.5rem;width:2.5rem}.\\!h-screen{height:100vh!important}.h-screen{height:100vh}.\\!w-screen{width:100vw!important}.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!important}.items-center{align-items:center}.\\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.gap-3{gap:.75rem}.rounded{border-radius:.25rem}.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}.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}";
11280
+ 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}.relative{position:relative}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.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{border-radius:.25rem}.rounded-lg{border-radius:var(--radius)}.border{border-width:1px}.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}.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}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@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}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.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}";
10918
11281
  styleInject(css_248z,{"insertAt":"top"});
10919
11282
 
10920
11283
  var BACKOFFICE_ROLES;
@@ -10965,5 +11328,5 @@ var academeApi = /*#__PURE__*/Object.freeze({
10965
11328
  __proto__: null
10966
11329
  });
10967
11330
 
10968
- 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 };
11331
+ export { AcademeAuthProvider, AcademeLoading, BACKOFFICE_ROLES, Button, CosmicDecor, CosmicStarsCanvas, DASHBOARD_ROLES, GLOBAL_ROLES, JourneyCrystalPin, JourneyStep, LogoA, MIKE_ROLES, NINA_ROLES, ProtectedApp, ProtectedComponent, ProtectedRouter, STREAMING_ROLES, Spinner, WIDGET_ROLES, academeApi as apiTypes, cn, createAcademeApiClient, index as types, useAcademeAuth, useProtectedAppColors };
10969
11332
  //# sourceMappingURL=index.esm.js.map