@thebasenet/ui 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.
Files changed (41) hide show
  1. package/dist/brand/index.d.mts +55 -0
  2. package/dist/brand/index.d.ts +55 -0
  3. package/dist/brand/index.js +152 -0
  4. package/dist/brand/index.js.map +1 -0
  5. package/dist/brand/index.mjs +152 -0
  6. package/dist/brand/index.mjs.map +1 -0
  7. package/dist/components/index.d.mts +122 -0
  8. package/dist/components/index.d.ts +122 -0
  9. package/dist/components/index.js +848 -0
  10. package/dist/components/index.js.map +1 -0
  11. package/dist/components/index.mjs +7956 -0
  12. package/dist/components/index.mjs.map +1 -0
  13. package/dist/index.d.mts +32 -0
  14. package/dist/index.d.ts +32 -0
  15. package/dist/index.js +2801 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.mjs +32365 -0
  18. package/dist/index.mjs.map +1 -0
  19. package/dist/tokens/index.d.mts +190 -0
  20. package/dist/tokens/index.d.ts +190 -0
  21. package/dist/tokens/index.js +104 -0
  22. package/dist/tokens/index.js.map +1 -0
  23. package/dist/tokens/index.mjs +104 -0
  24. package/dist/tokens/index.mjs.map +1 -0
  25. package/dist/ui/index.d.mts +302 -0
  26. package/dist/ui/index.d.ts +302 -0
  27. package/dist/ui/index.js +2058 -0
  28. package/dist/ui/index.js.map +1 -0
  29. package/dist/ui/index.mjs +31585 -0
  30. package/dist/ui/index.mjs.map +1 -0
  31. package/dist/utils/cn.d.mts +5 -0
  32. package/dist/utils/cn.d.ts +5 -0
  33. package/dist/utils/cn.js +11 -0
  34. package/dist/utils/cn.js.map +1 -0
  35. package/dist/utils/cn.mjs +3197 -0
  36. package/dist/utils/cn.mjs.map +1 -0
  37. package/package.json +102 -0
  38. package/styles/animations.css +63 -0
  39. package/styles/globals.css +31 -0
  40. package/styles/theme.css +97 -0
  41. package/styles/variables.css +238 -0
