@vetc-miniapp/ui-react 0.0.24 → 0.0.26

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.
Files changed (172) hide show
  1. package/dist/bridge.d.ts +17 -0
  2. package/dist/bridge.js +20 -0
  3. package/dist/components/app.d.ts +17 -0
  4. package/dist/components/app.js +34 -0
  5. package/dist/components/avatar/Avatar.d.ts +21 -0
  6. package/dist/components/avatar/Avatar.js +33 -0
  7. package/dist/components/avatar/index.js +1 -0
  8. package/dist/components/bottom-sheet/BottomSheet.d.ts +19 -0
  9. package/dist/components/bottom-sheet/BottomSheet.js +70 -0
  10. package/dist/components/bottom-sheet/index.js +1 -0
  11. package/dist/components/button/Button.d.ts +32 -0
  12. package/dist/components/button/Button.js +165 -0
  13. package/dist/components/button/index.js +1 -0
  14. package/dist/components/button-group/ButtonGroup.d.ts +28 -0
  15. package/dist/components/button-group/ButtonGroup.js +21 -0
  16. package/dist/components/button-group/index.js +1 -0
  17. package/dist/components/card/Card.d.ts +18 -0
  18. package/dist/components/card/Card.js +35 -0
  19. package/dist/components/card/index.js +1 -0
  20. package/dist/components/checkbox/Checkbox.d.ts +41 -0
  21. package/dist/components/checkbox/Checkbox.js +94 -0
  22. package/dist/components/checkbox/index.js +1 -0
  23. package/dist/components/chip/Chip.d.ts +24 -0
  24. package/dist/components/chip/Chip.js +83 -0
  25. package/dist/components/chip/index.js +1 -0
  26. package/dist/components/dialog/Dialog.d.ts +19 -0
  27. package/dist/components/dialog/Dialog.js +51 -0
  28. package/dist/components/dialog/index.js +1 -0
  29. package/dist/components/divider/Divider.d.ts +16 -0
  30. package/dist/components/divider/Divider.js +18 -0
  31. package/dist/components/divider/index.js +1 -0
  32. package/dist/components/input/Input.d.ts +40 -0
  33. package/dist/components/input/Input.js +51 -0
  34. package/dist/components/input/index.js +1 -0
  35. package/dist/components/list/List.d.ts +31 -0
  36. package/dist/components/list/List.js +72 -0
  37. package/dist/components/list/index.js +1 -0
  38. package/dist/components/loading/Loading.d.ts +28 -0
  39. package/dist/components/loading/Loading.js +33 -0
  40. package/dist/components/loading/index.js +1 -0
  41. package/dist/components/modal/Modal.d.ts +38 -0
  42. package/dist/components/modal/Modal.js +50 -0
  43. package/dist/components/modal/index.js +1 -0
  44. package/dist/components/navigation-bar/NavigationBar.d.ts +44 -0
  45. package/dist/components/navigation-bar/NavigationBar.js +70 -0
  46. package/dist/components/navigation-bar/index.js +1 -0
  47. package/dist/components/radio/Radio.d.ts +40 -0
  48. package/dist/components/radio/Radio.js +88 -0
  49. package/dist/components/radio/index.js +1 -0
  50. package/dist/components/select/Select.d.ts +29 -0
  51. package/dist/components/select/Select.js +30 -0
  52. package/dist/components/select/index.js +1 -0
  53. package/dist/components/switch/Switch.d.ts +23 -0
  54. package/dist/components/switch/Switch.js +81 -0
  55. package/dist/components/switch/index.js +1 -0
  56. package/dist/components/tab-bar/TabBar.d.ts +28 -0
  57. package/dist/components/tab-bar/TabBar.js +60 -0
  58. package/dist/components/tab-bar/index.js +1 -0
  59. package/dist/components/textarea/Textarea.d.ts +31 -0
  60. package/dist/components/textarea/Textarea.js +33 -0
  61. package/dist/components/textarea/index.js +1 -0
  62. package/dist/components/toast/Toast.d.ts +41 -0
  63. package/dist/components/toast/Toast.js +61 -0
  64. package/dist/components/toast/index.js +1 -0
  65. package/dist/components/typography/Typography.d.ts +45 -0
  66. package/dist/components/typography/Typography.js +143 -0
  67. package/dist/components/typography/index.js +1 -0
  68. package/dist/hooks/use-app-pause.d.ts +4 -0
  69. package/dist/hooks/use-app-pause.js +25 -0
  70. package/dist/hooks/use-app-resume.d.ts +4 -0
  71. package/dist/hooks/use-app-resume.js +25 -0
  72. package/{src/ui-react/hooks/use-app-state.ts → dist/hooks/use-app-state.d.ts} +0 -1
  73. package/dist/hooks/use-app-state.js +1 -0
  74. package/dist/hooks/use-did-hide.d.ts +6 -0
  75. package/dist/hooks/use-did-hide.js +20 -0
  76. package/dist/hooks/use-did-show.d.ts +6 -0
  77. package/dist/hooks/use-did-show.js +20 -0
  78. package/dist/hooks/use-listener-scan-qr.d.ts +10 -0
  79. package/dist/hooks/use-listener-scan-qr.js +25 -0
  80. package/dist/hooks/use-navigate.d.ts +8 -0
  81. package/dist/hooks/use-navigate.js +23 -0
  82. package/dist/hooks/use-tap-app-bar.d.ts +6 -0
  83. package/dist/hooks/use-tap-app-bar.js +20 -0
  84. package/{src/ui-react/index.ts → dist/index.d.ts} +1 -30
  85. package/dist/index.js +41 -0
  86. package/dist/styles/VETCProvider.d.ts +114 -0
  87. package/dist/styles/VETCProvider.js +124 -0
  88. package/{src/ui-react → dist}/styles/tokens.css +22 -1
  89. package/dist/tokens/colors.d.ts +127 -0
  90. package/dist/tokens/colors.js +75 -0
  91. package/dist/tokens/index.js +3 -0
  92. package/dist/tokens/spacing.d.ts +56 -0
  93. package/dist/tokens/spacing.js +56 -0
  94. package/dist/tokens/typography.d.ts +121 -0
  95. package/dist/tokens/typography.js +57 -0
  96. package/dist/types/app.d.ts +21 -0
  97. package/dist/types/app.js +1 -0
  98. package/package.json +13 -7
  99. package/src/dist/ui-react/index.js +0 -2
  100. package/src/dist/ui-react/index.js.LICENSE.txt +0 -11
  101. package/src/ui-react/bridge.js +0 -36
  102. package/src/ui-react/bridge.ts +0 -48
  103. package/src/ui-react/components/app.d.ts +0 -7
  104. package/src/ui-react/components/app.jsx +0 -80
  105. package/src/ui-react/components/app.tsx +0 -42
  106. package/src/ui-react/components/app1.js +0 -101
  107. package/src/ui-react/components/avatar/Avatar.tsx +0 -88
  108. package/src/ui-react/components/bottom-sheet/BottomSheet.tsx +0 -149
  109. package/src/ui-react/components/button/Button.tsx +0 -246
  110. package/src/ui-react/components/button-group/ButtonGroup.tsx +0 -108
  111. package/src/ui-react/components/card/Card.tsx +0 -77
  112. package/src/ui-react/components/checkbox/Checkbox.tsx +0 -232
  113. package/src/ui-react/components/chip/Chip.tsx +0 -137
  114. package/src/ui-react/components/dialog/Dialog.tsx +0 -135
  115. package/src/ui-react/components/divider/Divider.tsx +0 -54
  116. package/src/ui-react/components/input/Input.tsx +0 -195
  117. package/src/ui-react/components/list/List.tsx +0 -180
  118. package/src/ui-react/components/loading/Loading.tsx +0 -121
  119. package/src/ui-react/components/modal/Modal.tsx +0 -116
  120. package/src/ui-react/components/navigation-bar/NavigationBar.tsx +0 -188
  121. package/src/ui-react/components/radio/Radio.tsx +0 -216
  122. package/src/ui-react/components/select/Select.tsx +0 -109
  123. package/src/ui-react/components/switch/Switch.tsx +0 -164
  124. package/src/ui-react/components/tab-bar/TabBar.tsx +0 -137
  125. package/src/ui-react/components/textarea/Textarea.tsx +0 -109
  126. package/src/ui-react/components/toast/Toast.ts +0 -98
  127. package/src/ui-react/components/typography/Typography.tsx +0 -201
  128. package/src/ui-react/hooks/use-app-pause.js +0 -35
  129. package/src/ui-react/hooks/use-app-pause.ts +0 -33
  130. package/src/ui-react/hooks/use-app-resume.js +0 -37
  131. package/src/ui-react/hooks/use-app-resume.ts +0 -32
  132. package/src/ui-react/hooks/use-app-state.js +0 -35
  133. package/src/ui-react/hooks/use-did-hide.js +0 -25
  134. package/src/ui-react/hooks/use-did-hide.ts +0 -34
  135. package/src/ui-react/hooks/use-did-show.js +0 -26
  136. package/src/ui-react/hooks/use-did-show.ts +0 -34
  137. package/src/ui-react/hooks/use-listener-scan-qr.js +0 -33
  138. package/src/ui-react/hooks/use-listener-scan-qr.ts +0 -52
  139. package/src/ui-react/hooks/use-navigate.js +0 -15
  140. package/src/ui-react/hooks/use-navigate.ts +0 -41
  141. package/src/ui-react/hooks/use-tap-app-bar.js +0 -26
  142. package/src/ui-react/hooks/use-tap-app-bar.ts +0 -34
  143. package/src/ui-react/index.js +0 -9
  144. package/src/ui-react/styles/VETCProvider.tsx +0 -152
  145. package/src/ui-react/tokens/colors.ts +0 -91
  146. package/src/ui-react/tokens/spacing.ts +0 -59
  147. package/src/ui-react/tokens/typography.ts +0 -63
  148. package/src/ui-react/tokens_vetc.json +0 -1517
  149. package/src/ui-react/types/app.js +0 -30
  150. package/src/ui-react/types/app.ts +0 -32
  151. /package/{src/ui-react/components/avatar/index.ts → dist/components/avatar/index.d.ts} +0 -0
  152. /package/{src/ui-react/components/bottom-sheet/index.ts → dist/components/bottom-sheet/index.d.ts} +0 -0
  153. /package/{src/ui-react/components/button/index.ts → dist/components/button/index.d.ts} +0 -0
  154. /package/{src/ui-react/components/button-group/index.ts → dist/components/button-group/index.d.ts} +0 -0
  155. /package/{src/ui-react/components/card/index.ts → dist/components/card/index.d.ts} +0 -0
  156. /package/{src/ui-react/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +0 -0
  157. /package/{src/ui-react/components/chip/index.ts → dist/components/chip/index.d.ts} +0 -0
  158. /package/{src/ui-react/components/dialog/index.ts → dist/components/dialog/index.d.ts} +0 -0
  159. /package/{src/ui-react/components/divider/index.ts → dist/components/divider/index.d.ts} +0 -0
  160. /package/{src/ui-react/components/input/index.ts → dist/components/input/index.d.ts} +0 -0
  161. /package/{src/ui-react/components/list/index.ts → dist/components/list/index.d.ts} +0 -0
  162. /package/{src/ui-react/components/loading/index.ts → dist/components/loading/index.d.ts} +0 -0
  163. /package/{src/ui-react/components/modal/index.ts → dist/components/modal/index.d.ts} +0 -0
  164. /package/{src/ui-react/components/navigation-bar/index.ts → dist/components/navigation-bar/index.d.ts} +0 -0
  165. /package/{src/ui-react/components/radio/index.ts → dist/components/radio/index.d.ts} +0 -0
  166. /package/{src/ui-react/components/select/index.ts → dist/components/select/index.d.ts} +0 -0
  167. /package/{src/ui-react/components/switch/index.ts → dist/components/switch/index.d.ts} +0 -0
  168. /package/{src/ui-react/components/tab-bar/index.ts → dist/components/tab-bar/index.d.ts} +0 -0
  169. /package/{src/ui-react/components/textarea/index.ts → dist/components/textarea/index.d.ts} +0 -0
  170. /package/{src/ui-react/components/toast/index.ts → dist/components/toast/index.d.ts} +0 -0
  171. /package/{src/ui-react/components/typography/index.ts → dist/components/typography/index.d.ts} +0 -0
  172. /package/{src/ui-react/tokens/index.ts → dist/tokens/index.d.ts} +0 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * VETC Design System — Ant Design Theme Provider
3
+ * Wraps children with ConfigProvider using VETC token overrides.
4
+ */
5
+ import React from 'react';
6
+ export declare const vetcAntdTheme: {
7
+ token: {
8
+ colorPrimary: "#25a45e";
9
+ colorPrimaryHover: "#39b669";
10
+ colorPrimaryActive: "#208758";
11
+ colorPrimaryBg: "#f2fef2";
12
+ colorPrimaryBgHover: "#dffbdf";
13
+ colorError: "#da2c39";
14
+ colorErrorHover: "#b4211f";
15
+ colorErrorBg: "#fff6f9";
16
+ colorWarning: "#ff8c2f";
17
+ colorWarningBg: "#fffbf0";
18
+ colorSuccess: "#208758";
19
+ colorSuccessBg: "#f2fef2";
20
+ colorText: "#181719";
21
+ colorTextSecondary: "#5e5d64";
22
+ colorTextDisabled: "#abacb2";
23
+ colorTextPlaceholder: "#74747d";
24
+ colorBgContainer: "#ffffff";
25
+ colorBgLayout: "#f1f1f2";
26
+ colorBgSpotlight: "#181719";
27
+ colorBorder: "#c6c8cc";
28
+ colorBorderSecondary: "#e3e4e6";
29
+ colorSplit: "#e3e4e6";
30
+ colorFill: "#f1f1f2";
31
+ colorFillSecondary: "#e3e4e6";
32
+ colorFillTertiary: "#d4d6d9";
33
+ fontFamily: string;
34
+ fontSize: number;
35
+ fontSizeSM: number;
36
+ fontSizeLG: number;
37
+ fontSizeXL: number;
38
+ fontSizeHeading1: number;
39
+ fontSizeHeading2: number;
40
+ fontSizeHeading3: number;
41
+ fontSizeHeading4: number;
42
+ fontSizeHeading5: number;
43
+ fontWeightStrong: number;
44
+ lineHeight: number;
45
+ borderRadius: number;
46
+ borderRadiusSM: number;
47
+ borderRadiusLG: number;
48
+ borderRadiusXS: number;
49
+ controlHeight: number;
50
+ controlHeightSM: number;
51
+ controlHeightLG: number;
52
+ paddingXS: number;
53
+ paddingSM: number;
54
+ padding: number;
55
+ paddingMD: number;
56
+ paddingLG: number;
57
+ motionDurationFast: string;
58
+ motionDurationMid: string;
59
+ };
60
+ components: {
61
+ Button: {
62
+ primaryColor: string;
63
+ defaultBorderColor: "#c6c8cc";
64
+ defaultColor: "#181719";
65
+ borderRadius: number;
66
+ borderRadiusSM: number;
67
+ borderRadiusLG: number;
68
+ controlHeight: number;
69
+ controlHeightSM: number;
70
+ paddingInline: number;
71
+ paddingInlineSM: number;
72
+ fontWeight: number;
73
+ };
74
+ Input: {
75
+ borderRadius: number;
76
+ controlHeight: number;
77
+ paddingInline: number;
78
+ colorBorder: "#c6c8cc";
79
+ hoverBorderColor: "#74747d";
80
+ activeBorderColor: "#25a45e";
81
+ };
82
+ Select: {
83
+ borderRadius: number;
84
+ controlHeight: number;
85
+ };
86
+ Checkbox: {
87
+ borderRadius: number;
88
+ controlInteractiveSize: number;
89
+ };
90
+ Radio: {
91
+ radioSize: number;
92
+ dotSize: number;
93
+ };
94
+ Switch: {
95
+ trackHeight: number;
96
+ trackMinWidth: number;
97
+ handleSize: number;
98
+ colorPrimary: "#25a45e";
99
+ };
100
+ Modal: {
101
+ borderRadiusLG: number;
102
+ paddingContentHorizontalLG: number;
103
+ paddingMD: number;
104
+ };
105
+ Card: {
106
+ borderRadius: number;
107
+ paddingLG: number;
108
+ };
109
+ };
110
+ };
111
+ export interface VETCProviderProps {
112
+ children: React.ReactNode;
113
+ }
114
+ export declare function VETCProvider({ children }: VETCProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,124 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ConfigProvider, App as AntApp, theme } from 'antd';
3
+ import { colorAlias, colorGlobal } from '../tokens/colors';
4
+ export const vetcAntdTheme = {
5
+ token: {
6
+ // Brand / Primary
7
+ colorPrimary: colorAlias.brand, // #25a45e
8
+ colorPrimaryHover: colorGlobal.green35,
9
+ colorPrimaryActive: colorAlias.brandDark,
10
+ colorPrimaryBg: colorGlobal.green02,
11
+ colorPrimaryBgHover: colorGlobal.green05,
12
+ // Error / Danger
13
+ colorError: colorAlias.negative, // #da2c39
14
+ colorErrorHover: colorGlobal.red60,
15
+ colorErrorBg: colorGlobal.red02,
16
+ // Warning
17
+ colorWarning: colorAlias.warning, // #ff8c2f
18
+ colorWarningBg: colorGlobal.orange02,
19
+ // Success
20
+ colorSuccess: colorAlias.positive, // #208758
21
+ colorSuccessBg: colorGlobal.green02,
22
+ // Text
23
+ colorText: colorAlias.primaryOnTheme, // #181719
24
+ colorTextSecondary: colorAlias.secondaryOnTheme, // #5e5d64
25
+ colorTextDisabled: colorAlias.disabledContent, // #abacb2
26
+ colorTextPlaceholder: colorGlobal.gray50,
27
+ // Background
28
+ colorBgContainer: colorAlias.theme, // #ffffff
29
+ colorBgLayout: colorAlias.themeVariant, // #f1f1f2
30
+ colorBgSpotlight: colorAlias.inverseTheme,
31
+ // Border
32
+ colorBorder: colorGlobal.gray20, // #c6c8cc
33
+ colorBorderSecondary: colorGlobal.gray10, // #e3e4e6
34
+ colorSplit: colorGlobal.gray10,
35
+ // Fill states
36
+ colorFill: colorGlobal.gray05,
37
+ colorFillSecondary: colorGlobal.gray10,
38
+ colorFillTertiary: colorGlobal.gray15,
39
+ // Typography
40
+ fontFamily: '"Roboto", system-ui, -apple-system, sans-serif',
41
+ fontSize: 16,
42
+ fontSizeSM: 13,
43
+ fontSizeLG: 18,
44
+ fontSizeXL: 19,
45
+ fontSizeHeading1: 32,
46
+ fontSizeHeading2: 28,
47
+ fontSizeHeading3: 24,
48
+ fontSizeHeading4: 19,
49
+ fontSizeHeading5: 16,
50
+ fontWeightStrong: 600,
51
+ lineHeight: 1.5,
52
+ // Shape
53
+ borderRadius: 8,
54
+ borderRadiusSM: 6,
55
+ borderRadiusLG: 12,
56
+ borderRadiusXS: 4,
57
+ // Size
58
+ controlHeight: 48,
59
+ controlHeightSM: 32,
60
+ controlHeightLG: 56,
61
+ // Padding
62
+ paddingXS: 8,
63
+ paddingSM: 12,
64
+ padding: 16,
65
+ paddingMD: 16,
66
+ paddingLG: 24,
67
+ // Motion
68
+ motionDurationFast: '150ms',
69
+ motionDurationMid: '250ms',
70
+ },
71
+ components: {
72
+ Button: {
73
+ primaryColor: '#ffffff',
74
+ defaultBorderColor: colorGlobal.gray20,
75
+ defaultColor: colorAlias.primaryOnTheme,
76
+ borderRadius: 12,
77
+ borderRadiusSM: 8,
78
+ borderRadiusLG: 12,
79
+ controlHeight: 48,
80
+ controlHeightSM: 32,
81
+ paddingInline: 16,
82
+ paddingInlineSM: 12,
83
+ fontWeight: 600,
84
+ },
85
+ Input: {
86
+ borderRadius: 8,
87
+ controlHeight: 48,
88
+ paddingInline: 12,
89
+ colorBorder: colorGlobal.gray20,
90
+ hoverBorderColor: colorAlias.outline,
91
+ activeBorderColor: colorAlias.brand,
92
+ },
93
+ Select: {
94
+ borderRadius: 8,
95
+ controlHeight: 48,
96
+ },
97
+ Checkbox: {
98
+ borderRadius: 4,
99
+ controlInteractiveSize: 20,
100
+ },
101
+ Radio: {
102
+ radioSize: 20,
103
+ dotSize: 8,
104
+ },
105
+ Switch: {
106
+ trackHeight: 32,
107
+ trackMinWidth: 52,
108
+ handleSize: 28,
109
+ colorPrimary: colorAlias.brand,
110
+ },
111
+ Modal: {
112
+ borderRadiusLG: 16,
113
+ paddingContentHorizontalLG: 16,
114
+ paddingMD: 16,
115
+ },
116
+ Card: {
117
+ borderRadius: 16,
118
+ paddingLG: 16,
119
+ },
120
+ },
121
+ };
122
+ export function VETCProvider({ children }) {
123
+ return (_jsx(ConfigProvider, { theme: { ...vetcAntdTheme, algorithm: theme.defaultAlgorithm }, children: _jsx(AntApp, { children: children }) }));
124
+ }
@@ -417,10 +417,31 @@
417
417
  --vetc-transition-fast: 150ms ease;
418
418
  --vetc-transition-base: 250ms ease;
419
419
  --vetc-transition-slow: 350ms ease;
420
+
421
+ /* ── Safe Area Insets ───────────────────── */
422
+ --safe-area-inset-top: env(safe-area-inset-top, 0px);
423
+ --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
424
+ --safe-area-inset-left: env(safe-area-inset-left, 0px);
425
+ --safe-area-inset-right: env(safe-area-inset-right, 0px);
426
+ }
427
+
428
+ /* ════════════════════════════════════════════════════════════
429
+ 8. SAFE AREA UTILITY CLASSES
430
+ ════════════════════════════════════════════════════════════ */
431
+ .safe-area {
432
+ padding:
433
+ var(--safe-area-inset-top, 0px)
434
+ var(--safe-area-inset-right, 0px)
435
+ var(--safe-area-inset-bottom, 0px)
436
+ var(--safe-area-inset-left, 0px);
420
437
  }
