@krpkg/ui 0.0.0-stage → 0.3.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 +138 -2
- package/assets/android-background-alley.svg +3 -0
- package/assets/android-background-clean.svg +3 -0
- package/assets/android-background-default.svg +3 -0
- package/assets/android-background-mono.svg +3 -0
- package/assets/android-background-teal.svg +3 -0
- package/assets/android-foreground-alley.svg +3 -0
- package/assets/android-foreground-clean.svg +3 -0
- package/assets/android-foreground-default.svg +3 -0
- package/assets/android-foreground-mono.svg +3 -0
- package/assets/android-foreground-teal.svg +3 -0
- package/assets/android-icon-background.png +0 -0
- package/assets/android-icon-foreground.png +0 -0
- package/assets/android-icon-monochrome.png +0 -0
- package/assets/apple-touch-icon-120x120.png +0 -0
- package/assets/apple-touch-icon-152x152.png +0 -0
- package/assets/apple-touch-icon-167x167.png +0 -0
- package/assets/apple-touch-icon-180x180.png +0 -0
- package/assets/apple-touch-icon.png +0 -0
- package/assets/favicon-128x128.png +0 -0
- package/assets/favicon-16x16.png +0 -0
- package/assets/favicon-32x32.png +0 -0
- package/assets/favicon-48x48.png +0 -0
- package/assets/favicon-64x64.png +0 -0
- package/assets/favicon-96x96.png +0 -0
- package/assets/favicon.ico +0 -0
- package/assets/favicon.png +0 -0
- package/assets/favicon.svg +11 -0
- package/assets/icon-alley.png +0 -0
- package/assets/icon-teal.png +0 -0
- package/assets/icon.png +0 -0
- package/assets/logo-alley.svg +11 -0
- package/assets/logo-badge.svg +11 -0
- package/assets/logo-clean.svg +11 -0
- package/assets/logo-default.svg +11 -0
- package/assets/logo-icon.svg +3 -0
- package/assets/logo-mono.svg +11 -0
- package/assets/logo-teal.svg +11 -0
- package/assets/logo.svg +3 -0
- package/assets/pwa-192x192.png +0 -0
- package/assets/pwa-256x256.png +0 -0
- package/assets/pwa-384x384.png +0 -0
- package/assets/pwa-512x512.png +0 -0
- package/assets/pwa-maskable-192x192.png +0 -0
- package/assets/pwa-maskable-512x512.png +0 -0
- package/assets/splash-icon.png +0 -0
- package/dist/chunk-HAD2NPEW.mjs +155 -0
- package/dist/chunk-HAD2NPEW.mjs.map +1 -0
- package/dist/chunk-ZJSL4I3W.mjs +38 -0
- package/dist/chunk-ZJSL4I3W.mjs.map +1 -0
- package/dist/index.css +2053 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +245 -0
- package/dist/index.d.ts +245 -0
- package/dist/index.js +1331 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1110 -0
- package/dist/index.mjs.map +1 -0
- package/dist/native.d.mts +51 -0
- package/dist/native.d.ts +51 -0
- package/dist/native.js +514 -0
- package/dist/native.js.map +1 -0
- package/dist/native.mjs +431 -0
- package/dist/native.mjs.map +1 -0
- package/dist/tokens.d.mts +183 -0
- package/dist/tokens.d.ts +183 -0
- package/dist/tokens.js +185 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tokens.mjs +19 -0
- package/dist/tokens.mjs.map +1 -0
- package/dist/utils.d.mts +13 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.js +65 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +9 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +71 -4
package/dist/native.mjs
ADDED
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import {
|
|
2
|
+
borderRadius,
|
|
3
|
+
colors,
|
|
4
|
+
spacing
|
|
5
|
+
} from "./chunk-HAD2NPEW.mjs";
|
|
6
|
+
|
|
7
|
+
// src/native/Button.tsx
|
|
8
|
+
import {
|
|
9
|
+
Pressable,
|
|
10
|
+
Text,
|
|
11
|
+
StyleSheet
|
|
12
|
+
} from "react-native";
|
|
13
|
+
import { jsx } from "react/jsx-runtime";
|
|
14
|
+
function Button({
|
|
15
|
+
label,
|
|
16
|
+
variant = "outline",
|
|
17
|
+
size = "md",
|
|
18
|
+
style,
|
|
19
|
+
textStyle,
|
|
20
|
+
disabled,
|
|
21
|
+
...props
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
Pressable,
|
|
25
|
+
{
|
|
26
|
+
disabled,
|
|
27
|
+
style: ({ pressed }) => [
|
|
28
|
+
styles.base,
|
|
29
|
+
styles[variant],
|
|
30
|
+
styles[`size_${size}`],
|
|
31
|
+
pressed && !disabled && styles.pressed,
|
|
32
|
+
disabled && styles.disabled,
|
|
33
|
+
style
|
|
34
|
+
],
|
|
35
|
+
...props,
|
|
36
|
+
children: /* @__PURE__ */ jsx(
|
|
37
|
+
Text,
|
|
38
|
+
{
|
|
39
|
+
style: [
|
|
40
|
+
styles.text,
|
|
41
|
+
styles[`text_${variant}`],
|
|
42
|
+
styles[`textSize_${size}`],
|
|
43
|
+
disabled && styles.textDisabled,
|
|
44
|
+
textStyle
|
|
45
|
+
],
|
|
46
|
+
children: label
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
var styles = StyleSheet.create({
|
|
53
|
+
base: {
|
|
54
|
+
borderRadius: borderRadius.sm,
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
justifyContent: "center",
|
|
57
|
+
flexDirection: "row"
|
|
58
|
+
},
|
|
59
|
+
size_sm: {
|
|
60
|
+
paddingVertical: spacing.xs,
|
|
61
|
+
paddingHorizontal: spacing.sm
|
|
62
|
+
},
|
|
63
|
+
size_md: {
|
|
64
|
+
paddingVertical: spacing.sm,
|
|
65
|
+
paddingHorizontal: spacing.lg
|
|
66
|
+
},
|
|
67
|
+
size_lg: {
|
|
68
|
+
paddingVertical: spacing.md,
|
|
69
|
+
paddingHorizontal: spacing.xl
|
|
70
|
+
},
|
|
71
|
+
primary: {
|
|
72
|
+
backgroundColor: colors.accent
|
|
73
|
+
},
|
|
74
|
+
outline: {
|
|
75
|
+
borderWidth: 1,
|
|
76
|
+
borderColor: colors.accent,
|
|
77
|
+
backgroundColor: "transparent"
|
|
78
|
+
},
|
|
79
|
+
ghost: {
|
|
80
|
+
backgroundColor: "transparent"
|
|
81
|
+
},
|
|
82
|
+
danger: {
|
|
83
|
+
backgroundColor: colors.danger
|
|
84
|
+
},
|
|
85
|
+
pressed: {
|
|
86
|
+
opacity: 0.75
|
|
87
|
+
},
|
|
88
|
+
disabled: {
|
|
89
|
+
opacity: 0.4
|
|
90
|
+
},
|
|
91
|
+
text: {
|
|
92
|
+
fontFamily: "monospace",
|
|
93
|
+
fontWeight: "600"
|
|
94
|
+
},
|
|
95
|
+
textSize_sm: {
|
|
96
|
+
fontSize: 12
|
|
97
|
+
},
|
|
98
|
+
textSize_md: {
|
|
99
|
+
fontSize: 14
|
|
100
|
+
},
|
|
101
|
+
textSize_lg: {
|
|
102
|
+
fontSize: 16
|
|
103
|
+
},
|
|
104
|
+
text_primary: {
|
|
105
|
+
color: colors.bg0
|
|
106
|
+
},
|
|
107
|
+
text_outline: {
|
|
108
|
+
color: colors.accent
|
|
109
|
+
},
|
|
110
|
+
text_ghost: {
|
|
111
|
+
color: colors.text0
|
|
112
|
+
},
|
|
113
|
+
text_danger: {
|
|
114
|
+
color: "#ffffff"
|
|
115
|
+
},
|
|
116
|
+
textDisabled: {
|
|
117
|
+
color: colors.textMuted
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// src/native/BracketCard.tsx
|
|
122
|
+
import { View, StyleSheet as StyleSheet2 } from "react-native";
|
|
123
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
124
|
+
function BracketCard({
|
|
125
|
+
active = false,
|
|
126
|
+
style,
|
|
127
|
+
children,
|
|
128
|
+
...props
|
|
129
|
+
}) {
|
|
130
|
+
return /* @__PURE__ */ jsxs(
|
|
131
|
+
View,
|
|
132
|
+
{
|
|
133
|
+
style: [
|
|
134
|
+
styles2.card,
|
|
135
|
+
active && styles2.active,
|
|
136
|
+
style
|
|
137
|
+
],
|
|
138
|
+
...props,
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ jsx2(View, { style: [styles2.corner, styles2.cornerTL, active && styles2.cornerActive] }),
|
|
141
|
+
/* @__PURE__ */ jsx2(View, { style: [styles2.corner, styles2.cornerTR, active && styles2.cornerActive] }),
|
|
142
|
+
/* @__PURE__ */ jsx2(View, { style: [styles2.corner, styles2.cornerBL, active && styles2.cornerActive] }),
|
|
143
|
+
/* @__PURE__ */ jsx2(View, { style: [styles2.corner, styles2.cornerBR, active && styles2.cornerActive] }),
|
|
144
|
+
children
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
var styles2 = StyleSheet2.create({
|
|
150
|
+
card: {
|
|
151
|
+
backgroundColor: colors.bgCard,
|
|
152
|
+
borderWidth: 1,
|
|
153
|
+
borderColor: colors.borderSubtle,
|
|
154
|
+
borderRadius: borderRadius.md,
|
|
155
|
+
padding: spacing.md,
|
|
156
|
+
position: "relative"
|
|
157
|
+
},
|
|
158
|
+
active: {
|
|
159
|
+
borderColor: colors.accent
|
|
160
|
+
},
|
|
161
|
+
corner: {
|
|
162
|
+
position: "absolute",
|
|
163
|
+
width: 6,
|
|
164
|
+
height: 6,
|
|
165
|
+
borderColor: colors.textDim
|
|
166
|
+
},
|
|
167
|
+
cornerActive: {
|
|
168
|
+
borderColor: colors.accent
|
|
169
|
+
},
|
|
170
|
+
cornerTL: {
|
|
171
|
+
top: -1,
|
|
172
|
+
left: -1,
|
|
173
|
+
borderTopWidth: 2,
|
|
174
|
+
borderLeftWidth: 2
|
|
175
|
+
},
|
|
176
|
+
cornerTR: {
|
|
177
|
+
top: -1,
|
|
178
|
+
right: -1,
|
|
179
|
+
borderTopWidth: 2,
|
|
180
|
+
borderRightWidth: 2
|
|
181
|
+
},
|
|
182
|
+
cornerBL: {
|
|
183
|
+
bottom: -1,
|
|
184
|
+
left: -1,
|
|
185
|
+
borderBottomWidth: 2,
|
|
186
|
+
borderLeftWidth: 2
|
|
187
|
+
},
|
|
188
|
+
cornerBR: {
|
|
189
|
+
bottom: -1,
|
|
190
|
+
right: -1,
|
|
191
|
+
borderBottomWidth: 2,
|
|
192
|
+
borderRightWidth: 2
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
// src/native/Badge.tsx
|
|
197
|
+
import { View as View2, Text as Text2, StyleSheet as StyleSheet3 } from "react-native";
|
|
198
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
199
|
+
function Badge({ label, variant = "default", style }) {
|
|
200
|
+
return /* @__PURE__ */ jsx3(View2, { style: [styles3.badge, styles3[variant], style], children: /* @__PURE__ */ jsx3(Text2, { style: [styles3.text, styles3[`text_${variant}`]], children: label }) });
|
|
201
|
+
}
|
|
202
|
+
var styles3 = StyleSheet3.create({
|
|
203
|
+
badge: {
|
|
204
|
+
paddingHorizontal: spacing.sm,
|
|
205
|
+
paddingVertical: 2,
|
|
206
|
+
borderRadius: borderRadius.sm,
|
|
207
|
+
alignSelf: "flex-start"
|
|
208
|
+
},
|
|
209
|
+
default: {
|
|
210
|
+
backgroundColor: colors.borderSubtle
|
|
211
|
+
},
|
|
212
|
+
accent: {
|
|
213
|
+
backgroundColor: colors.accentDim,
|
|
214
|
+
borderWidth: 1,
|
|
215
|
+
borderColor: colors.accent
|
|
216
|
+
},
|
|
217
|
+
teal: {
|
|
218
|
+
backgroundColor: colors.tealDim,
|
|
219
|
+
borderWidth: 1,
|
|
220
|
+
borderColor: colors.teal
|
|
221
|
+
},
|
|
222
|
+
purple: {
|
|
223
|
+
backgroundColor: "rgba(168, 85, 247, 0.15)",
|
|
224
|
+
borderWidth: 1,
|
|
225
|
+
borderColor: colors.purple
|
|
226
|
+
},
|
|
227
|
+
outline: {
|
|
228
|
+
borderWidth: 1,
|
|
229
|
+
borderColor: colors.borderLight,
|
|
230
|
+
backgroundColor: "transparent"
|
|
231
|
+
},
|
|
232
|
+
text: {
|
|
233
|
+
fontSize: 11,
|
|
234
|
+
fontFamily: "monospace",
|
|
235
|
+
fontWeight: "700",
|
|
236
|
+
textTransform: "uppercase"
|
|
237
|
+
},
|
|
238
|
+
text_default: {
|
|
239
|
+
color: colors.text1
|
|
240
|
+
},
|
|
241
|
+
text_accent: {
|
|
242
|
+
color: colors.accent
|
|
243
|
+
},
|
|
244
|
+
text_teal: {
|
|
245
|
+
color: colors.teal
|
|
246
|
+
},
|
|
247
|
+
text_purple: {
|
|
248
|
+
color: colors.purple
|
|
249
|
+
},
|
|
250
|
+
text_outline: {
|
|
251
|
+
color: colors.textDim
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// src/native/Dot.tsx
|
|
256
|
+
import { View as View3, StyleSheet as StyleSheet4 } from "react-native";
|
|
257
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
258
|
+
function Dot({ color = "accent", size = 6, style }) {
|
|
259
|
+
const colorMap = {
|
|
260
|
+
accent: colors.accent,
|
|
261
|
+
green: colors.success,
|
|
262
|
+
red: colors.danger,
|
|
263
|
+
teal: colors.teal,
|
|
264
|
+
purple: colors.purple
|
|
265
|
+
};
|
|
266
|
+
return /* @__PURE__ */ jsx4(
|
|
267
|
+
View3,
|
|
268
|
+
{
|
|
269
|
+
style: [
|
|
270
|
+
styles4.dot,
|
|
271
|
+
{
|
|
272
|
+
width: size,
|
|
273
|
+
height: size,
|
|
274
|
+
borderRadius: size / 2,
|
|
275
|
+
backgroundColor: colorMap[color]
|
|
276
|
+
},
|
|
277
|
+
style
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
var styles4 = StyleSheet4.create({
|
|
283
|
+
dot: {
|
|
284
|
+
alignSelf: "center"
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
// src/native/TechLabel.tsx
|
|
289
|
+
import { View as View4, Text as Text3, StyleSheet as StyleSheet5 } from "react-native";
|
|
290
|
+
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
291
|
+
function TechLabel({ label, jp, coord, style }) {
|
|
292
|
+
return /* @__PURE__ */ jsxs2(View4, { style: [styles5.container, style], children: [
|
|
293
|
+
/* @__PURE__ */ jsx5(Text3, { style: styles5.label, children: label }),
|
|
294
|
+
jp && /* @__PURE__ */ jsx5(Text3, { style: styles5.jp, children: jp }),
|
|
295
|
+
coord && /* @__PURE__ */ jsxs2(Text3, { style: styles5.coord, children: [
|
|
296
|
+
"[",
|
|
297
|
+
coord,
|
|
298
|
+
"]"
|
|
299
|
+
] })
|
|
300
|
+
] });
|
|
301
|
+
}
|
|
302
|
+
var styles5 = StyleSheet5.create({
|
|
303
|
+
container: {
|
|
304
|
+
flexDirection: "row",
|
|
305
|
+
alignItems: "center",
|
|
306
|
+
gap: spacing.xs
|
|
307
|
+
},
|
|
308
|
+
label: {
|
|
309
|
+
fontFamily: "monospace",
|
|
310
|
+
fontSize: 12,
|
|
311
|
+
color: colors.text0,
|
|
312
|
+
fontWeight: "700",
|
|
313
|
+
letterSpacing: 0.5
|
|
314
|
+
},
|
|
315
|
+
jp: {
|
|
316
|
+
fontSize: 11,
|
|
317
|
+
color: colors.text2
|
|
318
|
+
},
|
|
319
|
+
coord: {
|
|
320
|
+
fontFamily: "monospace",
|
|
321
|
+
fontSize: 10,
|
|
322
|
+
color: colors.accent
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
// src/native/CyberSwitch.tsx
|
|
327
|
+
import { View as View5, Text as Text4, Pressable as Pressable2, StyleSheet as StyleSheet6 } from "react-native";
|
|
328
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
329
|
+
function CyberSwitch({
|
|
330
|
+
checked,
|
|
331
|
+
onChange,
|
|
332
|
+
label,
|
|
333
|
+
sublabel,
|
|
334
|
+
disabled = false,
|
|
335
|
+
style
|
|
336
|
+
}) {
|
|
337
|
+
return /* @__PURE__ */ jsxs3(
|
|
338
|
+
Pressable2,
|
|
339
|
+
{
|
|
340
|
+
disabled,
|
|
341
|
+
onPress: () => onChange(!checked),
|
|
342
|
+
style: [styles6.container, disabled && styles6.disabled, style],
|
|
343
|
+
children: [
|
|
344
|
+
/* @__PURE__ */ jsxs3(View5, { style: [styles6.track, checked && styles6.trackChecked], children: [
|
|
345
|
+
/* @__PURE__ */ jsx6(Text4, { style: [styles6.bitText, styles6.bitLeft], children: checked ? "1" : "" }),
|
|
346
|
+
/* @__PURE__ */ jsx6(View5, { style: [styles6.thumb, checked ? styles6.thumbChecked : styles6.thumbUnchecked] }),
|
|
347
|
+
/* @__PURE__ */ jsx6(Text4, { style: [styles6.bitText, styles6.bitRight], children: !checked ? "0" : "" })
|
|
348
|
+
] }),
|
|
349
|
+
(label || sublabel) && /* @__PURE__ */ jsxs3(View5, { style: styles6.textGroup, children: [
|
|
350
|
+
label && /* @__PURE__ */ jsx6(Text4, { style: styles6.label, children: label }),
|
|
351
|
+
sublabel && /* @__PURE__ */ jsx6(Text4, { style: styles6.sublabel, children: sublabel })
|
|
352
|
+
] })
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
var styles6 = StyleSheet6.create({
|
|
358
|
+
container: {
|
|
359
|
+
flexDirection: "row",
|
|
360
|
+
alignItems: "center",
|
|
361
|
+
gap: spacing.sm
|
|
362
|
+
},
|
|
363
|
+
disabled: {
|
|
364
|
+
opacity: 0.4
|
|
365
|
+
},
|
|
366
|
+
track: {
|
|
367
|
+
width: 48,
|
|
368
|
+
height: 24,
|
|
369
|
+
borderRadius: borderRadius.sm,
|
|
370
|
+
backgroundColor: colors.bg1,
|
|
371
|
+
borderWidth: 1,
|
|
372
|
+
borderColor: colors.border,
|
|
373
|
+
flexDirection: "row",
|
|
374
|
+
alignItems: "center",
|
|
375
|
+
justifyContent: "space-between",
|
|
376
|
+
paddingHorizontal: 3,
|
|
377
|
+
position: "relative"
|
|
378
|
+
},
|
|
379
|
+
trackChecked: {
|
|
380
|
+
borderColor: colors.accent,
|
|
381
|
+
backgroundColor: colors.accentDim
|
|
382
|
+
},
|
|
383
|
+
thumb: {
|
|
384
|
+
width: 18,
|
|
385
|
+
height: 18,
|
|
386
|
+
borderRadius: borderRadius.sm - 2,
|
|
387
|
+
backgroundColor: colors.borderLight,
|
|
388
|
+
position: "absolute"
|
|
389
|
+
},
|
|
390
|
+
thumbUnchecked: {
|
|
391
|
+
left: 2
|
|
392
|
+
},
|
|
393
|
+
thumbChecked: {
|
|
394
|
+
right: 2,
|
|
395
|
+
backgroundColor: colors.accent
|
|
396
|
+
},
|
|
397
|
+
bitText: {
|
|
398
|
+
fontFamily: "monospace",
|
|
399
|
+
fontSize: 9,
|
|
400
|
+
fontWeight: "700",
|
|
401
|
+
color: colors.text2
|
|
402
|
+
},
|
|
403
|
+
bitLeft: {
|
|
404
|
+
marginLeft: 3
|
|
405
|
+
},
|
|
406
|
+
bitRight: {
|
|
407
|
+
marginRight: 3
|
|
408
|
+
},
|
|
409
|
+
textGroup: {
|
|
410
|
+
flexDirection: "column"
|
|
411
|
+
},
|
|
412
|
+
label: {
|
|
413
|
+
fontFamily: "monospace",
|
|
414
|
+
fontSize: 13,
|
|
415
|
+
color: colors.text0,
|
|
416
|
+
fontWeight: "600"
|
|
417
|
+
},
|
|
418
|
+
sublabel: {
|
|
419
|
+
fontSize: 11,
|
|
420
|
+
color: colors.text2
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
export {
|
|
424
|
+
Badge,
|
|
425
|
+
BracketCard,
|
|
426
|
+
Button,
|
|
427
|
+
CyberSwitch,
|
|
428
|
+
Dot,
|
|
429
|
+
TechLabel
|
|
430
|
+
};
|
|
431
|
+
//# sourceMappingURL=native.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/native/Button.tsx","../src/native/BracketCard.tsx","../src/native/Badge.tsx","../src/native/Dot.tsx","../src/native/TechLabel.tsx","../src/native/CyberSwitch.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Pressable,\n Text,\n StyleSheet,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport { colors, spacing, borderRadius } from '../tokens';\n\nexport interface NativeButtonProps extends Omit<PressableProps, 'style'> {\n label: string;\n variant?: 'primary' | 'outline' | 'ghost' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n}\n\nexport function Button({\n label,\n variant = 'outline',\n size = 'md',\n style,\n textStyle,\n disabled,\n ...props\n}: NativeButtonProps) {\n return (\n <Pressable\n disabled={disabled}\n style={({ pressed }) => [\n styles.base,\n styles[variant],\n styles[`size_${size}`],\n pressed && !disabled && styles.pressed,\n disabled && styles.disabled,\n style,\n ]}\n {...props}\n >\n <Text\n style={[\n styles.text,\n styles[`text_${variant}`],\n styles[`textSize_${size}`],\n disabled && styles.textDisabled,\n textStyle,\n ]}\n >\n {label}\n </Text>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n borderRadius: borderRadius.sm,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n size_sm: {\n paddingVertical: spacing.xs,\n paddingHorizontal: spacing.sm,\n },\n size_md: {\n paddingVertical: spacing.sm,\n paddingHorizontal: spacing.lg,\n },\n size_lg: {\n paddingVertical: spacing.md,\n paddingHorizontal: spacing.xl,\n },\n primary: {\n backgroundColor: colors.accent,\n },\n outline: {\n borderWidth: 1,\n borderColor: colors.accent,\n backgroundColor: 'transparent',\n },\n ghost: {\n backgroundColor: 'transparent',\n },\n danger: {\n backgroundColor: colors.danger,\n },\n pressed: {\n opacity: 0.75,\n },\n disabled: {\n opacity: 0.4,\n },\n text: {\n fontFamily: 'monospace',\n fontWeight: '600',\n },\n textSize_sm: {\n fontSize: 12,\n },\n textSize_md: {\n fontSize: 14,\n },\n textSize_lg: {\n fontSize: 16,\n },\n text_primary: {\n color: colors.bg0,\n },\n text_outline: {\n color: colors.accent,\n },\n text_ghost: {\n color: colors.text0,\n },\n text_danger: {\n color: '#ffffff',\n },\n textDisabled: {\n color: colors.textMuted,\n },\n});\n","import React from 'react';\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from 'react-native';\nimport { colors, spacing, borderRadius } from '../tokens';\n\nexport interface NativeBracketCardProps extends ViewProps {\n active?: boolean;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function BracketCard({\n active = false,\n style,\n children,\n ...props\n}: NativeBracketCardProps) {\n return (\n <View\n style={[\n styles.card,\n active && styles.active,\n style,\n ]}\n {...props}\n >\n <View style={[styles.corner, styles.cornerTL, active && styles.cornerActive]} />\n <View style={[styles.corner, styles.cornerTR, active && styles.cornerActive]} />\n <View style={[styles.corner, styles.cornerBL, active && styles.cornerActive]} />\n <View style={[styles.corner, styles.cornerBR, active && styles.cornerActive]} />\n {children}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n card: {\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderColor: colors.borderSubtle,\n borderRadius: borderRadius.md,\n padding: spacing.md,\n position: 'relative',\n },\n active: {\n borderColor: colors.accent,\n },\n corner: {\n position: 'absolute',\n width: 6,\n height: 6,\n borderColor: colors.textDim,\n },\n cornerActive: {\n borderColor: colors.accent,\n },\n cornerTL: {\n top: -1,\n left: -1,\n borderTopWidth: 2,\n borderLeftWidth: 2,\n },\n cornerTR: {\n top: -1,\n right: -1,\n borderTopWidth: 2,\n borderRightWidth: 2,\n },\n cornerBL: {\n bottom: -1,\n left: -1,\n borderBottomWidth: 2,\n borderLeftWidth: 2,\n },\n cornerBR: {\n bottom: -1,\n right: -1,\n borderBottomWidth: 2,\n borderRightWidth: 2,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet, type ViewStyle, type StyleProp } from 'react-native';\nimport { colors, spacing, borderRadius } from '../tokens';\n\nexport interface NativeBadgeProps {\n label: string;\n variant?: 'default' | 'accent' | 'teal' | 'purple' | 'outline';\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Badge({ label, variant = 'default', style }: NativeBadgeProps) {\n return (\n <View style={[styles.badge, styles[variant], style]}>\n <Text style={[styles.text, styles[`text_${variant}`]]}>{label}</Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n badge: {\n paddingHorizontal: spacing.sm,\n paddingVertical: 2,\n borderRadius: borderRadius.sm,\n alignSelf: 'flex-start',\n },\n default: {\n backgroundColor: colors.borderSubtle,\n },\n accent: {\n backgroundColor: colors.accentDim,\n borderWidth: 1,\n borderColor: colors.accent,\n },\n teal: {\n backgroundColor: colors.tealDim,\n borderWidth: 1,\n borderColor: colors.teal,\n },\n purple: {\n backgroundColor: 'rgba(168, 85, 247, 0.15)',\n borderWidth: 1,\n borderColor: colors.purple,\n },\n outline: {\n borderWidth: 1,\n borderColor: colors.borderLight,\n backgroundColor: 'transparent',\n },\n text: {\n fontSize: 11,\n fontFamily: 'monospace',\n fontWeight: '700',\n textTransform: 'uppercase',\n },\n text_default: {\n color: colors.text1,\n },\n text_accent: {\n color: colors.accent,\n },\n text_teal: {\n color: colors.teal,\n },\n text_purple: {\n color: colors.purple,\n },\n text_outline: {\n color: colors.textDim,\n },\n});\n","import React from 'react';\nimport { View, StyleSheet, type ViewStyle, type StyleProp } from 'react-native';\nimport { colors } from '../tokens';\n\nexport interface NativeDotProps {\n color?: 'accent' | 'green' | 'red' | 'teal' | 'purple';\n size?: number;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Dot({ color = 'accent', size = 6, style }: NativeDotProps) {\n const colorMap = {\n accent: colors.accent,\n green: colors.success,\n red: colors.danger,\n teal: colors.teal,\n purple: colors.purple,\n };\n\n return (\n <View\n style={[\n styles.dot,\n {\n width: size,\n height: size,\n borderRadius: size / 2,\n backgroundColor: colorMap[color],\n },\n style,\n ]}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n dot: {\n alignSelf: 'center',\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet, type ViewStyle, type StyleProp } from 'react-native';\nimport { colors, spacing, borderRadius } from '../tokens';\n\nexport interface NativeTechLabelProps {\n label: string;\n jp?: string;\n coord?: string;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function TechLabel({ label, jp, coord, style }: NativeTechLabelProps) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.label}>{label}</Text>\n {jp && <Text style={styles.jp}>{jp}</Text>}\n {coord && <Text style={styles.coord}>[{coord}]</Text>}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.xs,\n },\n label: {\n fontFamily: 'monospace',\n fontSize: 12,\n color: colors.text0,\n fontWeight: '700',\n letterSpacing: 0.5,\n },\n jp: {\n fontSize: 11,\n color: colors.text2,\n },\n coord: {\n fontFamily: 'monospace',\n fontSize: 10,\n color: colors.accent,\n },\n});\n","import React from 'react';\nimport { View, Text, Pressable, StyleSheet, type ViewStyle, type StyleProp } from 'react-native';\nimport { colors, spacing, borderRadius } from '../tokens';\n\nexport interface NativeCyberSwitchProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n label?: string;\n sublabel?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function CyberSwitch({\n checked,\n onChange,\n label,\n sublabel,\n disabled = false,\n style,\n}: NativeCyberSwitchProps) {\n return (\n <Pressable\n disabled={disabled}\n onPress={() => onChange(!checked)}\n style={[styles.container, disabled && styles.disabled, style]}\n >\n <View style={[styles.track, checked && styles.trackChecked]}>\n <Text style={[styles.bitText, styles.bitLeft]}>{checked ? '1' : ''}</Text>\n <View style={[styles.thumb, checked ? styles.thumbChecked : styles.thumbUnchecked]} />\n <Text style={[styles.bitText, styles.bitRight]}>{!checked ? '0' : ''}</Text>\n </View>\n {(label || sublabel) && (\n <View style={styles.textGroup}>\n {label && <Text style={styles.label}>{label}</Text>}\n {sublabel && <Text style={styles.sublabel}>{sublabel}</Text>}\n </View>\n )}\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n disabled: {\n opacity: 0.4,\n },\n track: {\n width: 48,\n height: 24,\n borderRadius: borderRadius.sm,\n backgroundColor: colors.bg1,\n borderWidth: 1,\n borderColor: colors.border,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 3,\n position: 'relative',\n },\n trackChecked: {\n borderColor: colors.accent,\n backgroundColor: colors.accentDim,\n },\n thumb: {\n width: 18,\n height: 18,\n borderRadius: borderRadius.sm - 2,\n backgroundColor: colors.borderLight,\n position: 'absolute',\n },\n thumbUnchecked: {\n left: 2,\n },\n thumbChecked: {\n right: 2,\n backgroundColor: colors.accent,\n },\n bitText: {\n fontFamily: 'monospace',\n fontSize: 9,\n fontWeight: '700',\n color: colors.text2,\n },\n bitLeft: {\n marginLeft: 3,\n },\n bitRight: {\n marginRight: 3,\n },\n textGroup: {\n flexDirection: 'column',\n },\n label: {\n fontFamily: 'monospace',\n fontSize: 13,\n color: colors.text0,\n fontWeight: '600',\n },\n sublabel: {\n fontSize: 11,\n color: colors.text2,\n },\n});\n"],"mappings":";;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AAiCD;AAtBC,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,CAAC,EAAE,QAAQ,MAAM;AAAA,QACtB,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,OAAO,QAAQ,IAAI,EAAE;AAAA,QACrB,WAAW,CAAC,YAAY,OAAO;AAAA,QAC/B,YAAY,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,YACP,OAAO,QAAQ,OAAO,EAAE;AAAA,YACxB,OAAO,YAAY,IAAI,EAAE;AAAA,YACzB,YAAY,OAAO;AAAA,YACnB;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,MAAM;AAAA,IACJ,cAAc,aAAa;AAAA,IAC3B,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,eAAe;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,QAAQ;AAAA,IACzB,mBAAmB,QAAQ;AAAA,EAC7B;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,QAAQ;AAAA,IACzB,mBAAmB,QAAQ;AAAA,EAC7B;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,QAAQ;AAAA,IACzB,mBAAmB,QAAQ;AAAA,EAC7B;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,iBAAiB;AAAA,EACnB;AAAA,EACA,OAAO;AAAA,IACL,iBAAiB;AAAA,EACnB;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AACF,CAAC;;;AC3HD,SAAS,MAAM,cAAAA,mBAAkE;AAe7E,SAQE,OAAAC,MARF;AAPG,SAAS,YAAY;AAAA,EAC1B,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACLC,QAAO;AAAA,QACP,UAAUA,QAAO;AAAA,QACjB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,KAAC,QAAK,OAAO,CAACC,QAAO,QAAQA,QAAO,UAAU,UAAUA,QAAO,YAAY,GAAG;AAAA,QAC9E,gBAAAD,KAAC,QAAK,OAAO,CAACC,QAAO,QAAQA,QAAO,UAAU,UAAUA,QAAO,YAAY,GAAG;AAAA,QAC9E,gBAAAD,KAAC,QAAK,OAAO,CAACC,QAAO,QAAQA,QAAO,UAAU,UAAUA,QAAO,YAAY,GAAG;AAAA,QAC9E,gBAAAD,KAAC,QAAK,OAAO,CAACC,QAAO,QAAQA,QAAO,UAAU,UAAUA,QAAO,YAAY,GAAG;AAAA,QAC7E;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,IAAMA,UAASC,YAAW,OAAO;AAAA,EAC/B,MAAM;AAAA,IACJ,iBAAiB,OAAO;AAAA,IACxB,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,cAAc,aAAa;AAAA,IAC3B,SAAS,QAAQ;AAAA,IACjB,UAAU;AAAA,EACZ;AAAA,EACA,QAAQ;AAAA,IACN,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,cAAc;AAAA,IACZ,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EACnB;AAAA,EACA,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EACpB;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,EACnB;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,EACpB;AACF,CAAC;;;AC7ED,SAAS,QAAAC,OAAM,QAAAC,OAAM,cAAAC,mBAAkD;AAYjE,gBAAAC,YAAA;AAHC,SAAS,MAAM,EAAE,OAAO,UAAU,WAAW,MAAM,GAAqB;AAC7E,SACE,gBAAAA,KAACC,OAAA,EAAK,OAAO,CAACC,QAAO,OAAOA,QAAO,OAAO,GAAG,KAAK,GAChD,0BAAAF,KAACG,OAAA,EAAK,OAAO,CAACD,QAAO,MAAMA,QAAO,QAAQ,OAAO,EAAE,CAAC,GAAI,iBAAM,GAChE;AAEJ;AAEA,IAAMA,UAASE,YAAW,OAAO;AAAA,EAC/B,OAAO;AAAA,IACL,mBAAmB,QAAQ;AAAA,IAC3B,iBAAiB;AAAA,IACjB,cAAc,aAAa;AAAA,IAC3B,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB,OAAO;AAAA,IACxB,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiB,OAAO;AAAA,IACxB,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,EACtB;AAAA,EACA,SAAS;AAAA,IACP,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,iBAAiB;AAAA,EACnB;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AACF,CAAC;;;ACpED,SAAS,QAAAC,OAAM,cAAAC,mBAAkD;AAmB7D,gBAAAC,YAAA;AAVG,SAAS,IAAI,EAAE,QAAQ,UAAU,OAAO,GAAG,MAAM,GAAmB;AACzE,QAAM,WAAW;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,OAAO,OAAO;AAAA,IACd,KAAK,OAAO;AAAA,IACZ,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,EACjB;AAEA,SACE,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACLC,QAAO;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,cAAc,OAAO;AAAA,UACrB,iBAAiB,SAAS,KAAK;AAAA,QACjC;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAMA,UAASC,YAAW,OAAO;AAAA,EAC/B,KAAK;AAAA,IACH,WAAW;AAAA,EACb;AACF,CAAC;;;ACtCD,SAAS,QAAAC,OAAM,QAAAC,OAAM,cAAAC,mBAAkD;AAajE,gBAAAC,MAEU,QAAAC,aAFV;AAHC,SAAS,UAAU,EAAE,OAAO,IAAI,OAAO,MAAM,GAAyB;AAC3E,SACE,gBAAAA,MAACC,OAAA,EAAK,OAAO,CAACC,QAAO,WAAW,KAAK,GACnC;AAAA,oBAAAH,KAACI,OAAA,EAAK,OAAOD,QAAO,OAAQ,iBAAM;AAAA,IACjC,MAAM,gBAAAH,KAACI,OAAA,EAAK,OAAOD,QAAO,IAAK,cAAG;AAAA,IAClC,SAAS,gBAAAF,MAACG,OAAA,EAAK,OAAOD,QAAO,OAAO;AAAA;AAAA,MAAE;AAAA,MAAM;AAAA,OAAC;AAAA,KAChD;AAEJ;AAEA,IAAMA,UAASE,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,KAAK,QAAQ;AAAA,EACf;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO,OAAO;AAAA,IACd,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AACF,CAAC;;;AC1CD,SAAS,QAAAC,OAAM,QAAAC,OAAM,aAAAC,YAAW,cAAAC,mBAAkD;AA0B5E,SACE,OAAAC,MADF,QAAAC,aAAA;AAdC,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAA2B;AACzB,SACE,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAS,MAAM,SAAS,CAAC,OAAO;AAAA,MAChC,OAAO,CAACC,QAAO,WAAW,YAAYA,QAAO,UAAU,KAAK;AAAA,MAE5D;AAAA,wBAAAF,MAACG,OAAA,EAAK,OAAO,CAACD,QAAO,OAAO,WAAWA,QAAO,YAAY,GACxD;AAAA,0BAAAH,KAACK,OAAA,EAAK,OAAO,CAACF,QAAO,SAASA,QAAO,OAAO,GAAI,oBAAU,MAAM,IAAG;AAAA,UACnE,gBAAAH,KAACI,OAAA,EAAK,OAAO,CAACD,QAAO,OAAO,UAAUA,QAAO,eAAeA,QAAO,cAAc,GAAG;AAAA,UACpF,gBAAAH,KAACK,OAAA,EAAK,OAAO,CAACF,QAAO,SAASA,QAAO,QAAQ,GAAI,WAAC,UAAU,MAAM,IAAG;AAAA,WACvE;AAAA,SACE,SAAS,aACT,gBAAAF,MAACG,OAAA,EAAK,OAAOD,QAAO,WACjB;AAAA,mBAAS,gBAAAH,KAACK,OAAA,EAAK,OAAOF,QAAO,OAAQ,iBAAM;AAAA,UAC3C,YAAY,gBAAAH,KAACK,OAAA,EAAK,OAAOF,QAAO,UAAW,oBAAS;AAAA,WACvD;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAMA,UAASG,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,KAAK,QAAQ;AAAA,EACf;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,cAAc,aAAa;AAAA,IAC3B,iBAAiB,OAAO;AAAA,IACxB,aAAa;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,cAAc,aAAa,KAAK;AAAA,IAChC,iBAAiB,OAAO;AAAA,IACxB,UAAU;AAAA,EACZ;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACZ,OAAO;AAAA,IACP,iBAAiB,OAAO;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,EACf;AAAA,EACA,WAAW;AAAA,IACT,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO,OAAO;AAAA,IACd,YAAY;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,IACV,OAAO,OAAO;AAAA,EAChB;AACF,CAAC;","names":["StyleSheet","jsx","styles","StyleSheet","View","Text","StyleSheet","jsx","View","styles","Text","StyleSheet","View","StyleSheet","jsx","View","styles","StyleSheet","View","Text","StyleSheet","jsx","jsxs","View","styles","Text","StyleSheet","View","Text","Pressable","StyleSheet","jsx","jsxs","Pressable","styles","View","Text","StyleSheet"]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raw design tokens - source of truth across Web, Tauri Desktop, and React Native
|
|
3
|
+
*/
|
|
4
|
+
declare const colors: {
|
|
5
|
+
readonly bg: "#0a0a0c";
|
|
6
|
+
readonly bg0: "#0a0a0c";
|
|
7
|
+
readonly bg1: "#111114";
|
|
8
|
+
readonly bg2: "#18181c";
|
|
9
|
+
readonly bg3: "#1f1f24";
|
|
10
|
+
readonly bgCard: "#121215";
|
|
11
|
+
readonly bgCardHover: "#18181d";
|
|
12
|
+
readonly bgCardActive: "#222228";
|
|
13
|
+
readonly border: "#2a2a30";
|
|
14
|
+
readonly borderSubtle: "#1e1e24";
|
|
15
|
+
readonly borderLight: "#3f3f46";
|
|
16
|
+
readonly text: "#f4f4f5";
|
|
17
|
+
readonly text0: "#e2ded6";
|
|
18
|
+
readonly text1: "#b0aca4";
|
|
19
|
+
readonly text2: "#706c66";
|
|
20
|
+
readonly text3: "#4a4844";
|
|
21
|
+
readonly textMuted: "#a1a1aa";
|
|
22
|
+
readonly textDim: "#71717a";
|
|
23
|
+
readonly accent: "#c49368";
|
|
24
|
+
readonly accentHover: "#d4a478";
|
|
25
|
+
readonly accentDim: "rgba(196, 147, 104, 0.12)";
|
|
26
|
+
readonly accentMuted: "rgba(224, 169, 109, 0.15)";
|
|
27
|
+
readonly teal: "#6a9e9e";
|
|
28
|
+
readonly tealDim: "rgba(106, 158, 158, 0.12)";
|
|
29
|
+
readonly warm: "#a08060";
|
|
30
|
+
readonly redSoft: "#b05050";
|
|
31
|
+
readonly greenSoft: "#6a9a6a";
|
|
32
|
+
readonly danger: "#ef4444";
|
|
33
|
+
readonly success: "#22c55e";
|
|
34
|
+
readonly blue: "#3b82f6";
|
|
35
|
+
readonly purple: "#a855f7";
|
|
36
|
+
readonly sticky1: "#e8e0b8";
|
|
37
|
+
readonly sticky2: "#e0c8c0";
|
|
38
|
+
readonly sticky3: "#c0d0d8";
|
|
39
|
+
readonly sticky4: "#c8d8c0";
|
|
40
|
+
};
|
|
41
|
+
declare const themePalettes: {
|
|
42
|
+
readonly default: {
|
|
43
|
+
readonly name: "Amber Baseline";
|
|
44
|
+
readonly accent: "#c49368";
|
|
45
|
+
readonly bg0: "#0a0a0c";
|
|
46
|
+
readonly bg1: "#111114";
|
|
47
|
+
readonly bg2: "#18181c";
|
|
48
|
+
readonly border: "#2a2a30";
|
|
49
|
+
};
|
|
50
|
+
readonly citlali: {
|
|
51
|
+
readonly name: "Citlali Star-Gaze";
|
|
52
|
+
readonly accent: "#f2a9c8";
|
|
53
|
+
readonly bg0: "#090d1d";
|
|
54
|
+
readonly bg1: "#10172d";
|
|
55
|
+
readonly bg2: "#172343";
|
|
56
|
+
readonly border: "#334879";
|
|
57
|
+
};
|
|
58
|
+
readonly furina: {
|
|
59
|
+
readonly name: "Furina Hydro-Overture";
|
|
60
|
+
readonly accent: "#5ab2ff";
|
|
61
|
+
readonly bg0: "#060d16";
|
|
62
|
+
readonly bg1: "#0b1624";
|
|
63
|
+
readonly bg2: "#122238";
|
|
64
|
+
readonly border: "#1f3c5e";
|
|
65
|
+
};
|
|
66
|
+
readonly alley: {
|
|
67
|
+
readonly name: "Alley Neon-Noir";
|
|
68
|
+
readonly accent: "#b066ff";
|
|
69
|
+
readonly bg0: "#050409";
|
|
70
|
+
readonly bg1: "#0b0914";
|
|
71
|
+
readonly bg2: "#141021";
|
|
72
|
+
readonly border: "#382c54";
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
declare const typography: {
|
|
76
|
+
readonly fontMono: "IBMPlexMono_400Regular";
|
|
77
|
+
readonly fontMonoLight: "IBMPlexMono_300Light";
|
|
78
|
+
readonly fontMonoMedium: "IBMPlexMono_500Medium";
|
|
79
|
+
readonly fontMonoBold: "IBMPlexMono_600SemiBold";
|
|
80
|
+
readonly fontSans: "IBMPlexSans_400Regular";
|
|
81
|
+
readonly fontSansLight: "IBMPlexSans_300Light";
|
|
82
|
+
readonly fontSansMedium: "IBMPlexSans_500Medium";
|
|
83
|
+
readonly fontSansBold: "IBMPlexSans_600SemiBold";
|
|
84
|
+
readonly fontJp: "NotoSansJP_400Regular";
|
|
85
|
+
readonly fontJpMedium: "NotoSansJP_500Medium";
|
|
86
|
+
readonly fontJpBold: "NotoSansJP_700Bold";
|
|
87
|
+
readonly webMono: "'IBM Plex Mono', monospace";
|
|
88
|
+
readonly webSans: "'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif";
|
|
89
|
+
readonly webJp: "'Noto Sans JP', sans-serif";
|
|
90
|
+
};
|
|
91
|
+
declare const spacing: {
|
|
92
|
+
readonly none: 0;
|
|
93
|
+
readonly xs: 4;
|
|
94
|
+
readonly sm: 8;
|
|
95
|
+
readonly md: 12;
|
|
96
|
+
readonly lg: 16;
|
|
97
|
+
readonly xl: 24;
|
|
98
|
+
readonly xxl: 32;
|
|
99
|
+
readonly xxxl: 48;
|
|
100
|
+
};
|
|
101
|
+
declare const borderRadius: {
|
|
102
|
+
readonly none: 0;
|
|
103
|
+
readonly sm: 4;
|
|
104
|
+
readonly md: 6;
|
|
105
|
+
readonly lg: 10;
|
|
106
|
+
readonly full: 9999;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* CSS Variable references for DOM & Tauri Webview contexts
|
|
110
|
+
*/
|
|
111
|
+
declare const cssTokens: {
|
|
112
|
+
readonly colors: {
|
|
113
|
+
readonly bg0: "var(--kz-bg-0)";
|
|
114
|
+
readonly bg1: "var(--kz-bg-1)";
|
|
115
|
+
readonly bg2: "var(--kz-bg-2)";
|
|
116
|
+
readonly bg3: "var(--kz-bg-3)";
|
|
117
|
+
readonly border: "var(--kz-border)";
|
|
118
|
+
readonly borderSubtle: "var(--kz-border-subtle)";
|
|
119
|
+
readonly borderLight: "var(--kz-border-light)";
|
|
120
|
+
readonly text0: "var(--kz-text-0)";
|
|
121
|
+
readonly text1: "var(--kz-text-1)";
|
|
122
|
+
readonly text2: "var(--kz-text-2)";
|
|
123
|
+
readonly text3: "var(--kz-text-3)";
|
|
124
|
+
readonly accent: "var(--kz-accent)";
|
|
125
|
+
readonly accentHover: "var(--kz-accent-hover)";
|
|
126
|
+
readonly accentDim: "var(--kz-accent-dim)";
|
|
127
|
+
readonly teal: "var(--kz-teal)";
|
|
128
|
+
readonly tealDim: "var(--kz-teal-dim)";
|
|
129
|
+
readonly warm: "var(--kz-warm)";
|
|
130
|
+
readonly redSoft: "var(--kz-red-soft)";
|
|
131
|
+
readonly greenSoft: "var(--kz-green-soft)";
|
|
132
|
+
readonly blue: "var(--kz-blue)";
|
|
133
|
+
readonly purple: "var(--kz-purple)";
|
|
134
|
+
};
|
|
135
|
+
readonly typography: {
|
|
136
|
+
readonly mono: "var(--kz-mono)";
|
|
137
|
+
readonly sans: "var(--kz-sans)";
|
|
138
|
+
readonly jp: "var(--kz-jp)";
|
|
139
|
+
};
|
|
140
|
+
readonly radius: {
|
|
141
|
+
readonly sm: "var(--kz-radius-sm)";
|
|
142
|
+
readonly md: "var(--kz-radius-md)";
|
|
143
|
+
readonly lg: "var(--kz-radius-lg)";
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
declare const tokens: {
|
|
147
|
+
readonly colors: {
|
|
148
|
+
readonly bg0: "var(--kz-bg-0)";
|
|
149
|
+
readonly bg1: "var(--kz-bg-1)";
|
|
150
|
+
readonly bg2: "var(--kz-bg-2)";
|
|
151
|
+
readonly bg3: "var(--kz-bg-3)";
|
|
152
|
+
readonly border: "var(--kz-border)";
|
|
153
|
+
readonly borderSubtle: "var(--kz-border-subtle)";
|
|
154
|
+
readonly borderLight: "var(--kz-border-light)";
|
|
155
|
+
readonly text0: "var(--kz-text-0)";
|
|
156
|
+
readonly text1: "var(--kz-text-1)";
|
|
157
|
+
readonly text2: "var(--kz-text-2)";
|
|
158
|
+
readonly text3: "var(--kz-text-3)";
|
|
159
|
+
readonly accent: "var(--kz-accent)";
|
|
160
|
+
readonly accentHover: "var(--kz-accent-hover)";
|
|
161
|
+
readonly accentDim: "var(--kz-accent-dim)";
|
|
162
|
+
readonly teal: "var(--kz-teal)";
|
|
163
|
+
readonly tealDim: "var(--kz-teal-dim)";
|
|
164
|
+
readonly warm: "var(--kz-warm)";
|
|
165
|
+
readonly redSoft: "var(--kz-red-soft)";
|
|
166
|
+
readonly greenSoft: "var(--kz-green-soft)";
|
|
167
|
+
readonly blue: "var(--kz-blue)";
|
|
168
|
+
readonly purple: "var(--kz-purple)";
|
|
169
|
+
};
|
|
170
|
+
readonly typography: {
|
|
171
|
+
readonly mono: "var(--kz-mono)";
|
|
172
|
+
readonly sans: "var(--kz-sans)";
|
|
173
|
+
readonly jp: "var(--kz-jp)";
|
|
174
|
+
};
|
|
175
|
+
readonly radius: {
|
|
176
|
+
readonly sm: "var(--kz-radius-sm)";
|
|
177
|
+
readonly md: "var(--kz-radius-md)";
|
|
178
|
+
readonly lg: "var(--kz-radius-lg)";
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
type ThemeName = 'default' | 'citlali' | 'furina' | 'alley';
|
|
182
|
+
|
|
183
|
+
export { type ThemeName, borderRadius, colors, cssTokens, spacing, themePalettes, tokens, typography };
|