doom-design-system 0.1.3 → 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.
- package/README.md +5 -2
- package/dist/components/Accordion/Accordion.d.ts +17 -0
- package/dist/components/Accordion/Accordion.js +94 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/Alert/Alert.d.ts +11 -0
- package/dist/components/Alert/Alert.js +70 -0
- package/dist/components/Alert/index.d.ts +1 -0
- package/dist/components/Alert/index.js +1 -0
- package/dist/components/Avatar/Avatar.d.ts +13 -0
- package/dist/components/Avatar/Avatar.js +51 -0
- package/dist/components/Avatar/index.d.ts +1 -0
- package/dist/components/Avatar/index.js +1 -0
- package/dist/components/Badge/Badge.js +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +13 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +46 -0
- package/dist/components/Breadcrumbs/index.d.ts +1 -0
- package/dist/components/Breadcrumbs/index.js +1 -0
- package/dist/components/Button/Button.js +39 -6
- package/dist/components/Card/Card.js +1 -1
- package/dist/components/Drawer/Drawer.d.ts +12 -0
- package/dist/components/Drawer/Drawer.js +101 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/Drawer/index.js +1 -0
- package/dist/components/Form/Form.d.ts +20 -7
- package/dist/components/Form/Form.js +49 -9
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.js +27 -60
- package/dist/components/Label/Label.d.ts +6 -0
- package/dist/components/Label/Label.js +38 -0
- package/dist/components/Label/index.d.ts +1 -0
- package/dist/components/Label/index.js +1 -0
- package/dist/components/Link/Link.js +1 -1
- package/dist/components/Modal/Modal.js +7 -7
- package/dist/components/Pagination/Pagination.d.ts +8 -0
- package/dist/components/Pagination/Pagination.js +94 -0
- package/dist/components/Pagination/index.d.ts +1 -0
- package/dist/components/Pagination/index.js +1 -0
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js +47 -29
- package/dist/components/RadioGroup/RadioGroup.d.ts +19 -0
- package/dist/components/RadioGroup/RadioGroup.js +101 -0
- package/dist/components/RadioGroup/index.d.ts +1 -0
- package/dist/components/RadioGroup/index.js +1 -0
- package/dist/components/Select/Select.js +5 -17
- package/dist/components/Sheet/Sheet.d.ts +10 -0
- package/dist/components/Sheet/Sheet.js +87 -0
- package/dist/components/Sheet/index.d.ts +1 -0
- package/dist/components/Sheet/index.js +1 -0
- package/dist/components/Slider/Slider.d.ts +10 -0
- package/dist/components/Slider/Slider.js +168 -0
- package/dist/components/Slider/index.d.ts +1 -0
- package/dist/components/Slider/index.js +1 -0
- package/dist/components/Switch/Switch.d.ts +11 -0
- package/dist/components/Switch/Switch.js +77 -0
- package/dist/components/Switch/index.d.ts +1 -0
- package/dist/components/Switch/index.js +1 -0
- package/dist/components/Table/Table.js +6 -6
- package/dist/components/Tabs/Tabs.js +6 -9
- package/dist/components/Textarea/Textarea.js +3 -10
- package/dist/components/Toast/Toast.js +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip/Tooltip.js +37 -0
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/styles/mixins.d.ts +3 -0
- package/dist/styles/mixins.js +25 -0
- package/dist/styles/themes/definitions.d.ts +112 -0
- package/dist/styles/themes/definitions.js +37 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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
|
-
|
|
19
|
-
|
|
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);
|
|
@@ -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,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
|
};
|