doom-design-system 0.1.1 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +5 -2
  2. package/dist/DesignSystemProvider.d.ts +2 -1
  3. package/dist/DesignSystemProvider.js +4 -3
  4. package/dist/components/Accordion/Accordion.d.ts +17 -0
  5. package/dist/components/Accordion/Accordion.js +94 -0
  6. package/dist/components/Accordion/index.d.ts +1 -0
  7. package/dist/components/Accordion/index.js +1 -0
  8. package/dist/components/Alert/Alert.d.ts +11 -0
  9. package/dist/components/Alert/Alert.js +70 -0
  10. package/dist/components/Alert/index.d.ts +1 -0
  11. package/dist/components/Alert/index.js +1 -0
  12. package/dist/components/Avatar/Avatar.d.ts +13 -0
  13. package/dist/components/Avatar/Avatar.js +51 -0
  14. package/dist/components/Avatar/index.d.ts +1 -0
  15. package/dist/components/Avatar/index.js +1 -0
  16. package/dist/components/Badge/Badge.js +1 -1
  17. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +13 -0
  18. package/dist/components/Breadcrumbs/Breadcrumbs.js +46 -0
  19. package/dist/components/Breadcrumbs/index.d.ts +1 -0
  20. package/dist/components/Breadcrumbs/index.js +1 -0
  21. package/dist/components/Button/Button.js +39 -6
  22. package/dist/components/Card/Card.js +1 -1
  23. package/dist/components/Drawer/Drawer.d.ts +12 -0
  24. package/dist/components/Drawer/Drawer.js +101 -0
  25. package/dist/components/Drawer/index.d.ts +1 -0
  26. package/dist/components/Drawer/index.js +1 -0
  27. package/dist/components/Form/Form.d.ts +20 -7
  28. package/dist/components/Form/Form.js +49 -9
  29. package/dist/components/Input/Input.d.ts +1 -1
  30. package/dist/components/Input/Input.js +27 -60
  31. package/dist/components/Label/Label.d.ts +6 -0
  32. package/dist/components/Label/Label.js +38 -0
  33. package/dist/components/Label/index.d.ts +1 -0
  34. package/dist/components/Label/index.js +1 -0
  35. package/dist/components/Link/Link.js +1 -1
  36. package/dist/components/Modal/Modal.js +7 -7
  37. package/dist/components/Pagination/Pagination.d.ts +8 -0
  38. package/dist/components/Pagination/Pagination.js +94 -0
  39. package/dist/components/Pagination/index.d.ts +1 -0
  40. package/dist/components/Pagination/index.js +1 -0
  41. package/dist/components/Popover/Popover.d.ts +1 -1
  42. package/dist/components/Popover/Popover.js +47 -29
  43. package/dist/components/RadioGroup/RadioGroup.d.ts +19 -0
  44. package/dist/components/RadioGroup/RadioGroup.js +101 -0
  45. package/dist/components/RadioGroup/index.d.ts +1 -0
  46. package/dist/components/RadioGroup/index.js +1 -0
  47. package/dist/components/Select/Select.js +5 -17
  48. package/dist/components/Sheet/Sheet.d.ts +10 -0
  49. package/dist/components/Sheet/Sheet.js +87 -0
  50. package/dist/components/Sheet/index.d.ts +1 -0
  51. package/dist/components/Sheet/index.js +1 -0
  52. package/dist/components/Slider/Slider.d.ts +10 -0
  53. package/dist/components/Slider/Slider.js +168 -0
  54. package/dist/components/Slider/index.d.ts +1 -0
  55. package/dist/components/Slider/index.js +1 -0
  56. package/dist/components/Switch/Switch.d.ts +11 -0
  57. package/dist/components/Switch/Switch.js +77 -0
  58. package/dist/components/Switch/index.d.ts +1 -0
  59. package/dist/components/Switch/index.js +1 -0
  60. package/dist/components/Table/Table.js +6 -6
  61. package/dist/components/Tabs/Tabs.js +6 -9
  62. package/dist/components/Textarea/Textarea.js +3 -10
  63. package/dist/components/Toast/Toast.js +1 -1
  64. package/dist/components/Tooltip/Tooltip.d.ts +9 -0
  65. package/dist/components/Tooltip/Tooltip.js +37 -0
  66. package/dist/components/Tooltip/index.d.ts +1 -0
  67. package/dist/components/Tooltip/index.js +1 -0
  68. package/dist/index.d.ts +12 -0
  69. package/dist/index.js +12 -0
  70. package/dist/styles/mixins.d.ts +3 -0
  71. package/dist/styles/mixins.js +25 -0
  72. package/dist/styles/themes/definitions.d.ts +112 -0
  73. package/dist/styles/themes/definitions.js +37 -4
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +1 -1
@@ -1,25 +1,18 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import styled from '@emotion/styled';
4
+ import { baseInteractiveStyles, focusStyles } from '../../styles/mixins';
4
5
  const StyledTextarea = styled.textarea `
5
6
  width: 100%;
6
7
  padding: 0.75rem 1rem;
7
8
  font-size: var(--text-base);
8
9
  background: var(--card-bg);
9
10
  color: var(--foreground);
10
- border: var(--border-width) solid var(--card-border);
11
- border-radius: var(--radius);
12
- box-shadow: var(--shadow-hard);
13
- outline: none;
14
- transition: all 0.1s ease;
15
11
  font-family: inherit;
16
12
  resize: vertical;
17
13
 
18
- &:focus {
19
- box-shadow: var(--shadow-hover);
20
- transform: translate(-2px, -2px);
21
- border-color: var(--primary);
22
- }
14
+ ${baseInteractiveStyles}
15
+ ${focusStyles}
23
16
 
24
17
  &::placeholder {
25
18
  color: var(--muted);
@@ -23,7 +23,7 @@ const ToastItem = styled.div `
23
23
  border: var(--border-width) solid var(--card-border);
