@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-IEFTEUQ7.js.map
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":"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","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
@@ -3,7 +3,7 @@ import {
3
3
  config_default,
4
4
  themes,
5
5
  tokens
6
- } from "./chunk-IEFTEUQ7.js";
6
+ } from "./chunk-IXNI7NMT.js";
7
7
  export {
8
8
  config,
9
9
  config_default as default,
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  config,
3
3
  themes,
4
4
  tokens
5
- } from "./chunk-IEFTEUQ7.js";
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: "$accent",
90
+ borderColor: "$borderSubtle",
91
91
  borderRadius: "$3",
92
92
  backgroundColor: "$background",
93
93
  color: "$color",
94
94
  px: "$3",
95
- placeholderTextColor: "$colorMuted",
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 ?? "$accent", ...props }));
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" : "$accent"), 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" : "muted", children: errorText || helperText })
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@girumtech/gs-design-system-core",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Shared Tamagui configuration and components for GsDesignSystem",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -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":";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;AAEM,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,EACzE;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,EACzE;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,EACzE;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,EACzE;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":[]}