lynx-console 0.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/dist/assets/src/components/BottomSheet.css.ts.vanilla-D-1A77Ik.css +83 -0
- package/dist/assets/src/components/ConsolePanel.css.ts.vanilla-B3avfSlI.css +246 -0
- package/dist/assets/src/components/FloatingButton.css.ts.vanilla-rPj35oLW.css +55 -0
- package/dist/assets/src/components/NetworkPanel.css.ts.vanilla-DFMduT0T.css +247 -0
- package/dist/assets/src/components/PerformancePanel.css.ts.vanilla-D35LuXlW.css +216 -0
- package/dist/assets/src/components/Tabs.css.ts.vanilla-DD7L2oXt.css +50 -0
- package/dist/index.cjs +1058 -0
- package/dist/index.css +466 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +17 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +17 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1059 -0
- package/dist/index.mjs.map +1 -0
- package/dist/setup.cjs +377 -0
- package/dist/setup.d.cts +15 -0
- package/dist/setup.d.cts.map +1 -0
- package/dist/setup.d.mts +15 -0
- package/dist/setup.d.mts.map +1 -0
- package/dist/setup.mjs +374 -0
- package/dist/setup.mjs.map +1 -0
- package/package.json +51 -0
- package/src/components/BottomSheet.css.ts +93 -0
- package/src/components/BottomSheet.tsx +142 -0
- package/src/components/ConsolePanel.css.ts +261 -0
- package/src/components/ConsolePanel.tsx +41 -0
- package/src/components/FloatingButton.css.ts +62 -0
- package/src/components/FloatingButton.tsx +37 -0
- package/src/components/LogPanel.tsx +241 -0
- package/src/components/NetworkDetailSection.tsx +42 -0
- package/src/components/NetworkPanel.css.ts +280 -0
- package/src/components/NetworkPanel.tsx +222 -0
- package/src/components/PerformancePanel.css.ts +224 -0
- package/src/components/PerformancePanel.tsx +209 -0
- package/src/components/Tabs.css.ts +66 -0
- package/src/components/Tabs.tsx +81 -0
- package/src/globals.d.ts +9 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useConsole.ts +35 -0
- package/src/hooks/useNetwork.ts +36 -0
- package/src/hooks/usePerformance.ts +39 -0
- package/src/index.tsx +110 -0
- package/src/setup/_setupMainThreadConsole.ts +80 -0
- package/src/setup/index.ts +4 -0
- package/src/setup/setupLogMonitor.ts +78 -0
- package/src/setup/setupMainThreadConsole.ts +34 -0
- package/src/setup/setupNetworkMonitor.ts +247 -0
- package/src/setup/setupPerformanceMonitor.ts +70 -0
- package/src/shared/ensureConsoleStructure.ts +20 -0
- package/src/styles/getDimensionValue.ts +7 -0
- package/src/styles/global.css.ts +10 -0
- package/src/styles/tokens.json +80 -0
- package/src/styles/typography.ts +25 -0
- package/src/styles/vars/color.ts +228 -0
- package/src/styles/vars/dimension.ts +79 -0
- package/src/styles/vars/index.css +463 -0
- package/src/styles/vars/index.ts +22 -0
- package/src/styles/vars/radius.ts +12 -0
- package/src/types.ts +96 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { stringify } from "javascript-stringify";
|
|
2
|
+
import { ensureConsoleStructure } from "../shared/ensureConsoleStructure";
|
|
3
|
+
import type { NetworkEntry } from "../types";
|
|
4
|
+
|
|
5
|
+
const generateNetworkId = (): string => {
|
|
6
|
+
return `network-${Date.now()}-${Math.random()}`;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const extractUrl = (input: RequestInfo | URL): string => {
|
|
10
|
+
if (typeof input === "string") return input;
|
|
11
|
+
if (input instanceof URL) return input.href;
|
|
12
|
+
return (input as Request).url;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const extractMethod = (
|
|
16
|
+
input: RequestInfo | URL,
|
|
17
|
+
init?: RequestInit,
|
|
18
|
+
): string | undefined => {
|
|
19
|
+
if (init?.method) return init.method;
|
|
20
|
+
if (typeof input === "object" && "method" in input) {
|
|
21
|
+
return (input as Request).method;
|
|
22
|
+
}
|
|
23
|
+
return "GET";
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const extractHeaders = (
|
|
27
|
+
headers: HeadersInit | undefined,
|
|
28
|
+
): Record<string, string> => {
|
|
29
|
+
const result: Record<string, string> = {};
|
|
30
|
+
if (!headers) return result;
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
if (headers instanceof Headers) {
|
|
34
|
+
headers.forEach((value, key) => {
|
|
35
|
+
result[key] = value;
|
|
36
|
+
});
|
|
37
|
+
} else if (Array.isArray(headers)) {
|
|
38
|
+
headers.forEach(([key, value]) => {
|
|
39
|
+
result[key] = value;
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
43
|
+
result[key] = value;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
} catch (error) {
|
|
47
|
+
console.error("[LynxConsole] Failed to extract headers:", error);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const mergeRequestHeaders = (
|
|
54
|
+
input: RequestInfo | URL,
|
|
55
|
+
init?: RequestInit,
|
|
56
|
+
): Record<string, string> => {
|
|
57
|
+
const merged: Record<string, string> = {};
|
|
58
|
+
|
|
59
|
+
// Request 객체나 URL 객체에서 헤더 추출
|
|
60
|
+
if (typeof input === "object" && "headers" in input) {
|
|
61
|
+
Object.assign(merged, extractHeaders(input.headers as HeadersInit));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// RequestInit에서 헤더 추출 (나중 값이 우선)
|
|
65
|
+
if (init?.headers) {
|
|
66
|
+
Object.assign(merged, extractHeaders(init.headers));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return merged;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const addNetworkEntry = (entry: NetworkEntry): void => {
|
|
73
|
+
const state = globalThis.__LYNX_CONSOLE__?.state;
|
|
74
|
+
if (!state?.networks || !state?.networksMap || !state?.networkListeners) {
|
|
75
|
+
console.error(
|
|
76
|
+
"[LynxConsole] Cannot add network entry: Network monitor not initialized. Call initNetworkMonitor() first.",
|
|
77
|
+
);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
state.networks.push(entry);
|
|
82
|
+
state.networksMap.set(entry.id, entry);
|
|
83
|
+
|
|
84
|
+
state.networkListeners.forEach((listener) => {
|
|
85
|
+
listener(entry);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const updateNetworkEntry = (
|
|
90
|
+
id: string,
|
|
91
|
+
updates: Partial<NetworkEntry>,
|
|
92
|
+
): void => {
|
|
93
|
+
const state = globalThis.__LYNX_CONSOLE__?.state;
|
|
94
|
+
if (!state?.networks || !state?.networksMap || !state?.networkListeners) {
|
|
95
|
+
console.error(
|
|
96
|
+
"[LynxConsole] Cannot update network entry: Network monitor not initialized. Call initNetworkMonitor() first.",
|
|
97
|
+
);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const existingEntry = state.networksMap.get(id);
|
|
102
|
+
if (!existingEntry) {
|
|
103
|
+
console.error(
|
|
104
|
+
`[LynxConsole] Cannot update network entry: Entry with id '${id}' not found.`,
|
|
105
|
+
);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const updatedEntry = { ...existingEntry, ...updates };
|
|
110
|
+
|
|
111
|
+
const index = state.networks.findIndex((entry) => entry.id === id);
|
|
112
|
+
if (index !== -1) {
|
|
113
|
+
state.networks[index] = updatedEntry;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
state.networksMap.set(id, updatedEntry);
|
|
117
|
+
|
|
118
|
+
state.networkListeners.forEach((listener) => {
|
|
119
|
+
listener(updatedEntry);
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export const initNetworkMonitor = () => {
|
|
124
|
+
if (!lynx.fetch) {
|
|
125
|
+
console.warn(
|
|
126
|
+
"[LynxConsole] lynx.fetch not available, skipping network monitor",
|
|
127
|
+
);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const { state } = ensureConsoleStructure();
|
|
132
|
+
|
|
133
|
+
if (state.networks !== undefined) {
|
|
134
|
+
console.warn("[LynxConsole] Network monitor already initialized");
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
type NetworkListener = (entry: NetworkEntry) => void;
|
|
139
|
+
state.networks = [];
|
|
140
|
+
state.networksMap = new Map();
|
|
141
|
+
state.networkListeners = new Set();
|
|
142
|
+
state.subscribeNetwork = (listener: NetworkListener) => {
|
|
143
|
+
state.networkListeners?.add(listener);
|
|
144
|
+
return () => {
|
|
145
|
+
state.networkListeners?.delete(listener);
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const originalFetch = fetch.bind(lynx);
|
|
150
|
+
|
|
151
|
+
const monitoredFetch = async (
|
|
152
|
+
input: RequestInfo | URL,
|
|
153
|
+
init?: RequestInit,
|
|
154
|
+
): Promise<Response> => {
|
|
155
|
+
const id = generateNetworkId();
|
|
156
|
+
const startTime = Date.now();
|
|
157
|
+
const url = extractUrl(input);
|
|
158
|
+
const method = extractMethod(input, init);
|
|
159
|
+
|
|
160
|
+
const requestHeaders = mergeRequestHeaders(input, init);
|
|
161
|
+
|
|
162
|
+
// Request body 처리
|
|
163
|
+
let requestBody: string | undefined;
|
|
164
|
+
if (init?.body) {
|
|
165
|
+
if (typeof init.body === "string") {
|
|
166
|
+
requestBody = init.body;
|
|
167
|
+
} else if (init.body instanceof URLSearchParams) {
|
|
168
|
+
requestBody = init.body.toString();
|
|
169
|
+
} else {
|
|
170
|
+
// Lynx가 지원하지 않는 타입이거나 알 수 없는 타입
|
|
171
|
+
requestBody = String(init.body);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
addNetworkEntry({
|
|
176
|
+
id,
|
|
177
|
+
url,
|
|
178
|
+
method: method || "default",
|
|
179
|
+
status: "pending",
|
|
180
|
+
startTime,
|
|
181
|
+
requestHeaders,
|
|
182
|
+
requestBody: requestBody ?? "",
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
const response = await originalFetch(input, init);
|
|
187
|
+
const endTime = Date.now();
|
|
188
|
+
|
|
189
|
+
const responseHeaders: Record<string, string> = {};
|
|
190
|
+
response.headers.forEach((value, key) => {
|
|
191
|
+
responseHeaders[key] = value;
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const clonedResponse = response.clone();
|
|
195
|
+
let responseBody: string | undefined;
|
|
196
|
+
|
|
197
|
+
try {
|
|
198
|
+
const headerMap: Record<string, string> = {};
|
|
199
|
+
response.headers.forEach((value, key) => {
|
|
200
|
+
headerMap[key.toLowerCase()] = value;
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
const contentType = headerMap["content-type"];
|
|
204
|
+
if (contentType?.includes("application/json")) {
|
|
205
|
+
const json = await clonedResponse.json();
|
|
206
|
+
responseBody = stringify(json, null, 2, { references: true }) ?? "";
|
|
207
|
+
} else if (contentType?.includes("text")) {
|
|
208
|
+
responseBody = await clonedResponse.text();
|
|
209
|
+
}
|
|
210
|
+
} catch (error) {
|
|
211
|
+
responseBody = `[Unable to read response body] ${error}`;
|
|
212
|
+
console.error("[LynxConsole] Error reading response body:", error);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
updateNetworkEntry(id, {
|
|
216
|
+
status: "success",
|
|
217
|
+
statusCode: response.status,
|
|
218
|
+
statusText: response.statusText,
|
|
219
|
+
endTime,
|
|
220
|
+
duration: endTime - startTime,
|
|
221
|
+
responseHeaders,
|
|
222
|
+
responseBody: responseBody ?? "",
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
return response;
|
|
226
|
+
} catch (error) {
|
|
227
|
+
const endTime = Date.now();
|
|
228
|
+
updateNetworkEntry(id, {
|
|
229
|
+
status: "error",
|
|
230
|
+
endTime,
|
|
231
|
+
duration: endTime - startTime,
|
|
232
|
+
error: error instanceof Error ? error.message : String(error),
|
|
233
|
+
});
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// biome-ignore lint/suspicious/noTsIgnore: to assign fetch to global functionfetch
|
|
239
|
+
// @ts-ignore
|
|
240
|
+
// biome-ignore lint/suspicious/noGlobalAssign: to assign fetch to global functionfetch fetch
|
|
241
|
+
fetch = monitoredFetch as typeof fetch;
|
|
242
|
+
|
|
243
|
+
//fetch 대신 lynx.fetch를 사용하는 경우에도 모니터링 되도록 설정
|
|
244
|
+
lynx.fetch = monitoredFetch as typeof lynx.fetch;
|
|
245
|
+
|
|
246
|
+
console.log("[LynxConsole] ✅ Network monitoring initialized");
|
|
247
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ensureConsoleStructure } from "../shared/ensureConsoleStructure";
|
|
2
|
+
import type { PerformanceEntryData, PerformanceEntryType } from "../types";
|
|
3
|
+
|
|
4
|
+
type PerformanceListener = (entry: PerformanceEntryData) => void;
|
|
5
|
+
|
|
6
|
+
const generatePerformanceId = (): string => {
|
|
7
|
+
return `performance-${Date.now()}-${Math.random()}`;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const addPerformanceEntry = (entry: PerformanceEntryData): void => {
|
|
11
|
+
const state = globalThis.__LYNX_CONSOLE__?.state;
|
|
12
|
+
if (!state?.performances || !state?.performanceListeners) {
|
|
13
|
+
console.error(
|
|
14
|
+
"[LynxConsole] Cannot add performance entry: Performance monitor not initialized. Call initPerformanceMonitor() first.",
|
|
15
|
+
);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
state.performances.push(entry);
|
|
20
|
+
state.performanceListeners.forEach((listener) => {
|
|
21
|
+
listener(entry);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const initPerformanceMonitor = () => {
|
|
26
|
+
"background only";
|
|
27
|
+
|
|
28
|
+
if (!lynx.performance) {
|
|
29
|
+
console.warn(
|
|
30
|
+
"[LynxConsole] lynx.performance not available, skipping performance monitor",
|
|
31
|
+
);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const { state } = ensureConsoleStructure();
|
|
36
|
+
|
|
37
|
+
if (state.performances !== undefined) {
|
|
38
|
+
console.warn("[LynxConsole] Performance monitor already initialized");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
state.performances = [];
|
|
43
|
+
state.performanceListeners = new Set();
|
|
44
|
+
state.subscribePerformance = (listener: PerformanceListener) => {
|
|
45
|
+
state.performanceListeners?.add(listener);
|
|
46
|
+
return () => {
|
|
47
|
+
state.performanceListeners?.delete(listener);
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const observer = lynx.performance.createObserver((entry) => {
|
|
52
|
+
const performanceEntry: PerformanceEntryData = {
|
|
53
|
+
id: generatePerformanceId(),
|
|
54
|
+
entryType: entry.entryType as PerformanceEntryType,
|
|
55
|
+
name: entry.name,
|
|
56
|
+
timestamp: Date.now(),
|
|
57
|
+
rawEntry: entry,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
addPerformanceEntry(performanceEntry);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
observer.observe([
|
|
64
|
+
"pipeline", // LoadBundleEntry
|
|
65
|
+
"init", // InitLynxviewEntry
|
|
66
|
+
"metric", // MetricEntry
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
console.log("[LynxConsole] ✅ Performance monitoring initialized");
|
|
70
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type LynxConsole = NonNullable<typeof globalThis.__LYNX_CONSOLE__>;
|
|
2
|
+
type ConsoleState = NonNullable<LynxConsole["state"]>;
|
|
3
|
+
|
|
4
|
+
export const ensureConsoleStructure = (): {
|
|
5
|
+
lynxConsole: LynxConsole;
|
|
6
|
+
state: ConsoleState;
|
|
7
|
+
} => {
|
|
8
|
+
if (!globalThis.__LYNX_CONSOLE__) {
|
|
9
|
+
globalThis.__LYNX_CONSOLE__ = {};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (!globalThis.__LYNX_CONSOLE__.state) {
|
|
13
|
+
globalThis.__LYNX_CONSOLE__.state = {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
lynxConsole: globalThis.__LYNX_CONSOLE__,
|
|
18
|
+
state: globalThis.__LYNX_CONSOLE__.state,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dimensions": {
|
|
3
|
+
"$dimension.x0_5": "2px",
|
|
4
|
+
"$dimension.x1": "4px",
|
|
5
|
+
"$dimension.x1_5": "6px",
|
|
6
|
+
"$dimension.x2": "8px",
|
|
7
|
+
"$dimension.x2_5": "10px",
|
|
8
|
+
"$dimension.x3": "12px",
|
|
9
|
+
"$dimension.x3_5": "14px",
|
|
10
|
+
"$dimension.x4": "16px",
|
|
11
|
+
"$dimension.x4_5": "18px",
|
|
12
|
+
"$dimension.x5": "20px",
|
|
13
|
+
"$dimension.x6": "24px",
|
|
14
|
+
"$dimension.x7": "28px",
|
|
15
|
+
"$dimension.x8": "32px",
|
|
16
|
+
"$dimension.x9": "36px",
|
|
17
|
+
"$dimension.x10": "40px",
|
|
18
|
+
"$dimension.x12": "48px",
|
|
19
|
+
"$dimension.x13": "52px",
|
|
20
|
+
"$dimension.x14": "56px",
|
|
21
|
+
"$dimension.x16": "64px",
|
|
22
|
+
"$dimension.spacing-x.between-chips": "8px",
|
|
23
|
+
"$dimension.spacing-x.global-gutter": "16px",
|
|
24
|
+
"$dimension.spacing-y.component-default": "12px",
|
|
25
|
+
"$dimension.spacing-y.nav-to-title": "20px",
|
|
26
|
+
"$dimension.spacing-y.screen-bottom": "56px",
|
|
27
|
+
"$dimension.spacing-y.between-text": "6px",
|
|
28
|
+
"$font-size.t1": "0.6875rem",
|
|
29
|
+
"$font-size.t2": "0.75rem",
|
|
30
|
+
"$font-size.t3": "0.8125rem",
|
|
31
|
+
"$font-size.t4": "0.875rem",
|
|
32
|
+
"$font-size.t5": "1rem",
|
|
33
|
+
"$font-size.t6": "1.125rem",
|
|
34
|
+
"$font-size.t7": "1.25rem",
|
|
35
|
+
"$font-size.t8": "1.375rem",
|
|
36
|
+
"$font-size.t9": "1.5rem",
|
|
37
|
+
"$font-size.t10": "1.625rem",
|
|
38
|
+
"$font-size.t1-static": "11px",
|
|
39
|
+
"$font-size.t2-static": "12px",
|
|
40
|
+
"$font-size.t3-static": "13px",
|
|
41
|
+
"$font-size.t4-static": "14px",
|
|
42
|
+
"$font-size.t5-static": "16px",
|
|
43
|
+
"$font-size.t6-static": "18px",
|
|
44
|
+
"$font-size.t7-static": "20px",
|
|
45
|
+
"$font-size.t8-static": "22px",
|
|
46
|
+
"$font-size.t9-static": "24px",
|
|
47
|
+
"$font-size.t10-static": "26px",
|
|
48
|
+
"$line-height.t1": "0.9375rem",
|
|
49
|
+
"$line-height.t2": "1rem",
|
|
50
|
+
"$line-height.t3": "1.125rem",
|
|
51
|
+
"$line-height.t4": "1.1875rem",
|
|
52
|
+
"$line-height.t5": "1.375rem",
|
|
53
|
+
"$line-height.t6": "1.5rem",
|
|
54
|
+
"$line-height.t7": "1.6875rem",
|
|
55
|
+
"$line-height.t8": "1.875rem",
|
|
56
|
+
"$line-height.t9": "2rem",
|
|
57
|
+
"$line-height.t10": "2.1875rem",
|
|
58
|
+
"$line-height.t1-static": "15px",
|
|
59
|
+
"$line-height.t2-static": "16px",
|
|
60
|
+
"$line-height.t3-static": "18px",
|
|
61
|
+
"$line-height.t4-static": "19px",
|
|
62
|
+
"$line-height.t5-static": "22px",
|
|
63
|
+
"$line-height.t6-static": "24px",
|
|
64
|
+
"$line-height.t7-static": "27px",
|
|
65
|
+
"$line-height.t8-static": "30px",
|
|
66
|
+
"$line-height.t9-static": "32px",
|
|
67
|
+
"$line-height.t10-static": "35px",
|
|
68
|
+
"$radius.r0_5": "2px",
|
|
69
|
+
"$radius.r1": "4px",
|
|
70
|
+
"$radius.r1_5": "6px",
|
|
71
|
+
"$radius.r2": "8px",
|
|
72
|
+
"$radius.r2_5": "10px",
|
|
73
|
+
"$radius.r3": "12px",
|
|
74
|
+
"$radius.r3_5": "14px",
|
|
75
|
+
"$radius.r4": "16px",
|
|
76
|
+
"$radius.r5": "20px",
|
|
77
|
+
"$radius.r6": "24px",
|
|
78
|
+
"$radius.full": "9999px"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type DimensionTokenId, getDimensionValue } from "./getDimensionValue";
|
|
2
|
+
import { vars } from "./vars";
|
|
3
|
+
|
|
4
|
+
type TypographyTokenId =
|
|
5
|
+
Extract<
|
|
6
|
+
DimensionTokenId,
|
|
7
|
+
`$font-size.${string}`
|
|
8
|
+
> extends `$font-size.${infer U}`
|
|
9
|
+
? U
|
|
10
|
+
: never;
|
|
11
|
+
|
|
12
|
+
export function typography(
|
|
13
|
+
tokenId: TypographyTokenId,
|
|
14
|
+
weight: "regular" | "medium" | "bold",
|
|
15
|
+
) {
|
|
16
|
+
const fontSize = getDimensionValue(`$font-size.${tokenId}`);
|
|
17
|
+
const lineHeight = getDimensionValue(`$line-height.${tokenId}`);
|
|
18
|
+
const fontWeight = vars.$fontWeight[weight];
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
fontSize,
|
|
22
|
+
lineHeight,
|
|
23
|
+
fontWeight,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// Color Palette
|
|
2
|
+
export const palette = {
|
|
3
|
+
blue100: "var(--seed-color-palette-blue-100)",
|
|
4
|
+
blue200: "var(--seed-color-palette-blue-200)",
|
|
5
|
+
blue300: "var(--seed-color-palette-blue-300)",
|
|
6
|
+
blue400: "var(--seed-color-palette-blue-400)",
|
|
7
|
+
blue500: "var(--seed-color-palette-blue-500)",
|
|
8
|
+
blue600: "var(--seed-color-palette-blue-600)",
|
|
9
|
+
blue700: "var(--seed-color-palette-blue-700)",
|
|
10
|
+
blue800: "var(--seed-color-palette-blue-800)",
|
|
11
|
+
blue900: "var(--seed-color-palette-blue-900)",
|
|
12
|
+
blue1000: "var(--seed-color-palette-blue-1000)",
|
|
13
|
+
|
|
14
|
+
carrot100: "var(--seed-color-palette-carrot-100)",
|
|
15
|
+
carrot200: "var(--seed-color-palette-carrot-200)",
|
|
16
|
+
carrot300: "var(--seed-color-palette-carrot-300)",
|
|
17
|
+
carrot400: "var(--seed-color-palette-carrot-400)",
|
|
18
|
+
carrot500: "var(--seed-color-palette-carrot-500)",
|
|
19
|
+
carrot600: "var(--seed-color-palette-carrot-600)",
|
|
20
|
+
carrot700: "var(--seed-color-palette-carrot-700)",
|
|
21
|
+
carrot800: "var(--seed-color-palette-carrot-800)",
|
|
22
|
+
carrot900: "var(--seed-color-palette-carrot-900)",
|
|
23
|
+
carrot1000: "var(--seed-color-palette-carrot-1000)",
|
|
24
|
+
|
|
25
|
+
gray00: "var(--seed-color-palette-gray-00)",
|
|
26
|
+
gray100: "var(--seed-color-palette-gray-100)",
|
|
27
|
+
gray200: "var(--seed-color-palette-gray-200)",
|
|
28
|
+
gray300: "var(--seed-color-palette-gray-300)",
|
|
29
|
+
gray400: "var(--seed-color-palette-gray-400)",
|
|
30
|
+
gray500: "var(--seed-color-palette-gray-500)",
|
|
31
|
+
gray600: "var(--seed-color-palette-gray-600)",
|
|
32
|
+
gray700: "var(--seed-color-palette-gray-700)",
|
|
33
|
+
gray800: "var(--seed-color-palette-gray-800)",
|
|
34
|
+
gray900: "var(--seed-color-palette-gray-900)",
|
|
35
|
+
gray1000: "var(--seed-color-palette-gray-1000)",
|
|
36
|
+
|
|
37
|
+
green100: "var(--seed-color-palette-green-100)",
|
|
38
|
+
green200: "var(--seed-color-palette-green-200)",
|
|
39
|
+
green300: "var(--seed-color-palette-green-300)",
|
|
40
|
+
green400: "var(--seed-color-palette-green-400)",
|
|
41
|
+
green500: "var(--seed-color-palette-green-500)",
|
|
42
|
+
green600: "var(--seed-color-palette-green-600)",
|
|
43
|
+
green700: "var(--seed-color-palette-green-700)",
|
|
44
|
+
green800: "var(--seed-color-palette-green-800)",
|
|
45
|
+
green900: "var(--seed-color-palette-green-900)",
|
|
46
|
+
green1000: "var(--seed-color-palette-green-1000)",
|
|
47
|
+
|
|
48
|
+
purple100: "var(--seed-color-palette-purple-100)",
|
|
49
|
+
purple200: "var(--seed-color-palette-purple-200)",
|
|
50
|
+
purple300: "var(--seed-color-palette-purple-300)",
|
|
51
|
+
purple400: "var(--seed-color-palette-purple-400)",
|
|
52
|
+
purple500: "var(--seed-color-palette-purple-500)",
|
|
53
|
+
purple600: "var(--seed-color-palette-purple-600)",
|
|
54
|
+
purple700: "var(--seed-color-palette-purple-700)",
|
|
55
|
+
purple800: "var(--seed-color-palette-purple-800)",
|
|
56
|
+
purple900: "var(--seed-color-palette-purple-900)",
|
|
57
|
+
purple1000: "var(--seed-color-palette-purple-1000)",
|
|
58
|
+
|
|
59
|
+
red100: "var(--seed-color-palette-red-100)",
|
|
60
|
+
red200: "var(--seed-color-palette-red-200)",
|
|
61
|
+
red300: "var(--seed-color-palette-red-300)",
|
|
62
|
+
red400: "var(--seed-color-palette-red-400)",
|
|
63
|
+
red500: "var(--seed-color-palette-red-500)",
|
|
64
|
+
red600: "var(--seed-color-palette-red-600)",
|
|
65
|
+
red700: "var(--seed-color-palette-red-700)",
|
|
66
|
+
red800: "var(--seed-color-palette-red-800)",
|
|
67
|
+
red900: "var(--seed-color-palette-red-900)",
|
|
68
|
+
red1000: "var(--seed-color-palette-red-1000)",
|
|
69
|
+
|
|
70
|
+
staticBlack: "var(--seed-color-palette-static-black)",
|
|
71
|
+
staticWhite: "var(--seed-color-palette-static-white)",
|
|
72
|
+
staticBlackAlpha100: "var(--seed-color-palette-static-black-alpha-100)",
|
|
73
|
+
staticBlackAlpha200: "var(--seed-color-palette-static-black-alpha-200)",
|
|
74
|
+
staticBlackAlpha300: "var(--seed-color-palette-static-black-alpha-300)",
|
|
75
|
+
staticBlackAlpha400: "var(--seed-color-palette-static-black-alpha-400)",
|
|
76
|
+
staticBlackAlpha500: "var(--seed-color-palette-static-black-alpha-500)",
|
|
77
|
+
staticBlackAlpha600: "var(--seed-color-palette-static-black-alpha-600)",
|
|
78
|
+
staticBlackAlpha700: "var(--seed-color-palette-static-black-alpha-700)",
|
|
79
|
+
staticBlackAlpha800: "var(--seed-color-palette-static-black-alpha-800)",
|
|
80
|
+
staticBlackAlpha900: "var(--seed-color-palette-static-black-alpha-900)",
|
|
81
|
+
staticBlackAlpha1000: "var(--seed-color-palette-static-black-alpha-1000)",
|
|
82
|
+
staticWhiteAlpha50: "var(--seed-color-palette-static-white-alpha-50)",
|
|
83
|
+
staticWhiteAlpha100: "var(--seed-color-palette-static-white-alpha-100)",
|
|
84
|
+
staticWhiteAlpha200: "var(--seed-color-palette-static-white-alpha-200)",
|
|
85
|
+
staticWhiteAlpha300: "var(--seed-color-palette-static-white-alpha-300)",
|
|
86
|
+
staticWhiteAlpha400: "var(--seed-color-palette-static-white-alpha-400)",
|
|
87
|
+
staticWhiteAlpha500: "var(--seed-color-palette-static-white-alpha-500)",
|
|
88
|
+
staticWhiteAlpha600: "var(--seed-color-palette-static-white-alpha-600)",
|
|
89
|
+
staticWhiteAlpha700: "var(--seed-color-palette-static-white-alpha-700)",
|
|
90
|
+
staticWhiteAlpha800: "var(--seed-color-palette-static-white-alpha-800)",
|
|
91
|
+
staticWhiteAlpha900: "var(--seed-color-palette-static-white-alpha-900)",
|
|
92
|
+
staticWhiteAlpha1000: "var(--seed-color-palette-static-white-alpha-1000)",
|
|
93
|
+
|
|
94
|
+
yellow100: "var(--seed-color-palette-yellow-100)",
|
|
95
|
+
yellow200: "var(--seed-color-palette-yellow-200)",
|
|
96
|
+
yellow300: "var(--seed-color-palette-yellow-300)",
|
|
97
|
+
yellow400: "var(--seed-color-palette-yellow-400)",
|
|
98
|
+
yellow500: "var(--seed-color-palette-yellow-500)",
|
|
99
|
+
yellow600: "var(--seed-color-palette-yellow-600)",
|
|
100
|
+
yellow700: "var(--seed-color-palette-yellow-700)",
|
|
101
|
+
yellow800: "var(--seed-color-palette-yellow-800)",
|
|
102
|
+
yellow900: "var(--seed-color-palette-yellow-900)",
|
|
103
|
+
yellow1000: "var(--seed-color-palette-yellow-1000)",
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// Foreground Colors
|
|
107
|
+
export const fg = {
|
|
108
|
+
neutral: "var(--seed-color-fg-neutral)",
|
|
109
|
+
placeholder: "var(--seed-color-fg-placeholder)",
|
|
110
|
+
disabled: "var(--seed-color-fg-disabled)",
|
|
111
|
+
brand: "var(--seed-color-fg-brand)",
|
|
112
|
+
informative: "var(--seed-color-fg-informative)",
|
|
113
|
+
critical: "var(--seed-color-fg-critical)",
|
|
114
|
+
positive: "var(--seed-color-fg-positive)",
|
|
115
|
+
warning: "var(--seed-color-fg-warning)",
|
|
116
|
+
brandContrast: "var(--seed-color-fg-brand-contrast)",
|
|
117
|
+
criticalContrast: "var(--seed-color-fg-critical-contrast)",
|
|
118
|
+
informativeContrast: "var(--seed-color-fg-informative-contrast)",
|
|
119
|
+
neutralMuted: "var(--seed-color-fg-neutral-muted)",
|
|
120
|
+
neutralSubtle: "var(--seed-color-fg-neutral-subtle)",
|
|
121
|
+
neutralInverted: "var(--seed-color-fg-neutral-inverted)",
|
|
122
|
+
positiveContrast: "var(--seed-color-fg-positive-contrast)",
|
|
123
|
+
warningContrast: "var(--seed-color-fg-warning-contrast)",
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// Background Colors
|
|
127
|
+
export const bg = {
|
|
128
|
+
overlay: "var(--seed-color-bg-overlay)",
|
|
129
|
+
disabled: "var(--seed-color-bg-disabled)",
|
|
130
|
+
brandWeak: "var(--seed-color-bg-brand-weak)",
|
|
131
|
+
brandSolid: "var(--seed-color-bg-brand-solid)",
|
|
132
|
+
brandSolidPressed: "var(--seed-color-bg-brand-solid-pressed)",
|
|
133
|
+
brandWeakPressed: "var(--seed-color-bg-brand-weak-pressed)",
|
|
134
|
+
criticalWeak: "var(--seed-color-bg-critical-weak)",
|
|
135
|
+
criticalSolid: "var(--seed-color-bg-critical-solid)",
|
|
136
|
+
criticalSolidPressed: "var(--seed-color-bg-critical-solid-pressed)",
|
|
137
|
+
criticalWeakPressed: "var(--seed-color-bg-critical-weak-pressed)",
|
|
138
|
+
informativeWeak: "var(--seed-color-bg-informative-weak)",
|
|
139
|
+
informativeSolid: "var(--seed-color-bg-informative-solid)",
|
|
140
|
+
informativeSolidPressed: "var(--seed-color-bg-informative-solid-pressed)",
|
|
141
|
+
informativeWeakPressed: "var(--seed-color-bg-informative-weak-pressed)",
|
|
142
|
+
layerBasement: "var(--seed-color-bg-layer-basement)",
|
|
143
|
+
layerDefault: "var(--seed-color-bg-layer-default)",
|
|
144
|
+
layerFill: "var(--seed-color-bg-layer-fill)",
|
|
145
|
+
layerFloating: "var(--seed-color-bg-layer-floating)",
|
|
146
|
+
layerDefaultPressed: "var(--seed-color-bg-layer-default-pressed)",
|
|
147
|
+
layerFloatingPressed: "var(--seed-color-bg-layer-floating-pressed)",
|
|
148
|
+
magicWeak: "var(--seed-color-bg-magic-weak)",
|
|
149
|
+
neutralWeak: "var(--seed-color-bg-neutral-weak)",
|
|
150
|
+
neutralInverted: "var(--seed-color-bg-neutral-inverted)",
|
|
151
|
+
neutralSolid: "var(--seed-color-bg-neutral-solid)",
|
|
152
|
+
neutralInvertedPressed: "var(--seed-color-bg-neutral-inverted-pressed)",
|
|
153
|
+
neutralSolidMuted: "var(--seed-color-bg-neutral-solid-muted)",
|
|
154
|
+
neutralSolidMutedPressed: "var(--seed-color-bg-neutral-solid-muted-pressed)",
|
|
155
|
+
neutralWeakPressed: "var(--seed-color-bg-neutral-weak-pressed)",
|
|
156
|
+
overlayMuted: "var(--seed-color-bg-overlay-muted)",
|
|
157
|
+
positiveWeak: "var(--seed-color-bg-positive-weak)",
|
|
158
|
+
positiveSolid: "var(--seed-color-bg-positive-solid)",
|
|
159
|
+
positiveSolidPressed: "var(--seed-color-bg-positive-solid-pressed)",
|
|
160
|
+
positiveWeakPressed: "var(--seed-color-bg-positive-weak-pressed)",
|
|
161
|
+
warningWeak: "var(--seed-color-bg-warning-weak)",
|
|
162
|
+
warningSolid: "var(--seed-color-bg-warning-solid)",
|
|
163
|
+
warningSolidPressed: "var(--seed-color-bg-warning-solid-pressed)",
|
|
164
|
+
warningWeakPressed: "var(--seed-color-bg-warning-weak-pressed)",
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Stroke Colors
|
|
168
|
+
export const stroke = {
|
|
169
|
+
brandWeak: "var(--seed-color-stroke-brand-weak)",
|
|
170
|
+
brandSolid: "var(--seed-color-stroke-brand-solid)",
|
|
171
|
+
criticalWeak: "var(--seed-color-stroke-critical-weak)",
|
|
172
|
+
criticalSolid: "var(--seed-color-stroke-critical-solid)",
|
|
173
|
+
informativeWeak: "var(--seed-color-stroke-informative-weak)",
|
|
174
|
+
informativeSolid: "var(--seed-color-stroke-informative-solid)",
|
|
175
|
+
neutralContrast: "var(--seed-color-stroke-neutral-contrast)",
|
|
176
|
+
neutralSolid: "var(--seed-color-stroke-neutral-solid)",
|
|
177
|
+
neutralWeak: "var(--seed-color-stroke-neutral-weak)",
|
|
178
|
+
neutralMuted: "var(--seed-color-stroke-neutral-muted)",
|
|
179
|
+
neutralSubtle: "var(--seed-color-stroke-neutral-subtle)",
|
|
180
|
+
positiveWeak: "var(--seed-color-stroke-positive-weak)",
|
|
181
|
+
positiveSolid: "var(--seed-color-stroke-positive-solid)",
|
|
182
|
+
warningWeak: "var(--seed-color-stroke-warning-weak)",
|
|
183
|
+
warningSolid: "var(--seed-color-stroke-warning-solid)",
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
// Manner Temp Colors
|
|
187
|
+
export const mannerTemp = {
|
|
188
|
+
l1: {
|
|
189
|
+
text: "var(--seed-color-manner-temp-l1-text)",
|
|
190
|
+
bg: "var(--seed-color-manner-temp-l1-bg)",
|
|
191
|
+
},
|
|
192
|
+
l2: {
|
|
193
|
+
text: "var(--seed-color-manner-temp-l2-text)",
|
|
194
|
+
bg: "var(--seed-color-manner-temp-l2-bg)",
|
|
195
|
+
},
|
|
196
|
+
l3: {
|
|
197
|
+
text: "var(--seed-color-manner-temp-l3-text)",
|
|
198
|
+
bg: "var(--seed-color-manner-temp-l3-bg)",
|
|
199
|
+
},
|
|
200
|
+
l4: {
|
|
201
|
+
text: "var(--seed-color-manner-temp-l4-text)",
|
|
202
|
+
bg: "var(--seed-color-manner-temp-l4-bg)",
|
|
203
|
+
},
|
|
204
|
+
l5: {
|
|
205
|
+
text: "var(--seed-color-manner-temp-l5-text)",
|
|
206
|
+
bg: "var(--seed-color-manner-temp-l5-bg)",
|
|
207
|
+
},
|
|
208
|
+
l6: {
|
|
209
|
+
text: "var(--seed-color-manner-temp-l6-text)",
|
|
210
|
+
bg: "var(--seed-color-manner-temp-l6-bg)",
|
|
211
|
+
},
|
|
212
|
+
l7: {
|
|
213
|
+
text: "var(--seed-color-manner-temp-l7-text)",
|
|
214
|
+
bg: "var(--seed-color-manner-temp-l7-bg)",
|
|
215
|
+
},
|
|
216
|
+
l8: {
|
|
217
|
+
text: "var(--seed-color-manner-temp-l8-text)",
|
|
218
|
+
bg: "var(--seed-color-manner-temp-l8-bg)",
|
|
219
|
+
},
|
|
220
|
+
l9: {
|
|
221
|
+
text: "var(--seed-color-manner-temp-l9-text)",
|
|
222
|
+
bg: "var(--seed-color-manner-temp-l9-bg)",
|
|
223
|
+
},
|
|
224
|
+
l10: {
|
|
225
|
+
text: "var(--seed-color-manner-temp-l10-text)",
|
|
226
|
+
bg: "var(--seed-color-manner-temp-l10-bg)",
|
|
227
|
+
},
|
|
228
|
+
};
|