@snksergio/design-system 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +260 -0
- package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
- package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
- package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
- package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
- package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
- package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
- package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
- package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
- package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
- package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
- package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
- package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
- package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
- package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
- package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
- package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
- package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
- package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
- package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
- package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
- package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
- package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
- package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
- package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
- package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
- package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
- package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
- package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
- package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
- package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
- package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
- package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
- package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
- package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
- package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
- package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
- package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
- package/dist-lib/index.cjs +1207 -0
- package/dist-lib/index.cjs.map +1 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.mjs +1209 -0
- package/dist-lib/index.mjs.map +1 -0
- package/dist-lib/preview/chat.cjs +1120 -0
- package/dist-lib/preview/chat.cjs.map +1 -0
- package/dist-lib/preview/chat.d.ts +6 -0
- package/dist-lib/preview/chat.mjs +1120 -0
- package/dist-lib/preview/chat.mjs.map +1 -0
- package/dist-lib/preview/clientes.cjs +897 -0
- package/dist-lib/preview/clientes.cjs.map +1 -0
- package/dist-lib/preview/clientes.d.ts +6 -0
- package/dist-lib/preview/clientes.mjs +897 -0
- package/dist-lib/preview/clientes.mjs.map +1 -0
- package/dist-lib/preview/dashboard.cjs +733 -0
- package/dist-lib/preview/dashboard.cjs.map +1 -0
- package/dist-lib/preview/dashboard.d.ts +4 -0
- package/dist-lib/preview/dashboard.mjs +733 -0
- package/dist-lib/preview/dashboard.mjs.map +1 -0
- package/dist-lib/preview/mocks.cjs +15 -0
- package/dist-lib/preview/mocks.cjs.map +1 -0
- package/dist-lib/preview/mocks.d.ts +2 -0
- package/dist-lib/preview/mocks.mjs +15 -0
- package/dist-lib/preview/mocks.mjs.map +1 -0
- package/dist-lib/theme.css +668 -0
- package/dist-lib/tokens.cjs +915 -0
- package/dist-lib/tokens.cjs.map +1 -0
- package/dist-lib/tokens.d.ts +2 -0
- package/dist-lib/tokens.mjs +915 -0
- package/dist-lib/tokens.mjs.map +1 -0
- package/package.json +142 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useState, useEffect, useCallback } from "react";
|
|
2
|
+
const STORAGE_KEY = "igreen-ds-theme";
|
|
3
|
+
const CHANGE_EVENT = "igreen-ds-theme-change";
|
|
4
|
+
function isTheme(value) {
|
|
5
|
+
return value === "light" || value === "dark" || value === "system";
|
|
6
|
+
}
|
|
7
|
+
function getStoredTheme() {
|
|
8
|
+
if (typeof window === "undefined") return "system";
|
|
9
|
+
const stored = window.localStorage.getItem(STORAGE_KEY);
|
|
10
|
+
return isTheme(stored) ? stored : "system";
|
|
11
|
+
}
|
|
12
|
+
function getEffectiveDark(theme) {
|
|
13
|
+
if (theme === "dark") return true;
|
|
14
|
+
if (theme === "light") return false;
|
|
15
|
+
if (typeof window === "undefined") return false;
|
|
16
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
17
|
+
}
|
|
18
|
+
function useTheme() {
|
|
19
|
+
const [theme, setThemeState] = useState(() => getStoredTheme());
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (typeof document === "undefined") return;
|
|
22
|
+
const root = document.documentElement;
|
|
23
|
+
const apply = () => root.classList.toggle("dark", getEffectiveDark(theme));
|
|
24
|
+
apply();
|
|
25
|
+
if (theme === "system") {
|
|
26
|
+
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
27
|
+
mq.addEventListener("change", apply);
|
|
28
|
+
return () => mq.removeEventListener("change", apply);
|
|
29
|
+
}
|
|
30
|
+
}, [theme]);
|
|
31
|
+
const setTheme = useCallback((next) => {
|
|
32
|
+
setThemeState(next);
|
|
33
|
+
if (typeof window === "undefined") return;
|
|
34
|
+
try {
|
|
35
|
+
window.localStorage.setItem(STORAGE_KEY, next);
|
|
36
|
+
} catch {
|
|
37
|
+
}
|
|
38
|
+
window.dispatchEvent(new CustomEvent(CHANGE_EVENT, { detail: next }));
|
|
39
|
+
}, []);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (typeof window === "undefined") return;
|
|
42
|
+
const onCustom = (e) => {
|
|
43
|
+
const next = e.detail;
|
|
44
|
+
if (isTheme(next)) setThemeState(next);
|
|
45
|
+
};
|
|
46
|
+
const onStorage = (e) => {
|
|
47
|
+
if (e.key !== STORAGE_KEY) return;
|
|
48
|
+
if (isTheme(e.newValue)) setThemeState(e.newValue);
|
|
49
|
+
};
|
|
50
|
+
window.addEventListener(CHANGE_EVENT, onCustom);
|
|
51
|
+
window.addEventListener("storage", onStorage);
|
|
52
|
+
return () => {
|
|
53
|
+
window.removeEventListener(CHANGE_EVENT, onCustom);
|
|
54
|
+
window.removeEventListener("storage", onStorage);
|
|
55
|
+
};
|
|
56
|
+
}, []);
|
|
57
|
+
const isDark = getEffectiveDark(theme);
|
|
58
|
+
const toggle = useCallback(() => {
|
|
59
|
+
setTheme(theme === "dark" ? "light" : "dark");
|
|
60
|
+
}, [theme, setTheme]);
|
|
61
|
+
return { theme, setTheme, isDark, toggle };
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
useTheme as u
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=useTheme-BUPLZBMs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme-BUPLZBMs.mjs","sources":["../../src/hooks/useTheme.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\n\nconst STORAGE_KEY = \"igreen-ds-theme\";\nconst CHANGE_EVENT = \"igreen-ds-theme-change\";\n\nfunction isTheme(value: unknown): value is Theme {\n return value === \"light\" || value === \"dark\" || value === \"system\";\n}\n\nfunction getStoredTheme(): Theme {\n if (typeof window === \"undefined\") return \"system\";\n const stored = window.localStorage.getItem(STORAGE_KEY);\n return isTheme(stored) ? stored : \"system\";\n}\n\nfunction getEffectiveDark(theme: Theme): boolean {\n if (theme === \"dark\") return true;\n if (theme === \"light\") return false;\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\n/**\n * Hook único de tema do app.\n *\n * - 3 valores: `\"light\"` | `\"dark\"` | `\"system\"` (segue prefers-color-scheme).\n * - Persiste em `localStorage[\"igreen-ds-theme\"]`.\n * - Sincroniza múltiplas instâncias na mesma tab via `CustomEvent` e entre\n * tabs via `storage` event. Pode ser chamado em qualquer page/component\n * sem precisar de Context Provider.\n * - Aplica `.dark` no `<html>` com observador de `prefers-color-scheme`\n * quando theme=`\"system\"`.\n */\nexport function useTheme() {\n const [theme, setThemeState] = useState<Theme>(() => getStoredTheme());\n\n // Aplica .dark no <html> + observa prefers-color-scheme quando theme=\"system\"\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const apply = () => root.classList.toggle(\"dark\", getEffectiveDark(theme));\n apply();\n\n if (theme === \"system\") {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n mq.addEventListener(\"change\", apply);\n return () => mq.removeEventListener(\"change\", apply);\n }\n }, [theme]);\n\n // setTheme — persiste no localStorage + broadcast pra outras instâncias do hook\n const setTheme = useCallback((next: Theme) => {\n setThemeState(next);\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(STORAGE_KEY, next);\n } catch {\n /* ignore */\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT, { detail: next }));\n }, []);\n\n // Listener — recebe broadcast de outras instâncias (mesma tab + cross-tab)\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onCustom = (e: Event) => {\n const next = (e as CustomEvent).detail;\n if (isTheme(next)) setThemeState(next);\n };\n const onStorage = (e: StorageEvent) => {\n if (e.key !== STORAGE_KEY) return;\n if (isTheme(e.newValue)) setThemeState(e.newValue);\n };\n window.addEventListener(CHANGE_EVENT, onCustom);\n window.addEventListener(\"storage\", onStorage);\n return () => {\n window.removeEventListener(CHANGE_EVENT, onCustom);\n window.removeEventListener(\"storage\", onStorage);\n };\n }, []);\n\n const isDark = getEffectiveDark(theme);\n\n // Backwards-compat: alterna apenas entre light/dark (ignora system).\n const toggle = useCallback(() => {\n setTheme(theme === \"dark\" ? \"light\" : \"dark\");\n }, [theme, setTheme]);\n\n return { theme, setTheme, isDark, toggle } as const;\n}\n"],"names":[],"mappings":";AAIA,MAAM,cAAc;AACpB,MAAM,eAAe;AAErB,SAAS,QAAQ,OAAgC;AAC/C,SAAO,UAAU,WAAW,UAAU,UAAU,UAAU;AAC5D;AAEA,SAAS,iBAAwB;AAC/B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,SAAS,OAAO,aAAa,QAAQ,WAAW;AACtD,SAAO,QAAQ,MAAM,IAAI,SAAS;AACpC;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,MAAI,UAAU,OAAQ,QAAO;AAC7B,MAAI,UAAU,QAAS,QAAO;AAC9B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE;AAC3D;AAaO,SAAS,WAAW;AACzB,QAAM,CAAC,OAAO,aAAa,IAAI,SAAgB,MAAM,gBAAgB;AAGrE,YAAU,MAAM;AACd,QAAI,OAAO,aAAa,YAAa;AACrC,UAAM,OAAO,SAAS;AACtB,UAAM,QAAQ,MAAM,KAAK,UAAU,OAAO,QAAQ,iBAAiB,KAAK,CAAC;AACzE,UAAA;AAEA,QAAI,UAAU,UAAU;AACtB,YAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,SAAG,iBAAiB,UAAU,KAAK;AACnC,aAAO,MAAM,GAAG,oBAAoB,UAAU,KAAK;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,QAAM,WAAW,YAAY,CAAC,SAAgB;AAC5C,kBAAc,IAAI;AAClB,QAAI,OAAO,WAAW,YAAa;AACnC,QAAI;AACF,aAAO,aAAa,QAAQ,aAAa,IAAI;AAAA,IAC/C,QAAQ;AAAA,IAER;AACA,WAAO,cAAc,IAAI,YAAY,cAAc,EAAE,QAAQ,KAAA,CAAM,CAAC;AAAA,EACtE,GAAG,CAAA,CAAE;AAGL,YAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,WAAW,CAAC,MAAa;AAC7B,YAAM,OAAQ,EAAkB;AAChC,UAAI,QAAQ,IAAI,EAAG,eAAc,IAAI;AAAA,IACvC;AACA,UAAM,YAAY,CAAC,MAAoB;AACrC,UAAI,EAAE,QAAQ,YAAa;AAC3B,UAAI,QAAQ,EAAE,QAAQ,EAAG,eAAc,EAAE,QAAQ;AAAA,IACnD;AACA,WAAO,iBAAiB,cAAc,QAAQ;AAC9C,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM;AACX,aAAO,oBAAoB,cAAc,QAAQ;AACjD,aAAO,oBAAoB,WAAW,SAAS;AAAA,IACjD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM,SAAS,iBAAiB,KAAK;AAGrC,QAAM,SAAS,YAAY,MAAM;AAC/B,aAAS,UAAU,SAAS,UAAU,MAAM;AAAA,EAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,SAAO,EAAE,OAAO,UAAU,QAAQ,OAAA;AACpC;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const React = require("react");
|
|
3
|
+
const STORAGE_KEY = "igreen-ds-theme";
|
|
4
|
+
const CHANGE_EVENT = "igreen-ds-theme-change";
|
|
5
|
+
function isTheme(value) {
|
|
6
|
+
return value === "light" || value === "dark" || value === "system";
|
|
7
|
+
}
|
|
8
|
+
function getStoredTheme() {
|
|
9
|
+
if (typeof window === "undefined") return "system";
|
|
10
|
+
const stored = window.localStorage.getItem(STORAGE_KEY);
|
|
11
|
+
return isTheme(stored) ? stored : "system";
|
|
12
|
+
}
|
|
13
|
+
function getEffectiveDark(theme) {
|
|
14
|
+
if (theme === "dark") return true;
|
|
15
|
+
if (theme === "light") return false;
|
|
16
|
+
if (typeof window === "undefined") return false;
|
|
17
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
18
|
+
}
|
|
19
|
+
function useTheme() {
|
|
20
|
+
const [theme, setThemeState] = React.useState(() => getStoredTheme());
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
if (typeof document === "undefined") return;
|
|
23
|
+
const root = document.documentElement;
|
|
24
|
+
const apply = () => root.classList.toggle("dark", getEffectiveDark(theme));
|
|
25
|
+
apply();
|
|
26
|
+
if (theme === "system") {
|
|
27
|
+
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
28
|
+
mq.addEventListener("change", apply);
|
|
29
|
+
return () => mq.removeEventListener("change", apply);
|
|
30
|
+
}
|
|
31
|
+
}, [theme]);
|
|
32
|
+
const setTheme = React.useCallback((next) => {
|
|
33
|
+
setThemeState(next);
|
|
34
|
+
if (typeof window === "undefined") return;
|
|
35
|
+
try {
|
|
36
|
+
window.localStorage.setItem(STORAGE_KEY, next);
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
window.dispatchEvent(new CustomEvent(CHANGE_EVENT, { detail: next }));
|
|
40
|
+
}, []);
|
|
41
|
+
React.useEffect(() => {
|
|
42
|
+
if (typeof window === "undefined") return;
|
|
43
|
+
const onCustom = (e) => {
|
|
44
|
+
const next = e.detail;
|
|
45
|
+
if (isTheme(next)) setThemeState(next);
|
|
46
|
+
};
|
|
47
|
+
const onStorage = (e) => {
|
|
48
|
+
if (e.key !== STORAGE_KEY) return;
|
|
49
|
+
if (isTheme(e.newValue)) setThemeState(e.newValue);
|
|
50
|
+
};
|
|
51
|
+
window.addEventListener(CHANGE_EVENT, onCustom);
|
|
52
|
+
window.addEventListener("storage", onStorage);
|
|
53
|
+
return () => {
|
|
54
|
+
window.removeEventListener(CHANGE_EVENT, onCustom);
|
|
55
|
+
window.removeEventListener("storage", onStorage);
|
|
56
|
+
};
|
|
57
|
+
}, []);
|
|
58
|
+
const isDark = getEffectiveDark(theme);
|
|
59
|
+
const toggle = React.useCallback(() => {
|
|
60
|
+
setTheme(theme === "dark" ? "light" : "dark");
|
|
61
|
+
}, [theme, setTheme]);
|
|
62
|
+
return { theme, setTheme, isDark, toggle };
|
|
63
|
+
}
|
|
64
|
+
exports.useTheme = useTheme;
|
|
65
|
+
//# sourceMappingURL=useTheme-Dee4mo-A.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme-Dee4mo-A.mjs","sources":["../../src/hooks/useTheme.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\n\nconst STORAGE_KEY = \"igreen-ds-theme\";\nconst CHANGE_EVENT = \"igreen-ds-theme-change\";\n\nfunction isTheme(value: unknown): value is Theme {\n return value === \"light\" || value === \"dark\" || value === \"system\";\n}\n\nfunction getStoredTheme(): Theme {\n if (typeof window === \"undefined\") return \"system\";\n const stored = window.localStorage.getItem(STORAGE_KEY);\n return isTheme(stored) ? stored : \"system\";\n}\n\nfunction getEffectiveDark(theme: Theme): boolean {\n if (theme === \"dark\") return true;\n if (theme === \"light\") return false;\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\n/**\n * Hook único de tema do app.\n *\n * - 3 valores: `\"light\"` | `\"dark\"` | `\"system\"` (segue prefers-color-scheme).\n * - Persiste em `localStorage[\"igreen-ds-theme\"]`.\n * - Sincroniza múltiplas instâncias na mesma tab via `CustomEvent` e entre\n * tabs via `storage` event. Pode ser chamado em qualquer page/component\n * sem precisar de Context Provider.\n * - Aplica `.dark` no `<html>` com observador de `prefers-color-scheme`\n * quando theme=`\"system\"`.\n */\nexport function useTheme() {\n const [theme, setThemeState] = useState<Theme>(() => getStoredTheme());\n\n // Aplica .dark no <html> + observa prefers-color-scheme quando theme=\"system\"\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const apply = () => root.classList.toggle(\"dark\", getEffectiveDark(theme));\n apply();\n\n if (theme === \"system\") {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n mq.addEventListener(\"change\", apply);\n return () => mq.removeEventListener(\"change\", apply);\n }\n }, [theme]);\n\n // setTheme — persiste no localStorage + broadcast pra outras instâncias do hook\n const setTheme = useCallback((next: Theme) => {\n setThemeState(next);\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(STORAGE_KEY, next);\n } catch {\n /* ignore */\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT, { detail: next }));\n }, []);\n\n // Listener — recebe broadcast de outras instâncias (mesma tab + cross-tab)\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onCustom = (e: Event) => {\n const next = (e as CustomEvent).detail;\n if (isTheme(next)) setThemeState(next);\n };\n const onStorage = (e: StorageEvent) => {\n if (e.key !== STORAGE_KEY) return;\n if (isTheme(e.newValue)) setThemeState(e.newValue);\n };\n window.addEventListener(CHANGE_EVENT, onCustom);\n window.addEventListener(\"storage\", onStorage);\n return () => {\n window.removeEventListener(CHANGE_EVENT, onCustom);\n window.removeEventListener(\"storage\", onStorage);\n };\n }, []);\n\n const isDark = getEffectiveDark(theme);\n\n // Backwards-compat: alterna apenas entre light/dark (ignora system).\n const toggle = useCallback(() => {\n setTheme(theme === \"dark\" ? \"light\" : \"dark\");\n }, [theme, setTheme]);\n\n return { theme, setTheme, isDark, toggle } as const;\n}\n"],"names":["useState","useEffect","useCallback"],"mappings":";;AAIA,MAAM,cAAc;AACpB,MAAM,eAAe;AAErB,SAAS,QAAQ,OAAgC;AAC/C,SAAO,UAAU,WAAW,UAAU,UAAU,UAAU;AAC5D;AAEA,SAAS,iBAAwB;AAC/B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,SAAS,OAAO,aAAa,QAAQ,WAAW;AACtD,SAAO,QAAQ,MAAM,IAAI,SAAS;AACpC;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,MAAI,UAAU,OAAQ,QAAO;AAC7B,MAAI,UAAU,QAAS,QAAO;AAC9B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE;AAC3D;AAaO,SAAS,WAAW;AACzB,QAAM,CAAC,OAAO,aAAa,IAAIA,MAAAA,SAAgB,MAAM,gBAAgB;AAGrEC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,aAAa,YAAa;AACrC,UAAM,OAAO,SAAS;AACtB,UAAM,QAAQ,MAAM,KAAK,UAAU,OAAO,QAAQ,iBAAiB,KAAK,CAAC;AACzE,UAAA;AAEA,QAAI,UAAU,UAAU;AACtB,YAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,SAAG,iBAAiB,UAAU,KAAK;AACnC,aAAO,MAAM,GAAG,oBAAoB,UAAU,KAAK;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,QAAM,WAAWC,kBAAY,CAAC,SAAgB;AAC5C,kBAAc,IAAI;AAClB,QAAI,OAAO,WAAW,YAAa;AACnC,QAAI;AACF,aAAO,aAAa,QAAQ,aAAa,IAAI;AAAA,IAC/C,QAAQ;AAAA,IAER;AACA,WAAO,cAAc,IAAI,YAAY,cAAc,EAAE,QAAQ,KAAA,CAAM,CAAC;AAAA,EACtE,GAAG,CAAA,CAAE;AAGLD,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,WAAW,CAAC,MAAa;AAC7B,YAAM,OAAQ,EAAkB;AAChC,UAAI,QAAQ,IAAI,EAAG,eAAc,IAAI;AAAA,IACvC;AACA,UAAM,YAAY,CAAC,MAAoB;AACrC,UAAI,EAAE,QAAQ,YAAa;AAC3B,UAAI,QAAQ,EAAE,QAAQ,EAAG,eAAc,EAAE,QAAQ;AAAA,IACnD;AACA,WAAO,iBAAiB,cAAc,QAAQ;AAC9C,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM;AACX,aAAO,oBAAoB,cAAc,QAAQ;AACjD,aAAO,oBAAoB,WAAW,SAAS;AAAA,IACjD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM,SAAS,iBAAiB,KAAK;AAGrC,QAAM,SAASC,MAAAA,YAAY,MAAM;AAC/B,aAAS,UAAU,SAAS,UAAU,MAAM;AAAA,EAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,SAAO,EAAE,OAAO,UAAU,QAAQ,OAAA;AACpC;;"}
|