@tomny-dev/uzi 0.1.9 → 0.1.10

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.
Files changed (68) hide show
  1. package/README.md +132 -103
  2. package/dist/components/alert/Alert.d.ts +9 -0
  3. package/dist/components/alert/Alert.d.ts.map +1 -0
  4. package/dist/components/app-shell/AppShell.d.ts +46 -0
  5. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  6. package/dist/components/avatar/Avatar.d.ts +10 -0
  7. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  8. package/dist/components/button/Button.d.ts +20 -0
  9. package/dist/components/button/Button.d.ts.map +1 -0
  10. package/dist/components/card/Card.d.ts +28 -0
  11. package/dist/components/card/Card.d.ts.map +1 -0
  12. package/dist/components/checkbox/Checkbox.d.ts +4 -0
  13. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  14. package/dist/components/dropdown/Dropdown.d.ts +18 -0
  15. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  16. package/dist/components/dropdown-menu/DropdownMenu.d.ts +24 -0
  17. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -0
  18. package/dist/components/input/Input.d.ts +4 -0
  19. package/dist/components/input/Input.d.ts.map +1 -0
  20. package/dist/components/label/Label.d.ts +4 -0
  21. package/dist/components/label/Label.d.ts.map +1 -0
  22. package/dist/components/modal/Modal.d.ts +21 -0
  23. package/dist/components/modal/Modal.d.ts.map +1 -0
  24. package/dist/components/multi-select/MultiSelect.d.ts +21 -0
  25. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -0
  26. package/dist/components/pill/Pill.d.ts +28 -0
  27. package/dist/components/pill/Pill.d.ts.map +1 -0
  28. package/dist/components/progress/Progress.d.ts +12 -0
  29. package/dist/components/progress/Progress.d.ts.map +1 -0
  30. package/dist/components/select/Select.d.ts +28 -0
  31. package/dist/components/select/Select.d.ts.map +1 -0
  32. package/dist/components/sidebar-nav/SidebarNav.d.ts +36 -0
  33. package/dist/components/sidebar-nav/SidebarNav.d.ts.map +1 -0
  34. package/dist/components/skeleton/Skeleton.d.ts +11 -0
  35. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  36. package/dist/components/theme-toggle-button/ThemeToggleButton.d.ts +8 -0
  37. package/dist/components/theme-toggle-button/ThemeToggleButton.d.ts.map +1 -0
  38. package/dist/components/toast/ToastContext.d.ts +27 -0
  39. package/dist/components/toast/ToastContext.d.ts.map +1 -0
  40. package/dist/components/toast/types.d.ts +46 -0
  41. package/dist/components/toast/types.d.ts.map +1 -0
  42. package/dist/components/top-bar/TopBar.d.ts +20 -0
  43. package/dist/components/top-bar/TopBar.d.ts.map +1 -0
  44. package/dist/index.cjs +46 -1487
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.ts +44 -390
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +6774 -1152
  49. package/dist/index.js.map +1 -1
  50. package/dist/server.cjs +7 -51
  51. package/dist/server.cjs.map +1 -1
  52. package/dist/server.d.ts +2 -16
  53. package/dist/server.d.ts.map +1 -0
  54. package/dist/server.js +13 -18
  55. package/dist/server.js.map +1 -1
  56. package/dist/style.css +1 -0
  57. package/dist/theme/ThemeProvider.d.ts +29 -0
  58. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  59. package/dist/theme/constants.d.ts +5 -0
  60. package/dist/theme/constants.d.ts.map +1 -0
  61. package/dist/{server.d.cts → theme/themeScript.d.ts} +2 -3
  62. package/dist/theme/themeScript.d.ts.map +1 -0
  63. package/dist/utils/cx.d.ts +2 -0
  64. package/dist/utils/cx.d.ts.map +1 -0
  65. package/package.json +11 -7
  66. package/dist/index.css +0 -1428
  67. package/dist/index.css.map +0 -1
  68. package/dist/index.d.cts +0 -390
