thomas-uikit-core 1.0.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.
@@ -0,0 +1,249 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+
3
+ // Define color palette first for reuse
4
+ const colorPalette = {
5
+ ocean: {
6
+ 50: '#E2E6FE',
7
+ 100: '#D1D8FC',
8
+ 200: '#A8B6FA',
9
+ 300: '#90A0F4',
10
+ 400: '#667EF4',
11
+ 500: '#3B5AF7',
12
+ 600: '#284AF6',
13
+ 700: '#143AF5',
14
+ 800: '#0827C4',
15
+ 900: '#07209D',
16
+ 1000: '#051876',
17
+ 1100: '#03104E',
18
+ 1200: '#020827',
19
+ },
20
+ volcano: {
21
+ 50: '#FFE5E0',
22
+ 100: '#FFD7CF',
23
+ 200: '#FFB2A3',
24
+ 300: '#FF9985',
25
+ 400: '#FF775C',
26
+ 500: '#FB5837',
27
+ 600: '#F83812',
28
+ 700: '#E02500',
29
+ 800: '#AE2509',
30
+ 900: '#8F1800',
31
+ 1000: '#661100',
32
+ 1100: '#3D0A00',
33
+ 1200: '#140300',
34
+ },
35
+ desert: {
36
+ 50: '#FFF2E0',
37
+ 100: '#FFEBCF',
38
+ 200: '#FFD9A3',
39
+ 300: '#FFCC85',
40
+ 400: '#FCBA5F',
41
+ 500: '#FFAA33',
42
+ 600: '#FA980F',
43
+ 700: '#E08300',
44
+ 800: '#B46A04',
45
+ 900: '#8F5300',
46
+ 1000: '#663C00',
47
+ 1100: '#3D2400',
48
+ 1200: '#140C00',
49
+ },
50
+ forest: {
51
+ 50: '#E9F6F0',
52
+ 100: '#DBF2E7',
53
+ 200: '#BBE7D1',
54
+ 300: '#A2E2C2',
55
+ 400: '#7EDDAD',
56
+ 500: '#5CD699',
57
+ 600: '#40C984',
58
+ 700: '#26BA70',
59
+ 800: '#25935C',
60
+ 900: '#1A7447',
61
+ 1000: '#0F5733',
62
+ 1100: '#003D1F',
63
+ 1200: '#00140A',
64
+ },
65
+ river: {
66
+ 50: '#E0F7FA',
67
+ 100: '#B2EBF2',
68
+ 200: '#80DEEA',
69
+ 300: '#4DD0E1',
70
+ 400: '#26C6DA',
71
+ 500: '#00BCD4',
72
+ 600: '#00ACC1',
73
+ 700: '#0097A7',
74
+ 800: '#00838F',
75
+ 900: '#006064',
76
+ 1000: '#004D56',
77
+ 1100: '#003840',
78
+ 1200: '#002329',
79
+ },
80
+ twilight: {
81
+ 50: '#F3E5F5',
82
+ 100: '#E1BEE7',
83
+ 200: '#CE93D8',
84
+ 300: '#BA68C8',
85
+ 400: '#AB47BC',
86
+ 500: '#9C27B0',
87
+ 600: '#8E24AA',
88
+ 700: '#7B1FA2',
89
+ 800: '#6A1B9A',
90
+ 900: '#4A148C',
91
+ 1000: '#38106B',
92
+ 1100: '#270A4D',
93
+ 1200: '#160530',
94
+ },
95
+ flamingo: {
96
+ 50: '#FCE4EC',
97
+ 100: '#F8BBD0',
98
+ 200: '#F48FB1',
99
+ 300: '#F06292',
100
+ 400: '#EC407A',
101
+ 500: '#E91E63',
102
+ 600: '#D81B60',
103
+ 700: '#C2185B',
104
+ 800: '#AD1457',
105
+ 900: '#880E4F',
106
+ 1000: '#6B0B3E',
107
+ 1100: '#4D082C',
108
+ 1200: '#2F051B',
109
+ },
110
+ sumi: {
111
+ 50: '#F8F9FB',
112
+ 100: '#F1F1F4',
113
+ 200: '#E8E9EB',
114
+ 300: '#D8D9DB',
115
+ 400: '#B4B5B7',
116
+ 500: '#949597',
117
+ 600: '#626264',
118
+ 700: '#414143',
119
+ 800: '#414143',
120
+ 900: '#191A1C',
121
+ 1000: '#191A1C',
122
+ 1100: '#191A1C',
123
+ 1200: '#191A1C',
124
+ },
125
+ }
126
+
127
+ export default {
128
+ content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
129
+ darkMode: 'class',
130
+ safelist: [
131
+ 'text-h1', 'text-h2', 'text-h3', 'text-h3-bold', 'text-h4', 'text-h5',
132
+ 'text-body-l', 'text-body-m', 'text-body-m-bold', 'text-body-s',
133
+ 'text-label-l', 'text-label-m', 'text-label-s',
134
+ 'text-caption-l', 'text-caption-m',
135
+ 'text-button-l', 'text-button-m', 'text-button-s',
136
+ ],
137
+ theme: {
138
+ extend: {
139
+ fontSize: {
140
+ // Headings
141
+ h1: ['36px', { lineHeight: '1.4', fontWeight: '500' }],
142
+ h2: ['32px', { lineHeight: '1.5', fontWeight: '500' }],
143
+ h3: ['20px', { lineHeight: '1.5', fontWeight: '400' }],
144
+ 'h3-bold': ['20px', { lineHeight: '1.5', fontWeight: '700' }],
145
+ h4: ['16px', { lineHeight: '1.5', fontWeight: '700' }],
146
+ h5: ['14px', { lineHeight: '1.5', fontWeight: '500' }],
147
+ // Body text
148
+ 'body-l': ['16px', { lineHeight: '1.6', fontWeight: '400' }],
149
+ 'body-m': ['14px', { lineHeight: '1.6', fontWeight: '400' }],
150
+ 'body-m-bold': ['14px', { lineHeight: '1.6', fontWeight: '700' }],
151
+ 'body-s': ['12px', { lineHeight: '1.8', fontWeight: '400' }],
152
+ // Labels
153
+ 'label-l': ['14px', { lineHeight: '1.4', fontWeight: '500' }],
154
+ 'label-m': ['12px', { lineHeight: '1.5', fontWeight: '500' }],
155
+ 'label-s': ['10px', { lineHeight: '1.4', fontWeight: '500' }],
156
+ // Captions/Supplementary
157
+ 'caption-l': ['12px', { lineHeight: '1.7', fontWeight: '400' }],
158
+ 'caption-m': ['10px', { lineHeight: '1.7', fontWeight: '400' }],
159
+ // Buttons
160
+ 'button-l': ['16px', { lineHeight: '1.5', fontWeight: '500' }],
161
+ 'button-m': ['14px', { lineHeight: '1.7', fontWeight: '500' }],
162
+ 'button-s': ['12px', { lineHeight: '1.7', fontWeight: '500' }],
163
+ },
164
+ colors: {
165
+ // Color Palette - use these throughout
166
+ ...colorPalette,
167
+
168
+ // Semantic Tokens - Text Colors
169
+ textColor: {
170
+ primary: colorPalette.sumi[1200], // Main body text
171
+ secondary: colorPalette.sumi[800], // Description/muted text
172
+ tertiary: colorPalette.sumi[600], // Placeholder text
173
+ accent: colorPalette.ocean[400], // Highlighted/accent text
174
+ inverse: colorPalette.ocean[50], // Text on filled backgrounds
175
+ disabled: colorPalette.sumi[400], // Disabled text
176
+ error: colorPalette.volcano[600], // Alert/error text
177
+ link: colorPalette.ocean[600], // Link default
178
+ 'link-hover': colorPalette.ocean[700], // Link hover
179
+ 'link-active': colorPalette.ocean[700],// Link active
180
+ 'link-visited': colorPalette.ocean[800],// Link visited
181
+ },
182
+ // Semantic Tokens - Icon Colors
183
+ icon: {
184
+ DEFAULT: colorPalette.sumi[800], // Default icon
185
+ active: colorPalette.ocean[500], // Active icon
186
+ warning: colorPalette.desert[600], // Warning icon
187
+ disabled: colorPalette.sumi[400], // Disabled icon
188
+ },
189
+ // Semantic Tokens - Button Colors
190
+ button: {
191
+ primary: colorPalette.ocean[500], // Primary button
192
+ secondary: colorPalette.sumi[700], // Secondary button
193
+ hover: colorPalette.ocean[500], // Hover state
194
+ active: colorPalette.ocean[600], // Active state
195
+ disabled: colorPalette.sumi[400], // Disabled state
196
+ },
197
+ // Semantic Tokens - Background Colors
198
+ background: {
199
+ DEFAULT: colorPalette.sumi[50], // Default background (white)
200
+ primary: colorPalette.sumi[50], // Primary background (white)
201
+ secondary: colorPalette.sumi[50], // Secondary background
202
+ card: colorPalette.sumi[100], // Card background
203
+ subtle: colorPalette.sumi[200], // Subtle background
204
+ accent: colorPalette.ocean[50], // Accent background
205
+ },
206
+ // Semantic Tokens - Border Colors
207
+ border: {
208
+ DEFAULT: colorPalette.sumi[300], // Default border
209
+ hover: colorPalette.sumi[400], // Hover border
210
+ focus: colorPalette.ocean[500], // Focus border
211
+ error: colorPalette.volcano[600], // Error border
212
+ },
213
+ // Semantic Tokens - Status Colors
214
+ success: {
215
+ DEFAULT: colorPalette.forest[600], // Default success
216
+ 'fill-select': colorPalette.forest[700],// Filled selected
217
+ 'fill-hover': colorPalette.forest[700], // Filled hover
218
+ selected: colorPalette.forest[200], // Selected state
219
+ hover: colorPalette.forest[100], // Hover state
220
+ bg: colorPalette.forest[50], // Background
221
+ },
222
+ alert: {
223
+ DEFAULT: colorPalette.volcano[600], // Default alert
224
+ 'fill-select': colorPalette.volcano[700],// Filled selected
225
+ 'fill-hover': colorPalette.volcano[700],// Filled hover
226
+ selected: colorPalette.volcano[200], // Selected state
227
+ hover: colorPalette.volcano[100], // Hover state
228
+ bg: colorPalette.volcano[50], // Background
229
+ },
230
+ warning: {
231
+ DEFAULT: colorPalette.desert[600], // Default warning
232
+ 'fill-select': colorPalette.desert[700],// Filled selected
233
+ 'fill-hover': colorPalette.desert[700], // Filled hover
234
+ selected: colorPalette.desert[200], // Selected state
235
+ hover: colorPalette.desert[100], // Hover state
236
+ bg: colorPalette.desert[50], // Background
237
+ },
238
+ // Semantic Tokens - Chart Colors
239
+ chart: {
240
+ primary: colorPalette.ocean[500], // Primary chart color
241
+ secondary: colorPalette.ocean[400], // Secondary chart color
242
+ white: colorPalette.sumi[50], // White for charts
243
+ black: colorPalette.sumi[1200], // Black for charts
244
+ },
245
+ },
246
+ },
247
+ },
248
+ plugins: [],
249
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
+ "module": "ESNext",
8
+ "types": ["vite/client"],
9
+ "skipLibCheck": true,
10
+
11
+ /* Bundler mode */
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "verbatimModuleSyntax": true,
15
+ "moduleDetection": "force",
16
+ "noEmit": true,
17
+ "jsx": "react-jsx",
18
+
19
+ /* Linting */
20
+ "strict": true,
21
+ "noUnusedLocals": true,
22
+ "noUnusedParameters": true,
23
+ "erasableSyntaxOnly": true,
24
+ "noFallthroughCasesInSwitch": true,
25
+ "noUncheckedSideEffectImports": true,
26
+ "baseUrl": ".",
27
+ "paths": {
28
+ "@/*": ["src/*"]
29
+ }
30
+ },
31
+ "include": ["src"]
32
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ]
7
+ ,
8
+ "compilerOptions": {
9
+ "baseUrl": ".",
10
+ "paths": {
11
+ "@/*": ["src/*"]
12
+ },
13
+ "jsx": "react-jsx",
14
+ "target": "ES2022",
15
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
16
+ "module": "ESNext",
17
+ "moduleResolution": "bundler",
18
+ "allowImportingTsExtensions": true,
19
+ "verbatimModuleSyntax": true,
20
+ "moduleDetection": "force",
21
+ "skipLibCheck": true
22
+ }
23
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2023",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "types": ["node"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+
17
+ /* Linting */
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "erasableSyntaxOnly": true,
22
+ "noFallthroughCasesInSwitch": true,
23
+ "noUncheckedSideEffectImports": true
24
+ },
25
+ "include": ["vite.config.ts"]
26
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import { resolve } from 'path'
4
+
5
+ // https://vite.dev/config/
6
+ export default defineConfig({
7
+ plugins: [react()],
8
+ resolve: {
9
+ alias: {
10
+ '@': resolve(__dirname, 'src'),
11
+ },
12
+ },
13
+ })