@girumtech/gs-design-system-core 0.1.5 → 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.
@@ -55,8 +55,8 @@ var lightNeutrals = {
55
55
  textMuted: "#6B7280"
56
56
  };
57
57
  var darkNeutrals = {
58
- borderSubtle: "#2A2C34",
59
- surfaceMuted: "#16181D",
58
+ borderSubtle: "#4D515C",
59
+ surfaceMuted: "#1B1F29",
60
60
  iconMuted: "#8D94A3",
61
61
  textMuted: "#9CA3AF"
62
62
  };
@@ -171,4 +171,4 @@ export {
171
171
  config,
172
172
  config_default
173
173
  };
174
- //# sourceMappingURL=chunk-D56BPVCZ.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
@@ -194,8 +194,8 @@ declare const themes: {
194
194
  readonly shadowColor: "#A81D1D";
195
195
  };
196
196
  readonly red_dark: {
197
- readonly borderSubtle: "#2A2C34";
198
- readonly surfaceMuted: "#16181D";
197
+ readonly borderSubtle: "#4D515C";
198
+ readonly surfaceMuted: "#1B1F29";
199
199
  readonly iconMuted: "#8D94A3";
200
200
  readonly textMuted: "#9CA3AF";
201
201
  readonly background: "#000000";
@@ -244,8 +244,8 @@ declare const themes: {
244
244
  readonly shadowColor: "#10106B";
245
245
  };
246
246
  readonly blue_dark: {
247
- readonly borderSubtle: "#2A2C34";
248
- readonly surfaceMuted: "#16181D";
247
+ readonly borderSubtle: "#4D515C";
248
+ readonly surfaceMuted: "#1B1F29";
249
249
  readonly iconMuted: "#8D94A3";
250
250
  readonly textMuted: "#9CA3AF";
251
251
  readonly background: "#000000";
@@ -462,8 +462,8 @@ declare const config: tamagui.TamaguiInternalConfig<{
462
462
  readonly shadowColor: "#A81D1D";
463
463
  };
464
464
  readonly red_dark: {
465
- readonly borderSubtle: "#2A2C34";
466
- readonly surfaceMuted: "#16181D";
465
+ readonly borderSubtle: "#4D515C";
466
+ readonly surfaceMuted: "#1B1F29";
467
467
  readonly iconMuted: "#8D94A3";
468
468
  readonly textMuted: "#9CA3AF";
469
469
  readonly background: "#000000";
@@ -512,8 +512,8 @@ declare const config: tamagui.TamaguiInternalConfig<{
512
512
  readonly shadowColor: "#10106B";
513
513
  };
514
514
  readonly blue_dark: {
515
- readonly borderSubtle: "#2A2C34";
516
- readonly surfaceMuted: "#16181D";
515
+ readonly borderSubtle: "#4D515C";
516
+ readonly surfaceMuted: "#1B1F29";
517
517
  readonly iconMuted: "#8D94A3";
518
518
  readonly textMuted: "#9CA3AF";
519
519
  readonly background: "#000000";
@@ -562,8 +562,8 @@ declare const config: tamagui.TamaguiInternalConfig<{
562
562
  readonly shadowColor: "#A81D1D";
563
563
  };
564
564
  readonly dark: {
565
- readonly borderSubtle: "#2A2C34";
566
- readonly surfaceMuted: "#16181D";
565
+ readonly borderSubtle: "#4D515C";
566
+ readonly surfaceMuted: "#1B1F29";
567
567
  readonly iconMuted: "#8D94A3";
568
568
  readonly textMuted: "#9CA3AF";
569
569
  readonly background: "#000000";
package/dist/config.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  config_default,
4
4
  themes,
5
5
  tokens
6
- } from "./chunk-D56BPVCZ.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-D56BPVCZ.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.5",
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\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.\nconst lightNeutrals = {\n borderSubtle: '#E5E7EB',\n surfaceMuted: '#F3F4F6',\n iconMuted: '#9CA3AF',\n textMuted: '#6B7280',\n} as const\n\nconst darkNeutrals = {\n borderSubtle: '#2A2C34',\n surfaceMuted: '#16181D',\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":[]}