package/dist/server.cjs CHANGED
@@ -1,57 +1,13 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/server.ts
21
- var server_exports = {};
22
- __export(server_exports, {
23
- getThemeScript: () => getThemeScript
24
- });
25
- module.exports = __toCommonJS(server_exports);
26
-
27
- // src/theme/constants.ts
28
- var UZI_THEMES = ["light", "dark", "system"];
29
- var UZI_ACCENTS = ["blue", "cyan", "violet", "emerald", "amber", "rose"];
30
-
31
- // src/theme/themeScript.ts
32
- function getThemeScript({
33
- storageKey = "uzi-theme",
34
- accentStorageKey = "uzi-accent",
35
- defaultTheme = "system",
36
- defaultAccent = "blue"
37
- } = {}) {
38
- const themes = JSON.stringify(UZI_THEMES);
39
- const accents = JSON.stringify(UZI_ACCENTS);
40
- return `(function(){try{
41
- var t=localStorage.getItem(${JSON.stringify(storageKey)});
42
- var a=localStorage.getItem(${JSON.stringify(accentStorageKey)});
43
- var theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};
44
- var accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=["light","dark","system"],d=["blue","cyan","violet","emerald","amber","rose"];function n({storageKey:e="uzi-theme",accentStorageKey:t="uzi-accent",defaultTheme:r="system",defaultAccent:a="blue"}={}){const s=JSON.stringify(i),c=JSON.stringify(d);return`(function(){try{
2
+ var t=localStorage.getItem(${JSON.stringify(e)});
3
+ var a=localStorage.getItem(${JSON.stringify(t)});
4
+ var theme=${s}.includes(t)?t:${JSON.stringify(r)};
5
+ var accent=${c}.includes(a)?a:${JSON.stringify(a)};
45
6
  var resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;
46
7
  var d=document.documentElement;
47
8
  d.setAttribute('data-uzi-theme',resolved);
48
9
  d.setAttribute('data-uzi-accent',accent);
49
10
  d.style.colorScheme=resolved;
50
11
  if(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');
51
- }catch(e){}})();`;
52
- }
53
- // Annotate the CommonJS export names for ESM import in node:
54
- 0 && (module.exports = {
55
- getThemeScript
56
- });
57
- //# sourceMappingURL=server.cjs.map
12
+ }catch(e){}})();`}exports.getThemeScript=n;
13
+ //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts","../src/theme/constants.ts","../src/theme/themeScript.ts"],"sourcesContent":["// Server-safe exports — no \"use client\" banner, no browser APIs at module scope.\r\nexport { getThemeScript } from \"./theme/themeScript\";\r\n","export const UZI_THEMES = [\"light\", \"dark\", \"system\"] as const;\r\nexport const UZI_ACCENTS = [\"blue\", \"cyan\", \"violet\", \"emerald\", \"amber\", \"rose\"] as const;\r\n\r\nexport const THEME_STORAGE_KEY = \"uzi-theme\";\r\nexport const ACCENT_STORAGE_KEY = \"uzi-accent\";\r\n","import { UZI_THEMES, UZI_ACCENTS } from \"./constants\";\r\n\r\n/**\r\n * Returns a minified JS string to inline in <head> as a blocking script.\r\n * It reads localStorage and immediately applies theme/accent attributes\r\n * to <html> before any paint, preventing the flash-of-wrong-theme (FOWT).\r\n *\r\n * Usage in Next.js root layout:\r\n * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />\r\n */\r\nexport function getThemeScript({\r\n storageKey = \"uzi-theme\",\r\n accentStorageKey = \"uzi-accent\",\r\n defaultTheme = \"system\",\r\n defaultAccent = \"blue\",\r\n}: {\r\n storageKey?: string;\r\n accentStorageKey?: string;\r\n defaultTheme?: string;\r\n defaultAccent?: string;\r\n} = {}): string {\r\n const themes = JSON.stringify(UZI_THEMES);\r\n const accents = JSON.stringify(UZI_ACCENTS);\r\n return `(function(){try{\r\nvar t=localStorage.getItem(${JSON.stringify(storageKey)});\r\nvar a=localStorage.getItem(${JSON.stringify(accentStorageKey)});\r\nvar theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};\r\nvar accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};\r\nvar resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;\r\nvar d=document.documentElement;\r\nd.setAttribute('data-uzi-theme',resolved);\r\nd.setAttribute('data-uzi-accent',accent);\r\nd.style.colorScheme=resolved;\r\nif(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');\r\n}catch(e){}})();`;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,aAAa,CAAC,SAAS,QAAQ,QAAQ;AAC7C,IAAM,cAAc,CAAC,QAAQ,QAAQ,UAAU,WAAW,SAAS,MAAM;;;ACSzE,SAAS,eAAe;AAAA,EAC7B,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,gBAAgB;AAClB,IAKI,CAAC,GAAW;AACd,QAAM,SAAS,KAAK,UAAU,UAAU;AACxC,QAAM,UAAU,KAAK,UAAU,WAAW;AAC1C,SAAO;AAAA,6BACoB,KAAK,UAAU,UAAU,CAAC;AAAA,6BAC1B,KAAK,UAAU,gBAAgB,CAAC;AAAA,YACjD,MAAM,kBAAkB,KAAK,UAAU,YAAY,CAAC;AAAA,aACnD,OAAO,kBAAkB,KAAK,UAAU,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQnE;","names":[]}
1
+ {"version":3,"file":"server.cjs","sources":["../src/theme/constants.ts","../src/theme/themeScript.ts"],"sourcesContent":["export const UZI_THEMES = [\"light\", \"dark\", \"system\"] as const;\nexport const UZI_ACCENTS = [\"blue\", \"cyan\", \"violet\", \"emerald\", \"amber\", \"rose\"] as const;\n\nexport const THEME_STORAGE_KEY = \"uzi-theme\";\nexport const ACCENT_STORAGE_KEY = \"uzi-accent\";\n","import { UZI_THEMES, UZI_ACCENTS } from \"./constants\";\n\n/**\n * Returns a minified JS string to inline in <head> as a blocking script.\n * It reads localStorage and immediately applies theme/accent attributes\n * to <html> before any paint, preventing the flash-of-wrong-theme (FOWT).\n *\n * Usage in Next.js root layout:\n * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />\n */\nexport function getThemeScript({\n storageKey = \"uzi-theme\",\n accentStorageKey = \"uzi-accent\",\n defaultTheme = \"system\",\n defaultAccent = \"blue\",\n}: {\n storageKey?: string;\n accentStorageKey?: string;\n defaultTheme?: string;\n defaultAccent?: string;\n} = {}): string {\n const themes = JSON.stringify(UZI_THEMES);\n const accents = JSON.stringify(UZI_ACCENTS);\n return `(function(){try{\nvar t=localStorage.getItem(${JSON.stringify(storageKey)});\nvar a=localStorage.getItem(${JSON.stringify(accentStorageKey)});\nvar theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};\nvar accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};\nvar resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;\nvar d=document.documentElement;\nd.setAttribute('data-uzi-theme',resolved);\nd.setAttribute('data-uzi-accent',accent);\nd.style.colorScheme=resolved;\nif(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');\n}catch(e){}})();`;\n}\n"],"names":["UZI_THEMES","UZI_ACCENTS","getThemeScript","storageKey","accentStorageKey","defaultTheme","defaultAccent","themes","accents"],"mappings":"gFAAO,MAAMA,EAAa,CAAC,QAAS,OAAQ,QAAQ,EACvCC,EAAc,CAAC,OAAQ,OAAQ,SAAU,UAAW,QAAS,MAAM,ECSzE,SAASC,EAAe,CAC7B,WAAAC,EAAa,YACb,iBAAAC,EAAmB,aACnB,aAAAC,EAAe,SACf,cAAAC,EAAgB,MAClB,EAKI,GAAY,CACd,MAAMC,EAAS,KAAK,UAAUP,CAAU,EAClCQ,EAAU,KAAK,UAAUP,CAAW,EAC1C,MAAO;AAAA,6BACoB,KAAK,UAAUE,CAAU,CAAC;AAAA,6BAC1B,KAAK,UAAUC,CAAgB,CAAC;AAAA,YACjDG,CAAM,kBAAkB,KAAK,UAAUF,CAAY,CAAC;AAAA,aACnDG,CAAO,kBAAkB,KAAK,UAAUF,CAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAQnE"}
package/dist/server.d.ts CHANGED
@@ -1,16 +1,2 @@
1
- /**
2
- * Returns a minified JS string to inline in <head> as a blocking script.
3
- * It reads localStorage and immediately applies theme/accent attributes
4
- * to <html> before any paint, preventing the flash-of-wrong-theme (FOWT).
5
- *
6
- * Usage in Next.js root layout:
7
- * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />
8
- */
9
- declare function getThemeScript({ storageKey, accentStorageKey, defaultTheme, defaultAccent, }?: {
10
- storageKey?: string;
11
- accentStorageKey?: string;
12
- defaultTheme?: string;
13
- defaultAccent?: string;
14
- }): string;
15
-
16
- export { getThemeScript };
1
+ export { getThemeScript } from "./theme/themeScript";
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/server.js CHANGED
@@ -1,21 +1,16 @@
1
- // src/theme/constants.ts
2
- var UZI_THEMES = ["light", "dark", "system"];
3
- var UZI_ACCENTS = ["blue", "cyan", "violet", "emerald", "amber", "rose"];
4
-
5
- // src/theme/themeScript.ts
6
- function getThemeScript({
7
- storageKey = "uzi-theme",
8
- accentStorageKey = "uzi-accent",
9
- defaultTheme = "system",
10
- defaultAccent = "blue"
1
+ const i = ["light", "dark", "system"], d = ["blue", "cyan", "violet", "emerald", "amber", "rose"];
2
+ function n({
3
+ storageKey: e = "uzi-theme",
4
+ accentStorageKey: t = "uzi-accent",
5
+ defaultTheme: r = "system",
6
+ defaultAccent: a = "blue"
11
7
  } = {}) {
12
- const themes = JSON.stringify(UZI_THEMES);
13
- const accents = JSON.stringify(UZI_ACCENTS);
8
+ const s = JSON.stringify(i), c = JSON.stringify(d);
14
9
  return `(function(){try{
15
- var t=localStorage.getItem(${JSON.stringify(storageKey)});
16
- var a=localStorage.getItem(${JSON.stringify(accentStorageKey)});
17
- var theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};
18
- var accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};
10
+ var t=localStorage.getItem(${JSON.stringify(e)});
11
+ var a=localStorage.getItem(${JSON.stringify(t)});
12
+ var theme=${s}.includes(t)?t:${JSON.stringify(r)};
13
+ var accent=${c}.includes(a)?a:${JSON.stringify(a)};
19
14
  var resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;
20
15
  var d=document.documentElement;
21
16
  d.setAttribute('data-uzi-theme',resolved);
@@ -25,6 +20,6 @@ if(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');
25
20
  }catch(e){}})();`;
26
21
  }
27
22
  export {
28
- getThemeScript
23
+ n as getThemeScript
29
24
  };
30
- //# sourceMappingURL=server.js.map
25
+ //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/constants.ts","../src/theme/themeScript.ts"],"sourcesContent":["export const UZI_THEMES = [\"light\", \"dark\", \"system\"] as const;\r\nexport const UZI_ACCENTS = [\"blue\", \"cyan\", \"violet\", \"emerald\", \"amber\", \"rose\"] as const;\r\n\r\nexport const THEME_STORAGE_KEY = \"uzi-theme\";\r\nexport const ACCENT_STORAGE_KEY = \"uzi-accent\";\r\n","import { UZI_THEMES, UZI_ACCENTS } from \"./constants\";\r\n\r\n/**\r\n * Returns a minified JS string to inline in <head> as a blocking script.\r\n * It reads localStorage and immediately applies theme/accent attributes\r\n * to <html> before any paint, preventing the flash-of-wrong-theme (FOWT).\r\n *\r\n * Usage in Next.js root layout:\r\n * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />\r\n */\r\nexport function getThemeScript({\r\n storageKey = \"uzi-theme\",\r\n accentStorageKey = \"uzi-accent\",\r\n defaultTheme = \"system\",\r\n defaultAccent = \"blue\",\r\n}: {\r\n storageKey?: string;\r\n accentStorageKey?: string;\r\n defaultTheme?: string;\r\n defaultAccent?: string;\r\n} = {}): string {\r\n const themes = JSON.stringify(UZI_THEMES);\r\n const accents = JSON.stringify(UZI_ACCENTS);\r\n return `(function(){try{\r\nvar t=localStorage.getItem(${JSON.stringify(storageKey)});\r\nvar a=localStorage.getItem(${JSON.stringify(accentStorageKey)});\r\nvar theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};\r\nvar accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};\r\nvar resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;\r\nvar d=document.documentElement;\r\nd.setAttribute('data-uzi-theme',resolved);\r\nd.setAttribute('data-uzi-accent',accent);\r\nd.style.colorScheme=resolved;\r\nif(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');\r\n}catch(e){}})();`;\r\n}\r\n"],"mappings":";AAAO,IAAM,aAAa,CAAC,SAAS,QAAQ,QAAQ;AAC7C,IAAM,cAAc,CAAC,QAAQ,QAAQ,UAAU,WAAW,SAAS,MAAM;;;ACSzE,SAAS,eAAe;AAAA,EAC7B,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,gBAAgB;AAClB,IAKI,CAAC,GAAW;AACd,QAAM,SAAS,KAAK,UAAU,UAAU;AACxC,QAAM,UAAU,KAAK,UAAU,WAAW;AAC1C,SAAO;AAAA,6BACoB,KAAK,UAAU,UAAU,CAAC;AAAA,6BAC1B,KAAK,UAAU,gBAAgB,CAAC;AAAA,YACjD,MAAM,kBAAkB,KAAK,UAAU,YAAY,CAAC;AAAA,aACnD,OAAO,kBAAkB,KAAK,UAAU,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQnE;","names":[]}
1
+ {"version":3,"file":"server.js","sources":["../src/theme/constants.ts","../src/theme/themeScript.ts"],"sourcesContent":["export const UZI_THEMES = [\"light\", \"dark\", \"system\"] as const;\nexport const UZI_ACCENTS = [\"blue\", \"cyan\", \"violet\", \"emerald\", \"amber\", \"rose\"] as const;\n\nexport const THEME_STORAGE_KEY = \"uzi-theme\";\nexport const ACCENT_STORAGE_KEY = \"uzi-accent\";\n","import { UZI_THEMES, UZI_ACCENTS } from \"./constants\";\n\n/**\n * Returns a minified JS string to inline in <head> as a blocking script.\n * It reads localStorage and immediately applies theme/accent attributes\n * to <html> before any paint, preventing the flash-of-wrong-theme (FOWT).\n *\n * Usage in Next.js root layout:\n * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />\n */\nexport function getThemeScript({\n storageKey = \"uzi-theme\",\n accentStorageKey = \"uzi-accent\",\n defaultTheme = \"system\",\n defaultAccent = \"blue\",\n}: {\n storageKey?: string;\n accentStorageKey?: string;\n defaultTheme?: string;\n defaultAccent?: string;\n} = {}): string {\n const themes = JSON.stringify(UZI_THEMES);\n const accents = JSON.stringify(UZI_ACCENTS);\n return `(function(){try{\nvar t=localStorage.getItem(${JSON.stringify(storageKey)});\nvar a=localStorage.getItem(${JSON.stringify(accentStorageKey)});\nvar theme=${themes}.includes(t)?t:${JSON.stringify(defaultTheme)};\nvar accent=${accents}.includes(a)?a:${JSON.stringify(defaultAccent)};\nvar resolved=theme==='system'?(window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'):theme;\nvar d=document.documentElement;\nd.setAttribute('data-uzi-theme',resolved);\nd.setAttribute('data-uzi-accent',accent);\nd.style.colorScheme=resolved;\nif(resolved==='dark')d.classList.add('dark');else d.classList.remove('dark');\n}catch(e){}})();`;\n}\n"],"names":["UZI_THEMES","UZI_ACCENTS","getThemeScript","storageKey","accentStorageKey","defaultTheme","defaultAccent","themes","accents"],"mappings":"AAAO,MAAMA,IAAa,CAAC,SAAS,QAAQ,QAAQ,GACvCC,IAAc,CAAC,QAAQ,QAAQ,UAAU,WAAW,SAAS,MAAM;ACSzE,SAASC,EAAe;AAAA,EAC7B,YAAAC,IAAa;AAAA,EACb,kBAAAC,IAAmB;AAAA,EACnB,cAAAC,IAAe;AAAA,EACf,eAAAC,IAAgB;AAClB,IAKI,IAAY;AACd,QAAMC,IAAS,KAAK,UAAUP,CAAU,GAClCQ,IAAU,KAAK,UAAUP,CAAW;AAC1C,SAAO;AAAA,6BACoB,KAAK,UAAUE,CAAU,CAAC;AAAA,6BAC1B,KAAK,UAAUC,CAAgB,CAAC;AAAA,YACjDG,CAAM,kBAAkB,KAAK,UAAUF,CAAY,CAAC;AAAA,aACnDG,CAAO,kBAAkB,KAAK,UAAUF,CAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQnE;"}
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ :root{--focus-ring: 2px solid color-mix(in srgb, var(--ring, #94a3b8) 50%, transparent);--focus-ring-offset: 2px;--success: hsl(142 71% 45%);--warning: hsl(38 92% 50%);--uzi-control-min-height: 2.125rem;--uzi-control-radius: 8px;--uzi-control-padding-y: 6px;--uzi-control-padding-x: 14px;--uzi-control-padding-x-compact: 12px;--uzi-control-font-size: .85rem;--uzi-control-line-height: 1.25rem;--uzi-control-shadow: inset 0 1px 0 rgba(255, 255, 255, .03), 0 1px 2px rgba(0, 0, 0, .12);--uzi-control-shadow-hover: inset 0 1px 0 rgba(255, 255, 255, .04), 0 2px 8px rgba(0, 0, 0, .16);--uzi-menu-radius: .625rem;--uzi-menu-padding: .25rem;--uzi-menu-shadow: 0 12px 32px rgba(0, 0, 0, .18);--uzi-menu-item-radius: .5rem;--uzi-menu-item-gap: .5rem;--uzi-menu-item-padding-y: .5rem;--uzi-menu-item-padding-x: .625rem}:root,:root[data-uzi-theme=light],[data-uzi-theme=light]{color-scheme:light;--background: hsl(210 20% 98%);--foreground: hsl(222 47% 11%);--card: hsl(0 0% 100%);--card-foreground: hsl(222 47% 11%);--popover: hsl(0 0% 100%);--popover-foreground: hsl(222 47% 11%);--secondary: hsl(214 32% 94%);--secondary-foreground: hsl(222 47% 11%);--muted: hsl(214 32% 94%);--muted-foreground: hsl(215 16% 47%);--accent: hsl(214 32% 92%);--accent-foreground: hsl(222 47% 11%);--destructive: hsl(0 84% 60%);--destructive-foreground: hsl(0 0% 98%);--border: hsl(214 32% 88%);--input: hsl(214 32% 88%);--panel: var(--card);--text: var(--foreground)}:root[data-uzi-theme=dark],[data-uzi-theme=dark]{color-scheme:dark;--background: #0f172a;--foreground: #e2e8f0;--card: #111827;--card-foreground: #e2e8f0;--popover: #111827;--popover-foreground: #e2e8f0;--secondary: #152036;--secondary-foreground: #e2e8f0;--muted: #152036;--muted-foreground: #94a3b8;--accent: color-mix(in srgb, var(--primary, #22d3ee) 12%, transparent);--accent-foreground: #e2e8f0;--destructive: hsl(0 72% 51%);--destructive-foreground: hsl(0 0% 98%);--border: #1f2937;--input: #1f2937;--panel: #111827;--surface-elevated: #0b1224;--surface-topbar: color-mix(in srgb, var(--background, #0b1224) 85%, transparent);--text: #e2e8f0}:root,:root[data-uzi-accent=blue],[data-uzi-accent=blue]{--primary: hsl(221 83% 53%);--primary-foreground: hsl(210 40% 98%);--ring: hsl(221 83% 53%)}:root[data-uzi-accent=cyan],[data-uzi-accent=cyan]{--primary: hsl(188 94% 43%);--primary-foreground: hsl(222 47% 11%);--ring: hsl(188 94% 43%)}:root[data-uzi-accent=violet],[data-uzi-accent=violet]{--primary: hsl(262 83% 58%);--primary-foreground: hsl(210 40% 98%);--ring: hsl(262 83% 58%)}:root[data-uzi-accent=emerald],[data-uzi-accent=emerald]{--primary: hsl(160 84% 39%);--primary-foreground: hsl(210 40% 98%);--ring: hsl(160 84% 39%)}:root[data-uzi-accent=amber],[data-uzi-accent=amber]{--primary: hsl(38 92% 50%);--primary-foreground: hsl(222 47% 11%);--ring: hsl(38 92% 50%)}:root[data-uzi-accent=rose],[data-uzi-accent=rose]{--primary: hsl(346 77% 49%);--primary-foreground: hsl(210 40% 98%);--ring: hsl(346 77% 49%)}.uzi-button-module__button__5dzDN{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:600;border-radius:8px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:opacity .15s,border-color .15s,color .15s,background .15s;white-space:nowrap;line-height:1}.uzi-button-module__button__5dzDN:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-button-module__button__5dzDN svg{width:1rem;height:1rem;flex-shrink:0}.uzi-button-module__button__5dzDN:disabled{opacity:.45;cursor:not-allowed}.uzi-button-module__sizeSm__jb544{font-size:.82rem;min-height:2rem;padding:6px 14px}.uzi-button-module__sizeMd__lIo8M{font-size:.95rem;min-height:2.25rem;padding:10px 22px}.uzi-button-module__sizeLg__QSSuW{font-size:1rem;min-height:2.5rem;padding:12px 28px}.uzi-button-module__sizeIcon__Aa9tN{width:2.25rem;height:2.25rem;padding:0}.uzi-button-module__variantPrimary__zp2Pg{background:var(--ts-btn-primary-bg, var(--primary, #22d3ee));color:var(--ts-btn-primary-text, var(--primary-foreground, #0f172a))}.uzi-button-module__variantPrimary__zp2Pg:hover:not(:disabled){opacity:.88}.uzi-button-module__variantSecondary__oX5CB{background:var(--ts-btn-secondary-bg, var(--secondary, rgba(255, 255, 255, .06)));color:var(--ts-btn-secondary-text, var(--secondary-foreground, var(--text, #e2e8f0)));border-color:var(--ts-btn-secondary-border, var(--border, #1f2937))}.uzi-button-module__variantSecondary__oX5CB:hover:not(:disabled){background:var(--ts-btn-secondary-hover-bg, color-mix(in srgb, var(--secondary, rgba(255, 255, 255, .06)) 90%, black))}.uzi-button-module__variantOutline__uXfiP{background:var(--ts-btn-outline-bg, var(--background, transparent));color:var(--ts-btn-outline-text, var(--foreground, var(--text, #e2e8f0)));border-color:var(--ts-btn-outline-border, var(--border, #1f2937))}.uzi-button-module__variantOutline__uXfiP:hover:not(:disabled){background:var(--ts-btn-outline-hover-bg, var(--accent, rgba(255, 255, 255, .06)));color:var(--ts-btn-outline-hover-text, var(--accent-foreground, var(--foreground, #e2e8f0)))}.uzi-button-module__variantGhost__-OEB8{background:transparent;color:var(--ts-btn-ghost-text, var(--muted-foreground, var(--muted, #94a3b8)));padding-left:8px;padding-right:8px}.uzi-button-module__variantGhost__-OEB8:hover:not(:disabled){background:var(--ts-btn-ghost-hover-bg, var(--accent, rgba(255, 255, 255, .05)));color:var(--ts-btn-ghost-hover-text, var(--accent-foreground, var(--foreground, #e2e8f0)))}.uzi-button-module__variantDestructive__5IeYA{background:var(--ts-btn-danger-bg, var(--destructive, #f87171));color:var(--ts-btn-danger-text, var(--destructive-foreground, #fff))}.uzi-button-module__variantDestructive__5IeYA:hover:not(:disabled){opacity:.9}.uzi-button-module__variantLink__Olx4I{background:transparent;color:var(--ts-btn-link-text, var(--primary, #22d3ee));border-color:transparent;min-height:auto;padding:0;border-radius:0}.uzi-button-module__variantLink__Olx4I:hover:not(:disabled){text-decoration:underline;text-underline-offset:.2em}.uzi-avatar-module__avatar__yPIOs{position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:999px;background:var(--ts-avatar-bg, var(--muted, rgba(255, 255, 255, .08)));color:var(--ts-avatar-fg, var(--muted-foreground, var(--text, #e2e8f0)))}.uzi-avatar-module__size-sm__v5riJ{width:1.75rem;height:1.75rem}.uzi-avatar-module__size-md__g7IQS{width:2rem;height:2rem}.uzi-avatar-module__size-lg__Ca4xk{width:2.25rem;height:2.25rem}.uzi-avatar-module__image__Ngo7A{width:100%;height:100%;object-fit:cover}.uzi-avatar-module__fallback__Tf3oZ{display:flex;width:100%;height:100%;align-items:center;justify-content:center;border-radius:inherit;background:var(--ts-avatar-fallback-bg, var(--muted, rgba(255, 255, 255, .08)));color:var(--ts-avatar-fallback-fg, var(--muted-foreground, var(--text, #e2e8f0)));font-size:.85rem;font-weight:700;line-height:1;text-transform:uppercase}.uzi-card-module__card__ZPFTz{position:relative;overflow:visible;border-radius:var(--ts-card-radius, 12px);border:1px solid var(--ts-card-border, var(--border, #1f2937));background:var(--ts-card-bg, var(--panel, #111827));color:var(--ts-card-fg, var(--text, #e2e8f0));box-shadow:var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, .28));padding:var(--ts-card-padding, 16px);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease,background-color .14s ease}.uzi-card-module__tone-default__7Ujf9{--ts-card-bg: var(--panel, #111827);--ts-card-border: var(--border, #1f2937);--ts-card-shadow: 0 16px 36px rgba(0, 0, 0, .28)}.uzi-card-module__tone-muted__RQy5B{--ts-card-bg: var(--ts-card-muted-bg, rgba(255, 255, 255, .02));--ts-card-border: var(--ts-card-muted-border, rgba(255, 255, 255, .06));--ts-card-shadow: 0 10px 26px rgba(0, 0, 0, .22)}.uzi-card-module__tone-contrast__JpFxL{--ts-card-bg: var(--ts-card-contrast-bg, #0b1224);--ts-card-border: var(--ts-card-contrast-border, rgba(255, 255, 255, .1));--ts-card-shadow: 0 18px 50px rgba(0, 0, 0, .32)}.uzi-card-module__interactive__zlPML{cursor:default}.uzi-card-module__interactive__zlPML:hover{transform:translateY(-1px);box-shadow:0 22px 60px #00000052;border-color:var(--ts-card-hover-border, color-mix(in srgb, var(--primary, #22d3ee) 40%, transparent))}.uzi-card-module__interactive__zlPML:focus-within{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-card-module__padding-none__LXdx-{--ts-card-padding: 0}.uzi-card-module__padding-sm__-Ub1s{--ts-card-padding: 10px}.uzi-card-module__padding-md__kUf46{--ts-card-padding: 16px}.uzi-card-module__padding-lg__a5mWP{--ts-card-padding: 20px}.uzi-pill-module__pill__uCKcP{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--ts-pill-border, var(--border, #1f2937));background:var(--ts-pill-bg, rgba(255, 255, 255, .04));color:var(--ts-pill-fg, var(--muted, #94a3b8));font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;line-height:1.2;white-space:nowrap}.uzi-pill-module__size-sm__JANOQ{padding:3px 8px;font-size:11px}.uzi-pill-module__size-md__fdsqR{padding:4px 10px}.uzi-pill-module__tone-neutral__-af-x{background:var(--ts-pill-bg, rgba(255, 255, 255, .04));border-color:var(--ts-pill-border, var(--border, #1f2937));color:var(--ts-pill-fg, var(--muted, #94a3b8))}.uzi-pill-module__tone-success__kW2Kf{color:var(--success, hsl(142 71% 45%));border-color:color-mix(in srgb,var(--success, hsl(142 71% 45%)) 45%,transparent);background:color-mix(in srgb,var(--success, hsl(142 71% 45%)) 12%,transparent)}.uzi-pill-module__tone-warning__Rc5-s{color:var(--warning, hsl(38 92% 50%));border-color:color-mix(in srgb,var(--warning, hsl(38 92% 50%)) 45%,transparent);background:color-mix(in srgb,var(--warning, hsl(38 92% 50%)) 12%,transparent)}.uzi-pill-module__tone-info__0vQrj{color:var(--primary, #22d3ee);border-color:color-mix(in srgb,var(--primary, #22d3ee) 50%,transparent);background:color-mix(in srgb,var(--primary, #22d3ee) 12%,transparent)}.uzi-pill-module__tone-danger__gzNOa{color:var(--destructive, #f87171);border-color:color-mix(in srgb,var(--destructive, #f87171) 45%,transparent);background:color-mix(in srgb,var(--destructive, #f87171) 12%,transparent)}.uzi-pill-module__icon__KQ8zg{display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px}.uzi-pill-module__content__T7AG1{display:inline-flex;align-items:center;gap:4px}.uzi-modal-module__portalLayer__t7blc{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.uzi-modal-module__backdrop__IMd3b{position:absolute;inset:0;background:#0000008c}.uzi-modal-module__backdrop__IMd3b[data-state=open]{animation:uzi-modal-module__backdropFadeIn__GNJdx .16s ease}.uzi-modal-module__backdrop__IMd3b[data-state=closed]{animation:uzi-modal-module__backdropFadeOut__R-3K5 .14s ease}.uzi-modal-module__overlayContent__0DtbP{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;max-width:100%;max-height:100%;outline:none}.uzi-modal-module__overlayContent__0DtbP[data-state=open]{animation:uzi-modal-module__modalContentIn__fub8M .18s ease}.uzi-modal-module__overlayContent__0DtbP[data-state=closed]{animation:uzi-modal-module__modalContentOut__elTJ3 .14s ease}.uzi-modal-module__modal__Mao59{background:var(--background, #0f172a);border:1px solid var(--border, #1f2937);border-radius:14px;padding:24px;width:min(500px,100%);box-shadow:0 24px 64px #0000008c;display:flex;flex-direction:column;gap:0}.uzi-modal-module__size-sm__Uu9je{width:min(380px,100%)}.uzi-modal-module__size-md__TiiWy{width:min(500px,100%)}.uzi-modal-module__size-lg__BrTIO{width:min(640px,100%)}.uzi-modal-module__size-xl__sj0mh{width:min(900px,100%)}.uzi-modal-module__header__PmCaO{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.uzi-modal-module__titles__IboyQ{display:flex;flex-direction:column;gap:3px}.uzi-modal-module__title__Zd7pL{font-weight:700;font-size:16px;color:var(--text, #e2e8f0);line-height:1.3}.uzi-modal-module__subtitle__t-LRK{font-size:13px;color:var(--muted, #94a3b8);line-height:1.4}.uzi-modal-module__closeButton__GTiZr{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--muted, #94a3b8);cursor:pointer;transition:background .12s,color .12s;padding:0}.uzi-modal-module__closeButton__GTiZr:hover{background:#ffffff12;color:var(--text, #e2e8f0)}.uzi-modal-module__closeButton__GTiZr:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-modal-module__body__km6FQ{display:flex;flex-direction:column;gap:12px}.uzi-modal-module__footer__jWLTv{display:flex;gap:8px;margin-top:20px}@keyframes uzi-modal-module__backdropFadeIn__GNJdx{0%{opacity:0}to{opacity:1}}@keyframes uzi-modal-module__backdropFadeOut__R-3K5{0%{opacity:1}to{opacity:0}}@keyframes uzi-modal-module__modalContentIn__fub8M{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes uzi-modal-module__modalContentOut__elTJ3{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(4px) scale(.98)}}.uzi-alert-module__alert__7Bt6c{display:flex;align-items:flex-start;gap:.5rem;border-radius:.375rem;border:1px solid;padding:.625rem .875rem;font-size:.875rem;line-height:1.5}.uzi-alert-module__success__apdFG{border-color:color-mix(in srgb,var(--success, hsl(142 71% 45%)) 35%,transparent);background:color-mix(in srgb,var(--success, hsl(142 71% 45%)) 10%,transparent);color:color-mix(in srgb,var(--success, hsl(142 71% 45%)) 90%,var(--foreground, #e2e8f0))}.uzi-alert-module__error__KLgi1{border-color:color-mix(in srgb,var(--destructive, #f87171) 35%,transparent);background:color-mix(in srgb,var(--destructive, #f87171) 10%,transparent);color:color-mix(in srgb,var(--destructive, #f87171) 90%,var(--foreground, #e2e8f0))}.uzi-alert-module__warning__F4fpk{border-color:color-mix(in srgb,var(--warning, hsl(38 92% 50%)) 35%,transparent);background:color-mix(in srgb,var(--warning, hsl(38 92% 50%)) 10%,transparent);color:color-mix(in srgb,var(--warning, hsl(38 92% 50%)) 90%,var(--foreground, #e2e8f0))}.uzi-alert-module__info__1IKHt{border-color:color-mix(in srgb,var(--primary, #22d3ee) 35%,transparent);background:color-mix(in srgb,var(--primary, #22d3ee) 10%,transparent);color:color-mix(in srgb,var(--primary, #22d3ee) 90%,var(--foreground, #e2e8f0))}.uzi-toast-module__stack__SRrda{position:fixed;z-index:2147483000;display:flex;flex-direction:column;gap:10px;pointer-events:none}.uzi-toast-module__topRight__WiZzM{top:16px;right:16px;align-items:flex-end}.uzi-toast-module__topLeft__SzFS9{top:16px;left:16px;align-items:flex-start}.uzi-toast-module__topCenter__X5W-x{top:16px;left:50%;transform:translate(-50%);align-items:center}.uzi-toast-module__bottomRight__DMtoS{bottom:16px;right:16px;align-items:flex-end}.uzi-toast-module__bottomLeft__ZZ7VF{bottom:16px;left:16px;align-items:flex-start}.uzi-toast-module__bottomCenter__QNJrM{bottom:16px;left:50%;transform:translate(-50%);align-items:center}.uzi-toast-module__toast__HNUcj{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;min-width:280px;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;border-radius:10px;border:1px solid var(--toast-border, #1f2937);background:var(--toast-bg, #111827);color:var(--toast-text, #e2e8f0);box-shadow:0 12px 32px #00000059;animation:uzi-toast-module__toastSlideIn__BTXfm .18s ease-out}.uzi-toast-module__toast__HNUcj[data-state=closed]{animation:uzi-toast-module__toastSlideOut__mBX-G .16s ease-in forwards}.uzi-toast-module__toast__HNUcj[data-swipe=move]{transform:translate(var(--radix-toast-swipe-move-x))}.uzi-toast-module__toast__HNUcj[data-swipe=cancel]{transform:translate(0);transition:transform .18s ease-out}.uzi-toast-module__toast__HNUcj[data-swipe=end]{animation:uzi-toast-module__toastSwipeOut__R-jk2 .16s ease-out forwards}.uzi-toast-module__icon__LIAqr{width:18px;height:18px;flex-shrink:0}.uzi-toast-module__body__9vzs7{flex:1;min-width:0;display:grid;gap:6px}.uzi-toast-module__message__TBY65{word-break:break-word;font-size:14px;line-height:1.4}.uzi-toast-module__actions__Iykd9{display:flex;gap:6px;flex-wrap:wrap}.uzi-toast-module__actionButton__cvUr0{padding:5px 10px;font-size:12px;font-weight:600;border-radius:6px;border:1px solid var(--toast-action-border, rgba(0, 0, 0, .2));background:var(--toast-action-bg, rgba(0, 0, 0, .1));color:var(--toast-text, #e2e8f0);cursor:pointer;transition:background .12s ease}.uzi-toast-module__actionButton__cvUr0:hover{background:var(--toast-button-bg, rgba(0, 0, 0, .15))}.uzi-toast-module__closeButton__9JKNG{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;margin:-2px -4px -2px 0;border:none;border-radius:4px;background:transparent;color:var(--toast-text, #e2e8f0);opacity:.6;cursor:pointer;transition:opacity .12s ease,background .12s ease}.uzi-toast-module__closeButton__9JKNG:hover{opacity:1;background:var(--toast-button-bg, rgba(0, 0, 0, .1))}.uzi-toast-module__closeButton__9JKNG:focus-visible,.uzi-toast-module__actionButton__cvUr0:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}@keyframes uzi-toast-module__toastSlideIn__BTXfm{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes uzi-toast-module__toastSlideOut__mBX-G{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@keyframes uzi-toast-module__toastSwipeOut__R-jk2{0%{opacity:1;transform:translate(var(--radix-toast-swipe-end-x))}to{opacity:0;transform:translate(calc(var(--radix-toast-swipe-end-x) * 1.05))}}.uzi-input-module__input__-ipHD{display:flex;width:100%;min-height:2.25rem;border-radius:.5rem;border:1px solid var(--ts-input-border, var(--input, var(--border, #1f2937)));background:var(--ts-input-bg, var(--background, #fff));color:var(--ts-input-fg, var(--foreground, var(--text, #e2e8f0)));padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem;box-shadow:var(--ts-input-shadow, 0 1px 2px rgba(0, 0, 0, .04));transition:border-color .15s ease,background .15s ease}.uzi-input-module__input__-ipHD::placeholder{color:var(--ts-input-placeholder, var(--muted-foreground, var(--muted, #94a3b8)))}.uzi-input-module__input__-ipHD:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-input-module__input__-ipHD:disabled{cursor:not-allowed;opacity:.5}.uzi-label-module__label__gKflt{font-size:.875rem;font-weight:500;line-height:1.2;color:var(--ts-label-fg, inherit)}.uzi-checkbox-module__checkbox__zAB1y{width:1rem;height:1rem;margin:0;border-radius:.25rem;border:1px solid var(--ts-checkbox-border, var(--primary, var(--border, #1f2937)));background:var(--ts-checkbox-bg, var(--background, #fff));accent-color:var(--ts-checkbox-accent, var(--primary, #0f172a));cursor:pointer}.uzi-checkbox-module__checkbox__zAB1y:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-checkbox-module__checkbox__zAB1y:disabled{cursor:not-allowed;opacity:.5}.uzi-multi-select-module__wrapper__Izj2x{position:relative;display:inline-flex;min-width:0;max-width:100%}.uzi-multi-select-module__wrapperFullWidth__eH8pf{width:100%}.uzi-multi-select-module__trigger__r3816{width:100%;min-width:0;min-height:var(--uzi-control-min-height);display:inline-flex;align-items:center;justify-content:space-between;gap:.625rem;border-radius:var(--uzi-control-radius);border:1px solid var(--ts-dropdown-border, var(--border, #1f2937));background:var(--ts-dropdown-bg, var(--panel, #111827));color:var(--ts-dropdown-text, var(--text, #e2e8f0));padding:var(--uzi-control-padding-y) var(--uzi-control-padding-x-compact) var(--uzi-control-padding-y) var(--uzi-control-padding-x);font-size:var(--uzi-control-font-size);line-height:var(--uzi-control-line-height);font-family:inherit;box-shadow:var(--uzi-control-shadow);transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease;cursor:pointer;text-align:left}.uzi-multi-select-module__trigger__r3816:hover:not(:disabled){border-color:var(--ts-dropdown-accent, var(--accent, #22d3ee));box-shadow:var(--uzi-control-shadow-hover)}.uzi-multi-select-module__trigger__r3816:focus-visible,.uzi-multi-select-module__trigger__r3816[data-state=open]{border-color:var(--ts-dropdown-accent, var(--primary, #22d3ee));outline:var(--focus-ring);outline-offset:var(--focus-ring-offset);box-shadow:inset 0 1px #ffffff0a,0 0 0 1px color-mix(in srgb,var(--primary, #22d3ee) 30%,transparent)}.uzi-multi-select-module__trigger__r3816:disabled{cursor:not-allowed;opacity:.6;box-shadow:none}.uzi-multi-select-module__value__PuUmG{min-width:0;display:flex;flex:1;flex-wrap:wrap;gap:.375rem;align-items:center}.uzi-multi-select-module__placeholder__dJIU-{color:var(--muted-foreground, #94a3b8)}.uzi-multi-select-module__chip__46Ms-{display:inline-flex;align-items:center;max-width:100%;padding:2px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--primary, #22d3ee) 32%,transparent);background:color-mix(in srgb,var(--primary, #22d3ee) 10%,transparent);color:var(--ts-dropdown-text, var(--text, #e2e8f0));font-size:.75rem;font-weight:600;line-height:1.2;white-space:nowrap}.uzi-multi-select-module__chipSummary__zLwi8{color:var(--primary, #22d3ee)}.uzi-multi-select-module__chevron__SWK5l{width:10px;height:10px;display:flex;align-items:center;justify-content:center;color:var(--muted, #94a3b8);flex-shrink:0;transition:transform .15s ease,color .15s ease}.uzi-multi-select-module__trigger__r3816:hover:not(:disabled) .uzi-multi-select-module__chevron__SWK5l,.uzi-multi-select-module__trigger__r3816[data-state=open] .uzi-multi-select-module__chevron__SWK5l{color:var(--ts-dropdown-text, var(--text, #e2e8f0))}.uzi-multi-select-module__trigger__r3816[data-state=open] .uzi-multi-select-module__chevron__SWK5l{transform:rotate(180deg)}.uzi-multi-select-module__menu__q8auA{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:100%;max-height:16rem;overflow-y:auto;border:1px solid var(--ts-menu-border, var(--border, #1f2937));border-radius:var(--uzi-menu-radius);background:var(--ts-menu-bg, var(--popover, var(--panel, #111827)));color:var(--ts-menu-fg, var(--popover-foreground, var(--text, #e2e8f0)));padding:var(--uzi-menu-padding);box-shadow:var(--uzi-menu-shadow);animation:uzi-multi-select-module__menuFadeIn__Plo7- .14s ease}.uzi-multi-select-module__option__-Ioqk{width:100%;display:flex;align-items:center;gap:var(--uzi-menu-item-gap);border:none;border-radius:var(--uzi-menu-item-radius);background:transparent;color:inherit;padding:var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x);font:inherit;cursor:pointer;text-align:left;transition:background .12s ease,color .12s ease}.uzi-multi-select-module__option__-Ioqk:hover:not(:disabled),.uzi-multi-select-module__option__-Ioqk:focus-visible,.uzi-multi-select-module__option__-Ioqk[data-highlighted]{background:var(--ts-menu-hover-bg, var(--accent, rgba(255, 255, 255, .06)));color:var(--ts-menu-hover-fg, var(--accent-foreground, var(--foreground, #e2e8f0)));outline:none}.uzi-multi-select-module__optionDisabled__qtCi8,.uzi-multi-select-module__option__-Ioqk[data-disabled]{opacity:.5;cursor:not-allowed}.uzi-multi-select-module__optionSelected__74IO8 .uzi-multi-select-module__optionLabel__cVoN7{color:var(--primary, #22d3ee)}.uzi-multi-select-module__indicator__NO-WE{width:1rem;height:1rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:.3125rem;border:1px solid var(--border, #1f2937);color:transparent;background:transparent;transition:border-color .12s ease,background .12s ease,color .12s ease}.uzi-multi-select-module__indicatorSelected__9sEAy{border-color:color-mix(in srgb,var(--primary, #22d3ee) 55%,transparent);background:color-mix(in srgb,var(--primary, #22d3ee) 12%,transparent);color:var(--primary, #22d3ee)}.uzi-multi-select-module__indicatorDisabled__vqdiH{opacity:.65}.uzi-multi-select-module__optionLabel__cVoN7{min-width:0;flex:1}@keyframes uzi-multi-select-module__menuFadeIn__Plo7-{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.uzi-select-module__wrapper__7szq0{position:relative;display:inline-flex;min-width:0;max-width:100%}.uzi-select-module__wrapperFullWidth__IyOIG{width:100%}.uzi-select-module__wrapper__7szq0:not(.uzi-select-module__wrapperFullWidth__IyOIG) .uzi-select-module__trigger__ldh8w{width:auto}.uzi-select-module__trigger__ldh8w{display:inline-flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;min-width:0;min-height:var(--uzi-control-min-height);border-radius:var(--uzi-control-radius);border:1px solid var(--ts-dropdown-border, var(--border, #1f2937));background:var(--ts-dropdown-bg, var(--panel, #111827));color:var(--ts-dropdown-text, var(--text, #e2e8f0));padding:var(--uzi-control-padding-y) var(--uzi-control-padding-x-compact) var(--uzi-control-padding-y) var(--uzi-control-padding-x);font-size:var(--uzi-control-font-size);line-height:var(--uzi-control-line-height);font-family:inherit;font-weight:500;box-shadow:var(--uzi-control-shadow);transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease;cursor:pointer;text-align:left}.uzi-select-module__value__FTUJh{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uzi-select-module__trigger__ldh8w:hover:not(:disabled){border-color:var(--ts-dropdown-accent, var(--accent, #22d3ee));box-shadow:var(--uzi-control-shadow-hover)}.uzi-select-module__trigger__ldh8w:focus-visible{border-color:var(--ts-dropdown-accent, var(--primary, #22d3ee));outline:var(--focus-ring);outline-offset:var(--focus-ring-offset);box-shadow:inset 0 1px #ffffff0a,0 0 0 1px color-mix(in srgb,var(--primary, #22d3ee) 30%,transparent)}.uzi-select-module__trigger__ldh8w[data-placeholder]{color:var(--muted-foreground, #94a3b8)}.uzi-select-module__trigger__ldh8w:disabled{cursor:not-allowed;opacity:.6;box-shadow:none}.uzi-select-module__chevron__U6HXS{width:10px;height:10px;display:flex;align-items:center;justify-content:center;color:var(--muted, #94a3b8);flex-shrink:0;position:relative;top:-1px;transition:transform .15s ease,color .15s ease}.uzi-select-module__chevron__U6HXS svg{display:block}.uzi-select-module__trigger__ldh8w:hover:not(:disabled) .uzi-select-module__chevron__U6HXS,.uzi-select-module__trigger__ldh8w[data-state=open] .uzi-select-module__chevron__U6HXS{color:var(--ts-dropdown-text, var(--text, #e2e8f0))}.uzi-select-module__trigger__ldh8w[data-state=open] .uzi-select-module__chevron__U6HXS{transform:rotate(180deg)}.uzi-select-module__content__pOWWy{z-index:50;min-width:var(--radix-select-trigger-width);max-height:min(18rem,var(--radix-select-content-available-height));overflow:hidden;border:1px solid var(--ts-menu-border, var(--border, #1f2937));border-radius:var(--uzi-menu-radius);background:var(--ts-menu-bg, var(--popover, var(--panel, #111827)));color:var(--ts-menu-fg, var(--popover-foreground, var(--text, #e2e8f0)));padding:var(--uzi-menu-padding);box-shadow:var(--uzi-menu-shadow);animation:uzi-select-module__selectFadeIn__Z-yKX .14s ease}.uzi-select-module__viewport__VGZM6{max-height:inherit;overflow-y:auto}.uzi-select-module__item__6uM6-{position:relative;display:flex;width:100%;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;gap:var(--uzi-menu-item-gap);border-radius:var(--uzi-menu-item-radius);padding:var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x) var(--uzi-menu-item-padding-y) 2rem;font-size:.875rem;line-height:1.25rem;outline:none}.uzi-select-module__item__6uM6-[data-highlighted]{background:var(--ts-menu-hover-bg, var(--accent, rgba(255, 255, 255, .06)));color:var(--ts-menu-hover-fg, var(--accent-foreground, var(--foreground, #e2e8f0)))}.uzi-select-module__item__6uM6-[data-disabled]{pointer-events:none;opacity:.5}.uzi-select-module__item__6uM6-[data-state=checked]{color:var(--primary, #22d3ee)}.uzi-select-module__indicator__ZHcg5{position:absolute;left:.625rem;display:inline-flex;width:1rem;height:1rem;align-items:center;justify-content:center;color:currentColor}.uzi-select-module__indicatorIcon__kOV2G{display:block}@keyframes uzi-select-module__selectFadeIn__Z-yKX{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.uzi-dropdown-menu-module__content__n-ElH{z-index:50;min-width:8rem;max-height:var(--radix-dropdown-menu-content-available-height);overflow-x:hidden;overflow-y:auto;border:1px solid var(--ts-menu-border, var(--border, #1f2937));border-radius:var(--uzi-menu-radius);background:var(--ts-menu-bg, var(--popover, var(--panel, #111827)));color:var(--ts-menu-fg, var(--popover-foreground, var(--text, #e2e8f0)));padding:var(--uzi-menu-padding);box-shadow:var(--uzi-menu-shadow);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:uzi-dropdown-menu-module__menuFadeIn__ITxMo .14s ease}.uzi-dropdown-menu-module__item__tBNtW{position:relative;display:flex;width:100%;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;gap:var(--uzi-menu-item-gap);border-radius:var(--uzi-menu-item-radius);padding:var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x);font-size:.875rem;line-height:1.25rem;outline:none}.uzi-dropdown-menu-module__item__tBNtW[data-inset=true]{padding-left:2rem}.uzi-dropdown-menu-module__item__tBNtW[data-highlighted]{background:var(--ts-menu-hover-bg, var(--accent, rgba(255, 255, 255, .06)));color:var(--ts-menu-hover-fg, var(--accent-foreground, var(--foreground, #e2e8f0)))}.uzi-dropdown-menu-module__item__tBNtW[data-disabled]{pointer-events:none;opacity:.5}.uzi-dropdown-menu-module__itemDestructive__oWmKd{color:var(--ts-menu-danger, var(--destructive, #f87171))}.uzi-dropdown-menu-module__itemDestructive__oWmKd[data-highlighted]{background:color-mix(in srgb,var(--destructive, #f87171) 15%,transparent);color:var(--ts-menu-danger-fg, var(--destructive, #f87171))}.uzi-dropdown-menu-module__insetItem__g7ONJ{padding-left:2rem}.uzi-dropdown-menu-module__indicator__5qwFh{position:absolute;left:.5rem;display:inline-flex;width:1rem;height:1rem;align-items:center;justify-content:center;color:currentColor}.uzi-dropdown-menu-module__indicatorIcon__nhJMw{display:block}.uzi-dropdown-menu-module__radioDot__GWUVT{display:block;width:.5rem;height:.5rem;border-radius:999px;background:currentColor}.uzi-dropdown-menu-module__label__sFnNR{padding:var(--uzi-menu-item-padding-y) var(--uzi-menu-item-padding-x);font-size:.875rem;font-weight:600;line-height:1.25rem}.uzi-dropdown-menu-module__label__sFnNR[data-inset=true]{padding-left:2rem}.uzi-dropdown-menu-module__separator__PgUob{height:1px;margin:.25rem -.25rem;background:var(--ts-menu-separator, var(--border, rgba(255, 255, 255, .12)))}.uzi-dropdown-menu-module__chevron__kxfiF{margin-left:auto;flex-shrink:0}@keyframes uzi-dropdown-menu-module__menuFadeIn__ITxMo{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.uzi-theme-toggle-button-module__withLabel__KqtDj{padding-left:12px;padding-right:12px}.uzi-top-bar-module__topBar__MJ-7S{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--ts-topbar-border, var(--border, rgba(15, 23, 42, .1)));background:var(--ts-topbar-bg, color-mix(in srgb, var(--background, #fff) 92%, transparent));box-shadow:var(--ts-topbar-shadow, 0 1px 2px rgba(15, 23, 42, .06));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.uzi-top-bar-module__topBarStatic__JvEwt{position:relative}.uzi-top-bar-module__topBarInner__PBbi8{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4.25rem;padding:env(safe-area-inset-top) 1rem 0 1rem}.uzi-top-bar-module__topBarStart__DrdN2{display:flex;align-items:center;gap:.875rem;min-width:0;flex:1 1 auto}.uzi-top-bar-module__topBarBrand__80VV3{display:inline-flex;align-items:center;gap:.625rem;min-width:0;color:var(--ts-topbar-brand-fg, var(--foreground, var(--text, #0f172a)));text-decoration:none}.uzi-top-bar-module__topBarBrandContent__O4Uto{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uzi-top-bar-module__topBarCenter__Kwxg-{display:flex;align-items:center;justify-content:center;flex:0 1 auto;min-width:0}.uzi-top-bar-module__topBarCenterGroup__7Ishp{display:inline-flex;align-items:center;gap:1rem;min-width:0}.uzi-top-bar-module__topBarActions__mgMd8{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;min-width:0;flex:1 1 auto}@media(max-width:768px){.uzi-top-bar-module__topBarInner__PBbi8{min-height:4rem;gap:.75rem;padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right))}.uzi-top-bar-module__topBarStart__DrdN2{gap:.75rem}.uzi-top-bar-module__topBarActions__mgMd8{gap:.5rem}}.uzi-app-shell-module__appShell__S0cVI{display:grid;grid-template-rows:calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top)) 1fr;grid-template-columns:var(--app-shell-sidebar-width, 240px) 1fr;height:100vh;height:100dvh}.uzi-app-shell-module__appShellAnimated__-CRIl{transition:grid-template-columns .2s ease}.uzi-app-shell-module__appShell__S0cVI.uzi-app-shell-module__appShellOpen__1rZUl{grid-template-columns:var(--app-shell-sidebar-width, 240px) 1fr}.uzi-app-shell-module__appShell__S0cVI.uzi-app-shell-module__appShellCollapsed__fSasN{grid-template-columns:0 1fr}.uzi-app-shell-module__appShellTopbar__rgXsW{--ts-topbar-bg: var(--surface-topbar, var(--surface-elevated, color-mix(in srgb, var(--background, #fff) 90%, transparent)));--ts-topbar-border: var(--border);--ts-topbar-brand-fg: var(--foreground, var(--text, #0f172a));grid-column:1 / -1;min-height:calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top));padding-left:0;padding-right:0;box-shadow:none}.uzi-app-shell-module__appShellTopbarLeft__-EVuB{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.uzi-app-shell-module__appShellTopbarStart__XXQpq{flex:1;min-width:0;display:flex;align-items:center}.uzi-app-shell-module__appShellTopbarRight__l1G57{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.uzi-app-shell-module__appShellTopbarRight__l1G57>*{min-width:0}.uzi-app-shell-module__appShellBrand__TXwyN{font-size:26px;color:var(--text);text-decoration:none;display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uzi-app-shell-module__appShellHamburger__BciFA{background:transparent;border:none;padding:0;width:40px;height:40px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--text);cursor:pointer;transition:background .12s ease}.uzi-app-shell-module__appShellHamburger__BciFA:hover{background:var(--accent)}.uzi-app-shell-module__appShellHamburger__BciFA:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-app-shell-module__appShellHamburger__BciFA svg{width:28px;height:28px}.uzi-app-shell-module__appShellSidebar__oY7uj{border-right:1px solid var(--border);background:var(--panel, var(--card, #111827));padding:24px;overflow-y:auto}.uzi-app-shell-module__appShellAnimated__-CRIl .uzi-app-shell-module__appShellSidebar__oY7uj{transition:transform .2s ease,opacity .2s ease}.uzi-app-shell-module__appShell__S0cVI.uzi-app-shell-module__appShellCollapsed__fSasN .uzi-app-shell-module__appShellSidebar__oY7uj{transform:translate(-110%);opacity:0;pointer-events:none}.uzi-app-shell-module__appShellMain__eHP2r{overflow-y:auto;min-height:0;flex:1 1 0}.uzi-app-shell-module__appShellBackdrop__y31xs{display:none}@media(max-width:960px){.uzi-app-shell-module__appShellBackdrop__y31xs{display:block;position:fixed;inset:0;top:calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));background:#00000080;z-index:14}.uzi-app-shell-module__appShell__S0cVI{--app-shell-topbar-height: 56px;grid-template-columns:1fr;grid-template-rows:calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top)) 1fr}.uzi-app-shell-module__appShell__S0cVI.uzi-app-shell-module__appShellOpen__1rZUl,.uzi-app-shell-module__appShell__S0cVI.uzi-app-shell-module__appShellCollapsed__fSasN{grid-template-columns:1fr}.uzi-app-shell-module__appShellSidebar__oY7uj{display:block;position:fixed;top:calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));left:0;bottom:0;width:var(--app-shell-sidebar-width, 240px);max-width:80vw;background:var(--panel, var(--card, #111827));padding:16px 12px;transform:translate(-105%);z-index:15;box-shadow:0 20px 40px #00000059}.uzi-app-shell-module__appShellSidebar__oY7uj.uzi-app-shell-module__appShellSidebarOpen__Z5AIo{transform:translate(0)}.uzi-app-shell-module__appShellTopbar__rgXsW{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));gap:10px}.uzi-app-shell-module__appShellTopbarLeft__-EVuB{gap:10px;flex:1}.uzi-app-shell-module__appShellTopbarStart__XXQpq{min-width:0}.uzi-app-shell-module__appShellTopbarRight__l1G57{gap:6px}.uzi-app-shell-module__appShellBrand__TXwyN{font-size:24px;max-width:50vw}.uzi-app-shell-module__appShellHamburger__BciFA{width:40px;height:40px;border-radius:8px}.uzi-app-shell-module__appShellHamburger__BciFA svg{width:24px;height:24px}}@media(max-width:640px){.uzi-app-shell-module__appShellTopbar__rgXsW{gap:8px}.uzi-app-shell-module__appShellBrand__TXwyN{font-size:22px;max-width:34vw}.uzi-app-shell-module__appShellTopbarRight__l1G57{max-width:44vw}}@media(max-width:480px){.uzi-app-shell-module__appShellBrand__TXwyN{font-size:20px;max-width:30vw}}.uzi-sidebar-nav-module__sidebarNav__eUI5c{--sidebar-nav-icon-size: 18px;--sidebar-nav-icon-size-mobile: 16px;display:flex;flex-direction:column;gap:12px;align-items:stretch;min-height:0}.uzi-sidebar-nav-module__sidebarNavCollapsed__xTM9s{gap:10px}.uzi-sidebar-nav-module__header__Y4NLy,.uzi-sidebar-nav-module__footer__GjWky{display:flex;flex-direction:column;gap:8px}.uzi-sidebar-nav-module__footer__GjWky{margin-top:auto;padding-top:12px;border-top:1px solid var(--border, #1f2937)}.uzi-sidebar-nav-module__sections__mXuGQ{display:flex;flex:1 1 auto;flex-direction:column;gap:14px}.uzi-sidebar-nav-module__section__yjtCY,.uzi-sidebar-nav-module__sectionItems__tNcph{display:flex;flex-direction:column;gap:8px}.uzi-sidebar-nav-module__sectionLabel__Wx94m{padding:0 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground, #94a3b8);opacity:.75}.uzi-sidebar-nav-module__item__uMHkJ{color:var(--foreground, #e2e8f0);background:transparent;border:none;box-shadow:none;padding:10px 12px 10px 10px;border-radius:10px;text-decoration:none;font-size:14px;display:grid;grid-template-columns:var(--sidebar-nav-icon-size) minmax(0,1fr);align-items:center;column-gap:10px;width:100%;text-align:left;box-sizing:border-box;line-height:1.2;transition:background .12s ease,color .12s ease}button.uzi-sidebar-nav-module__item__uMHkJ{font-family:inherit;cursor:pointer}.uzi-sidebar-nav-module__item__uMHkJ:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.uzi-sidebar-nav-module__item__uMHkJ:hover{background:color-mix(in srgb,var(--primary, #22d3ee) 10%,transparent)}.uzi-sidebar-nav-module__item__uMHkJ.uzi-sidebar-nav-module__itemActive__wBbiS{background:color-mix(in srgb,var(--primary, #22d3ee) 18%,transparent);color:var(--foreground, #e2e8f0);font-weight:700}.uzi-sidebar-nav-module__itemCollapsed__jLJN-{grid-template-columns:1fr;justify-items:center;padding-right:10px;padding-left:10px}.uzi-sidebar-nav-module__itemDisabled__Yf8Il{opacity:.5;cursor:not-allowed}.uzi-sidebar-nav-module__icon__tyrUg{width:var(--sidebar-nav-icon-size);height:var(--sidebar-nav-icon-size);min-width:var(--sidebar-nav-icon-size);color:var(--muted-foreground, #94a3b8);display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.uzi-sidebar-nav-module__icon__tyrUg>*{width:100%!important;height:100%!important;max-width:100%;max-height:100%}.uzi-sidebar-nav-module__icon__tyrUg :where(svg){width:100%;height:100%;display:block;stroke:currentColor}.uzi-sidebar-nav-module__item__uMHkJ.uzi-sidebar-nav-module__itemActive__wBbiS .uzi-sidebar-nav-module__icon__tyrUg{color:var(--primary, #22d3ee)}.uzi-sidebar-nav-module__itemBody__wI0iy{display:flex;min-width:0;flex:1 1 auto;flex-direction:column;gap:3px;overflow:hidden}.uzi-sidebar-nav-module__labelRow__D8sEJ{display:flex;min-width:0;align-items:center;gap:8px}.uzi-sidebar-nav-module__label__A-nt6{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uzi-sidebar-nav-module__description__Xf3Si{color:var(--muted-foreground, #94a3b8);font-size:12px;line-height:1.35}.uzi-sidebar-nav-module__badge__-hnFd{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid var(--border, #1f2937);background:#ffffff0a;color:var(--muted-foreground, #94a3b8);font-size:11px;letter-spacing:.04em;text-transform:uppercase}@media(max-width:960px){.uzi-sidebar-nav-module__sidebarNav__eUI5c{gap:10px}.uzi-sidebar-nav-module__sections__mXuGQ{gap:12px}.uzi-sidebar-nav-module__sectionItems__tNcph{gap:6px}.uzi-sidebar-nav-module__item__uMHkJ{padding:9px 10px 9px 8px;border-radius:9px;font-size:14px;grid-template-columns:var(--sidebar-nav-icon-size-mobile) minmax(0,1fr);column-gap:8px}.uzi-sidebar-nav-module__icon__tyrUg{width:var(--sidebar-nav-icon-size-mobile);height:var(--sidebar-nav-icon-size-mobile);min-width:var(--sidebar-nav-icon-size-mobile)}.uzi-sidebar-nav-module__icon__tyrUg :where(svg){width:var(--sidebar-nav-icon-size-mobile);height:var(--sidebar-nav-icon-size-mobile)}.uzi-sidebar-nav-module__description__Xf3Si{font-size:11px}}@media(max-width:480px){.uzi-sidebar-nav-module__item__uMHkJ{padding:8px 9px 8px 7px;font-size:13px}}.uzi-skeleton-module__skeleton__fula5{background:color-mix(in srgb,var(--muted-foreground, #94a3b8) 14%,var(--background, #0f172a));animation:uzi-skeleton-module__skeleton-pulse__Yp45W 1.6s ease-in-out infinite}@keyframes uzi-skeleton-module__skeleton-pulse__Yp45W{0%,to{opacity:1}50%{opacity:.45}}.uzi-skeleton-module__radius-sm__FdccD{border-radius:4px}.uzi-skeleton-module__radius-md__zH3RE{border-radius:8px}.uzi-skeleton-module__radius-lg__YVrHw{border-radius:12px}.uzi-skeleton-module__radius-full__5o2m0{border-radius:9999px}.uzi-progress-module__track__gM0oV{height:8px;border-radius:9999px;overflow:hidden;background:color-mix(in srgb,var(--border, #1f2937) 60%,transparent)}.uzi-progress-module__fill__aLAbp{height:100%;border-radius:9999px;transition:width .4s ease}.uzi-progress-module__tone-default__fhf7o{background:var(--foreground, #e2e8f0)}.uzi-progress-module__tone-success__FsGHD{background:var(--success, hsl(142 71% 45%))}.uzi-progress-module__tone-warning__UAttL{background:var(--warning, hsl(38 92% 50%))}.uzi-progress-module__tone-danger__-L-Ee{background:var(--destructive, #f87171)}
@@ -0,0 +1,29 @@
1
+ import { type ReactNode } from "react";
2
+ import { UZI_THEMES, UZI_ACCENTS } from "./constants";
3
+ export type UziTheme = typeof UZI_THEMES[number];
4
+ export type UziResolvedTheme = "light" | "dark";
5
+ export type UziAccent = typeof UZI_ACCENTS[number];
6
+ type ThemeContextValue = {
7
+ theme: UziTheme;
8
+ resolvedTheme: UziResolvedTheme;
9
+ accent: UziAccent;
10
+ setTheme: (theme: UziTheme) => void;
11
+ setAccent: (accent: UziAccent) => void;
12
+ toggleTheme: () => void;
13
+ };
14
+ type ThemeProviderProps = {
15
+ children: ReactNode;
16
+ theme?: UziTheme;
17
+ defaultTheme?: UziTheme;
18
+ accent?: UziAccent;
19
+ defaultAccent?: UziAccent;
20
+ onThemeChange?: (theme: UziTheme) => void;
21
+ onAccentChange?: (accent: UziAccent) => void;
22
+ storageKey?: string;
23
+ accentStorageKey?: string;
24
+ disableStorage?: boolean;
25
+ };
26
+ export declare function ThemeProvider({ children, theme, defaultTheme, accent, defaultAccent, onThemeChange, onAccentChange, storageKey, accentStorageKey, disableStorage, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function useTheme(): ThemeContextValue;
28
+ export {};
29
+ //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,UAAU,EAAE,WAAW,EAAoF,MAAM,aAAa,CAAC;AAExI,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AACjD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEnD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAsBF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,YAAuB,EACvB,MAAM,EACN,aAAsB,EACtB,aAAa,EACb,cAAc,EACd,UAA8B,EAC9B,gBAAqC,EACrC,cAAsB,GACvB,EAAE,kBAAkB,2CAiFpB;AAED,wBAAgB,QAAQ,sBAIvB"}
@@ -0,0 +1,5 @@
1
+ export declare const UZI_THEMES: readonly ["light", "dark", "system"];
2
+ export declare const UZI_ACCENTS: readonly ["blue", "cyan", "violet", "emerald", "amber", "rose"];
3
+ export declare const THEME_STORAGE_KEY = "uzi-theme";
4
+ export declare const ACCENT_STORAGE_KEY = "uzi-accent";
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/theme/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,sCAAuC,CAAC;AAC/D,eAAO,MAAM,WAAW,iEAAkE,CAAC;AAE3F,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,kBAAkB,eAAe,CAAC"}
@@ -6,11 +6,10 @@
6
6
  * Usage in Next.js root layout:
7
7
  * <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />
8
8
  */
9
- declare function getThemeScript({ storageKey, accentStorageKey, defaultTheme, defaultAccent, }?: {
9
+ export declare function getThemeScript({ storageKey, accentStorageKey, defaultTheme, defaultAccent, }?: {
10
10
  storageKey?: string;
11
11
  accentStorageKey?: string;
12
12
  defaultTheme?: string;
13
13
  defaultAccent?: string;
14
14
  }): string;
15
-
16
- export { getThemeScript };
15
+ //# sourceMappingURL=themeScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeScript.d.ts","sourceRoot":"","sources":["../../src/theme/themeScript.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAwB,EACxB,gBAA+B,EAC/B,YAAuB,EACvB,aAAsB,GACvB,GAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAed"}
@@ -0,0 +1,2 @@
1
+ export declare function cx(...values: Array<string | false | null | undefined>): string;
2
+ //# sourceMappingURL=cx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cx.d.ts","sourceRoot":"","sources":["../../src/utils/cx.ts"],"names":[],"mappings":"AAAA,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAE9E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tomny-dev/uzi",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "Rapid-fire React UI components. Ship faster, build more.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -17,7 +17,7 @@
17
17
  "import": "./dist/server.js",
18
18
  "require": "./dist/server.cjs"
19
19
  },
20
- "./styles.css": "./dist/index.css"
20
+ "./styles.css": "./dist/style.css"
21
21
  },
22
22
  "files": [
23
23
  "dist"
@@ -36,18 +36,22 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@radix-ui/react-avatar": "^1.1.0",
39
+ "@radix-ui/react-dialog": "^1.1.15",
39
40
  "@radix-ui/react-dropdown-menu": "^2.1.2",
40
- "@radix-ui/react-slot": "^1.1.0"
41
+ "@radix-ui/react-select": "^2.2.6",
42
+ "@radix-ui/react-slot": "^1.1.0",
43
+ "@radix-ui/react-toast": "^1.2.15"
41
44
  },
42
45
  "devDependencies": {
46
+ "@vitejs/plugin-react": "^4.7.0",
43
47
  "@types/react": "^18.2.0",
44
48
  "@types/react-dom": "^18.2.0",
45
- "tsup": "^8.0.0",
46
- "typescript": "^5.4.3"
49
+ "typescript": "^5.4.3",
50
+ "vite": "^7.1.12"
47
51
  },
48
52
  "scripts": {
49
- "build": "tsup",
50
- "dev": "tsup --watch",
53
+ "build": "vite build && vite build --config vite.server.config.ts && tsc -p tsconfig.build.json",
54
+ "dev": "vite build --watch",
51
55
  "lint": "tsc --noEmit"
52
56
  }
53
57
  }