24
24
  color: var(--foreground);
25
25
  box-shadow: var(--shadow-hard);
26
- padding: 1rem;
26
+ padding: var(--spacing-md);
27
27
  display: flex;
28
28
  align-items: center;
29
29
  gap: 0.75rem;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface TooltipProps {
3
+ content: string;
4
+ children: React.ReactNode;
5
+ delay?: number;
6
+ placement?: 'top' | 'bottom';
7
+ }
8
+ export declare function Tooltip({ content, children, delay, placement }: TooltipProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import styled from '@emotion/styled';
5
+ import { Popover } from '../Popover';
6
+ const TooltipTriggerWrapper = styled.div `
7
+ display: inline-block;
8
+ cursor: help; /* Optional hint */
9
+ `;
10
+ const TooltipBody = styled.div `
11
+ padding: 0.5rem 0.75rem;
12
+ background-color: var(--foreground);
13
+ color: var(--background);
14
+ font-size: var(--text-sm);
15
+ font-weight: 500;
16
+ white-space: nowrap;
17
+ border-radius: var(--radius);
18
+ border: var(--border-width) solid var(--card-border);
19
+ box-shadow: var(--shadow-sm);
20
+ z-index: var(--z-tooltip);
21
+ `;
22
+ export function Tooltip({ content, children, delay = 200, placement = 'top' }) {
23
+ const [isVisible, setIsVisible] = useState(false);
24
+ const [timeoutId, setTimeoutId] = useState(null);
25
+ const show = () => {
26
+ const id = setTimeout(() => setIsVisible(true), delay);
27
+ setTimeoutId(id);
28
+ };
29
+ const hide = () => {
30
+ if (timeoutId)
31
+ clearTimeout(timeoutId);
32
+ setIsVisible(false);
33
+ };
34
+ // Map simplified placement to Popover placement
35
+ const popoverPlacement = placement === 'top' ? 'top-center' : 'bottom-center';
36
+ return (_jsx(Popover, { isOpen: isVisible, onClose: hide, placement: popoverPlacement, offset: 8, trigger: _jsx(TooltipTriggerWrapper, { onMouseEnter: show, onMouseLeave: hide, onFocus: show, onBlur: hide, children: children }), content: _jsx(TooltipBody, { role: "tooltip", children: content }) }));
37
+ }
@@ -0,0 +1 @@
1
+ export { Tooltip } from './Tooltip';
@@ -0,0 +1 @@
1
+ export { Tooltip } from './Tooltip';
package/dist/index.d.ts CHANGED
@@ -19,5 +19,17 @@ export * from './components/Textarea';
19
19
  export * from './components/Toast';
20
20
  export * from './components/ActionRow';
21
21
  export * from './components/Skeleton';
22
+ export * from './components/Switch';
23
+ export * from './components/Alert';
24
+ export * from './components/Tooltip';
25
+ export * from './components/Avatar';
26
+ export * from './components/Label';
27
+ export * from './components/Accordion';
28
+ export * from './components/Breadcrumbs';
29
+ export * from './components/Pagination';
30
+ export * from './components/RadioGroup';
31
+ export * from './components/Slider';
32
+ export * from './components/Drawer';
33
+ export * from './components/Sheet';
22
34
  export * from './DesignSystemProvider';
23
35
  export * from './styles/themes';
package/dist/index.js CHANGED
@@ -19,5 +19,17 @@ export * from './components/Textarea';
19
19
  export * from './components/Toast';
20
20
  export * from './components/ActionRow';
21
21
  export * from './components/Skeleton';
22
+ export * from './components/Switch';
23
+ export * from './components/Alert';
24
+ export * from './components/Tooltip';
25
+ export * from './components/Avatar';
26
+ export * from './components/Label';
27
+ export * from './components/Accordion';
28
+ export * from './components/Breadcrumbs';
29
+ export * from './components/Pagination';
30
+ export * from './components/RadioGroup';
31
+ export * from './components/Slider';
32
+ export * from './components/Drawer';
33
+ export * from './components/Sheet';
22
34
  export * from './DesignSystemProvider';
23
35
  export * from './styles/themes';
@@ -0,0 +1,3 @@
1
+ export declare const baseInteractiveStyles: import("@emotion/utils").SerializedStyles;
2
+ export declare const focusStyles: import("@emotion/utils").SerializedStyles;
3
+ export declare const errorStyles: import("@emotion/utils").SerializedStyles;
@@ -0,0 +1,25 @@
1
+ import { css } from '@emotion/react';
2
+ export const baseInteractiveStyles = css `
3
+ border: var(--border-width) solid var(--card-border);
4
+ border-radius: var(--radius);
5
+ box-shadow: var(--shadow-hard);
6
+ transition: all 0.1s ease;
7
+ outline: none;
8
+ `;
9
+ export const focusStyles = css `
10
+ &:focus, &:focus-visible, &[aria-expanded="true"] {
11
+ outline: none;
12
+ transform: translate(-2px, -2px);
13
+ box-shadow: 7px 7px 0px 0px var(--shadow-primary);
14
+ border-color: var(--primary);
15
+ }
16
+ `;
17
+ export const errorStyles = css `
18
+ border-color: var(--error);
19
+ box-shadow: 5px 5px 0px 0px var(--shadow-error);
20
+
21
+ &:focus, &:focus-visible {
22
+ border-color: var(--error);
23
+ box-shadow: 7px 7px 0px 0px var(--shadow-error);
24
+ }
25
+ `;
@@ -9,6 +9,7 @@ export declare const themes: {
9
9
  readonly '--primary': "#a855f7";
10
10
  readonly '--primary-hover': "#9333ea";
11
11
  readonly '--primary-foreground': "#000000";
12
+ readonly '--shadow-primary': "#7e22ce";
12
13
  readonly '--secondary': "#fbbf24";
13
14
  readonly '--secondary-foreground': "#000000";
14
15
  readonly '--accent': "#ec4899";
@@ -17,6 +18,7 @@ export declare const themes: {
17
18
  readonly '--success': "#22c55e";
18
19
  readonly '--warning': "#f59e0b";
19
20
  readonly '--error': "#ef4444";
21
+ readonly '--shadow-error': "#b91c1c";
20
22
  readonly '--border-width': "3px";
21
23
  readonly '--radius': "8px";
22
24
  readonly '--shadow-hard': "5px 5px 0px 0px #000000";
@@ -43,12 +45,38 @@ export declare const themes: {
43
45
  readonly '--font-bold': string;
44
46
  readonly '--font-extrabold': string;
45
47
  readonly '--font-black': string;
48
+ readonly '--spacing-xs': string;
49
+ readonly '--spacing-sm': string;
50
+ readonly '--spacing-md': string;
51
+ readonly '--spacing-lg': string;
52
+ readonly '--spacing-xl': string;
53
+ readonly '--spacing-2xl': string;
46
54
  readonly '--z-base': string;
47
55
  readonly '--z-elevated': string;
48
56
  readonly '--z-header': string;
49
57
  readonly '--z-dropdown': string;
50
58
  readonly '--z-modal': string;
51
59
  readonly '--z-tooltip': string;
60
+ readonly '--duration-fast': string;
61
+ readonly '--duration-normal': string;
62
+ readonly '--duration-slow': string;
63
+ readonly '--ease-in-out': string;
64
+ readonly '--ease-out': string;
65
+ readonly '--ease-in': string;
66
+ readonly '--radius-pill': string;
67
+ readonly '--radius-full': string;
68
+ readonly '--outline-width': string;
69
+ readonly '--outline-offset': string;
70
+ readonly '--overlay-opacity': string;
71
+ readonly '--size-icon-sm': string;
72
+ readonly '--size-icon-md': string;
73
+ readonly '--size-icon-lg': string;
74
+ readonly '--size-touch-target': string;
75
+ readonly '--shadow-sm': string;
76
+ readonly '--shadow-sm-hover': string;
77
+ readonly '--shadow-sm-checked': string;
78
+ readonly '--shadow-sm-checked-hover': string;
79
+ readonly '--shadow-lg': string;
52
80
  };
53
81
  };
54
82
  readonly doom: {
@@ -61,6 +89,7 @@ export declare const themes: {
61
89
  readonly '--primary': "#10b981";
62
90
  readonly '--primary-hover': "#059669";
63
91
  readonly '--primary-foreground': "#020617";
92
+ readonly '--shadow-primary': "#000000";
64
93
  readonly '--secondary': "#334155";
65
94
  readonly '--secondary-foreground': "#f8fafc";
66
95
  readonly '--accent': "#fbbf24";
@@ -69,6 +98,7 @@ export declare const themes: {
69
98
  readonly '--success': "#10b981";
70
99
  readonly '--warning': "#fbbf24";
71
100
  readonly '--error': "#ef4444";
101
+ readonly '--shadow-error': "#000000";
72
102
  readonly '--border-width': "2px";
73
103
  readonly '--radius': "2px";
74
104
  readonly '--shadow-hard': "5px 5px 0px 0px #000000";
@@ -95,12 +125,38 @@ export declare const themes: {
95
125
  readonly '--font-bold': string;
96
126
  readonly '--font-extrabold': string;
97
127
  readonly '--font-black': string;
128
+ readonly '--spacing-xs': string;
129
+ readonly '--spacing-sm': string;
130
+ readonly '--spacing-md': string;
131
+ readonly '--spacing-lg': string;
132
+ readonly '--spacing-xl': string;
133
+ readonly '--spacing-2xl': string;
98
134
  readonly '--z-base': string;
99
135
  readonly '--z-elevated': string;
100
136
  readonly '--z-header': string;
101
137
  readonly '--z-dropdown': string;
102
138
  readonly '--z-modal': string;
103
139
  readonly '--z-tooltip': string;
140
+ readonly '--duration-fast': string;
141
+ readonly '--duration-normal': string;
142
+ readonly '--duration-slow': string;
143
+ readonly '--ease-in-out': string;
144
+ readonly '--ease-out': string;
145
+ readonly '--ease-in': string;
146
+ readonly '--radius-pill': string;
147
+ readonly '--radius-full': string;
148
+ readonly '--outline-width': string;
149
+ readonly '--outline-offset': string;
150
+ readonly '--overlay-opacity': string;
151
+ readonly '--size-icon-sm': string;
152
+ readonly '--size-icon-md': string;
153
+ readonly '--size-icon-lg': string;
154
+ readonly '--size-touch-target': string;
155
+ readonly '--shadow-sm': string;
156
+ readonly '--shadow-sm-hover': string;
157
+ readonly '--shadow-sm-checked': string;
158
+ readonly '--shadow-sm-checked-hover': string;
159
+ readonly '--shadow-lg': string;
104
160
  };
105
161
  };
106
162
  readonly neighbor: {
@@ -113,6 +169,7 @@ export declare const themes: {
113
169
  readonly '--primary': "#002D72";
114
170
  readonly '--primary-hover': "#1E3A8A";
115
171
  readonly '--primary-foreground': "#FFFFFF";
172
+ readonly '--shadow-primary': "#001533";
116
173
  readonly '--secondary': "#B91C1C";
117
174
  readonly '--secondary-foreground': "#FFFFFF";
118
175
  readonly '--accent': "#C0C0C0";
@@ -121,6 +178,7 @@ export declare const themes: {
121
178
  readonly '--success': "#15803D";
122
179
  readonly '--warning': "#B45309";
123
180
  readonly '--error': "#B91C1C";
181
+ readonly '--shadow-error': "#7f1d1d";
124
182
  readonly '--border-width': "3px";
125
183
  readonly '--radius': "8px";
126
184
  readonly '--shadow-hard': "6px 6px 0px 0px #0F172A";
@@ -147,12 +205,38 @@ export declare const themes: {
147
205
  readonly '--font-bold': string;
148
206
  readonly '--font-extrabold': string;
149
207
  readonly '--font-black': string;
208
+ readonly '--spacing-xs': string;
209
+ readonly '--spacing-sm': string;
210
+ readonly '--spacing-md': string;
211
+ readonly '--spacing-lg': string;
212
+ readonly '--spacing-xl': string;
213
+ readonly '--spacing-2xl': string;
150
214
  readonly '--z-base': string;
151
215
  readonly '--z-elevated': string;
152
216
  readonly '--z-header': string;
153
217
  readonly '--z-dropdown': string;
154
218
  readonly '--z-modal': string;
155
219
  readonly '--z-tooltip': string;
220
+ readonly '--duration-fast': string;
221
+ readonly '--duration-normal': string;
222
+ readonly '--duration-slow': string;
223
+ readonly '--ease-in-out': string;
224
+ readonly '--ease-out': string;
225
+ readonly '--ease-in': string;
226
+ readonly '--radius-pill': string;
227
+ readonly '--radius-full': string;
228
+ readonly '--outline-width': string;
229
+ readonly '--outline-offset': string;
230
+ readonly '--overlay-opacity': string;
231
+ readonly '--size-icon-sm': string;
232
+ readonly '--size-icon-md': string;
233
+ readonly '--size-icon-lg': string;
234
+ readonly '--size-touch-target': string;
235
+ readonly '--shadow-sm': string;
236
+ readonly '--shadow-sm-hover': string;
237
+ readonly '--shadow-sm-checked': string;
238
+ readonly '--shadow-sm-checked-hover': string;
239
+ readonly '--shadow-lg': string;
156
240
  };
157
241
  };
158
242
  readonly vigilante: {
@@ -165,6 +249,7 @@ export declare const themes: {
165
249
  readonly '--primary': "#F7B731";
166
250
  readonly '--primary-hover': "#F5A623";
167
251
  readonly '--primary-foreground': "#0F1419";
252
+ readonly '--shadow-primary': "#000000";
168
253
  readonly '--secondary': "#4A5568";
169
254
  readonly '--secondary-foreground': "#E8E9ED";
170
255
  readonly '--accent': "#3B82F6";
@@ -173,6 +258,7 @@ export declare const themes: {
173
258
  readonly '--success': "#48BB78";
174
259
  readonly '--warning': "#ED8936";
175
260
  readonly '--error': "#F56565";
261
+ readonly '--shadow-error': "#000000";
176
262
  readonly '--border-width': "2px";
177
263
  readonly '--radius': "6px";
178
264
  readonly '--shadow-hard': "5px 5px 0px 0px #000000";
@@ -199,12 +285,38 @@ export declare const themes: {
199
285
  readonly '--font-bold': string;
200
286
  readonly '--font-extrabold': string;
201
287
  readonly '--font-black': string;
288
+ readonly '--spacing-xs': string;
289
+ readonly '--spacing-sm': string;
290
+ readonly '--spacing-md': string;
291
+ readonly '--spacing-lg': string;
292
+ readonly '--spacing-xl': string;
293
+ readonly '--spacing-2xl': string;
202
294
  readonly '--z-base': string;
203
295
  readonly '--z-elevated': string;
204
296
  readonly '--z-header': string;
205
297
  readonly '--z-dropdown': string;
206
298
  readonly '--z-modal': string;
207
299
  readonly '--z-tooltip': string;
300
+ readonly '--duration-fast': string;
301
+ readonly '--duration-normal': string;
302
+ readonly '--duration-slow': string;
303
+ readonly '--ease-in-out': string;
304
+ readonly '--ease-out': string;
305
+ readonly '--ease-in': string;
306
+ readonly '--radius-pill': string;
307
+ readonly '--radius-full': string;
308
+ readonly '--outline-width': string;
309
+ readonly '--outline-offset': string;
310
+ readonly '--overlay-opacity': string;
311
+ readonly '--size-icon-sm': string;
312
+ readonly '--size-icon-md': string;
313
+ readonly '--size-icon-lg': string;
314
+ readonly '--size-touch-target': string;
315
+ readonly '--shadow-sm': string;
316
+ readonly '--shadow-sm-hover': string;
317
+ readonly '--shadow-sm-checked': string;
318
+ readonly '--shadow-sm-checked-hover': string;
319
+ readonly '--shadow-lg': string;
208
320
  };
209
321
  };
210
322
  };
@@ -20,6 +20,13 @@ const baseVariables = {
20
20
  '--font-bold': '700',
21
21
  '--font-extrabold': '800',
22
22
  '--font-black': '900',
23
+ // Spacing Scale
24
+ '--spacing-xs': '0.25rem',
25
+ '--spacing-sm': '0.5rem',
26
+ '--spacing-md': '1rem',
27
+ '--spacing-lg': '1.5rem',
28
+ '--spacing-xl': '2rem',
29
+ '--spacing-2xl': '3rem',
23
30
  // Z-Indices
24
31
  '--z-base': '0',
25
32
  '--z-elevated': '10',
@@ -27,22 +34,48 @@ const baseVariables = {
27
34
  '--z-dropdown': '50',
28
35
  '--z-modal': '100',
29
36
  '--z-tooltip': '200',
37
+ // Motion
38
+ '--duration-fast': '150ms',
39
+ '--duration-normal': '250ms',
40
+ '--duration-slow': '350ms',
41
+ '--ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
42
+ '--ease-out': 'cubic-bezier(0.0, 0, 0.2, 1)',
43
+ '--ease-in': 'cubic-bezier(0.4, 0, 1, 1)',
44
+ // Border Radius
45
+ '--radius-pill': '9999px',
46
+ '--radius-full': '50%',
47
+ // Outline
48
+ '--outline-width': '2px',
49
+ '--outline-offset': '2px',
50
+ // Overlay
51
+ '--overlay-opacity': '0.5',
52
+ // Common Sizes
53
+ '--size-icon-sm': '20px',
54
+ '--size-icon-md': '24px',
55
+ '--size-icon-lg': '32px',
56
+ '--size-touch-target': '44px',
57
+ // Shadows (consistent relative to theme colors)
58
+ '--shadow-sm': '2px 2px 0px 0px var(--card-border)',
59
+ '--shadow-sm-hover': '3px 3px 0px 0px var(--card-border)',
60
+ '--shadow-sm-checked': '3px 3px 0px 0px var(--card-border)',
61
+ '--shadow-sm-checked-hover': '4px 4px 0px 0px var(--card-border)',
62
+ '--shadow-lg': '8px 8px 0px 0px var(--card-border)',
30
63
  };
31
64
  export const themes = {
32
65
  default: {
33
66
  name: 'Default',
34
- variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#e0e7ff', '--foreground': '#000000', '--card-bg': '#ffffff', '--card-border': '#000000', '--primary': '#a855f7', '--primary-hover': '#9333ea', '--primary-foreground': '#000000', '--secondary': '#fbbf24', '--secondary-foreground': '#000000', '--accent': '#ec4899', '--muted': '#94a3b8', '--muted-foreground': '#334155', '--success': '#22c55e', '--warning': '#f59e0b', '--error': '#ef4444', '--border-width': '3px', '--radius': '8px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '900' })
67
+ variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#e0e7ff', '--foreground': '#000000', '--card-bg': '#ffffff', '--card-border': '#000000', '--primary': '#a855f7', '--primary-hover': '#9333ea', '--primary-foreground': '#000000', '--shadow-primary': '#7e22ce', '--secondary': '#fbbf24', '--secondary-foreground': '#000000', '--accent': '#ec4899', '--muted': '#94a3b8', '--muted-foreground': '#334155', '--success': '#22c55e', '--warning': '#f59e0b', '--error': '#ef4444', '--shadow-error': '#b91c1c', '--border-width': '3px', '--radius': '8px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '900' })
35
68
  },
36
69
  doom: {
37
70
  name: 'DOOMSDAY',
38
- variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#020617', '--foreground': '#e2e8f0', '--card-bg': '#0f172a', '--card-border': '#1e293b', '--primary': '#10b981', '--primary-hover': '#059669', '--primary-foreground': '#020617', '--secondary': '#334155', '--secondary-foreground': '#f8fafc', '--accent': '#fbbf24', '--muted': '#64748b', '--muted-foreground': '#94a3b8', '--success': '#10b981', '--warning': '#fbbf24', '--error': '#ef4444', '--border-width': '2px', '--radius': '2px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '700' })
71
+ variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#020617', '--foreground': '#e2e8f0', '--card-bg': '#0f172a', '--card-border': '#1e293b', '--primary': '#10b981', '--primary-hover': '#059669', '--primary-foreground': '#020617', '--shadow-primary': '#000000', '--secondary': '#334155', '--secondary-foreground': '#f8fafc', '--accent': '#fbbf24', '--muted': '#64748b', '--muted-foreground': '#94a3b8', '--success': '#10b981', '--warning': '#fbbf24', '--error': '#ef4444', '--shadow-error': '#000000', '--border-width': '2px', '--radius': '2px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '700' })
39
72
  },
40
73
  neighbor: {
41
74
  name: 'THE CAPTAIN',
42
- variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#F8FAFC', '--foreground': '#0F172A', '--card-bg': '#FFFFFF', '--card-border': '#002D72', '--primary': '#002D72', '--primary-hover': '#1E3A8A', '--primary-foreground': '#FFFFFF', '--secondary': '#B91C1C', '--secondary-foreground': '#FFFFFF', '--accent': '#C0C0C0', '--muted': '#64748B', '--muted-foreground': '#475569', '--success': '#15803D', '--warning': '#B45309', '--error': '#B91C1C', '--border-width': '3px', '--radius': '8px', '--shadow-hard': '6px 6px 0px 0px #0F172A', '--shadow-hover': '8px 8px 0px 0px #0F172A', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '900' })
75
+ variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#F8FAFC', '--foreground': '#0F172A', '--card-bg': '#FFFFFF', '--card-border': '#002D72', '--primary': '#002D72', '--primary-hover': '#1E3A8A', '--primary-foreground': '#FFFFFF', '--shadow-primary': '#001533', '--secondary': '#B91C1C', '--secondary-foreground': '#FFFFFF', '--accent': '#C0C0C0', '--muted': '#64748B', '--muted-foreground': '#475569', '--success': '#15803D', '--warning': '#B45309', '--error': '#B91C1C', '--shadow-error': '#7f1d1d', '--border-width': '3px', '--radius': '8px', '--shadow-hard': '6px 6px 0px 0px #0F172A', '--shadow-hover': '8px 8px 0px 0px #0F172A', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '900' })
43
76
  },
44
77
  vigilante: {
45
78
  name: 'DARK KNIGHT',
46
- variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#0F1419', '--foreground': '#E8E9ED', '--card-bg': '#1A1F29', '--card-border': '#2D3748', '--primary': '#F7B731', '--primary-hover': '#F5A623', '--primary-foreground': '#0F1419', '--secondary': '#4A5568', '--secondary-foreground': '#E8E9ED', '--accent': '#3B82F6', '--muted': '#718096', '--muted-foreground': '#A0AEC0', '--success': '#48BB78', '--warning': '#ED8936', '--error': '#F56565', '--border-width': '2px', '--radius': '6px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '700' })
79
+ variables: Object.assign(Object.assign({}, baseVariables), { '--background': '#0F1419', '--foreground': '#E8E9ED', '--card-bg': '#1A1F29', '--card-border': '#2D3748', '--primary': '#F7B731', '--primary-hover': '#F5A623', '--primary-foreground': '#0F1419', '--shadow-primary': '#000000', '--secondary': '#4A5568', '--secondary-foreground': '#E8E9ED', '--accent': '#3B82F6', '--muted': '#718096', '--muted-foreground': '#A0AEC0', '--success': '#48BB78', '--warning': '#ED8936', '--error': '#F56565', '--shadow-error': '#000000', '--border-width': '2px', '--radius': '6px', '--shadow-hard': '5px 5px 0px 0px #000000', '--shadow-hover': '7px 7px 0px 0px #000000', '--font-heading': 'var(--font-montserrat)', '--heading-transform': 'uppercase', '--heading-weight': '700' })
47
80
  }
48
81
  };