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.
- package/README.md +73 -0
- package/components.json +22 -0
- package/eslint.config.js +23 -0
- package/index.html +13 -0
- package/package.json +42 -0
- package/pnpm-workspace.yaml +2 -0
- package/postcss.config.cjs +6 -0
- package/postcss.config.js +1 -0
- package/public/vite.svg +1 -0
- package/src/App.css +42 -0
- package/src/App.tsx +173 -0
- package/src/assets/react.svg +1 -0
- package/src/components/index.ts +9 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/breadcrumb.tsx +115 -0
- package/src/components/ui/button.tsx +57 -0
- package/src/components/ui/common/Icon.tsx +704 -0
- package/src/components/ui/common/Text.tsx +45 -0
- package/src/components/ui/dialog.tsx +120 -0
- package/src/components/ui/input.tsx +22 -0
- package/src/components/ui/table.tsx +120 -0
- package/src/index.css +3 -0
- package/src/lib/utils.ts +6 -0
- package/src/main.tsx +10 -0
- package/src/output.css +3 -0
- package/src/test-output.css +1074 -0
- package/tailwind.config.js +249 -0
- package/tsconfig.app.json +32 -0
- package/tsconfig.json +23 -0
- package/tsconfig.node.json +26 -0
- package/vite.config.ts +13 -0
|
@@ -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
|
+
})
|