438
+ .safe-top { padding-top: var(--safe-area-inset-top, 0px); }
439
+ .safe-bottom { padding-bottom: var(--safe-area-inset-bottom, 0px); }
440
+ .safe-left { padding-left: var(--safe-area-inset-left, 0px); }
441
+ .safe-right { padding-right: var(--safe-area-inset-right, 0px); }
421
442
 
422
443
  /* ════════════════════════════════════════════════════════════
423
- 8. BASE RESET
444
+ 9. BASE RESET
424
445
  ════════════════════════════════════════════════════════════ */
425
446
  *, *::before, *::after {
426
447
  box-sizing: border-box;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * VETC Design System — Color Tokens
3
+ * Resolved from tokens_vetc.json
4
+ */
5
+ export declare const colorGlobal: {
6
+ readonly white: "#ffffff";
7
+ readonly black: "#000000";
8
+ readonly blue02: "#f4fbff";
9
+ readonly blue05: "#e4f4ff";
10
+ readonly blue10: "#cae9ff";
11
+ readonly blue15: "#afddff";
12
+ readonly blue20: "#95d1ff";
13
+ readonly blue25: "#7ac4fb";
14
+ readonly blue30: "#60b6f4";
15
+ readonly blue35: "#45a8eb";
16
+ readonly blue40: "#2b99df";
17
+ readonly blue45: "#108ad1";
18
+ readonly blue50: "#007ac1";
19
+ readonly blue60: "#005c9e";
20
+ readonly blue70: "#004179";
21
+ readonly blue80: "#002853";
22
+ readonly blue90: "#00122a";
23
+ readonly green02: "#f2fef2";
24
+ readonly green05: "#dffbdf";
25
+ readonly green10: "#bff4bf";
26
+ readonly green15: "#9feca7";
27
+ readonly green20: "#82e194";
28
+ readonly green25: "#68d583";
29
+ readonly green30: "#50c775";
30
+ readonly green35: "#39b669";
31
+ readonly green40: "#25a45e";
32
+ readonly green45: "#23965b";
33
+ readonly green50: "#208758";
34
+ readonly green60: "#1b6b4d";
35
+ readonly green70: "#15503f";
36
+ readonly green80: "#0f342d";
37
+ readonly green90: "#081a18";
38
+ readonly gray02: "#f9fafa";
39
+ readonly gray05: "#f1f1f2";
40
+ readonly gray10: "#e3e4e6";
41
+ readonly gray15: "#d4d6d9";
42
+ readonly gray20: "#c6c8cc";
43
+ readonly gray25: "#b8babf";
44
+ readonly gray30: "#abacb2";
45
+ readonly gray35: "#9d9ea5";
46
+ readonly gray40: "#8f9098";
47
+ readonly gray45: "#82828a";
48
+ readonly gray50: "#74747d";
49
+ readonly gray60: "#5e5d64";
50
+ readonly gray70: "#47464b";
51
+ readonly gray80: "#2f2f32";
52
+ readonly gray90: "#181719";
53
+ readonly red02: "#fff6f9";
54
+ readonly red05: "#ffe7f0";
55
+ readonly red10: "#ffd0de";
56
+ readonly red15: "#ffb8cc";
57
+ readonly red20: "#ffa1b8";
58
+ readonly red25: "#ff89a3";
59
+ readonly red30: "#fb718d";
60
+ readonly red35: "#f55c78";
61
+ readonly red40: "#ee4b62";
62
+ readonly red45: "#e53b4d";
63
+ readonly red50: "#da2c39";
64
+ readonly red60: "#b4211f";
65
+ readonly red70: "#852419";
66
+ readonly red80: "#571f12";
67
+ readonly red90: "#2b130a";
68
+ readonly orange02: "#fffbf0";
69
+ readonly orange05: "#fff3da";
70
+ readonly orange10: "#ffe3b4";
71
+ readonly orange15: "#ffd08f";
72
+ readonly orange20: "#ffbb69";
73
+ readonly orange25: "#ffa447";
74
+ readonly orange30: "#ff8c2f";
75
+ readonly orange35: "#ef7720";
76
+ readonly orange40: "#dd6e1d";
77
+ readonly orange45: "#cb651b";
78
+ readonly orange50: "#b85c18";
79
+ readonly orange60: "#934913";
80
+ readonly orange70: "#6f370f";
81
+ readonly orange80: "#4a250a";
82
+ readonly orange90: "#251205";
83
+ readonly yellow02: "#fff8e7";
84
+ readonly yellow05: "#ffefbc";
85
+ readonly yellow10: "#ffe374";
86
+ readonly yellow15: "#ffd62b";
87
+ readonly yellow20: "#f9c600";
88
+ readonly yellow25: "#e9b900";
89
+ readonly yellow30: "#daaa00";
90
+ readonly yellow35: "#ca9b00";
91
+ readonly yellow40: "#bb8b00";
92
+ readonly yellow45: "#ab7b00";
93
+ readonly yellow50: "#9c6b00";
94
+ readonly yellow60: "#7c4b00";
95
+ readonly yellow70: "#5d2f00";
96
+ readonly yellow80: "#3e1800";
97
+ readonly yellow90: "#1f0700";
98
+ };
99
+ export declare const colorAlias: {
100
+ readonly brand: "#25a45e";
101
+ readonly brandDark: "#208758";
102
+ readonly brandLight: "#dffbdf";
103
+ readonly positive: "#208758";
104
+ readonly positiveVariant: "#dffbdf";
105
+ readonly onPositive: "#ffffff";
106
+ readonly onPositiveVariant: "#1b6b4d";
107
+ readonly negative: "#da2c39";
108
+ readonly onNegative: "#ffffff";
109
+ readonly warning: "#ff8c2f";
110
+ readonly onWarning: "#ffffff";
111
+ readonly outline: "#74747d";
112
+ readonly outlineVariant: "#e3e4e6";
113
+ readonly outlineInverse: "#8f9098";
114
+ readonly theme: "#ffffff";
115
+ readonly themeVariant: "#f1f1f2";
116
+ readonly inverseTheme: "#181719";
117
+ readonly primaryOnTheme: "#181719";
118
+ readonly secondaryOnTheme: "#5e5d64";
119
+ readonly primaryOnInverseTheme: "#ffffff";
120
+ readonly secondaryOnInverseTheme: "#c6c8cc";
121
+ readonly disabledBackground: "#e3e4e6";
122
+ readonly disabledContent: "#abacb2";
123
+ readonly disabledOutline: "#c6c8cc";
124
+ readonly overlay: "rgba(0, 0, 0, 0.4)";
125
+ readonly overlayVariant: "rgba(0, 0, 0, 0.16)";
126
+ readonly skeleton: "rgba(0, 0, 0, 0.1)";
127
+ };
@@ -0,0 +1,75 @@
1
+ /**
2
+ * VETC Design System — Color Tokens
3
+ * Resolved from tokens_vetc.json
4
+ */
5
+ // ─── Global palette ───────────────────────────────────────────────────────────
6
+ export const colorGlobal = {
7
+ white: '#ffffff',
8
+ black: '#000000',
9
+ // Blue
10
+ blue02: '#f4fbff', blue05: '#e4f4ff', blue10: '#cae9ff',
11
+ blue15: '#afddff', blue20: '#95d1ff', blue25: '#7ac4fb',
12
+ blue30: '#60b6f4', blue35: '#45a8eb', blue40: '#2b99df',
13
+ blue45: '#108ad1', blue50: '#007ac1', blue60: '#005c9e',
14
+ blue70: '#004179', blue80: '#002853', blue90: '#00122a',
15
+ // Green (Brand)
16
+ green02: '#f2fef2', green05: '#dffbdf', green10: '#bff4bf',
17
+ green15: '#9feca7', green20: '#82e194', green25: '#68d583',
18
+ green30: '#50c775', green35: '#39b669', green40: '#25a45e',
19
+ green45: '#23965b', green50: '#208758', green60: '#1b6b4d',
20
+ green70: '#15503f', green80: '#0f342d', green90: '#081a18',
21
+ // Gray
22
+ gray02: '#f9fafa', gray05: '#f1f1f2', gray10: '#e3e4e6',
23
+ gray15: '#d4d6d9', gray20: '#c6c8cc', gray25: '#b8babf',
24
+ gray30: '#abacb2', gray35: '#9d9ea5', gray40: '#8f9098',
25
+ gray45: '#82828a', gray50: '#74747d', gray60: '#5e5d64',
26
+ gray70: '#47464b', gray80: '#2f2f32', gray90: '#181719',
27
+ // Red
28
+ red02: '#fff6f9', red05: '#ffe7f0', red10: '#ffd0de',
29
+ red15: '#ffb8cc', red20: '#ffa1b8', red25: '#ff89a3',
30
+ red30: '#fb718d', red35: '#f55c78', red40: '#ee4b62',
31
+ red45: '#e53b4d', red50: '#da2c39', red60: '#b4211f',
32
+ red70: '#852419', red80: '#571f12', red90: '#2b130a',
33
+ // Orange
34
+ orange02: '#fffbf0', orange05: '#fff3da', orange10: '#ffe3b4',
35
+ orange15: '#ffd08f', orange20: '#ffbb69', orange25: '#ffa447',
36
+ orange30: '#ff8c2f', orange35: '#ef7720', orange40: '#dd6e1d',
37
+ orange45: '#cb651b', orange50: '#b85c18', orange60: '#934913',
38
+ orange70: '#6f370f', orange80: '#4a250a', orange90: '#251205',
39
+ // Yellow
40
+ yellow02: '#fff8e7', yellow05: '#ffefbc', yellow10: '#ffe374',
41
+ yellow15: '#ffd62b', yellow20: '#f9c600', yellow25: '#e9b900',
42
+ yellow30: '#daaa00', yellow35: '#ca9b00', yellow40: '#bb8b00',
43
+ yellow45: '#ab7b00', yellow50: '#9c6b00', yellow60: '#7c4b00',
44
+ yellow70: '#5d2f00', yellow80: '#3e1800', yellow90: '#1f0700',
45
+ };
46
+ // ─── Semantic alias tokens ─────────────────────────────────────────────────────
47
+ export const colorAlias = {
48
+ brand: colorGlobal.green40, // #25a45e
49
+ brandDark: colorGlobal.green50, // #208758
50
+ brandLight: colorGlobal.green05, // #dffbdf
51
+ positive: colorGlobal.green50, // #208758
52
+ positiveVariant: colorGlobal.green05, // #dffbdf
53
+ onPositive: colorGlobal.white,
54
+ onPositiveVariant: colorGlobal.green60,
55
+ negative: colorGlobal.red50, // #da2c39
56
+ onNegative: colorGlobal.white,
57
+ warning: colorGlobal.orange30, // #ff8c2f
58
+ onWarning: colorGlobal.white,
59
+ outline: colorGlobal.gray50, // #74747d
60
+ outlineVariant: colorGlobal.gray10, // #e3e4e6
61
+ outlineInverse: colorGlobal.gray40,
62
+ theme: colorGlobal.white,
63
+ themeVariant: colorGlobal.gray05, // #f1f1f2
64
+ inverseTheme: colorGlobal.gray90,
65
+ primaryOnTheme: colorGlobal.gray90, // #181719
66
+ secondaryOnTheme: colorGlobal.gray60, // #5e5d64
67
+ primaryOnInverseTheme: colorGlobal.white,
68
+ secondaryOnInverseTheme: colorGlobal.gray20,
69
+ disabledBackground: colorGlobal.gray10, // #e3e4e6
70
+ disabledContent: colorGlobal.gray30, // #abacb2
71
+ disabledOutline: colorGlobal.gray20,
72
+ overlay: 'rgba(0, 0, 0, 0.4)',
73
+ overlayVariant: 'rgba(0, 0, 0, 0.16)',
74
+ skeleton: 'rgba(0, 0, 0, 0.1)',
75
+ };
@@ -0,0 +1,3 @@
1
+ export * from './colors';
2
+ export * from './typography';
3
+ export * from './spacing';
@@ -0,0 +1,56 @@
1
+ /**
2
+ * VETC Design System — Spacing & Sizing Tokens
3
+ * Base unit: 4px
4
+ */
5
+ export declare const spacing: {
6
+ readonly 0: "0px";
7
+ readonly 1: "1px";
8
+ readonly 2: "2px";
9
+ readonly 4: "4px";
10
+ readonly 6: "6px";
11
+ readonly 8: "8px";
12
+ readonly 10: "10px";
13
+ readonly 12: "12px";
14
+ readonly 14: "14px";
15
+ readonly 16: "16px";
16
+ readonly 20: "20px";
17
+ readonly 24: "24px";
18
+ readonly 32: "32px";
19
+ readonly 40: "40px";
20
+ readonly 48: "48px";
21
+ readonly 56: "56px";
22
+ readonly 64: "64px";
23
+ readonly 72: "72px";
24
+ readonly 80: "80px";
25
+ };
26
+ export declare const borderRadius: {
27
+ readonly none: "0px";
28
+ readonly xs: "4px";
29
+ readonly sm: "6px";
30
+ readonly md: "8px";
31
+ readonly lg: "12px";
32
+ readonly xl: "16px";
33
+ readonly '2xl': "24px";
34
+ readonly pill: "1000px";
35
+ };
36
+ /** Component height standards from Figma */
37
+ export declare const componentHeight: {
38
+ readonly buttonLg: "48px";
39
+ readonly buttonSm: "32px";
40
+ readonly input: "48px";
41
+ readonly navBar: "56px";
42
+ readonly bottomNav: "56px";
43
+ readonly tabBar: "56px";
44
+ readonly listItem: "56px";
45
+ readonly chip: "32px";
46
+ readonly chipSm: "24px";
47
+ readonly iconStd: "24px";
48
+ readonly iconSm: "20px";
49
+ };
50
+ /** Shadow tokens */
51
+ export declare const shadow: {
52
+ readonly none: "none";
53
+ readonly sm: "0 1px 4px rgba(0, 0, 0, 0.08)";
54
+ readonly md: "0 2px 8px rgba(0, 0, 0, 0.12)";
55
+ readonly lg: "0 4px 16px rgba(0, 0, 0, 0.16)";
56
+ };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * VETC Design System — Spacing & Sizing Tokens
3
+ * Base unit: 4px
4
+ */
5
+ export const spacing = {
6
+ 0: '0px',
7
+ 1: '1px',
8
+ 2: '2px',
9
+ 4: '4px',
10
+ 6: '6px',
11
+ 8: '8px',
12
+ 10: '10px',
13
+ 12: '12px',
14
+ 14: '14px',
15
+ 16: '16px',
16
+ 20: '20px',
17
+ 24: '24px',
18
+ 32: '32px',
19
+ 40: '40px',
20
+ 48: '48px',
21
+ 56: '56px',
22
+ 64: '64px',
23
+ 72: '72px',
24
+ 80: '80px',
25
+ };
26
+ export const borderRadius = {
27
+ none: '0px',
28
+ xs: '4px',
29
+ sm: '6px',
30
+ md: '8px',
31
+ lg: '12px',
32
+ xl: '16px',
33
+ '2xl': '24px',
34
+ pill: '1000px',
35
+ };
36
+ /** Component height standards from Figma */
37
+ export const componentHeight = {
38
+ buttonLg: '48px',
39
+ buttonSm: '32px',
40
+ input: '48px',
41
+ navBar: '56px',
42
+ bottomNav: '56px',
43
+ tabBar: '56px',
44
+ listItem: '56px',
45
+ chip: '32px',
46
+ chipSm: '24px',
47
+ iconStd: '24px',
48
+ iconSm: '20px',
49
+ };
50
+ /** Shadow tokens */
51
+ export const shadow = {
52
+ none: 'none',
53
+ sm: '0 1px 4px rgba(0, 0, 0, 0.08)',
54
+ md: '0 2px 8px rgba(0, 0, 0, 0.12)',
55
+ lg: '0 4px 16px rgba(0, 0, 0, 0.16)',
56
+ };