@geekmidas/ui 0.0.1 → 0.2.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/dist/hooks/index.cjs +5 -0
- package/dist/hooks/index.d.cts +2 -0
- package/dist/hooks/index.d.mts +2 -0
- package/dist/hooks/index.mjs +3 -0
- package/dist/hooks-DBc-Cw9X.mjs +206 -0
- package/dist/hooks-DBc-Cw9X.mjs.map +1 -0
- package/dist/hooks-DuxmSO-h.cjs +252 -0
- package/dist/hooks-DuxmSO-h.cjs.map +1 -0
- package/dist/index-DmtSyJ1q.d.mts +113 -0
- package/dist/index-DmtSyJ1q.d.mts.map +1 -0
- package/dist/index-QNnnyGjB.d.cts +113 -0
- package/dist/index-QNnnyGjB.d.cts.map +1 -0
- package/dist/index.cjs +2566 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +727 -1
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +727 -1
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2428 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles/theme.cjs +6 -0
- package/dist/styles/theme.d.cts +2 -0
- package/dist/styles/theme.d.mts +2 -0
- package/dist/styles/theme.mjs +3 -0
- package/dist/theme-B5mGkTlU.d.cts +103 -0
- package/dist/theme-B5mGkTlU.d.cts.map +1 -0
- package/dist/theme-BRGSS8qx.cjs +135 -0
- package/dist/theme-BRGSS8qx.cjs.map +1 -0
- package/dist/theme-DAiFBbyM.mjs +111 -0
- package/dist/theme-DAiFBbyM.mjs.map +1 -0
- package/dist/theme-vpDwDfcR.d.mts +103 -0
- package/dist/theme-vpDwDfcR.d.mts.map +1 -0
- package/package.json +96 -5
- package/src/styles/globals.css +175 -0
- package/src/styles/theme.ts +138 -0
- package/scripts/embed-ui.ts +0 -97
- package/src/index.ts +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/styles/theme.ts
|
|
3
|
+
/**
|
|
4
|
+
* Theme constants for the UI component library.
|
|
5
|
+
* Inspired by Supabase's dark theme design.
|
|
6
|
+
*/
|
|
7
|
+
const theme = {
|
|
8
|
+
colors: {
|
|
9
|
+
background: "#171717",
|
|
10
|
+
surface: "#1c1c1c",
|
|
11
|
+
surfaceHover: "#262626",
|
|
12
|
+
surfaceActive: "#2a2a2a",
|
|
13
|
+
border: "#2e2e2e",
|
|
14
|
+
borderHover: "#3e3e3e",
|
|
15
|
+
borderFocus: "#3ecf8e",
|
|
16
|
+
text: "#fafafa",
|
|
17
|
+
textMuted: "#a1a1aa",
|
|
18
|
+
textSubtle: "#71717a",
|
|
19
|
+
accent: "#3ecf8e",
|
|
20
|
+
accentHover: "#4ade80",
|
|
21
|
+
accentMuted: "#22c55e",
|
|
22
|
+
error: "#ef4444",
|
|
23
|
+
errorMuted: "#dc2626",
|
|
24
|
+
warning: "#f59e0b",
|
|
25
|
+
warningMuted: "#d97706",
|
|
26
|
+
info: "#3b82f6",
|
|
27
|
+
infoMuted: "#2563eb",
|
|
28
|
+
success: "#22c55e",
|
|
29
|
+
successMuted: "#16a34a"
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
GET: "#3b82f6",
|
|
33
|
+
POST: "#22c55e",
|
|
34
|
+
PUT: "#f59e0b",
|
|
35
|
+
PATCH: "#8b5cf6",
|
|
36
|
+
DELETE: "#ef4444",
|
|
37
|
+
HEAD: "#6b7280",
|
|
38
|
+
OPTIONS: "#6b7280"
|
|
39
|
+
},
|
|
40
|
+
status: {
|
|
41
|
+
"1xx": "#6b7280",
|
|
42
|
+
"2xx": "#22c55e",
|
|
43
|
+
"3xx": "#3b82f6",
|
|
44
|
+
"4xx": "#f59e0b",
|
|
45
|
+
"5xx": "#ef4444"
|
|
46
|
+
},
|
|
47
|
+
logLevels: {
|
|
48
|
+
trace: "#6b7280",
|
|
49
|
+
debug: "#6b7280",
|
|
50
|
+
info: "#3b82f6",
|
|
51
|
+
warn: "#f59e0b",
|
|
52
|
+
error: "#ef4444",
|
|
53
|
+
fatal: "#dc2626"
|
|
54
|
+
},
|
|
55
|
+
spacing: {
|
|
56
|
+
xs: "0.25rem",
|
|
57
|
+
sm: "0.5rem",
|
|
58
|
+
md: "1rem",
|
|
59
|
+
lg: "1.5rem",
|
|
60
|
+
xl: "2rem",
|
|
61
|
+
"2xl": "3rem"
|
|
62
|
+
},
|
|
63
|
+
radius: {
|
|
64
|
+
sm: "0.25rem",
|
|
65
|
+
md: "0.375rem",
|
|
66
|
+
lg: "0.5rem",
|
|
67
|
+
xl: "0.75rem",
|
|
68
|
+
full: "9999px"
|
|
69
|
+
},
|
|
70
|
+
fontSize: {
|
|
71
|
+
xs: "0.75rem",
|
|
72
|
+
sm: "0.875rem",
|
|
73
|
+
base: "1rem",
|
|
74
|
+
lg: "1.125rem",
|
|
75
|
+
xl: "1.25rem",
|
|
76
|
+
"2xl": "1.5rem"
|
|
77
|
+
},
|
|
78
|
+
transition: {
|
|
79
|
+
fast: "150ms ease",
|
|
80
|
+
normal: "200ms ease",
|
|
81
|
+
slow: "300ms ease"
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Get the color for an HTTP method.
|
|
86
|
+
*/
|
|
87
|
+
function getMethodColor(method) {
|
|
88
|
+
const upperMethod = method.toUpperCase();
|
|
89
|
+
return theme.methods[upperMethod] ?? theme.colors.textMuted;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the color for an HTTP status code.
|
|
93
|
+
*/
|
|
94
|
+
function getStatusColor(status) {
|
|
95
|
+
if (status >= 100 && status < 200) return theme.status["1xx"];
|
|
96
|
+
if (status >= 200 && status < 300) return theme.status["2xx"];
|
|
97
|
+
if (status >= 300 && status < 400) return theme.status["3xx"];
|
|
98
|
+
if (status >= 400 && status < 500) return theme.status["4xx"];
|
|
99
|
+
if (status >= 500) return theme.status["5xx"];
|
|
100
|
+
return theme.colors.textMuted;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the color for a log level.
|
|
104
|
+
*/
|
|
105
|
+
function getLogLevelColor(level) {
|
|
106
|
+
const lowerLevel = level.toLowerCase();
|
|
107
|
+
return theme.logLevels[lowerLevel] ?? theme.colors.textMuted;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//#endregion
|
|
111
|
+
Object.defineProperty(exports, 'getLogLevelColor', {
|
|
112
|
+
enumerable: true,
|
|
113
|
+
get: function () {
|
|
114
|
+
return getLogLevelColor;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
Object.defineProperty(exports, 'getMethodColor', {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
get: function () {
|
|
120
|
+
return getMethodColor;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
Object.defineProperty(exports, 'getStatusColor', {
|
|
124
|
+
enumerable: true,
|
|
125
|
+
get: function () {
|
|
126
|
+
return getStatusColor;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
Object.defineProperty(exports, 'theme', {
|
|
130
|
+
enumerable: true,
|
|
131
|
+
get: function () {
|
|
132
|
+
return theme;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=theme-BRGSS8qx.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-BRGSS8qx.cjs","names":["method: string","status: number","level: string"],"sources":["../src/styles/theme.ts"],"sourcesContent":["/**\n * Theme constants for the UI component library.\n * Inspired by Supabase's dark theme design.\n */\nexport const theme = {\n\tcolors: {\n\t\t// Background colors\n\t\tbackground: '#171717',\n\t\tsurface: '#1c1c1c',\n\t\tsurfaceHover: '#262626',\n\t\tsurfaceActive: '#2a2a2a',\n\n\t\t// Border colors\n\t\tborder: '#2e2e2e',\n\t\tborderHover: '#3e3e3e',\n\t\tborderFocus: '#3ecf8e',\n\n\t\t// Text colors\n\t\ttext: '#fafafa',\n\t\ttextMuted: '#a1a1aa',\n\t\ttextSubtle: '#71717a',\n\n\t\t// Accent colors\n\t\taccent: '#3ecf8e',\n\t\taccentHover: '#4ade80',\n\t\taccentMuted: '#22c55e',\n\n\t\t// Semantic colors\n\t\terror: '#ef4444',\n\t\terrorMuted: '#dc2626',\n\t\twarning: '#f59e0b',\n\t\twarningMuted: '#d97706',\n\t\tinfo: '#3b82f6',\n\t\tinfoMuted: '#2563eb',\n\t\tsuccess: '#22c55e',\n\t\tsuccessMuted: '#16a34a',\n\t},\n\n\t// HTTP method colors\n\tmethods: {\n\t\tGET: '#3b82f6',\n\t\tPOST: '#22c55e',\n\t\tPUT: '#f59e0b',\n\t\tPATCH: '#8b5cf6',\n\t\tDELETE: '#ef4444',\n\t\tHEAD: '#6b7280',\n\t\tOPTIONS: '#6b7280',\n\t} as const,\n\n\t// HTTP status code colors\n\tstatus: {\n\t\t'1xx': '#6b7280',\n\t\t'2xx': '#22c55e',\n\t\t'3xx': '#3b82f6',\n\t\t'4xx': '#f59e0b',\n\t\t'5xx': '#ef4444',\n\t} as const,\n\n\t// Log level colors\n\tlogLevels: {\n\t\ttrace: '#6b7280',\n\t\tdebug: '#6b7280',\n\t\tinfo: '#3b82f6',\n\t\twarn: '#f59e0b',\n\t\terror: '#ef4444',\n\t\tfatal: '#dc2626',\n\t} as const,\n\n\t// Spacing scale\n\tspacing: {\n\t\txs: '0.25rem',\n\t\tsm: '0.5rem',\n\t\tmd: '1rem',\n\t\tlg: '1.5rem',\n\t\txl: '2rem',\n\t\t'2xl': '3rem',\n\t} as const,\n\n\t// Border radius\n\tradius: {\n\t\tsm: '0.25rem',\n\t\tmd: '0.375rem',\n\t\tlg: '0.5rem',\n\t\txl: '0.75rem',\n\t\tfull: '9999px',\n\t} as const,\n\n\t// Font sizes\n\tfontSize: {\n\t\txs: '0.75rem',\n\t\tsm: '0.875rem',\n\t\tbase: '1rem',\n\t\tlg: '1.125rem',\n\t\txl: '1.25rem',\n\t\t'2xl': '1.5rem',\n\t} as const,\n\n\t// Transitions\n\ttransition: {\n\t\tfast: '150ms ease',\n\t\tnormal: '200ms ease',\n\t\tslow: '300ms ease',\n\t} as const,\n} as const;\n\nexport type Theme = typeof theme;\nexport type ThemeColors = typeof theme.colors;\nexport type HttpMethod = keyof typeof theme.methods;\nexport type StatusRange = keyof typeof theme.status;\nexport type LogLevel = keyof typeof theme.logLevels;\n\n/**\n * Get the color for an HTTP method.\n */\nexport function getMethodColor(method: string): string {\n\tconst upperMethod = method.toUpperCase() as HttpMethod;\n\treturn theme.methods[upperMethod] ?? theme.colors.textMuted;\n}\n\n/**\n * Get the color for an HTTP status code.\n */\nexport function getStatusColor(status: number): string {\n\tif (status >= 100 && status < 200) return theme.status['1xx'];\n\tif (status >= 200 && status < 300) return theme.status['2xx'];\n\tif (status >= 300 && status < 400) return theme.status['3xx'];\n\tif (status >= 400 && status < 500) return theme.status['4xx'];\n\tif (status >= 500) return theme.status['5xx'];\n\treturn theme.colors.textMuted;\n}\n\n/**\n * Get the color for a log level.\n */\nexport function getLogLevelColor(level: string): string {\n\tconst lowerLevel = level.toLowerCase() as LogLevel;\n\treturn theme.logLevels[lowerLevel] ?? theme.colors.textMuted;\n}\n"],"mappings":";;;;;;AAIA,MAAa,QAAQ;CACpB,QAAQ;EAEP,YAAY;EACZ,SAAS;EACT,cAAc;EACd,eAAe;EAGf,QAAQ;EACR,aAAa;EACb,aAAa;EAGb,MAAM;EACN,WAAW;EACX,YAAY;EAGZ,QAAQ;EACR,aAAa;EACb,aAAa;EAGb,OAAO;EACP,YAAY;EACZ,SAAS;EACT,cAAc;EACd,MAAM;EACN,WAAW;EACX,SAAS;EACT,cAAc;CACd;CAGD,SAAS;EACR,KAAK;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,SAAS;CACT;CAGD,QAAQ;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACP;CAGD,WAAW;EACV,OAAO;EACP,OAAO;EACP,MAAM;EACN,MAAM;EACN,OAAO;EACP,OAAO;CACP;CAGD,SAAS;EACR,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,OAAO;CACP;CAGD,QAAQ;EACP,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;CACN;CAGD,UAAU;EACT,IAAI;EACJ,IAAI;EACJ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,OAAO;CACP;CAGD,YAAY;EACX,MAAM;EACN,QAAQ;EACR,MAAM;CACN;AACD;;;;AAWD,SAAgB,eAAeA,QAAwB;CACtD,MAAM,cAAc,OAAO,aAAa;AACxC,QAAO,MAAM,QAAQ,gBAAgB,MAAM,OAAO;AAClD;;;;AAKD,SAAgB,eAAeC,QAAwB;AACtD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,IAAK,QAAO,MAAM,OAAO;AACvC,QAAO,MAAM,OAAO;AACpB;;;;AAKD,SAAgB,iBAAiBC,OAAuB;CACvD,MAAM,aAAa,MAAM,aAAa;AACtC,QAAO,MAAM,UAAU,eAAe,MAAM,OAAO;AACnD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
//#region src/styles/theme.ts
|
|
2
|
+
/**
|
|
3
|
+
* Theme constants for the UI component library.
|
|
4
|
+
* Inspired by Supabase's dark theme design.
|
|
5
|
+
*/
|
|
6
|
+
const theme = {
|
|
7
|
+
colors: {
|
|
8
|
+
background: "#171717",
|
|
9
|
+
surface: "#1c1c1c",
|
|
10
|
+
surfaceHover: "#262626",
|
|
11
|
+
surfaceActive: "#2a2a2a",
|
|
12
|
+
border: "#2e2e2e",
|
|
13
|
+
borderHover: "#3e3e3e",
|
|
14
|
+
borderFocus: "#3ecf8e",
|
|
15
|
+
text: "#fafafa",
|
|
16
|
+
textMuted: "#a1a1aa",
|
|
17
|
+
textSubtle: "#71717a",
|
|
18
|
+
accent: "#3ecf8e",
|
|
19
|
+
accentHover: "#4ade80",
|
|
20
|
+
accentMuted: "#22c55e",
|
|
21
|
+
error: "#ef4444",
|
|
22
|
+
errorMuted: "#dc2626",
|
|
23
|
+
warning: "#f59e0b",
|
|
24
|
+
warningMuted: "#d97706",
|
|
25
|
+
info: "#3b82f6",
|
|
26
|
+
infoMuted: "#2563eb",
|
|
27
|
+
success: "#22c55e",
|
|
28
|
+
successMuted: "#16a34a"
|
|
29
|
+
},
|
|
30
|
+
methods: {
|
|
31
|
+
GET: "#3b82f6",
|
|
32
|
+
POST: "#22c55e",
|
|
33
|
+
PUT: "#f59e0b",
|
|
34
|
+
PATCH: "#8b5cf6",
|
|
35
|
+
DELETE: "#ef4444",
|
|
36
|
+
HEAD: "#6b7280",
|
|
37
|
+
OPTIONS: "#6b7280"
|
|
38
|
+
},
|
|
39
|
+
status: {
|
|
40
|
+
"1xx": "#6b7280",
|
|
41
|
+
"2xx": "#22c55e",
|
|
42
|
+
"3xx": "#3b82f6",
|
|
43
|
+
"4xx": "#f59e0b",
|
|
44
|
+
"5xx": "#ef4444"
|
|
45
|
+
},
|
|
46
|
+
logLevels: {
|
|
47
|
+
trace: "#6b7280",
|
|
48
|
+
debug: "#6b7280",
|
|
49
|
+
info: "#3b82f6",
|
|
50
|
+
warn: "#f59e0b",
|
|
51
|
+
error: "#ef4444",
|
|
52
|
+
fatal: "#dc2626"
|
|
53
|
+
},
|
|
54
|
+
spacing: {
|
|
55
|
+
xs: "0.25rem",
|
|
56
|
+
sm: "0.5rem",
|
|
57
|
+
md: "1rem",
|
|
58
|
+
lg: "1.5rem",
|
|
59
|
+
xl: "2rem",
|
|
60
|
+
"2xl": "3rem"
|
|
61
|
+
},
|
|
62
|
+
radius: {
|
|
63
|
+
sm: "0.25rem",
|
|
64
|
+
md: "0.375rem",
|
|
65
|
+
lg: "0.5rem",
|
|
66
|
+
xl: "0.75rem",
|
|
67
|
+
full: "9999px"
|
|
68
|
+
},
|
|
69
|
+
fontSize: {
|
|
70
|
+
xs: "0.75rem",
|
|
71
|
+
sm: "0.875rem",
|
|
72
|
+
base: "1rem",
|
|
73
|
+
lg: "1.125rem",
|
|
74
|
+
xl: "1.25rem",
|
|
75
|
+
"2xl": "1.5rem"
|
|
76
|
+
},
|
|
77
|
+
transition: {
|
|
78
|
+
fast: "150ms ease",
|
|
79
|
+
normal: "200ms ease",
|
|
80
|
+
slow: "300ms ease"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Get the color for an HTTP method.
|
|
85
|
+
*/
|
|
86
|
+
function getMethodColor(method) {
|
|
87
|
+
const upperMethod = method.toUpperCase();
|
|
88
|
+
return theme.methods[upperMethod] ?? theme.colors.textMuted;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get the color for an HTTP status code.
|
|
92
|
+
*/
|
|
93
|
+
function getStatusColor(status) {
|
|
94
|
+
if (status >= 100 && status < 200) return theme.status["1xx"];
|
|
95
|
+
if (status >= 200 && status < 300) return theme.status["2xx"];
|
|
96
|
+
if (status >= 300 && status < 400) return theme.status["3xx"];
|
|
97
|
+
if (status >= 400 && status < 500) return theme.status["4xx"];
|
|
98
|
+
if (status >= 500) return theme.status["5xx"];
|
|
99
|
+
return theme.colors.textMuted;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get the color for a log level.
|
|
103
|
+
*/
|
|
104
|
+
function getLogLevelColor(level) {
|
|
105
|
+
const lowerLevel = level.toLowerCase();
|
|
106
|
+
return theme.logLevels[lowerLevel] ?? theme.colors.textMuted;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//#endregion
|
|
110
|
+
export { getLogLevelColor, getMethodColor, getStatusColor, theme };
|
|
111
|
+
//# sourceMappingURL=theme-DAiFBbyM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-DAiFBbyM.mjs","names":["method: string","status: number","level: string"],"sources":["../src/styles/theme.ts"],"sourcesContent":["/**\n * Theme constants for the UI component library.\n * Inspired by Supabase's dark theme design.\n */\nexport const theme = {\n\tcolors: {\n\t\t// Background colors\n\t\tbackground: '#171717',\n\t\tsurface: '#1c1c1c',\n\t\tsurfaceHover: '#262626',\n\t\tsurfaceActive: '#2a2a2a',\n\n\t\t// Border colors\n\t\tborder: '#2e2e2e',\n\t\tborderHover: '#3e3e3e',\n\t\tborderFocus: '#3ecf8e',\n\n\t\t// Text colors\n\t\ttext: '#fafafa',\n\t\ttextMuted: '#a1a1aa',\n\t\ttextSubtle: '#71717a',\n\n\t\t// Accent colors\n\t\taccent: '#3ecf8e',\n\t\taccentHover: '#4ade80',\n\t\taccentMuted: '#22c55e',\n\n\t\t// Semantic colors\n\t\terror: '#ef4444',\n\t\terrorMuted: '#dc2626',\n\t\twarning: '#f59e0b',\n\t\twarningMuted: '#d97706',\n\t\tinfo: '#3b82f6',\n\t\tinfoMuted: '#2563eb',\n\t\tsuccess: '#22c55e',\n\t\tsuccessMuted: '#16a34a',\n\t},\n\n\t// HTTP method colors\n\tmethods: {\n\t\tGET: '#3b82f6',\n\t\tPOST: '#22c55e',\n\t\tPUT: '#f59e0b',\n\t\tPATCH: '#8b5cf6',\n\t\tDELETE: '#ef4444',\n\t\tHEAD: '#6b7280',\n\t\tOPTIONS: '#6b7280',\n\t} as const,\n\n\t// HTTP status code colors\n\tstatus: {\n\t\t'1xx': '#6b7280',\n\t\t'2xx': '#22c55e',\n\t\t'3xx': '#3b82f6',\n\t\t'4xx': '#f59e0b',\n\t\t'5xx': '#ef4444',\n\t} as const,\n\n\t// Log level colors\n\tlogLevels: {\n\t\ttrace: '#6b7280',\n\t\tdebug: '#6b7280',\n\t\tinfo: '#3b82f6',\n\t\twarn: '#f59e0b',\n\t\terror: '#ef4444',\n\t\tfatal: '#dc2626',\n\t} as const,\n\n\t// Spacing scale\n\tspacing: {\n\t\txs: '0.25rem',\n\t\tsm: '0.5rem',\n\t\tmd: '1rem',\n\t\tlg: '1.5rem',\n\t\txl: '2rem',\n\t\t'2xl': '3rem',\n\t} as const,\n\n\t// Border radius\n\tradius: {\n\t\tsm: '0.25rem',\n\t\tmd: '0.375rem',\n\t\tlg: '0.5rem',\n\t\txl: '0.75rem',\n\t\tfull: '9999px',\n\t} as const,\n\n\t// Font sizes\n\tfontSize: {\n\t\txs: '0.75rem',\n\t\tsm: '0.875rem',\n\t\tbase: '1rem',\n\t\tlg: '1.125rem',\n\t\txl: '1.25rem',\n\t\t'2xl': '1.5rem',\n\t} as const,\n\n\t// Transitions\n\ttransition: {\n\t\tfast: '150ms ease',\n\t\tnormal: '200ms ease',\n\t\tslow: '300ms ease',\n\t} as const,\n} as const;\n\nexport type Theme = typeof theme;\nexport type ThemeColors = typeof theme.colors;\nexport type HttpMethod = keyof typeof theme.methods;\nexport type StatusRange = keyof typeof theme.status;\nexport type LogLevel = keyof typeof theme.logLevels;\n\n/**\n * Get the color for an HTTP method.\n */\nexport function getMethodColor(method: string): string {\n\tconst upperMethod = method.toUpperCase() as HttpMethod;\n\treturn theme.methods[upperMethod] ?? theme.colors.textMuted;\n}\n\n/**\n * Get the color for an HTTP status code.\n */\nexport function getStatusColor(status: number): string {\n\tif (status >= 100 && status < 200) return theme.status['1xx'];\n\tif (status >= 200 && status < 300) return theme.status['2xx'];\n\tif (status >= 300 && status < 400) return theme.status['3xx'];\n\tif (status >= 400 && status < 500) return theme.status['4xx'];\n\tif (status >= 500) return theme.status['5xx'];\n\treturn theme.colors.textMuted;\n}\n\n/**\n * Get the color for a log level.\n */\nexport function getLogLevelColor(level: string): string {\n\tconst lowerLevel = level.toLowerCase() as LogLevel;\n\treturn theme.logLevels[lowerLevel] ?? theme.colors.textMuted;\n}\n"],"mappings":";;;;;AAIA,MAAa,QAAQ;CACpB,QAAQ;EAEP,YAAY;EACZ,SAAS;EACT,cAAc;EACd,eAAe;EAGf,QAAQ;EACR,aAAa;EACb,aAAa;EAGb,MAAM;EACN,WAAW;EACX,YAAY;EAGZ,QAAQ;EACR,aAAa;EACb,aAAa;EAGb,OAAO;EACP,YAAY;EACZ,SAAS;EACT,cAAc;EACd,MAAM;EACN,WAAW;EACX,SAAS;EACT,cAAc;CACd;CAGD,SAAS;EACR,KAAK;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,SAAS;CACT;CAGD,QAAQ;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACP;CAGD,WAAW;EACV,OAAO;EACP,OAAO;EACP,MAAM;EACN,MAAM;EACN,OAAO;EACP,OAAO;CACP;CAGD,SAAS;EACR,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,OAAO;CACP;CAGD,QAAQ;EACP,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;CACN;CAGD,UAAU;EACT,IAAI;EACJ,IAAI;EACJ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,OAAO;CACP;CAGD,YAAY;EACX,MAAM;EACN,QAAQ;EACR,MAAM;CACN;AACD;;;;AAWD,SAAgB,eAAeA,QAAwB;CACtD,MAAM,cAAc,OAAO,aAAa;AACxC,QAAO,MAAM,QAAQ,gBAAgB,MAAM,OAAO;AAClD;;;;AAKD,SAAgB,eAAeC,QAAwB;AACtD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO,MAAM,OAAO;AACvD,KAAI,UAAU,IAAK,QAAO,MAAM,OAAO;AACvC,QAAO,MAAM,OAAO;AACpB;;;;AAKD,SAAgB,iBAAiBC,OAAuB;CACvD,MAAM,aAAa,MAAM,aAAa;AACtC,QAAO,MAAM,UAAU,eAAe,MAAM,OAAO;AACnD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
//#region src/styles/theme.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Theme constants for the UI component library.
|
|
4
|
+
* Inspired by Supabase's dark theme design.
|
|
5
|
+
*/
|
|
6
|
+
declare const theme: {
|
|
7
|
+
readonly colors: {
|
|
8
|
+
readonly background: "#171717";
|
|
9
|
+
readonly surface: "#1c1c1c";
|
|
10
|
+
readonly surfaceHover: "#262626";
|
|
11
|
+
readonly surfaceActive: "#2a2a2a";
|
|
12
|
+
readonly border: "#2e2e2e";
|
|
13
|
+
readonly borderHover: "#3e3e3e";
|
|
14
|
+
readonly borderFocus: "#3ecf8e";
|
|
15
|
+
readonly text: "#fafafa";
|
|
16
|
+
readonly textMuted: "#a1a1aa";
|
|
17
|
+
readonly textSubtle: "#71717a";
|
|
18
|
+
readonly accent: "#3ecf8e";
|
|
19
|
+
readonly accentHover: "#4ade80";
|
|
20
|
+
readonly accentMuted: "#22c55e";
|
|
21
|
+
readonly error: "#ef4444";
|
|
22
|
+
readonly errorMuted: "#dc2626";
|
|
23
|
+
readonly warning: "#f59e0b";
|
|
24
|
+
readonly warningMuted: "#d97706";
|
|
25
|
+
readonly info: "#3b82f6";
|
|
26
|
+
readonly infoMuted: "#2563eb";
|
|
27
|
+
readonly success: "#22c55e";
|
|
28
|
+
readonly successMuted: "#16a34a";
|
|
29
|
+
};
|
|
30
|
+
readonly methods: {
|
|
31
|
+
readonly GET: "#3b82f6";
|
|
32
|
+
readonly POST: "#22c55e";
|
|
33
|
+
readonly PUT: "#f59e0b";
|
|
34
|
+
readonly PATCH: "#8b5cf6";
|
|
35
|
+
readonly DELETE: "#ef4444";
|
|
36
|
+
readonly HEAD: "#6b7280";
|
|
37
|
+
readonly OPTIONS: "#6b7280";
|
|
38
|
+
};
|
|
39
|
+
readonly status: {
|
|
40
|
+
readonly '1xx': "#6b7280";
|
|
41
|
+
readonly '2xx': "#22c55e";
|
|
42
|
+
readonly '3xx': "#3b82f6";
|
|
43
|
+
readonly '4xx': "#f59e0b";
|
|
44
|
+
readonly '5xx': "#ef4444";
|
|
45
|
+
};
|
|
46
|
+
readonly logLevels: {
|
|
47
|
+
readonly trace: "#6b7280";
|
|
48
|
+
readonly debug: "#6b7280";
|
|
49
|
+
readonly info: "#3b82f6";
|
|
50
|
+
readonly warn: "#f59e0b";
|
|
51
|
+
readonly error: "#ef4444";
|
|
52
|
+
readonly fatal: "#dc2626";
|
|
53
|
+
};
|
|
54
|
+
readonly spacing: {
|
|
55
|
+
readonly xs: "0.25rem";
|
|
56
|
+
readonly sm: "0.5rem";
|
|
57
|
+
readonly md: "1rem";
|
|
58
|
+
readonly lg: "1.5rem";
|
|
59
|
+
readonly xl: "2rem";
|
|
60
|
+
readonly '2xl': "3rem";
|
|
61
|
+
};
|
|
62
|
+
readonly radius: {
|
|
63
|
+
readonly sm: "0.25rem";
|
|
64
|
+
readonly md: "0.375rem";
|
|
65
|
+
readonly lg: "0.5rem";
|
|
66
|
+
readonly xl: "0.75rem";
|
|
67
|
+
readonly full: "9999px";
|
|
68
|
+
};
|
|
69
|
+
readonly fontSize: {
|
|
70
|
+
readonly xs: "0.75rem";
|
|
71
|
+
readonly sm: "0.875rem";
|
|
72
|
+
readonly base: "1rem";
|
|
73
|
+
readonly lg: "1.125rem";
|
|
74
|
+
readonly xl: "1.25rem";
|
|
75
|
+
readonly '2xl': "1.5rem";
|
|
76
|
+
};
|
|
77
|
+
readonly transition: {
|
|
78
|
+
readonly fast: "150ms ease";
|
|
79
|
+
readonly normal: "200ms ease";
|
|
80
|
+
readonly slow: "300ms ease";
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
type Theme = typeof theme;
|
|
84
|
+
type ThemeColors = typeof theme.colors;
|
|
85
|
+
type HttpMethod = keyof typeof theme.methods;
|
|
86
|
+
type StatusRange = keyof typeof theme.status;
|
|
87
|
+
type LogLevel = keyof typeof theme.logLevels;
|
|
88
|
+
/**
|
|
89
|
+
* Get the color for an HTTP method.
|
|
90
|
+
*/
|
|
91
|
+
declare function getMethodColor(method: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* Get the color for an HTTP status code.
|
|
94
|
+
*/
|
|
95
|
+
declare function getStatusColor(status: number): string;
|
|
96
|
+
/**
|
|
97
|
+
* Get the color for a log level.
|
|
98
|
+
*/
|
|
99
|
+
declare function getLogLevelColor(level: string): string;
|
|
100
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
101
|
+
//#endregion
|
|
102
|
+
export { HttpMethod, LogLevel, StatusRange, Theme, ThemeColors, getLogLevelColor, getMethodColor, getStatusColor, theme };
|
|
103
|
+
//# sourceMappingURL=theme-vpDwDfcR.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-vpDwDfcR.d.mts","names":[],"sources":["../src/styles/theme.ts"],"sourcesContent":[],"mappings":";;AAIA;AAqGA;AACA;AACY,cAvGC,KAuGS,EAAgB;EAC1B,SAAA,MAAW,EAAA;IACX,SAAQ,UAAgB,EAAA,SAAM;IAK1B,SAAA,OAAc,EAAA,SAAA;IAQd,SAAA,YAAc,EAAA,SAAA;IAYd,SAAA,aAAgB,EAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA7BpB,KAAA,UAAe;KACf,WAAA,UAAqB,KAAA,CAAM;KAC3B,UAAA,gBAA0B,KAAA,CAAM;KAChC,WAAA,gBAA2B,KAAA,CAAM;KACjC,QAAA,gBAAwB,KAAA,CAAM;;;;iBAK1B,cAAA;;;;iBAQA,cAAA;;;;iBAYA,gBAAA"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/ui",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "Shared UI
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Shared UI component library built on shadcn/ui",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"require": "./dist/index.cjs"
|
|
11
|
+
},
|
|
12
|
+
"./components": {
|
|
13
|
+
"types": "./dist/components/ui/index.d.ts",
|
|
14
|
+
"import": "./dist/components/ui/index.js",
|
|
15
|
+
"require": "./dist/components/ui/index.cjs"
|
|
16
|
+
},
|
|
17
|
+
"./layout": {
|
|
18
|
+
"types": "./dist/components/layout/index.d.ts",
|
|
19
|
+
"import": "./dist/components/layout/index.js",
|
|
20
|
+
"require": "./dist/components/layout/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./data-display": {
|
|
23
|
+
"types": "./dist/components/data-display/index.d.ts",
|
|
24
|
+
"import": "./dist/components/data-display/index.js",
|
|
25
|
+
"require": "./dist/components/data-display/index.cjs"
|
|
26
|
+
},
|
|
27
|
+
"./feedback": {
|
|
28
|
+
"types": "./dist/components/feedback/index.d.ts",
|
|
29
|
+
"import": "./dist/components/feedback/index.js",
|
|
30
|
+
"require": "./dist/components/feedback/index.cjs"
|
|
31
|
+
},
|
|
32
|
+
"./hooks": {
|
|
33
|
+
"types": "./dist/hooks/index.d.ts",
|
|
34
|
+
"import": "./dist/hooks/index.js",
|
|
35
|
+
"require": "./dist/hooks/index.cjs"
|
|
36
|
+
},
|
|
37
|
+
"./lib/utils": {
|
|
38
|
+
"types": "./dist/lib/utils.d.ts",
|
|
39
|
+
"import": "./dist/lib/utils.js",
|
|
40
|
+
"require": "./dist/lib/utils.cjs"
|
|
41
|
+
},
|
|
42
|
+
"./styles": "./src/styles/globals.css",
|
|
43
|
+
"./theme": {
|
|
44
|
+
"types": "./dist/styles/theme.d.ts",
|
|
45
|
+
"import": "./dist/styles/theme.js",
|
|
46
|
+
"require": "./dist/styles/theme.cjs"
|
|
47
|
+
}
|
|
8
48
|
},
|
|
9
49
|
"repository": {
|
|
10
50
|
"type": "git",
|
|
@@ -14,7 +54,58 @@
|
|
|
14
54
|
"registry": "https://registry.npmjs.org/",
|
|
15
55
|
"access": "public"
|
|
16
56
|
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@radix-ui/react-checkbox": "~1.3.3",
|
|
59
|
+
"@radix-ui/react-dialog": "~1.1.15",
|
|
60
|
+
"@radix-ui/react-dropdown-menu": "~2.1.16",
|
|
61
|
+
"@radix-ui/react-label": "~2.1.8",
|
|
62
|
+
"@radix-ui/react-popover": "~1.1.15",
|
|
63
|
+
"@radix-ui/react-scroll-area": "~1.2.10",
|
|
64
|
+
"@radix-ui/react-select": "~2.2.6",
|
|
65
|
+
"@radix-ui/react-separator": "~1.1.8",
|
|
66
|
+
"@radix-ui/react-slot": "~1.2.4",
|
|
67
|
+
"@radix-ui/react-switch": "~1.2.6",
|
|
68
|
+
"@radix-ui/react-tabs": "~1.1.13",
|
|
69
|
+
"@radix-ui/react-tooltip": "~1.2.8",
|
|
70
|
+
"class-variance-authority": "~0.7.1",
|
|
71
|
+
"clsx": "^2.1.1",
|
|
72
|
+
"date-fns": "~4.1.0",
|
|
73
|
+
"lucide-react": "~0.562.0",
|
|
74
|
+
"prism-react-renderer": "~2.4.1",
|
|
75
|
+
"recharts": "~3.6.0",
|
|
76
|
+
"tailwind-merge": "~3.4.0"
|
|
77
|
+
},
|
|
17
78
|
"devDependencies": {
|
|
18
|
-
"
|
|
79
|
+
"@storybook/addon-a11y": "^8.4.7",
|
|
80
|
+
"@storybook/addon-essentials": "^8.4.7",
|
|
81
|
+
"@storybook/addon-interactions": "^8.4.7",
|
|
82
|
+
"@storybook/react": "^8.4.7",
|
|
83
|
+
"@storybook/react-vite": "^8.4.7",
|
|
84
|
+
"@tailwindcss/vite": "^4.0.0",
|
|
85
|
+
"@types/react": "^19.0.0",
|
|
86
|
+
"@types/react-dom": "^19.0.0",
|
|
87
|
+
"react": "^19.0.0",
|
|
88
|
+
"react-dom": "^19.0.0",
|
|
89
|
+
"storybook": "^8.4.7",
|
|
90
|
+
"tailwindcss": "^4.0.0",
|
|
91
|
+
"tsdown": "^0.9.1",
|
|
92
|
+
"tsx": "~4.19.4",
|
|
93
|
+
"typescript": "^5.8.2",
|
|
94
|
+
"vite": "^6.0.0"
|
|
95
|
+
},
|
|
96
|
+
"peerDependencies": {
|
|
97
|
+
"react": ">=18.0.0",
|
|
98
|
+
"react-dom": ">=18.0.0",
|
|
99
|
+
"tailwindcss": ">=4.0.0"
|
|
100
|
+
},
|
|
101
|
+
"files": [
|
|
102
|
+
"dist",
|
|
103
|
+
"src/styles"
|
|
104
|
+
],
|
|
105
|
+
"scripts": {
|
|
106
|
+
"build": "tsdown",
|
|
107
|
+
"ts:check": "tsc --noEmit",
|
|
108
|
+
"storybook": "storybook dev -p 6006",
|
|
109
|
+
"build:storybook": "storybook build -o dist/storybook"
|
|
19
110
|
}
|
|
20
111
|
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
@theme {
|
|
4
|
+
--color-background: hsl(var(--background));
|
|
5
|
+
--color-foreground: hsl(var(--foreground));
|
|
6
|
+
--color-card: hsl(var(--card));
|
|
7
|
+
--color-card-foreground: hsl(var(--card-foreground));
|
|
8
|
+
--color-popover: hsl(var(--popover));
|
|
9
|
+
--color-popover-foreground: hsl(var(--popover-foreground));
|
|
10
|
+
--color-primary: hsl(var(--primary));
|
|
11
|
+
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
12
|
+
--color-secondary: hsl(var(--secondary));
|
|
13
|
+
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
|
14
|
+
--color-muted: hsl(var(--muted));
|
|
15
|
+
--color-muted-foreground: hsl(var(--muted-foreground));
|
|
16
|
+
--color-accent: hsl(var(--accent));
|
|
17
|
+
--color-accent-foreground: hsl(var(--accent-foreground));
|
|
18
|
+
--color-destructive: hsl(var(--destructive));
|
|
19
|
+
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
|
20
|
+
--color-border: hsl(var(--border));
|
|
21
|
+
--color-input: hsl(var(--input));
|
|
22
|
+
--color-ring: hsl(var(--ring));
|
|
23
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
24
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
25
|
+
--radius-lg: var(--radius);
|
|
26
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@layer base {
|
|
30
|
+
:root {
|
|
31
|
+
--background: 0 0% 100%;
|
|
32
|
+
--foreground: 0 0% 3.9%;
|
|
33
|
+
--card: 0 0% 100%;
|
|
34
|
+
--card-foreground: 0 0% 3.9%;
|
|
35
|
+
--popover: 0 0% 100%;
|
|
36
|
+
--popover-foreground: 0 0% 3.9%;
|
|
37
|
+
--primary: 160 84% 39%;
|
|
38
|
+
--primary-foreground: 0 0% 98%;
|
|
39
|
+
--secondary: 0 0% 96.1%;
|
|
40
|
+
--secondary-foreground: 0 0% 9%;
|
|
41
|
+
--muted: 0 0% 96.1%;
|
|
42
|
+
--muted-foreground: 0 0% 45.1%;
|
|
43
|
+
--accent: 0 0% 96.1%;
|
|
44
|
+
--accent-foreground: 0 0% 9%;
|
|
45
|
+
--destructive: 0 84.2% 60.2%;
|
|
46
|
+
--destructive-foreground: 0 0% 98%;
|
|
47
|
+
--border: 0 0% 89.8%;
|
|
48
|
+
--input: 0 0% 89.8%;
|
|
49
|
+
--ring: 160 84% 39%;
|
|
50
|
+
--radius: 0.5rem;
|
|
51
|
+
--chart-1: 12 76% 61%;
|
|
52
|
+
--chart-2: 173 58% 39%;
|
|
53
|
+
--chart-3: 197 37% 24%;
|
|
54
|
+
--chart-4: 43 74% 66%;
|
|
55
|
+
--chart-5: 27 87% 67%;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@layer base {
|
|
60
|
+
* {
|
|
61
|
+
@apply border-border;
|
|
62
|
+
}
|
|
63
|
+
body {
|
|
64
|
+
@apply bg-background text-foreground;
|
|
65
|
+
font-feature-settings:
|
|
66
|
+
"rlig" 1,
|
|
67
|
+
"calt" 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Force dark mode for dev tools */
|
|
72
|
+
:root {
|
|
73
|
+
color-scheme: dark;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
html {
|
|
77
|
+
/* Apply dark theme variables directly */
|
|
78
|
+
--background: 0 0% 9%;
|
|
79
|
+
--foreground: 0 0% 98%;
|
|
80
|
+
--card: 0 0% 11%;
|
|
81
|
+
--card-foreground: 0 0% 98%;
|
|
82
|
+
--popover: 0 0% 11%;
|
|
83
|
+
--popover-foreground: 0 0% 98%;
|
|
84
|
+
--primary: 160 84% 52%;
|
|
85
|
+
--primary-foreground: 0 0% 9%;
|
|
86
|
+
--secondary: 0 0% 15%;
|
|
87
|
+
--secondary-foreground: 0 0% 98%;
|
|
88
|
+
--muted: 0 0% 15%;
|
|
89
|
+
--muted-foreground: 0 0% 64%;
|
|
90
|
+
--accent: 0 0% 15%;
|
|
91
|
+
--accent-foreground: 0 0% 98%;
|
|
92
|
+
--destructive: 0 62.8% 50.6%;
|
|
93
|
+
--destructive-foreground: 0 0% 98%;
|
|
94
|
+
--border: 0 0% 18%;
|
|
95
|
+
--input: 0 0% 18%;
|
|
96
|
+
--ring: 160 84% 52%;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Custom scrollbar for dark theme */
|
|
100
|
+
::-webkit-scrollbar {
|
|
101
|
+
width: 8px;
|
|
102
|
+
height: 8px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
::-webkit-scrollbar-track {
|
|
106
|
+
background: hsl(var(--background));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
::-webkit-scrollbar-thumb {
|
|
110
|
+
background: hsl(var(--border));
|
|
111
|
+
border-radius: 9999px;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
::-webkit-scrollbar-thumb:hover {
|
|
115
|
+
background: hsl(var(--muted-foreground) / 0.5);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Selection styling */
|
|
119
|
+
::selection {
|
|
120
|
+
background-color: hsl(var(--primary));
|
|
121
|
+
color: hsl(var(--primary-foreground));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Code font */
|
|
125
|
+
code,
|
|
126
|
+
pre {
|
|
127
|
+
font-family:
|
|
128
|
+
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono",
|
|
129
|
+
monospace;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* HTTP method colors for badges */
|
|
133
|
+
.method-get {
|
|
134
|
+
--method-color: 217 91% 60%;
|
|
135
|
+
}
|
|
136
|
+
.method-post {
|
|
137
|
+
--method-color: 142 71% 45%;
|
|
138
|
+
}
|
|
139
|
+
.method-put {
|
|
140
|
+
--method-color: 38 92% 50%;
|
|
141
|
+
}
|
|
142
|
+
.method-patch {
|
|
143
|
+
--method-color: 263 70% 50%;
|
|
144
|
+
}
|
|
145
|
+
.method-delete {
|
|
146
|
+
--method-color: 0 84% 60%;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Status code colors */
|
|
150
|
+
.status-2xx {
|
|
151
|
+
--status-color: 142 71% 45%;
|
|
152
|
+
}
|
|
153
|
+
.status-3xx {
|
|
154
|
+
--status-color: 217 91% 60%;
|
|
155
|
+
}
|
|
156
|
+
.status-4xx {
|
|
157
|
+
--status-color: 38 92% 50%;
|
|
158
|
+
}
|
|
159
|
+
.status-5xx {
|
|
160
|
+
--status-color: 0 84% 60%;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Log level colors */
|
|
164
|
+
.log-debug {
|
|
165
|
+
--log-color: 0 0% 45%;
|
|
166
|
+
}
|
|
167
|
+
.log-info {
|
|
168
|
+
--log-color: 217 91% 60%;
|
|
169
|
+
}
|
|
170
|
+
.log-warn {
|
|
171
|
+
--log-color: 38 92% 50%;
|
|
172
|
+
}
|
|
173
|
+
.log-error {
|
|
174
|
+
--log-color: 0 84% 60%;
|
|
175
|
+
}
|