@girumtech/gs-design-system-core 0.1.6 → 0.1.8

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.
@@ -49,13 +49,13 @@ var bodyFont = createFont({
49
49
  letterSpacing: { 4: 0, 6: -0.2, 7: -0.5, true: 0 }
50
50
  });
51
51
  var lightNeutrals = {
52
- borderSubtle: "#E5E7EB",
52
+ borderSubtle: "#CDCDCD",
53
53
  surfaceMuted: "#F3F4F6",
54
54
  iconMuted: "#9CA3AF",
55
55
  textMuted: "#6B7280"
56
56
  };
57
57
  var darkNeutrals = {
58
- borderSubtle: "#4D515C",
58
+ borderSubtle: "#F0F0F0",
59
59
  surfaceMuted: "#1B1F29",
60
60
  iconMuted: "#8D94A3",
61
61
  textMuted: "#9CA3AF"
@@ -171,4 +171,4 @@ export {
171
171
  config,
172
172
  config_default
173
173
  };
174
- //# sourceMappingURL=chunk-IXNI7NMT.js.map
174
+ //# sourceMappingURL=chunk-3LJO6EJC.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 soft grey\n// hairline in light mode and a near-white grey in dark mode, so a 1px border\n// stays visible on the near-black dark background.\nconst lightNeutrals = {\n borderSubtle: '#CDCDCD',\n surfaceMuted: '#F3F4F6',\n iconMuted: '#9CA3AF',\n textMuted: '#6B7280',\n} as const\n\nconst darkNeutrals = {\n borderSubtle: '#F0F0F0',\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,7 +169,7 @@ declare const tokens: {
169
169
  }, "color" | "space" | "size" | "radius" | "zIndex">;
170
170
  declare const themes: {
171
171
  readonly red: {
172
- readonly borderSubtle: "#E5E7EB";
172
+ readonly borderSubtle: "#CDCDCD";
173
173
  readonly surfaceMuted: "#F3F4F6";
174
174
  readonly iconMuted: "#9CA3AF";
175
175
  readonly textMuted: "#6B7280";
@@ -194,7 +194,7 @@ declare const themes: {
194
194
  readonly shadowColor: "#A81D1D";
195
195
  };
196
196
  readonly red_dark: {
197
- readonly borderSubtle: "#4D515C";
197
+ readonly borderSubtle: "#F0F0F0";
198
198
  readonly surfaceMuted: "#1B1F29";
199
199
  readonly iconMuted: "#8D94A3";
200
200
  readonly textMuted: "#9CA3AF";
@@ -219,7 +219,7 @@ declare const themes: {
219
219
  readonly shadowColor: "#FC2B2B";
220
220
  };
221
221
  readonly blue: {
222
- readonly borderSubtle: "#E5E7EB";
222
+ readonly borderSubtle: "#CDCDCD";
223
223
  readonly surfaceMuted: "#F3F4F6";
224
224
  readonly iconMuted: "#9CA3AF";
225
225
  readonly textMuted: "#6B7280";
@@ -244,7 +244,7 @@ declare const themes: {
244
244
  readonly shadowColor: "#10106B";
245
245
  };
246
246
  readonly blue_dark: {
247
- readonly borderSubtle: "#4D515C";
247
+ readonly borderSubtle: "#F0F0F0";
248
248
  readonly surfaceMuted: "#1B1F29";
249
249
  readonly iconMuted: "#8D94A3";
250
250
  readonly textMuted: "#9CA3AF";
@@ -437,7 +437,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
437
437
  };
438
438
  }, "color" | "space" | "size" | "radius" | "zIndex">, {
439
439
  readonly red: {
440
- readonly borderSubtle: "#E5E7EB";
440
+ readonly borderSubtle: "#CDCDCD";
441
441
  readonly surfaceMuted: "#F3F4F6";
442
442
  readonly iconMuted: "#9CA3AF";
443
443
  readonly textMuted: "#6B7280";
@@ -462,7 +462,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
462
462
  readonly shadowColor: "#A81D1D";
463
463
  };
464
464
  readonly red_dark: {
465
- readonly borderSubtle: "#4D515C";
465
+ readonly borderSubtle: "#F0F0F0";
466
466
  readonly surfaceMuted: "#1B1F29";
467
467
  readonly iconMuted: "#8D94A3";
468
468
  readonly textMuted: "#9CA3AF";
@@ -487,7 +487,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
487
487
  readonly shadowColor: "#FC2B2B";
488
488
  };
489
489
  readonly blue: {
490
- readonly borderSubtle: "#E5E7EB";
490
+ readonly borderSubtle: "#CDCDCD";
491
491
  readonly surfaceMuted: "#F3F4F6";
492
492
  readonly iconMuted: "#9CA3AF";
493
493
  readonly textMuted: "#6B7280";
@@ -512,7 +512,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
512
512
  readonly shadowColor: "#10106B";
513
513
  };
514
514
  readonly blue_dark: {
515
- readonly borderSubtle: "#4D515C";
515
+ readonly borderSubtle: "#F0F0F0";
516
516
  readonly surfaceMuted: "#1B1F29";
517
517
  readonly iconMuted: "#8D94A3";
518
518
  readonly textMuted: "#9CA3AF";
@@ -537,7 +537,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
537
537
  readonly shadowColor: "#2323F7";
538
538
  };
539
539
  readonly light: {
540
- readonly borderSubtle: "#E5E7EB";
540
+ readonly borderSubtle: "#CDCDCD";
541
541
  readonly surfaceMuted: "#F3F4F6";
542
542
  readonly iconMuted: "#9CA3AF";
543
543
  readonly textMuted: "#6B7280";
@@ -562,7 +562,7 @@ declare const config: tamagui.TamaguiInternalConfig<{
562
562
  readonly shadowColor: "#A81D1D";
563
563
  };
564
564
  readonly dark: {
565
- readonly borderSubtle: "#4D515C";
565
+ readonly borderSubtle: "#F0F0F0";
566
566
  readonly surfaceMuted: "#1B1F29";
567
567
  readonly iconMuted: "#8D94A3";
568
568
  readonly textMuted: "#9CA3AF";
package/dist/config.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  config_default,
4
4
  themes,
5
5
  tokens
6
- } from "./chunk-IXNI7NMT.js";
6
+ } from "./chunk-3LJO6EJC.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-IXNI7NMT.js";
5
+ } from "./chunk-3LJO6EJC.js";
6
6
 
7
7
  // src/theme.tsx
8
8
  import { TamaguiProvider, Theme as TamaguiTheme } from "tamagui";
@@ -93,7 +93,9 @@ var StyledInput = styled3(TamaguiInput, {
93
93
  color: "$color",
94
94
  px: "$3",
95
95
  placeholderTextColor: "$textMuted",
96
- focusStyle: { borderColor: "$borderColorFocus", outlineColor: "$focus", outlineWidth: 2, outlineStyle: "solid" },
96
+ // Focus is signalled with the border colour only. A CSS `outline` is drawn
97
+ // outside the box and gets clipped by scroll containers on native.
98
+ focusStyle: { borderColor: "$borderColorFocus" },
97
99
  disabledStyle: { opacity: 0.55, backgroundColor: "$surface" },
98
100
  variants: { invalid: { true: { borderColor: "$danger" } } }
99
101
  });
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: '$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"]}
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 // Focus is signalled with the border colour only. A CSS `outline` is drawn\n // outside the box and gets clipped by scroll containers on native.\n focusStyle: { borderColor: '$borderColorFocus' },\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.6",
3
+ "version": "0.1.8",
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. `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":[]}