package/package.json ADDED
@@ -0,0 +1,102 @@
1
+ {
2
+ "name": "@thebasenet/ui",
3
+ "version": "0.1.0",
4
+ "description": "The Circular Net shared UI component library",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/TheBaseNet/tcn-ui.git"
9
+ },
10
+ "type": "module",
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ },
16
+ "./brand": {
17
+ "import": "./dist/brand/index.js",
18
+ "types": "./dist/brand/index.d.ts"
19
+ },
20
+ "./ui": {
21
+ "import": "./dist/ui/index.js",
22
+ "types": "./dist/ui/index.d.ts"
23
+ },
24
+ "./components": {
25
+ "import": "./dist/components/index.js",
26
+ "types": "./dist/components/index.d.ts"
27
+ },
28
+ "./utils": {
29
+ "import": "./dist/utils/cn.js",
30
+ "types": "./dist/utils/cn.d.ts"
31
+ },
32
+ "./tokens": {
33
+ "import": "./dist/tokens/index.js",
34
+ "types": "./dist/tokens/index.d.ts"
35
+ },
36
+ "./styles/globals.css": "./styles/globals.css",
37
+ "./styles/theme.css": "./styles/theme.css",
38
+ "./styles/variables.css": "./styles/variables.css",
39
+ "./styles/animations.css": "./styles/animations.css"
40
+ },
41
+ "main": "./dist/index.js",
42
+ "types": "./dist/index.d.ts",
43
+ "files": [
44
+ "dist",
45
+ "styles"
46
+ ],
47
+ "scripts": {
48
+ "build": "tsup --config tsup.config.mjs",
49
+ "dev": "tsup --config tsup.config.mjs --watch",
50
+ "typecheck": "tsc --noEmit",
51
+ "publish:pkg": "npm run build && npm publish"
52
+ },
53
+ "publishConfig": {
54
+ "registry": "https://registry.npmjs.org/",
55
+ "access": "public"
56
+ },
57
+ "peerDependencies": {
58
+ "next": ">=14",
59
+ "react": ">=18",
60
+ "react-dom": ">=18"
61
+ },
62
+ "dependencies": {
63
+ "class-variance-authority": "^0.7.1",
64
+ "clsx": "^2.1.1",
65
+ "tailwind-merge": "^3.3.1",
66
+ "@radix-ui/react-avatar": "^1.1.10",
67
+ "@radix-ui/react-checkbox": "^1.3.2",
68
+ "@radix-ui/react-dialog": "^1.1.15",
69
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
70
+ "@radix-ui/react-label": "^2.1.8",
71
+ "@radix-ui/react-popover": "^1.1.15",
72
+ "@radix-ui/react-progress": "^1.1.7",
73
+ "@radix-ui/react-radio-group": "^1.3.8",
74
+ "@radix-ui/react-select": "^2.2.6",
75
+ "@radix-ui/react-separator": "^1.1.8",
76
+ "@radix-ui/react-slider": "^1.3.6",
77
+ "@radix-ui/react-slot": "^1.2.4",
78
+ "@radix-ui/react-switch": "^1.2.6",
79
+ "@radix-ui/react-tabs": "^1.1.13",
80
+ "@radix-ui/react-tooltip": "^1.2.8",
81
+ "cmdk": "^1.1.1",
82
+ "lucide-react": "^0.555.0",
83
+ "framer-motion": "^12.23.24",
84
+ "sonner": "^2.0.5",
85
+ "vaul": "^1.1.2",
86
+ "react-hook-form": "^7.62.0",
87
+ "react-day-picker": "^9.7.0",
88
+ "next-themes": "^0.4.6",
89
+ "@radix-ui/react-toggle": "^1.1.10",
90
+ "@radix-ui/react-toggle-group": "^1.1.11",
91
+ "iconsax-react": "^0.0.8",
92
+ "@hugeicons/core-free-icons": "^1.0.16",
93
+ "@hugeicons/react": "^1.0.5"
94
+ },
95
+ "devDependencies": {
96
+ "@types/node": "^20",
97
+ "@types/react": "^19",
98
+ "@types/react-dom": "^19",
99
+ "tsup": "^8.5.0",
100
+ "typescript": "^5"
101
+ }
102
+ }
@@ -0,0 +1,63 @@
1
+ /* =============================================================================
2
+ TCN Design System — Keyframe Animations
3
+ ============================================================================= */
4
+
5
+ @keyframes fadeIn {
6
+ from { opacity: 0; }
7
+ to { opacity: 1; }
8
+ }
9
+
10
+ @keyframes fadeOut {
11
+ from { opacity: 1; }
12
+ to { opacity: 0; }
13
+ }
14
+
15
+ @keyframes zoomIn {
16
+ from { transform: scale(0.95); }
17
+ to { transform: scale(1); }
18
+ }
19
+
20
+ @keyframes zoomOut {
21
+ from { transform: scale(1); }
22
+ to { transform: scale(0.95); }
23
+ }
24
+
25
+ @keyframes zoom {
26
+ 0% { opacity: 0; transform: scale(0.95); }
27
+ 100% { opacity: 1; transform: scale(1); }
28
+ }
29
+
30
+ @keyframes slideFromTop {
31
+ from { transform: translateY(-0.5rem); }
32
+ to { transform: translateY(0); }
33
+ }
34
+
35
+ @keyframes slideFromRight {
36
+ from { transform: translateX(0.5rem); }
37
+ to { transform: translateX(0); }
38
+ }
39
+
40
+ @keyframes slideFromLeft {
41
+ from { transform: translateX(-0.5rem); }
42
+ to { transform: translateX(0); }
43
+ }
44
+
45
+ @keyframes slideFromBottom {
46
+ from { transform: translateY(0.5rem); }
47
+ to { transform: translateY(0); }
48
+ }
49
+
50
+ @keyframes spin {
51
+ from { transform: rotate(0deg); }
52
+ to { transform: rotate(360deg); }
53
+ }
54
+
55
+ @keyframes pulse {
56
+ 0%, 100% { opacity: 1; }
57
+ 50% { opacity: 0.5; }
58
+ }
59
+
60
+ @keyframes shimmer {
61
+ 0% { background-position: -200% 0; }
62
+ 100% { background-position: 200% 0; }
63
+ }
@@ -0,0 +1,31 @@
1
+ /* =============================================================================
2
+ TCN Design System — Global Styles Entry Point
3
+
4
+ Import this in your app's globals.css:
5
+
6
+ @import "tailwindcss";
7
+ @import "@thecircularnet/ui/styles/globals.css";
8
+
9
+ This pulls in:
10
+ 1. All TCN CSS custom properties (variables)
11
+ 2. The Tailwind v4 @theme block (TCN color palette + fonts + radius)
12
+ 3. Keyframe animations
13
+ 4. Base layer resets
14
+ ============================================================================= */
15
+
16
+ @import "./variables.css";
17
+ @import "./theme.css";
18
+ @import "./animations.css";
19
+
20
+ @custom-variant dark (&:is(.dark *));
21
+
22
+ @layer base {
23
+ * {
24
+ @apply border-border outline-ring/50;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ body {
29
+ @apply bg-background text-foreground;
30
+ }
31
+ }
@@ -0,0 +1,97 @@
1
+ /* =============================================================================
2
+ TCN Design System — Tailwind v4 Theme
3
+ Import this in your app's CSS after `@import "tailwindcss"` to register
4
+ the full TCN color palette, fonts, and radius tokens as Tailwind utilities.
5
+
6
+ Usage in your app's globals.css:
7
+ @import "tailwindcss";
8
+ @import "@thecircularnet/ui/styles/theme.css";
9
+ ============================================================================= */
10
+
11
+ @theme inline {
12
+ /* ---- Primary (TCN Green) ---- */
13
+ --color-primary-50: #edf8e7;
14
+ --color-primary-100: #c8eab6;
15
+ --color-primary-200: #ade092;
16
+ --color-primary-300: #87d261;
17
+ --color-primary-400: #70c942;
18
+ --color-primary-500: #4cbc13;
19
+ --color-primary-600: #45ab11;
20
+ --color-primary-700: #36850d;
21
+ --color-primary-800: #2a670a;
22
+ --color-primary-900: #204f08;
23
+
24
+ /* ---- Secondary (Admin Blue) ---- */
25
+ --color-secondary-50: oklch(0.968 0.026 269.8);
26
+ --color-secondary-100: oklch(0.913 0.046 266.9);
27
+ --color-secondary-200: oklch(0.865 0.071 264.4);
28
+ --color-secondary-300: oklch(0.769 0.128 260.8);
29
+ --color-secondary-400: oklch(0.720 0.181 258.1);
30
+ --color-secondary-500: oklch(0.649 0.235 255.7);
31
+ --color-secondary-600: oklch(0.603 0.218 254.4);
32
+ --color-secondary-700: oklch(0.538 0.205 253.6);
33
+ --color-secondary-800: oklch(0.455 0.168 253.2);
34
+ --color-secondary-900: oklch(0.396 0.142 252.8);
35
+
36
+ /* ---- Neutral (Warm Grey) ---- */
37
+ --color-neutral-50: oklch(0.94 0.005 262);
38
+ --color-neutral-100: oklch(0.84 0.004 262);
39
+ --color-neutral-200: oklch(0.74 0.004 262);
40
+ --color-neutral-300: oklch(0.61 0.003 262);
41
+ --color-neutral-400: oklch(0.49 0.002 262);
42
+ --color-neutral-500: oklch(0.4 0.001 262);
43
+ --color-neutral-600: oklch(0.34 0.001 262);
44
+ --color-neutral-700: oklch(0.29 0.001 262);
45
+ --color-neutral-800: oklch(0.24 0.001 262);
46
+ --color-neutral-900: oklch(0.18 0.001 262);
47
+
48
+ /* ---- Accent (Near-white surface scale) ---- */
49
+ --color-accent-50: oklch(0.99 0.002 262);
50
+ --color-accent-100: oklch(0.975 0.002 262);
51
+ --color-accent-200: oklch(0.93 0.002 262);
52
+ --color-accent-300: oklch(0.9 0.002 262);
53
+ --color-accent-400: oklch(0.87 0.002 262);
54
+ --color-accent-500: oklch(0.84 0.002 262);
55
+ --color-accent-600: oklch(0.76 0.002 262);
56
+ --color-accent-700: oklch(0.66 0.002 262);
57
+ --color-accent-800: oklch(0.52 0.002 262);
58
+ --color-accent-900: oklch(0.4 0.002 262);
59
+
60
+ /* ---- Semantic (shadcn/radix) ---- */
61
+ --color-background: var(--background);
62
+ --color-foreground: var(--foreground);
63
+ --color-card: var(--card);
64
+ --color-card-foreground: var(--card-foreground);
65
+ --color-popover: var(--popover);
66
+ --color-popover-foreground: var(--popover-foreground);
67
+ --color-primary: var(--primary);
68
+ --color-primary-foreground: var(--primary-foreground);
69
+ --color-secondary: var(--secondary);
70
+ --color-secondary-foreground: var(--secondary-foreground);
71
+ --color-muted: var(--muted);
72
+ --color-muted-foreground: var(--muted-foreground);
73
+ --color-accent: var(--accent);
74
+ --color-accent-foreground: var(--accent-foreground);
75
+ --color-destructive: var(--destructive);
76
+ --color-border: var(--border);
77
+ --color-input: var(--input);
78
+ --color-ring: var(--ring);
79
+ --color-sidebar: var(--sidebar);
80
+ --color-sidebar-foreground: var(--sidebar-foreground);
81
+ --color-sidebar-primary: var(--sidebar-primary);
82
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
83
+ --color-sidebar-accent: var(--sidebar-accent);
84
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
85
+ --color-sidebar-border: var(--sidebar-border);
86
+ --color-sidebar-ring: var(--sidebar-ring);
87
+
88
+ /* ---- Fonts ---- */
89
+ --font-onest: var(--font-onest), sans-serif;
90
+ --font-golos: var(--font-golosText), sans-serif;
91
+
92
+ /* ---- Radius ---- */
93
+ --radius-sm: calc(var(--radius) - 4px);
94
+ --radius-md: calc(var(--radius) - 2px);
95
+ --radius-lg: var(--radius);
96
+ --radius-xl: calc(var(--radius) + 4px);
97
+ }
@@ -0,0 +1,238 @@
1
+ /* =============================================================================
2
+ TCN Design System — CSS Custom Properties
3
+ Converted from _variables.scss
4
+ ============================================================================= */
5
+
6
+ :root {
7
+ overflow-wrap: break-word;
8
+ text-size-adjust: none;
9
+ text-rendering: optimizeLegibility;
10
+ -webkit-font-smoothing: antialiased;
11
+ -moz-osx-font-smoothing: grayscale;
12
+
13
+ /* ---- Gray alpha (light mode) ---- */
14
+ --tt-gray-light-a-50: rgba(56, 56, 56, 0.04);
15
+ --tt-gray-light-a-100: rgba(15, 22, 36, 0.05);
16
+ --tt-gray-light-a-200: rgba(37, 39, 45, 0.1);
17
+ --tt-gray-light-a-300: rgba(47, 50, 55, 0.2);
18
+ --tt-gray-light-a-400: rgba(40, 44, 51, 0.42);
19
+ --tt-gray-light-a-500: rgba(52, 55, 60, 0.64);
20
+ --tt-gray-light-a-600: rgba(36, 39, 46, 0.78);
21
+ --tt-gray-light-a-700: rgba(35, 37, 42, 0.87);
22
+ --tt-gray-light-a-800: rgba(30, 32, 36, 0.95);
23
+ --tt-gray-light-a-900: rgba(29, 30, 32, 0.98);
24
+
25
+ /* ---- Gray (light mode) ---- */
26
+ --tt-gray-light-50: rgba(250, 250, 250, 1);
27
+ --tt-gray-light-100: rgba(244, 244, 245, 1);
28
+ --tt-gray-light-200: rgba(234, 234, 235, 1);
29
+ --tt-gray-light-300: rgba(213, 214, 215, 1);
30
+ --tt-gray-light-400: rgba(166, 167, 171, 1);
31
+ --tt-gray-light-500: rgba(125, 127, 130, 1);
32
+ --tt-gray-light-600: rgba(83, 86, 90, 1);
33
+ --tt-gray-light-700: rgba(64, 65, 69, 1);
34
+ --tt-gray-light-800: rgba(44, 45, 48, 1);
35
+ --tt-gray-light-900: rgba(34, 35, 37, 1);
36
+
37
+ /* ---- Gray alpha (dark mode) ---- */
38
+ --tt-gray-dark-a-50: rgba(232, 232, 253, 0.05);
39
+ --tt-gray-dark-a-100: rgba(231, 231, 243, 0.07);
40
+ --tt-gray-dark-a-200: rgba(238, 238, 246, 0.11);
41
+ --tt-gray-dark-a-300: rgba(239, 239, 245, 0.22);
42
+ --tt-gray-dark-a-400: rgba(244, 244, 255, 0.37);
43
+ --tt-gray-dark-a-500: rgba(236, 238, 253, 0.5);
44
+ --tt-gray-dark-a-600: rgba(247, 247, 253, 0.64);
45
+ --tt-gray-dark-a-700: rgba(251, 251, 254, 0.75);
46
+ --tt-gray-dark-a-800: rgba(253, 253, 253, 0.88);
47
+ --tt-gray-dark-a-900: rgba(255, 255, 255, 0.96);
48
+
49
+ /* ---- Gray (dark mode) ---- */
50
+ --tt-gray-dark-50: rgba(25, 25, 26, 1);
51
+ --tt-gray-dark-100: rgba(32, 32, 34, 1);
52
+ --tt-gray-dark-200: rgba(45, 45, 47, 1);
53
+ --tt-gray-dark-300: rgba(70, 70, 73, 1);
54
+ --tt-gray-dark-400: rgba(99, 99, 105, 1);
55
+ --tt-gray-dark-500: rgba(124, 124, 131, 1);
56
+ --tt-gray-dark-600: rgba(163, 163, 168, 1);
57
+ --tt-gray-dark-700: rgba(192, 192, 195, 1);
58
+ --tt-gray-dark-800: rgba(224, 224, 225, 1);
59
+ --tt-gray-dark-900: rgba(245, 245, 245, 1);
60
+
61
+ /* ---- Shadows ---- */
62
+ --tt-shadow-elevated-md:
63
+ 0px 16px 48px 0px rgba(17, 24, 39, 0.04),
64
+ 0px 12px 24px 0px rgba(17, 24, 39, 0.04),
65
+ 0px 6px 8px 0px rgba(17, 24, 39, 0.02),
66
+ 0px 2px 3px 0px rgba(17, 24, 39, 0.02);
67
+
68
+ /* ---- Border radius ---- */
69
+ --tt-radius-xxs: 0.125rem;
70
+ --tt-radius-xs: 0.25rem;
71
+ --tt-radius-sm: 0.375rem;
72
+ --tt-radius-md: 0.5rem;
73
+ --tt-radius-lg: 0.75rem;
74
+ --tt-radius-xl: 1rem;
75
+
76
+ /* ---- Transitions ---- */
77
+ --tt-transition-duration-short: 0.1s;
78
+ --tt-transition-duration-default: 0.2s;
79
+ --tt-transition-duration-long: 0.64s;
80
+ --tt-transition-easing-default: cubic-bezier(0.46, 0.03, 0.52, 0.96);
81
+ --tt-transition-easing-cubic: cubic-bezier(0.65, 0.05, 0.36, 1);
82
+ --tt-transition-easing-quart: cubic-bezier(0.77, 0, 0.18, 1);
83
+ --tt-transition-easing-circ: cubic-bezier(0.79, 0.14, 0.15, 0.86);
84
+ --tt-transition-easing-back: cubic-bezier(0.68, -0.55, 0.27, 1.55);
85
+
86
+ /* ---- Contrast helpers ---- */
87
+ --tt-accent-contrast: 8%;
88
+ --tt-destructive-contrast: 8%;
89
+ --tt-foreground-contrast: 8%;
90
+
91
+ /* ---- Base colors ---- */
92
+ --white: rgba(255, 255, 255, 1);
93
+ --black: rgba(14, 14, 17, 1);
94
+ --transparent: rgba(255, 255, 255, 0);
95
+
96
+ /* ---- Global semantic colors (light mode) ---- */
97
+ --tt-bg-color: var(--white);
98
+ --tt-border-color: var(--tt-gray-light-a-200);
99
+ --tt-border-color-tint: var(--tt-gray-light-a-100);
100
+ --tt-sidebar-bg-color: var(--tt-gray-light-100);
101
+ --tt-scrollbar-color: var(--tt-gray-light-a-200);
102
+ --tt-card-bg-color: var(--white);
103
+ --tt-card-border-color: var(--tt-gray-light-a-100);
104
+
105
+ /* ---- Text colors ---- */
106
+ --tt-color-text-gray: hsl(45, 2%, 46%);
107
+ --tt-color-text-brown: hsl(19, 31%, 47%);
108
+ --tt-color-text-orange: hsl(30, 89%, 45%);
109
+ --tt-color-text-yellow: hsl(38, 62%, 49%);
110
+ --tt-color-text-green: hsl(148, 32%, 39%);
111
+ --tt-color-text-blue: hsl(202, 54%, 43%);
112
+ --tt-color-text-purple: hsl(274, 32%, 54%);
113
+ --tt-color-text-pink: hsl(328, 49%, 53%);
114
+ --tt-color-text-red: hsl(2, 62%, 55%);
115
+
116
+ /* ---- Highlight colors ---- */
117
+ --tt-color-highlight-yellow: #fef9c3;
118
+ --tt-color-highlight-green: #dcfce7;
119
+ --tt-color-highlight-blue: #e0f2fe;
120
+ --tt-color-highlight-purple: #f3e8ff;
121
+ --tt-color-highlight-red: #ffe4e6;
122
+ --tt-color-highlight-gray: rgb(248, 248, 247);
123
+ --tt-color-highlight-brown: rgb(244, 238, 238);
124
+ --tt-color-highlight-orange: rgb(251, 236, 221);
125
+ --tt-color-highlight-pink: rgb(252, 241, 246);
126
+
127
+ /* ---- Radix / shadcn base tokens ---- */
128
+ --radius: 0.625rem;
129
+ --background: oklch(1 0 0);
130
+ --foreground: oklch(0.145 0 0);
131
+ --card: oklch(1 0 0);
132
+ --card-foreground: oklch(0.145 0 0);
133
+ --popover: oklch(1 0 0);
134
+ --popover-foreground: oklch(0.145 0 0);
135
+ --primary: oklch(0.205 0 0);
136
+ --primary-foreground: oklch(0.985 0 0);
137
+ --secondary: oklch(0.97 0 0);
138
+ --secondary-foreground: oklch(0.205 0 0);
139
+ --muted: oklch(0.97 0 0);
140
+ --muted-foreground: oklch(0.556 0 0);
141
+ --accent: oklch(0.97 0 0);
142
+ --accent-foreground: oklch(0.205 0 0);
143
+ --destructive: oklch(0.577 0.245 27.325);
144
+ --border: oklch(0.922 0 0);
145
+ --input: oklch(0.922 0 0);
146
+ --ring: oklch(0.708 0 0);
147
+ --sidebar: oklch(0.985 0 0);
148
+ --sidebar-foreground: oklch(0.145 0 0);
149
+ --sidebar-primary: oklch(0.205 0 0);
150
+ --sidebar-primary-foreground: oklch(0.985 0 0);
151
+ --sidebar-accent: oklch(0.97 0 0);
152
+ --sidebar-accent-foreground: oklch(0.205 0 0);
153
+ --sidebar-border: oklch(0.922 0 0);
154
+ --sidebar-ring: oklch(0.708 0 0);
155
+ }
156
+
157
+ /* ---- Dark mode overrides ---- */
158
+ .dark {
159
+ --tt-bg-color: var(--black);
160
+ --tt-border-color: var(--tt-gray-dark-a-200);
161
+ --tt-border-color-tint: var(--tt-gray-dark-a-100);
162
+ --tt-sidebar-bg-color: var(--tt-gray-dark-100);
163
+ --tt-scrollbar-color: var(--tt-gray-dark-a-200);
164
+ --tt-card-bg-color: var(--tt-gray-dark-50);
165
+ --tt-card-border-color: var(--tt-gray-dark-a-50);
166
+ --tt-shadow-elevated-md:
167
+ 0px 16px 48px 0px rgba(0, 0, 0, 0.5),
168
+ 0px 12px 24px 0px rgba(0, 0, 0, 0.24),
169
+ 0px 6px 8px 0px rgba(0, 0, 0, 0.22),
170
+ 0px 2px 3px 0px rgba(0, 0, 0, 0.12);
171
+
172
+ /* Radix / shadcn dark overrides */
173
+ --background: oklch(0.145 0 0);
174
+ --foreground: oklch(0.985 0 0);
175
+ --card: oklch(0.205 0 0);
176
+ --card-foreground: oklch(0.985 0 0);
177
+ --popover: oklch(0.205 0 0);
178
+ --popover-foreground: oklch(0.985 0 0);
179
+ --primary: oklch(0.922 0 0);
180
+ --primary-foreground: oklch(0.205 0 0);
181
+ --secondary: oklch(0.269 0 0);
182
+ --secondary-foreground: oklch(0.985 0 0);
183
+ --muted: oklch(0.269 0 0);
184
+ --muted-foreground: oklch(0.708 0 0);
185
+ --accent: oklch(0.269 0 0);
186
+ --accent-foreground: oklch(0.985 0 0);
187
+ --destructive: oklch(0.704 0.191 22.216);
188
+ --border: oklch(1 0 0 / 10%);
189
+ --input: oklch(1 0 0 / 15%);
190
+ --ring: oklch(0.556 0 0);
191
+ --sidebar: oklch(0.205 0 0);
192
+ --sidebar-foreground: oklch(0.985 0 0);
193
+ --sidebar-primary: oklch(0.488 0.243 264.376);
194
+ --sidebar-primary-foreground: oklch(0.985 0 0);
195
+ --sidebar-accent: oklch(0.269 0 0);
196
+ --sidebar-accent-foreground: oklch(0.985 0 0);
197
+ --sidebar-border: oklch(1 0 0 / 10%);
198
+ --sidebar-ring: oklch(0.556 0 0);
199
+
200
+ /* Text colors - dark */
201
+ --tt-color-text-gray: hsl(0, 0%, 61%);
202
+ --tt-color-text-brown: hsl(18, 35%, 58%);
203
+ --tt-color-text-orange: hsl(25, 53%, 53%);
204
+ --tt-color-text-yellow: hsl(36, 54%, 55%);
205
+ --tt-color-text-green: hsl(145, 32%, 47%);
206
+ --tt-color-text-blue: hsl(202, 64%, 52%);
207
+ --tt-color-text-purple: hsl(270, 55%, 62%);
208
+ --tt-color-text-pink: hsl(329, 57%, 58%);
209
+ --tt-color-text-red: hsl(1, 69%, 60%);
210
+
211
+ /* Highlight colors - dark */
212
+ --tt-color-highlight-yellow: #6b6524;
213
+ --tt-color-highlight-green: #509568;
214
+ --tt-color-highlight-blue: #6e92aa;
215
+ --tt-color-highlight-purple: #583e74;
216
+ --tt-color-highlight-red: #743e42;
217
+ --tt-color-highlight-gray: rgb(47, 47, 47);
218
+ --tt-color-highlight-brown: rgb(74, 50, 40);
219
+ --tt-color-highlight-orange: rgb(92, 59, 35);
220
+ --tt-color-highlight-pink: rgb(78, 44, 60);
221
+ }
222
+
223
+ /* ---- Scrollbar utility ---- */
224
+ .no-scrollbar::-webkit-scrollbar {
225
+ display: none;
226
+ }
227
+ .no-scrollbar {
228
+ -ms-overflow-style: none;
229
+ scrollbar-width: none;
230
+ }
231
+
232
+ /* ---- Autofill fix ---- */
233
+ input:-webkit-autofill,
234
+ input:-webkit-autofill:hover,
235
+ input:-webkit-autofill:focus,
236
+ input:-webkit-autofill:active {
237
+ transition: background-color 5000s ease-in-out 0s;
238
+ }