@girumtech/gs-design-system-core 0.1.4 → 0.1.6
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.
|
@@ -48,6 +48,18 @@ var bodyFont = createFont({
|
|
|
48
48
|
weight: { 4: "400", 5: "500", 6: "600", 7: "700", true: "400" },
|
|
49
49
|
letterSpacing: { 4: 0, 6: -0.2, 7: -0.5, true: 0 }
|
|
50
50
|
});
|
|
51
|
+
var lightNeutrals = {
|
|
52
|
+
borderSubtle: "#E5E7EB",
|
|
53
|
+
surfaceMuted: "#F3F4F6",
|
|
54
|
+
iconMuted: "#9CA3AF",
|
|
55
|
+
textMuted: "#6B7280"
|
|
56
|
+
};
|
|
57
|
+
var darkNeutrals = {
|
|
58
|
+
borderSubtle: "#4D515C",
|
|
59
|
+
surfaceMuted: "#1B1F29",
|
|
60
|
+
iconMuted: "#8D94A3",
|
|
61
|
+
textMuted: "#9CA3AF"
|
|
62
|
+
};
|
|
51
63
|
var themes = {
|
|
52
64
|
red: {
|
|
53
65
|
background: "#FFFFFF",
|
|
@@ -68,7 +80,8 @@ var themes = {
|
|
|
68
80
|
focus: "#A81D1D",
|
|
69
81
|
danger: "#A81D1D",
|
|
70
82
|
disabled: "#D8B8B8",
|
|
71
|
-
shadowColor: "#A81D1D"
|
|
83
|
+
shadowColor: "#A81D1D",
|
|
84
|
+
...lightNeutrals
|
|
72
85
|
},
|
|
73
86
|
red_dark: {
|
|
74
87
|
background: "#000000",
|
|
@@ -89,7 +102,8 @@ var themes = {
|
|
|
89
102
|
focus: "#FC2B2B",
|
|
90
103
|
danger: "#FC2B2B",
|
|
91
104
|
disabled: "#5E2020",
|
|
92
|
-
shadowColor: "#FC2B2B"
|
|
105
|
+
shadowColor: "#FC2B2B",
|
|
106
|
+
...darkNeutrals
|
|
93
107
|
},
|
|
94
108
|
blue: {
|
|
95
109
|
background: "#FFFFFF",
|
|
@@ -110,7 +124,8 @@ var themes = {
|
|
|
110
124
|
focus: "#10106B",
|
|
111
125
|
danger: "#A81D1D",
|
|
112
126
|
disabled: "#B8B8D2",
|
|
113
|
-
shadowColor: "#10106B"
|
|
127
|
+
shadowColor: "#10106B",
|
|
128
|
+
...lightNeutrals
|
|
114
129
|
},
|
|
115
130
|
blue_dark: {
|
|
116
131
|
background: "#000000",
|
|
@@ -131,7 +146,8 @@ var themes = {
|
|
|
131
146
|
focus: "#2323F7",
|
|
132
147
|
danger: "#FC2B2B",
|
|
133
148
|
disabled: "#20205E",
|
|
134
|
-
shadowColor: "#2323F7"
|
|
149
|
+
shadowColor: "#2323F7",
|
|
150
|
+
...darkNeutrals
|
|
135
151
|
}
|
|
136
152
|
};
|
|
137
153
|
var tamaguiThemes = {
|
|
@@ -155,4 +171,4 @@ export {
|
|
|
155
171
|
config,
|
|
156
172
|
config_default
|
|
157
173
|
};
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-IXNI7NMT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import { createFont, createTamagui, createTokens } from 'tamagui'\n\nexport const tokens = createTokens({\n color: {\n white: '#FFFFFF',\n black: '#000000',\n brandRed: '#A81D1D',\n brandRedDark: '#FC2B2B',\n brandBlue: '#10106B',\n brandBlueDark: '#2323F7',\n red1: '#FFF7F8', red3: '#FFE1E5', red8: '#B4233C', red9: '#8F1530', red10: '#741026', red11: '#5B0A1D', red12: '#350611',\n blue1: '#F5F9FF', blue3: '#DCEBFF', blue8: '#2864B5', blue9: '#174A8B', blue10: '#123D75', blue11: '#0C315F', blue12: '#071F3F',\n gray1: '#FAFAFC', gray3: '#ECECF1', gray5: '#D0D1D8', gray8: '#777A86', gray10: '#4E505A', gray12: '#202127',\n dark1: '#0B0D12', dark2: '#12151C', dark3: '#1B1F29', dark5: '#343946', dark8: '#8D94A3', dark11: '#D6D9E0', dark12: '#F7F8FA',\n },\n space: { 0: 0, 1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, 8: 32, 10: 40, 12: 48, true: 16 },\n size: { 0: 0, 1: 24, 2: 32, 3: 40, 4: 48, 5: 56, 6: 64, 8: 80, 10: 96, sm: 32, md: 40, lg: 48, true: 40 },\n radius: { 0: 0, 1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, full: 9999, true: 12 },\n zIndex: { 0: 0, 1: 10, 2: 20, 3: 30, 4: 40, 5: 50 },\n})\n\nconst bodyFont = createFont({\n family: 'Inter, ui-sans-serif, system-ui, sans-serif',\n size: { 1: 12, 2: 14, 3: 16, 4: 18, 5: 22, 6: 28, 7: 36, 8: 48, sm: 14, md: 16, lg: 18, true: 16 },\n lineHeight: { 1: 16, 2: 20, 3: 24, 4: 28, 5: 30, 6: 36, 7: 44, 8: 56, sm: 20, md: 24, lg: 28, true: 24 },\n weight: { 4: '400', 5: '500', 6: '600', 7: '700', true: '400' },\n letterSpacing: { 4: 0, 6: -0.2, 7: -0.5, true: 0 },\n})\n\n// Neutral, non-branded tokens shared by a family's light / dark variant. Use\n// these for hairlines, filled surfaces and de-emphasized text/icons so consumers\n// stop hard-coding greys like #E5E7EB / #9CA3AF. `borderSubtle` is a light grey\n// hairline in light mode and the same grey, brightened, so it still reads on the\n// near-black dark background.\nconst lightNeutrals = {\n borderSubtle: '#E5E7EB',\n surfaceMuted: '#F3F4F6',\n iconMuted: '#9CA3AF',\n textMuted: '#6B7280',\n} as const\n\nconst darkNeutrals = {\n borderSubtle: '#4D515C',\n surfaceMuted: '#1B1F29',\n iconMuted: '#8D94A3',\n textMuted: '#9CA3AF',\n} as const\n\nexport const themes = {\n red: {\n background: '#FFFFFF', backgroundHover: '#FFF7F7', backgroundPress: '#FBE8E8', backgroundFocus: '#FFF7F7',\n surface: '#FFFFFF', color: '#000000', colorMuted: '#5F3030', borderColor: '#A81D1D',\n borderColorHover: '#A81D1D', borderColorPress: '#A81D1D', borderColorFocus: '#A81D1D',\n accent: '#A81D1D', accentHover: '#8F1818', accentPress: '#751414', accentText: '#FFFFFF',\n focus: '#A81D1D', danger: '#A81D1D', disabled: '#D8B8B8', shadowColor: '#A81D1D',\n ...lightNeutrals,\n },\n red_dark: {\n background: '#000000', backgroundHover: '#170606', backgroundPress: '#260808', backgroundFocus: '#170606',\n surface: '#000000', color: '#FFFFFF', colorMuted: '#F5BABA', borderColor: '#FC2B2B',\n borderColorHover: '#FC2B2B', borderColorPress: '#FC2B2B', borderColorFocus: '#FC2B2B',\n accent: '#FC2B2B', accentHover: '#FF4D4D', accentPress: '#D91F1F', accentText: '#000000',\n focus: '#FC2B2B', danger: '#FC2B2B', disabled: '#5E2020', shadowColor: '#FC2B2B',\n ...darkNeutrals,\n },\n blue: {\n background: '#FFFFFF', backgroundHover: '#F5F5FF', backgroundPress: '#E8E8F4', backgroundFocus: '#F5F5FF',\n surface: '#FFFFFF', color: '#000000', colorMuted: '#34345F', borderColor: '#10106B',\n borderColorHover: '#10106B', borderColorPress: '#10106B', borderColorFocus: '#10106B',\n accent: '#10106B', accentHover: '#0D0D59', accentPress: '#090944', accentText: '#FFFFFF',\n focus: '#10106B', danger: '#A81D1D', disabled: '#B8B8D2', shadowColor: '#10106B',\n ...lightNeutrals,\n },\n blue_dark: {\n background: '#000000', backgroundHover: '#070717', backgroundPress: '#0B0B28', backgroundFocus: '#070717',\n surface: '#000000', color: '#FFFFFF', colorMuted: '#C7C7FF', borderColor: '#2323F7',\n borderColorHover: '#2323F7', borderColorPress: '#2323F7', borderColorFocus: '#2323F7',\n accent: '#2323F7', accentHover: '#4141FF', accentPress: '#1B1BC9', accentText: '#FFFFFF',\n focus: '#2323F7', danger: '#FC2B2B', disabled: '#20205E', shadowColor: '#2323F7',\n ...darkNeutrals,\n },\n} as const\n\n// Tamagui's web CSS generator needs base light/dark themes before it emits\n// selectors for custom theme names. These aliases stay internal so the public\n// GsThemeName API remains limited to the four branded themes above.\nconst tamaguiThemes = {\n light: themes.red,\n dark: themes.red_dark,\n ...themes,\n} as const\n\nexport const config = createTamagui({\n tokens,\n themes: tamaguiThemes,\n fonts: { body: bodyFont, heading: bodyFont },\n shorthands: { p: 'padding', px: 'paddingHorizontal', py: 'paddingVertical', m: 'margin', mt: 'marginTop', mb: 'marginBottom', bg: 'backgroundColor' } as const,\n media: { sm: { maxWidth: 660 }, md: { maxWidth: 900 }, lg: { maxWidth: 1200 }, reduceMotion: { prefersReducedMotion: 'reduce' } },\n settings: { defaultFont: 'body' },\n})\n\nexport type GsConfig = typeof config\nexport type GsThemeName = keyof typeof themes\n\ndeclare module 'tamagui' {\n interface TamaguiCustomConfig extends GsConfig {}\n}\n\nexport default config\n"],"mappings":";AAAA,SAAS,YAAY,eAAe,oBAAoB;AAEjD,IAAM,SAAS,aAAa;AAAA,EACjC,OAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,WAAW;AAAA,IACX,eAAe;AAAA,IACf,MAAM;AAAA,IAAW,MAAM;AAAA,IAAW,MAAM;AAAA,IAAW,MAAM;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAC/G,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,QAAQ;AAAA,IAAW,QAAQ;AAAA,IACtH,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,QAAQ;AAAA,IACnG,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,QAAQ;AAAA,EACvH;AAAA,EACA,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,GAAG;AAAA,EACvF,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,GAAG;AAAA,EACxG,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG;AAAA,EAC7E,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;AACpD,CAAC;AAED,IAAM,WAAW,WAAW;AAAA,EAC1B,QAAQ;AAAA,EACR,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,GAAG;AAAA,EACjG,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,GAAG;AAAA,EACvG,QAAQ,EAAE,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM,MAAM;AAAA,EAC9D,eAAe,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EAAE;AACnD,CAAC;AAOD,IAAM,gBAAgB;AAAA,EACpB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AACb;AAEA,IAAM,eAAe;AAAA,EACnB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AACb;AAEO,IAAM,SAAS;AAAA,EACpB,KAAK;AAAA,IACH,YAAY;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAChG,SAAS;AAAA,IAAW,OAAO;AAAA,IAAW,YAAY;AAAA,IAAW,aAAa;AAAA,IAC1E,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAC5E,QAAQ;AAAA,IAAW,aAAa;AAAA,IAAW,aAAa;AAAA,IAAW,YAAY;AAAA,IAC/E,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,UAAU;AAAA,IAAW,aAAa;AAAA,IACvE,GAAG;AAAA,EACL;AAAA,EACA,UAAU;AAAA,IACR,YAAY;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAChG,SAAS;AAAA,IAAW,OAAO;AAAA,IAAW,YAAY;AAAA,IAAW,aAAa;AAAA,IAC1E,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAC5E,QAAQ;AAAA,IAAW,aAAa;AAAA,IAAW,aAAa;AAAA,IAAW,YAAY;AAAA,IAC/E,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,UAAU;AAAA,IAAW,aAAa;AAAA,IACvE,GAAG;AAAA,EACL;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAChG,SAAS;AAAA,IAAW,OAAO;AAAA,IAAW,YAAY;AAAA,IAAW,aAAa;AAAA,IAC1E,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAC5E,QAAQ;AAAA,IAAW,aAAa;AAAA,IAAW,aAAa;AAAA,IAAW,YAAY;AAAA,IAC/E,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,UAAU;AAAA,IAAW,aAAa;AAAA,IACvE,GAAG;AAAA,EACL;AAAA,EACA,WAAW;AAAA,IACT,YAAY;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAAW,iBAAiB;AAAA,IAChG,SAAS;AAAA,IAAW,OAAO;AAAA,IAAW,YAAY;AAAA,IAAW,aAAa;AAAA,IAC1E,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAAW,kBAAkB;AAAA,IAC5E,QAAQ;AAAA,IAAW,aAAa;AAAA,IAAW,aAAa;AAAA,IAAW,YAAY;AAAA,IAC/E,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAW,UAAU;AAAA,IAAW,aAAa;AAAA,IACvE,GAAG;AAAA,EACL;AACF;AAKA,IAAM,gBAAgB;AAAA,EACpB,OAAO,OAAO;AAAA,EACd,MAAM,OAAO;AAAA,EACb,GAAG;AACL;AAEO,IAAM,SAAS,cAAc;AAAA,EAClC;AAAA,EACA,QAAQ;AAAA,EACR,OAAO,EAAE,MAAM,UAAU,SAAS,SAAS;AAAA,EAC3C,YAAY,EAAE,GAAG,WAAW,IAAI,qBAAqB,IAAI,mBAAmB,GAAG,UAAU,IAAI,aAAa,IAAI,gBAAgB,IAAI,kBAAkB;AAAA,EACpJ,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,GAAG,IAAI,EAAE,UAAU,IAAI,GAAG,IAAI,EAAE,UAAU,KAAK,GAAG,cAAc,EAAE,sBAAsB,SAAS,EAAE;AAAA,EAChI,UAAU,EAAE,aAAa,OAAO;AAClC,CAAC;AASD,IAAO,iBAAQ;","names":[]}
|
package/dist/config.d.ts
CHANGED
|
@@ -169,6 +169,10 @@ declare const tokens: {
|
|
|
169
169
|
}, "color" | "space" | "size" | "radius" | "zIndex">;
|
|
170
170
|
declare const themes: {
|
|
171
171
|
readonly red: {
|
|
172
|
+
readonly borderSubtle: "#E5E7EB";
|
|
173
|
+
readonly surfaceMuted: "#F3F4F6";
|
|
174
|
+
readonly iconMuted: "#9CA3AF";
|
|
175
|
+
readonly textMuted: "#6B7280";
|
|
172
176
|
readonly background: "#FFFFFF";
|
|
173
177
|
readonly backgroundHover: "#FFF7F7";
|
|
174
178
|
readonly backgroundPress: "#FBE8E8";
|
|
@@ -190,6 +194,10 @@ declare const themes: {
|
|
|
190
194
|
readonly shadowColor: "#A81D1D";
|
|
191
195
|
};
|
|
192
196
|
readonly red_dark: {
|
|
197
|
+
readonly borderSubtle: "#4D515C";
|
|
198
|
+
readonly surfaceMuted: "#1B1F29";
|
|
199
|
+
readonly iconMuted: "#8D94A3";
|
|
200
|
+
readonly textMuted: "#9CA3AF";
|
|
193
201
|
readonly background: "#000000";
|
|
194
202
|
readonly backgroundHover: "#170606";
|
|
195
203
|
readonly backgroundPress: "#260808";
|
|
@@ -211,6 +219,10 @@ declare const themes: {
|
|
|
211
219
|
readonly shadowColor: "#FC2B2B";
|
|
212
220
|
};
|
|
213
221
|
readonly blue: {
|
|
222
|
+
readonly borderSubtle: "#E5E7EB";
|
|
223
|
+
readonly surfaceMuted: "#F3F4F6";
|
|
224
|
+
readonly iconMuted: "#9CA3AF";
|
|
225
|
+
readonly textMuted: "#6B7280";
|
|
214
226
|
readonly background: "#FFFFFF";
|
|
215
227
|
readonly backgroundHover: "#F5F5FF";
|
|
216
228
|
readonly backgroundPress: "#E8E8F4";
|
|
@@ -232,6 +244,10 @@ declare const themes: {
|
|
|
232
244
|
readonly shadowColor: "#10106B";
|
|
233
245
|
};
|
|
234
246
|
readonly blue_dark: {
|
|
247
|
+
readonly borderSubtle: "#4D515C";
|
|
248
|
+
readonly surfaceMuted: "#1B1F29";
|
|
249
|
+
readonly iconMuted: "#8D94A3";
|
|
250
|
+
readonly textMuted: "#9CA3AF";
|
|
235
251
|
readonly background: "#000000";
|
|
236
252
|
readonly backgroundHover: "#070717";
|
|
237
253
|
readonly backgroundPress: "#0B0B28";
|
|
@@ -421,6 +437,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
421
437
|
};
|
|
422
438
|
}, "color" | "space" | "size" | "radius" | "zIndex">, {
|
|
423
439
|
readonly red: {
|
|
440
|
+
readonly borderSubtle: "#E5E7EB";
|
|
441
|
+
readonly surfaceMuted: "#F3F4F6";
|
|
442
|
+
readonly iconMuted: "#9CA3AF";
|
|
443
|
+
readonly textMuted: "#6B7280";
|
|
424
444
|
readonly background: "#FFFFFF";
|
|
425
445
|
readonly backgroundHover: "#FFF7F7";
|
|
426
446
|
readonly backgroundPress: "#FBE8E8";
|
|
@@ -442,6 +462,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
442
462
|
readonly shadowColor: "#A81D1D";
|
|
443
463
|
};
|
|
444
464
|
readonly red_dark: {
|
|
465
|
+
readonly borderSubtle: "#4D515C";
|
|
466
|
+
readonly surfaceMuted: "#1B1F29";
|
|
467
|
+
readonly iconMuted: "#8D94A3";
|
|
468
|
+
readonly textMuted: "#9CA3AF";
|
|
445
469
|
readonly background: "#000000";
|
|
446
470
|
readonly backgroundHover: "#170606";
|
|
447
471
|
readonly backgroundPress: "#260808";
|
|
@@ -463,6 +487,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
463
487
|
readonly shadowColor: "#FC2B2B";
|
|
464
488
|
};
|
|
465
489
|
readonly blue: {
|
|
490
|
+
readonly borderSubtle: "#E5E7EB";
|
|
491
|
+
readonly surfaceMuted: "#F3F4F6";
|
|
492
|
+
readonly iconMuted: "#9CA3AF";
|
|
493
|
+
readonly textMuted: "#6B7280";
|
|
466
494
|
readonly background: "#FFFFFF";
|
|
467
495
|
readonly backgroundHover: "#F5F5FF";
|
|
468
496
|
readonly backgroundPress: "#E8E8F4";
|
|
@@ -484,6 +512,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
484
512
|
readonly shadowColor: "#10106B";
|
|
485
513
|
};
|
|
486
514
|
readonly blue_dark: {
|
|
515
|
+
readonly borderSubtle: "#4D515C";
|
|
516
|
+
readonly surfaceMuted: "#1B1F29";
|
|
517
|
+
readonly iconMuted: "#8D94A3";
|
|
518
|
+
readonly textMuted: "#9CA3AF";
|
|
487
519
|
readonly background: "#000000";
|
|
488
520
|
readonly backgroundHover: "#070717";
|
|
489
521
|
readonly backgroundPress: "#0B0B28";
|
|
@@ -505,6 +537,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
505
537
|
readonly shadowColor: "#2323F7";
|
|
506
538
|
};
|
|
507
539
|
readonly light: {
|
|
540
|
+
readonly borderSubtle: "#E5E7EB";
|
|
541
|
+
readonly surfaceMuted: "#F3F4F6";
|
|
542
|
+
readonly iconMuted: "#9CA3AF";
|
|
543
|
+
readonly textMuted: "#6B7280";
|
|
508
544
|
readonly background: "#FFFFFF";
|
|
509
545
|
readonly backgroundHover: "#FFF7F7";
|
|
510
546
|
readonly backgroundPress: "#FBE8E8";
|
|
@@ -526,6 +562,10 @@ declare const config: tamagui.TamaguiInternalConfig<{
|
|
|
526
562
|
readonly shadowColor: "#A81D1D";
|
|
527
563
|
};
|
|
528
564
|
readonly dark: {
|
|
565
|
+
readonly borderSubtle: "#4D515C";
|
|
566
|
+
readonly surfaceMuted: "#1B1F29";
|
|
567
|
+
readonly iconMuted: "#8D94A3";
|
|
568
|
+
readonly textMuted: "#9CA3AF";
|
|
529
569
|
readonly background: "#000000";
|
|
530
570
|
readonly backgroundHover: "#170606";
|
|
531
571
|
readonly backgroundPress: "#260808";
|
package/dist/config.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
config,
|
|
3
3
|
themes,
|
|
4
4
|
tokens
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IXNI7NMT.js";
|
|
6
6
|
|
|
7
7
|
// src/theme.tsx
|
|
8
8
|
import { TamaguiProvider, Theme as TamaguiTheme } from "tamagui";
|
|
@@ -87,25 +87,25 @@ var StyledInput = styled3(TamaguiInput, {
|
|
|
87
87
|
name: "GsInput",
|
|
88
88
|
height: 44,
|
|
89
89
|
borderWidth: 1,
|
|
90
|
-
borderColor: "$
|
|
90
|
+
borderColor: "$borderSubtle",
|
|
91
91
|
borderRadius: "$3",
|
|
92
92
|
backgroundColor: "$background",
|
|
93
93
|
color: "$color",
|
|
94
94
|
px: "$3",
|
|
95
|
-
placeholderTextColor: "$
|
|
95
|
+
placeholderTextColor: "$textMuted",
|
|
96
96
|
focusStyle: { borderColor: "$borderColorFocus", outlineColor: "$focus", outlineWidth: 2, outlineStyle: "solid" },
|
|
97
97
|
disabledStyle: { opacity: 0.55, backgroundColor: "$surface" },
|
|
98
98
|
variants: { invalid: { true: { borderColor: "$danger" } } }
|
|
99
99
|
});
|
|
100
|
-
var Input = forwardRef2(({ borderColor, ...props }, ref) => /* @__PURE__ */ jsx3(StyledInput, { ref, borderColor: borderColor ?? "$
|
|
100
|
+
var Input = forwardRef2(({ borderColor, ...props }, ref) => /* @__PURE__ */ jsx3(StyledInput, { ref, borderColor: borderColor ?? "$borderSubtle", ...props }));
|
|
101
101
|
Input.displayName = "Input";
|
|
102
102
|
var Field = forwardRef2(
|
|
103
103
|
({ id, label, helperText, errorText, borderColor, ...props }, ref) => {
|
|
104
104
|
const messageId = `${id}-message`;
|
|
105
105
|
return /* @__PURE__ */ jsxs(YStack, { gap: "$2", children: [
|
|
106
106
|
/* @__PURE__ */ jsx3(Label, { htmlFor: id, children: /* @__PURE__ */ jsx3(Text, { variant: "label", children: label }) }),
|
|
107
|
-
/* @__PURE__ */ jsx3(StyledInput, { ref, id, borderColor: borderColor ?? (errorText ? "$danger" : "$
|
|
108
|
-
(errorText || helperText) && /* @__PURE__ */ jsx3(Text, { id: messageId, variant: "caption", tone: errorText ? "danger" : "
|
|
107
|
+
/* @__PURE__ */ jsx3(StyledInput, { ref, id, borderColor: borderColor ?? (errorText ? "$danger" : "$borderSubtle"), invalid: Boolean(errorText), "aria-invalid": Boolean(errorText), "aria-describedby": helperText || errorText ? messageId : void 0, ...props }),
|
|
108
|
+
(errorText || helperText) && /* @__PURE__ */ jsx3(Text, { id: messageId, variant: "caption", tone: errorText ? "danger" : "default", color: errorText ? void 0 : "$textMuted", children: errorText || helperText })
|
|
109
109
|
] });
|
|
110
110
|
}
|
|
111
111
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme.tsx","../src/button.tsx","../src/input.tsx","../src/text.tsx","../src/icon-data.ts","../src/icon-utils.ts"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react'\nimport { TamaguiProvider, Theme as TamaguiTheme } from 'tamagui'\nimport { config, type GsThemeName } from './config'\n\nexport interface GsProviderProps {\n children: ReactNode\n defaultTheme?: GsThemeName\n}\n\nexport function GsProvider({ children, defaultTheme = 'red' }: GsProviderProps) {\n return <TamaguiProvider config={config} defaultTheme={defaultTheme}>{children}</TamaguiProvider>\n}\n\nexport interface ThemeProps extends Omit<ComponentProps<typeof TamaguiTheme>, 'name'> {\n name: GsThemeName\n}\n\nexport function Theme({ name, children, ...props }: ThemeProps) {\n return <TamaguiTheme name={name} {...props}>{children}</TamaguiTheme>\n}\n","import { forwardRef, type ComponentProps, type ReactNode } from 'react'\nimport { Button as TamaguiButton, Spinner, styled } from 'tamagui'\n\nconst StyledButton = styled(TamaguiButton, {\n name: 'GsButton',\n unstyled: true,\n justifyContent: 'center',\n alignItems: 'center',\n flexWrap: 'nowrap',\n flexDirection: 'row',\n borderWidth: 1,\n borderColor: '$accent',\n backgroundColor: '$accent',\n color: '$accentText',\n fontWeight: '600',\n cursor: 'pointer',\n focusStyle: { outlineColor: '$focus', outlineWidth: 3, outlineStyle: 'solid' },\n hoverStyle: { backgroundColor: '$accentHover', borderColor: '$accentHover' },\n pressStyle: { backgroundColor: '$accentPress', borderColor: '$accentPress', scale: 0.98 },\n disabledStyle: { opacity: 0.5, cursor: 'not-allowed' },\n variants: {\n intent: {\n primary: {},\n secondary: { backgroundColor: '$surface', color: '$color', borderColor: '$borderColor', hoverStyle: { borderColor: '$borderColorHover', backgroundColor: '$backgroundHover' } },\n ghost: { backgroundColor: 'transparent', color: '$accent', borderColor: 'transparent', hoverStyle: { backgroundColor: 'transparent', borderColor: 'transparent' }, pressStyle: { backgroundColor: 'transparent', borderColor: 'transparent', opacity: 0.7 }, focusStyle: { outlineColor: 'transparent' } },\n danger: { backgroundColor: '$danger', borderColor: '$danger', color: '$accentText' },\n },\n size: {\n sm: { height: 32, px: '$3', borderRadius: '$2', fontSize: '$2' },\n md: { height: 40, px: '$4', borderRadius: '$3', fontSize: '$3' },\n lg: { height: 48, px: '$5', borderRadius: '$4', fontSize: '$4' },\n },\n } as const,\n defaultVariants: { intent: 'primary', size: 'md' },\n})\n\nexport interface ButtonProps extends ComponentProps<typeof StyledButton> {\n loading?: boolean\n loadingLabel?: string\n children?: ReactNode\n}\n\nexport const Button = forwardRef<React.ComponentRef<typeof StyledButton>, ButtonProps>(\n ({ loading = false, loadingLabel = '', disabled, children, icon, borderColor, ...props }, ref) => {\n const iconProps = loading\n ? { icon: <Spinner size=\"small\" color=\"currentColor\" /> }\n : icon === undefined ? {} : { icon }\n\n return (\n <StyledButton gap=\"$2\" ref={ref} disabled={disabled || loading} aria-busy={loading} borderColor={borderColor ?? '$accent'} {...iconProps} {...props}>\n {loading ? loadingLabel : children}\n </StyledButton>\n )\n },\n)\nButton.displayName = 'Button'\n","import { forwardRef, type ComponentProps, type ReactNode } from 'react'\nimport { Input as TamaguiInput, Label, styled, YStack } from 'tamagui'\nimport { Text } from './text'\n\nconst StyledInput = styled(TamaguiInput, {\n name: 'GsInput', height: 44, borderWidth: 1, borderColor: '$accent', borderRadius: '$3',\n backgroundColor: '$background', color: '$color', px: '$3',\n placeholderTextColor: '$colorMuted',\n focusStyle: { borderColor: '$borderColorFocus', outlineColor: '$focus', outlineWidth: 2, outlineStyle: 'solid' },\n disabledStyle: { opacity: 0.55, backgroundColor: '$surface' },\n variants: { invalid: { true: { borderColor: '$danger' } } } as const,\n})\n\nexport interface InputProps extends ComponentProps<typeof StyledInput> {}\n\nexport const Input = forwardRef<React.ComponentRef<typeof StyledInput>, InputProps>(({ borderColor, ...props }, ref) => (\n <StyledInput ref={ref} borderColor={borderColor ?? '$accent'} {...props} />\n))\nInput.displayName = 'Input'\n\nexport interface FieldProps extends InputProps {\n id: string\n label: string\n helperText?: ReactNode\n errorText?: ReactNode\n}\n\nexport const Field = forwardRef<React.ComponentRef<typeof StyledInput>, FieldProps>(\n ({ id, label, helperText, errorText, borderColor, ...props }, ref) => {\n const messageId = `${id}-message`\n return (\n <YStack gap=\"$2\">\n <Label htmlFor={id}><Text variant=\"label\">{label}</Text></Label>\n <StyledInput ref={ref} id={id} borderColor={borderColor ?? (errorText ? '$danger' : '$accent')} invalid={Boolean(errorText)} aria-invalid={Boolean(errorText)} aria-describedby={helperText || errorText ? messageId : undefined} {...props} />\n {(errorText || helperText) && <Text id={messageId} variant=\"caption\" tone={errorText ? 'danger' : 'muted'}>{errorText || helperText}</Text>}\n </YStack>\n )\n },\n)\nField.displayName = 'Field'\n","import { styled, Text as TamaguiText } from 'tamagui'\n\nexport const Text = styled(TamaguiText, {\n name: 'GsText',\n color: '$color',\n fontFamily: '$body',\n variants: {\n tone: { default: {}, muted: { color: '$colorMuted' }, accent: { color: '$accent' }, danger: { color: '$danger' } },\n variant: {\n caption: { fontSize: '$1', lineHeight: '$1' },\n body: { fontSize: '$3', lineHeight: '$3' },\n label: { fontSize: '$2', lineHeight: '$2', fontWeight: '600' },\n title: { fontSize: '$6', lineHeight: '$6', fontWeight: '700', letterSpacing: -0.2 },\n display: { fontSize: '$8', lineHeight: '$8', fontWeight: '700', letterSpacing: -0.8 },\n },\n } as const,\n defaultVariants: { tone: 'default', variant: 'body' },\n})\n","import type { IconPath } from './icon-utils'\n\nexport const icons = {\n arrowRight: [{ d: 'M5 12h14M13 6l6 6-6 6', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n check: [{ d: 'm5 12 4 4L19 6', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n heart: [{ d: 'M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8l1.1 1.1L12 21l7.7-7.5 1.1-1.1a5.5 5.5 0 0 0 0-7.8Z', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n} as const satisfies Record<string, readonly IconPath[]>\n\nexport type IconName = keyof typeof icons\n","export interface IconPath {\n d: string\n fill?: string\n stroke?: string\n strokeWidth?: number\n fillRule?: 'evenodd' | 'nonzero'\n clipRule?: 'evenodd' | 'nonzero'\n}\n\nexport function normalizeIconPaths(paths: readonly IconPath[], color: string): IconPath[] {\n return paths.map((path) => {\n const normalized: IconPath = { ...path, fill: path.fill ?? (path.stroke ? 'none' : color) }\n if (path.stroke !== undefined) normalized.stroke = path.stroke === 'currentColor' ? color : path.stroke\n return normalized\n })\n}\n"],"mappings":"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","names":["jsx","forwardRef","styled","styled","jsx","styled","forwardRef"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme.tsx","../src/button.tsx","../src/input.tsx","../src/text.tsx","../src/icon-data.ts","../src/icon-utils.ts"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react'\nimport { TamaguiProvider, Theme as TamaguiTheme } from 'tamagui'\nimport { config, type GsThemeName } from './config'\n\nexport interface GsProviderProps {\n children: ReactNode\n defaultTheme?: GsThemeName\n}\n\nexport function GsProvider({ children, defaultTheme = 'red' }: GsProviderProps) {\n return <TamaguiProvider config={config} defaultTheme={defaultTheme}>{children}</TamaguiProvider>\n}\n\nexport interface ThemeProps extends Omit<ComponentProps<typeof TamaguiTheme>, 'name'> {\n name: GsThemeName\n}\n\nexport function Theme({ name, children, ...props }: ThemeProps) {\n return <TamaguiTheme name={name} {...props}>{children}</TamaguiTheme>\n}\n","import { forwardRef, type ComponentProps, type ReactNode } from 'react'\nimport { Button as TamaguiButton, Spinner, styled } from 'tamagui'\n\nconst StyledButton = styled(TamaguiButton, {\n name: 'GsButton',\n unstyled: true,\n justifyContent: 'center',\n alignItems: 'center',\n flexWrap: 'nowrap',\n flexDirection: 'row',\n borderWidth: 1,\n borderColor: '$accent',\n backgroundColor: '$accent',\n color: '$accentText',\n fontWeight: '600',\n cursor: 'pointer',\n focusStyle: { outlineColor: '$focus', outlineWidth: 3, outlineStyle: 'solid' },\n hoverStyle: { backgroundColor: '$accentHover', borderColor: '$accentHover' },\n pressStyle: { backgroundColor: '$accentPress', borderColor: '$accentPress', scale: 0.98 },\n disabledStyle: { opacity: 0.5, cursor: 'not-allowed' },\n variants: {\n intent: {\n primary: {},\n secondary: { backgroundColor: '$surface', color: '$color', borderColor: '$borderColor', hoverStyle: { borderColor: '$borderColorHover', backgroundColor: '$backgroundHover' } },\n ghost: { backgroundColor: 'transparent', color: '$accent', borderColor: 'transparent', hoverStyle: { backgroundColor: 'transparent', borderColor: 'transparent' }, pressStyle: { backgroundColor: 'transparent', borderColor: 'transparent', opacity: 0.7 }, focusStyle: { outlineColor: 'transparent' } },\n danger: { backgroundColor: '$danger', borderColor: '$danger', color: '$accentText' },\n },\n size: {\n sm: { height: 32, px: '$3', borderRadius: '$2', fontSize: '$2' },\n md: { height: 40, px: '$4', borderRadius: '$3', fontSize: '$3' },\n lg: { height: 48, px: '$5', borderRadius: '$4', fontSize: '$4' },\n },\n } as const,\n defaultVariants: { intent: 'primary', size: 'md' },\n})\n\nexport interface ButtonProps extends ComponentProps<typeof StyledButton> {\n loading?: boolean\n loadingLabel?: string\n children?: ReactNode\n}\n\nexport const Button = forwardRef<React.ComponentRef<typeof StyledButton>, ButtonProps>(\n ({ loading = false, loadingLabel = '', disabled, children, icon, borderColor, ...props }, ref) => {\n const iconProps = loading\n ? { icon: <Spinner size=\"small\" color=\"currentColor\" /> }\n : icon === undefined ? {} : { icon }\n\n return (\n <StyledButton gap=\"$2\" ref={ref} disabled={disabled || loading} aria-busy={loading} borderColor={borderColor ?? '$accent'} {...iconProps} {...props}>\n {loading ? loadingLabel : children}\n </StyledButton>\n )\n },\n)\nButton.displayName = 'Button'\n","import { forwardRef, type ComponentProps, type ReactNode } from 'react'\nimport { Input as TamaguiInput, Label, styled, YStack } from 'tamagui'\nimport { Text } from './text'\n\nconst StyledInput = styled(TamaguiInput, {\n name: 'GsInput', height: 44, borderWidth: 1, borderColor: '$borderSubtle', borderRadius: '$3',\n backgroundColor: '$background', color: '$color', px: '$3',\n placeholderTextColor: '$textMuted',\n focusStyle: { borderColor: '$borderColorFocus', outlineColor: '$focus', outlineWidth: 2, outlineStyle: 'solid' },\n disabledStyle: { opacity: 0.55, backgroundColor: '$surface' },\n variants: { invalid: { true: { borderColor: '$danger' } } } as const,\n})\n\nexport interface InputProps extends ComponentProps<typeof StyledInput> {}\n\nexport const Input = forwardRef<React.ComponentRef<typeof StyledInput>, InputProps>(({ borderColor, ...props }, ref) => (\n <StyledInput ref={ref} borderColor={borderColor ?? '$borderSubtle'} {...props} />\n))\nInput.displayName = 'Input'\n\nexport interface FieldProps extends InputProps {\n id: string\n label: string\n helperText?: ReactNode\n errorText?: ReactNode\n}\n\nexport const Field = forwardRef<React.ComponentRef<typeof StyledInput>, FieldProps>(\n ({ id, label, helperText, errorText, borderColor, ...props }, ref) => {\n const messageId = `${id}-message`\n return (\n <YStack gap=\"$2\">\n <Label htmlFor={id}><Text variant=\"label\">{label}</Text></Label>\n <StyledInput ref={ref} id={id} borderColor={borderColor ?? (errorText ? '$danger' : '$borderSubtle')} invalid={Boolean(errorText)} aria-invalid={Boolean(errorText)} aria-describedby={helperText || errorText ? messageId : undefined} {...props} />\n {(errorText || helperText) && <Text id={messageId} variant=\"caption\" tone={errorText ? 'danger' : 'default'} color={errorText ? undefined : '$textMuted'}>{errorText || helperText}</Text>}\n </YStack>\n )\n },\n)\nField.displayName = 'Field'\n","import { styled, Text as TamaguiText } from 'tamagui'\n\nexport const Text = styled(TamaguiText, {\n name: 'GsText',\n color: '$color',\n fontFamily: '$body',\n variants: {\n tone: { default: {}, muted: { color: '$colorMuted' }, accent: { color: '$accent' }, danger: { color: '$danger' } },\n variant: {\n caption: { fontSize: '$1', lineHeight: '$1' },\n body: { fontSize: '$3', lineHeight: '$3' },\n label: { fontSize: '$2', lineHeight: '$2', fontWeight: '600' },\n title: { fontSize: '$6', lineHeight: '$6', fontWeight: '700', letterSpacing: -0.2 },\n display: { fontSize: '$8', lineHeight: '$8', fontWeight: '700', letterSpacing: -0.8 },\n },\n } as const,\n defaultVariants: { tone: 'default', variant: 'body' },\n})\n","import type { IconPath } from './icon-utils'\n\nexport const icons = {\n arrowRight: [{ d: 'M5 12h14M13 6l6 6-6 6', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n check: [{ d: 'm5 12 4 4L19 6', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n heart: [{ d: 'M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8l1.1 1.1L12 21l7.7-7.5 1.1-1.1a5.5 5.5 0 0 0 0-7.8Z', fill: 'none', stroke: 'currentColor', strokeWidth: 2 }],\n} as const satisfies Record<string, readonly IconPath[]>\n\nexport type IconName = keyof typeof icons\n","export interface IconPath {\n d: string\n fill?: string\n stroke?: string\n strokeWidth?: number\n fillRule?: 'evenodd' | 'nonzero'\n clipRule?: 'evenodd' | 'nonzero'\n}\n\nexport function normalizeIconPaths(paths: readonly IconPath[], color: string): IconPath[] {\n return paths.map((path) => {\n const normalized: IconPath = { ...path, fill: path.fill ?? (path.stroke ? 'none' : color) }\n if (path.stroke !== undefined) normalized.stroke = path.stroke === 'currentColor' ? color : path.stroke\n return normalized\n })\n}\n"],"mappings":"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","names":["jsx","forwardRef","styled","styled","jsx","styled","forwardRef"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import { createFont, createTamagui, createTokens } from 'tamagui'\n\nexport const tokens = createTokens({\n color: {\n white: '#FFFFFF',\n black: '#000000',\n brandRed: '#A81D1D',\n brandRedDark: '#FC2B2B',\n brandBlue: '#10106B',\n brandBlueDark: '#2323F7',\n red1: '#FFF7F8', red3: '#FFE1E5', red8: '#B4233C', red9: '#8F1530', red10: '#741026', red11: '#5B0A1D', red12: '#350611',\n blue1: '#F5F9FF', blue3: '#DCEBFF', blue8: '#2864B5', blue9: '#174A8B', blue10: '#123D75', blue11: '#0C315F', blue12: '#071F3F',\n gray1: '#FAFAFC', gray3: '#ECECF1', gray5: '#D0D1D8', gray8: '#777A86', gray10: '#4E505A', gray12: '#202127',\n dark1: '#0B0D12', dark2: '#12151C', dark3: '#1B1F29', dark5: '#343946', dark8: '#8D94A3', dark11: '#D6D9E0', dark12: '#F7F8FA',\n },\n space: { 0: 0, 1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, 8: 32, 10: 40, 12: 48, true: 16 },\n size: { 0: 0, 1: 24, 2: 32, 3: 40, 4: 48, 5: 56, 6: 64, 8: 80, 10: 96, sm: 32, md: 40, lg: 48, true: 40 },\n radius: { 0: 0, 1: 4, 2: 8, 3: 12, 4: 16, 5: 20, 6: 24, full: 9999, true: 12 },\n zIndex: { 0: 0, 1: 10, 2: 20, 3: 30, 4: 40, 5: 50 },\n})\n\nconst bodyFont = createFont({\n family: 'Inter, ui-sans-serif, system-ui, sans-serif',\n size: { 1: 12, 2: 14, 3: 16, 4: 18, 5: 22, 6: 28, 7: 36, 8: 48, sm: 14, md: 16, lg: 18, true: 16 },\n lineHeight: { 1: 16, 2: 20, 3: 24, 4: 28, 5: 30, 6: 36, 7: 44, 8: 56, sm: 20, md: 24, lg: 28, true: 24 },\n weight: { 4: '400', 5: '500', 6: '600', 7: '700', true: '400' },\n letterSpacing: { 4: 0, 6: -0.2, 7: -0.5, true: 0 },\n})\n\nexport const themes = {\n red: {\n background: '#FFFFFF', backgroundHover: '#FFF7F7', backgroundPress: '#FBE8E8', backgroundFocus: '#FFF7F7',\n surface: '#FFFFFF', color: '#000000', colorMuted: '#5F3030', borderColor: '#A81D1D',\n borderColorHover: '#A81D1D', borderColorPress: '#A81D1D', borderColorFocus: '#A81D1D',\n accent: '#A81D1D', accentHover: '#8F1818', accentPress: '#751414', accentText: '#FFFFFF',\n focus: '#A81D1D', danger: '#A81D1D', disabled: '#D8B8B8', shadowColor: '#A81D1D',\n },\n red_dark: {\n background: '#000000', backgroundHover: '#170606', backgroundPress: '#260808', backgroundFocus: '#170606',\n surface: '#000000', color: '#FFFFFF', colorMuted: '#F5BABA', borderColor: '#FC2B2B',\n borderColorHover: '#FC2B2B', borderColorPress: '#FC2B2B', borderColorFocus: '#FC2B2B',\n accent: '#FC2B2B', accentHover: '#FF4D4D', accentPress: '#D91F1F', accentText: '#000000',\n focus: '#FC2B2B', danger: '#FC2B2B', disabled: '#5E2020', shadowColor: '#FC2B2B',\n },\n blue: {\n background: '#FFFFFF', backgroundHover: '#F5F5FF', backgroundPress: '#E8E8F4', backgroundFocus: '#F5F5FF',\n surface: '#FFFFFF', color: '#000000', colorMuted: '#34345F', borderColor: '#10106B',\n borderColorHover: '#10106B', borderColorPress: '#10106B', borderColorFocus: '#10106B',\n accent: '#10106B', accentHover: '#0D0D59', accentPress: '#090944', accentText: '#FFFFFF',\n focus: '#10106B', danger: '#A81D1D', disabled: '#B8B8D2', shadowColor: '#10106B',\n },\n blue_dark: {\n background: '#000000', backgroundHover: '#070717', backgroundPress: '#0B0B28', backgroundFocus: '#070717',\n surface: '#000000', color: '#FFFFFF', colorMuted: '#C7C7FF', borderColor: '#2323F7',\n borderColorHover: '#2323F7', borderColorPress: '#2323F7', borderColorFocus: '#2323F7',\n accent: '#2323F7', accentHover: '#4141FF', accentPress: '#1B1BC9', accentText: '#FFFFFF',\n focus: '#2323F7', danger: '#FC2B2B', disabled: '#20205E', shadowColor: '#2323F7',\n },\n} as const\n\n// Tamagui's web CSS generator needs base light/dark themes before it emits\n// selectors for custom theme names. These aliases stay internal so the public\n// GsThemeName API remains limited to the four branded themes above.\nconst tamaguiThemes = {\n light: themes.red,\n dark: themes.red_dark,\n ...themes,\n} as const\n\nexport const config = createTamagui({\n tokens,\n themes: tamaguiThemes,\n fonts: { body: bodyFont, heading: bodyFont },\n shorthands: { p: 'padding', px: 'paddingHorizontal', py: 'paddingVertical', m: 'margin', mt: 'marginTop', mb: 'marginBottom', bg: 'backgroundColor' } as const,\n media: { sm: { maxWidth: 660 }, md: { maxWidth: 900 }, lg: { maxWidth: 1200 }, reduceMotion: { prefersReducedMotion: 'reduce' } },\n settings: { defaultFont: 'body' },\n})\n\nexport type GsConfig = typeof config\nexport type GsThemeName = keyof typeof themes\n\ndeclare module 'tamagui' {\n interface TamaguiCustomConfig extends GsConfig {}\n}\n\nexport default config\n"],"mappings":"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","names":[]}
|