@nationaldesignstudio/react 0.0.10 → 0.0.11

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 (169) hide show
  1. package/dist/component-registry.md +2405 -0
  2. package/dist/components/atoms/accordion/accordion.d.ts +44 -3
  3. package/dist/components/atoms/button/button.d.ts +155 -11
  4. package/dist/components/atoms/button/icon-button.d.ts +114 -5
  5. package/dist/components/atoms/ndstudio-footer/ndstudio-footer.d.ts +30 -0
  6. package/dist/components/atoms/pager-control/pager-control.d.ts +116 -9
  7. package/dist/components/dev-tools/dev-toolbar/dev-toolbar.d.ts +4 -0
  8. package/dist/components/dev-tools/grid-overlay/grid-overlay.d.ts +6 -0
  9. package/dist/components/organisms/card/card.d.ts +40 -4
  10. package/dist/components/sections/banner/banner.d.ts +39 -6
  11. package/dist/components/sections/card-grid/card-grid.d.ts +37 -4
  12. package/dist/components/sections/faq-section/faq-section.d.ts +2 -2
  13. package/dist/components/sections/hero/hero.d.ts +167 -16
  14. package/dist/components/sections/river/river.d.ts +37 -4
  15. package/dist/components/sections/tout/tout.d.ts +86 -6
  16. package/dist/components/sections/two-column-section/two-column-section.d.ts +80 -6
  17. package/dist/hooks/index.d.ts +1 -0
  18. package/dist/hooks/use-event-listener.d.ts +24 -0
  19. package/dist/index.d.ts +9 -2
  20. package/dist/index.js +12034 -5934
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/theme.d.ts +330 -0
  23. package/dist/tokens.css +13650 -6129
  24. package/package.json +11 -21
  25. package/src/App.css +0 -0
  26. package/src/App.tsx +0 -7
  27. package/src/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
  28. package/src/assets/react.svg +0 -1
  29. package/src/components/atoms/accordion/accordion.stories.tsx +0 -228
  30. package/src/components/atoms/accordion/accordion.tsx +0 -137
  31. package/src/components/atoms/accordion/index.ts +0 -6
  32. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-darwin.png +0 -0
  33. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-linux.png +0 -0
  34. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-darwin.png +0 -0
  35. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-linux.png +0 -0
  36. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-darwin.png +0 -0
  37. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-linux.png +0 -0
  38. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-darwin.png +0 -0
  39. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-linux.png +0 -0
  40. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-darwin.png +0 -0
  41. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-linux.png +0 -0
  42. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-darwin.png +0 -0
  43. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-linux.png +0 -0
  44. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-darwin.png +0 -0
  45. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-linux.png +0 -0
  46. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-darwin.png +0 -0
  47. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-linux.png +0 -0
  48. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-darwin.png +0 -0
  49. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-linux.png +0 -0
  50. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-darwin.png +0 -0
  51. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-linux.png +0 -0
  52. package/src/components/atoms/button/button.stories.tsx +0 -84
  53. package/src/components/atoms/button/button.test.tsx +0 -141
  54. package/src/components/atoms/button/button.tsx +0 -95
  55. package/src/components/atoms/button/button.visual.test.tsx +0 -102
  56. package/src/components/atoms/button/icon-button.stories.tsx +0 -166
  57. package/src/components/atoms/button/icon-button.tsx +0 -125
  58. package/src/components/atoms/button/index.ts +0 -6
  59. package/src/components/atoms/pager-control/index.ts +0 -5
  60. package/src/components/atoms/pager-control/pager-control.stories.tsx +0 -209
  61. package/src/components/atoms/pager-control/pager-control.test.tsx +0 -149
  62. package/src/components/atoms/pager-control/pager-control.tsx +0 -328
  63. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-darwin.png +0 -0
  64. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-linux.png +0 -0
  65. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-darwin.png +0 -0
  66. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-linux.png +0 -0
  67. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-darwin.png +0 -0
  68. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-linux.png +0 -0
  69. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-darwin.png +0 -0
  70. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-linux.png +0 -0
  71. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-darwin.png +0 -0
  72. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-linux.png +0 -0
  73. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-darwin.png +0 -0
  74. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-linux.png +0 -0
  75. package/src/components/organisms/card/card.stories.tsx +0 -293
  76. package/src/components/organisms/card/card.test.tsx +0 -245
  77. package/src/components/organisms/card/card.tsx +0 -227
  78. package/src/components/organisms/card/card.visual.test.tsx +0 -197
  79. package/src/components/organisms/card/index.ts +0 -19
  80. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-darwin.png +0 -0
  81. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-linux.png +0 -0
  82. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-darwin.png +0 -0
  83. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-linux.png +0 -0
  84. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-darwin.png +0 -0
  85. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-linux.png +0 -0
  86. package/src/components/organisms/navbar/index.ts +0 -18
  87. package/src/components/organisms/navbar/navbar.stories.tsx +0 -313
  88. package/src/components/organisms/navbar/navbar.test.tsx +0 -190
  89. package/src/components/organisms/navbar/navbar.tsx +0 -317
  90. package/src/components/organisms/navbar/navbar.visual.test.tsx +0 -85
  91. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-darwin.png +0 -0
  92. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-linux.png +0 -0
  93. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-darwin.png +0 -0
  94. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-linux.png +0 -0
  95. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-darwin.png +0 -0
  96. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-linux.png +0 -0
  97. package/src/components/organisms/us-gov-banner/index.ts +0 -1
  98. package/src/components/organisms/us-gov-banner/us-gov-banner.stories.tsx +0 -35
  99. package/src/components/organisms/us-gov-banner/us-gov-banner.test.tsx +0 -107
  100. package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +0 -73
  101. package/src/components/organisms/us-gov-banner/us-gov-banner.visual.test.tsx +0 -46
  102. package/src/components/sections/banner/banner.stories.tsx +0 -150
  103. package/src/components/sections/banner/banner.test.tsx +0 -185
  104. package/src/components/sections/banner/banner.tsx +0 -130
  105. package/src/components/sections/banner/index.ts +0 -2
  106. package/src/components/sections/card-grid/card-grid.stories.tsx +0 -351
  107. package/src/components/sections/card-grid/card-grid.tsx +0 -118
  108. package/src/components/sections/card-grid/index.ts +0 -1
  109. package/src/components/sections/faq-section/faq-section.tsx +0 -77
  110. package/src/components/sections/faq-section/index.ts +0 -2
  111. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-darwin.png +0 -0
  112. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-linux.png +0 -0
  113. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-darwin.png +0 -0
  114. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-linux.png +0 -0
  115. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-darwin.png +0 -0
  116. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-linux.png +0 -0
  117. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-darwin.png +0 -0
  118. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-linux.png +0 -0
  119. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-darwin.png +0 -0
  120. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-linux.png +0 -0
  121. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-darwin.png +0 -0
  122. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-linux.png +0 -0
  123. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-darwin.png +0 -0
  124. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-linux.png +0 -0
  125. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-darwin.png +0 -0
  126. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-linux.png +0 -0
  127. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-darwin.png +0 -0
  128. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-linux.png +0 -0
  129. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-darwin.png +0 -0
  130. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-linux.png +0 -0
  131. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-default-chromium-linux.png +0 -0
  132. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-darwin.png +0 -0
  133. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-linux.png +0 -0
  134. package/src/components/sections/hero/hero.stories.tsx +0 -145
  135. package/src/components/sections/hero/hero.test.tsx +0 -135
  136. package/src/components/sections/hero/hero.tsx +0 -191
  137. package/src/components/sections/hero/hero.visual.test.tsx +0 -140
  138. package/src/components/sections/hero/index.ts +0 -1
  139. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-darwin.png +0 -0
  140. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-linux.png +0 -0
  141. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-darwin.png +0 -0
  142. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-linux.png +0 -0
  143. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-darwin.png +0 -0
  144. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-linux.png +0 -0
  145. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-darwin.png +0 -0
  146. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-linux.png +0 -0
  147. package/src/components/sections/prose/index.ts +0 -6
  148. package/src/components/sections/prose/prose.stories.tsx +0 -144
  149. package/src/components/sections/prose/prose.test.tsx +0 -178
  150. package/src/components/sections/prose/prose.tsx +0 -88
  151. package/src/components/sections/prose/prose.visual.test.tsx +0 -105
  152. package/src/components/sections/river/index.ts +0 -1
  153. package/src/components/sections/river/river.stories.tsx +0 -237
  154. package/src/components/sections/river/river.test.tsx +0 -268
  155. package/src/components/sections/river/river.tsx +0 -175
  156. package/src/components/sections/tout/index.ts +0 -1
  157. package/src/components/sections/tout/tout.stories.tsx +0 -154
  158. package/src/components/sections/tout/tout.test.tsx +0 -242
  159. package/src/components/sections/tout/tout.tsx +0 -206
  160. package/src/components/sections/two-column-section/index.ts +0 -5
  161. package/src/components/sections/two-column-section/two-column-section.stories.tsx +0 -285
  162. package/src/components/sections/two-column-section/two-column-section.tsx +0 -152
  163. package/src/index.ts +0 -98
  164. package/src/lib/utils.ts +0 -6
  165. package/src/main.tsx +0 -13
  166. package/src/stories/Introduction.mdx +0 -114
  167. package/src/stories/TokenShowcase.stories.tsx +0 -92
  168. package/src/stories/TokenShowcase.tsx +0 -1352
  169. package/src/styles.css +0 -11
@@ -1,1352 +0,0 @@
1
- import type * as React from "react";
2
-
3
- const ColorSwatch: React.FC<{
4
- bgClass: string;
5
- label: string;
6
- }> = ({ bgClass, label }) => {
7
- return (
8
- <div className="flex flex-col">
9
- <div
10
- className={`w-full h-spacing-12 rounded-md border border-gray-200 ${bgClass}`}
11
- />
12
- <div className="mt-1 text-xs font-mono text-gray-600">{label}</div>
13
- </div>
14
- );
15
- };
16
-
17
- export const ColorTokens: React.FC = () => {
18
- return (
19
- <div className="space-y-8">
20
- <div>
21
- <h2 className="text-2xl font-bold mb-6">Color Palette</h2>
22
-
23
- {/* Gray */}
24
- <div className="mb-8">
25
- <h3 className="text-lg font-semibold mb-3">Gray</h3>
26
- <div className="grid grid-cols-13 gap-2">
27
- <ColorSwatch bgClass="bg-gray-50" label="50" />
28
- <ColorSwatch bgClass="bg-gray-100" label="100" />
29
- <ColorSwatch bgClass="bg-gray-200" label="200" />
30
- <ColorSwatch bgClass="bg-gray-300" label="300" />
31
- <ColorSwatch bgClass="bg-gray-400" label="400" />
32
- <ColorSwatch bgClass="bg-gray-500" label="500" />
33
- <ColorSwatch bgClass="bg-gray-600" label="600" />
34
- <ColorSwatch bgClass="bg-gray-700" label="700" />
35
- <ColorSwatch bgClass="bg-gray-800" label="800" />
36
- <ColorSwatch bgClass="bg-gray-900" label="900" />
37
- <ColorSwatch bgClass="bg-gray-1000" label="1000" />
38
- <ColorSwatch bgClass="bg-gray-1100" label="1100" />
39
- <ColorSwatch bgClass="bg-gray-1200" label="1200" />
40
- </div>
41
- </div>
42
-
43
- {/* Brown */}
44
- <div className="mb-8">
45
- <h3 className="text-lg font-semibold mb-3">Brown</h3>
46
- <div className="grid grid-cols-13 gap-2">
47
- <ColorSwatch bgClass="bg-brown-50" label="50" />
48
- <ColorSwatch bgClass="bg-brown-100" label="100" />
49
- <ColorSwatch bgClass="bg-brown-200" label="200" />
50
- <ColorSwatch bgClass="bg-brown-300" label="300" />
51
- <ColorSwatch bgClass="bg-brown-400" label="400" />
52
- <ColorSwatch bgClass="bg-brown-500" label="500" />
53
- <ColorSwatch bgClass="bg-brown-600" label="600" />
54
- <ColorSwatch bgClass="bg-brown-700" label="700" />
55
- <ColorSwatch bgClass="bg-brown-800" label="800" />
56
- <ColorSwatch bgClass="bg-brown-900" label="900" />
57
- <ColorSwatch bgClass="bg-brown-1000" label="1000" />
58
- <ColorSwatch bgClass="bg-brown-1100" label="1100" />
59
- <ColorSwatch bgClass="bg-brown-1200" label="1200" />
60
- </div>
61
- </div>
62
-
63
- {/* Steel */}
64
- <div className="mb-8">
65
- <h3 className="text-lg font-semibold mb-3">Steel</h3>
66
- <div className="grid grid-cols-13 gap-2">
67
- <ColorSwatch bgClass="bg-steel-50" label="50" />
68
- <ColorSwatch bgClass="bg-steel-100" label="100" />
69
- <ColorSwatch bgClass="bg-steel-200" label="200" />
70
- <ColorSwatch bgClass="bg-steel-300" label="300" />
71
- <ColorSwatch bgClass="bg-steel-400" label="400" />
72
- <ColorSwatch bgClass="bg-steel-500" label="500" />
73
- <ColorSwatch bgClass="bg-steel-600" label="600" />
74
- <ColorSwatch bgClass="bg-steel-700" label="700" />
75
- <ColorSwatch bgClass="bg-steel-800" label="800" />
76
- <ColorSwatch bgClass="bg-steel-900" label="900" />
77
- <ColorSwatch bgClass="bg-steel-1000" label="1000" />
78
- <ColorSwatch bgClass="bg-steel-1100" label="1100" />
79
- <ColorSwatch bgClass="bg-steel-1200" label="1200" />
80
- </div>
81
- </div>
82
-
83
- {/* Red */}
84
- <div className="mb-8">
85
- <h3 className="text-lg font-semibold mb-3">Red</h3>
86
- <div className="grid grid-cols-10 gap-2 mb-2">
87
- <ColorSwatch bgClass="bg-red-50" label="50" />
88
- <ColorSwatch bgClass="bg-red-100" label="100" />
89
- <ColorSwatch bgClass="bg-red-200" label="200" />
90
- <ColorSwatch bgClass="bg-red-300" label="300" />
91
- <ColorSwatch bgClass="bg-red-400" label="400" />
92
- <ColorSwatch bgClass="bg-red-500" label="500" />
93
- <ColorSwatch bgClass="bg-red-600" label="600" />
94
- <ColorSwatch bgClass="bg-red-700" label="700" />
95
- <ColorSwatch bgClass="bg-red-800" label="800" />
96
- <ColorSwatch bgClass="bg-red-900" label="900" />
97
- </div>
98
- <div className="mt-3">
99
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
100
- <div className="grid grid-cols-4 gap-2 max-w-xs">
101
- <ColorSwatch bgClass="bg-red-v100" label="v100" />
102
- <ColorSwatch bgClass="bg-red-v200" label="v200" />
103
- <ColorSwatch bgClass="bg-red-v300" label="v300" />
104
- <ColorSwatch bgClass="bg-red-v400" label="v400" />
105
- </div>
106
- </div>
107
- </div>
108
-
109
- {/* Pink */}
110
- <div className="mb-8">
111
- <h3 className="text-lg font-semibold mb-3">Pink</h3>
112
- <div className="grid grid-cols-10 gap-2 mb-2">
113
- <ColorSwatch bgClass="bg-pink-50" label="50" />
114
- <ColorSwatch bgClass="bg-pink-100" label="100" />
115
- <ColorSwatch bgClass="bg-pink-200" label="200" />
116
- <ColorSwatch bgClass="bg-pink-300" label="300" />
117
- <ColorSwatch bgClass="bg-pink-400" label="400" />
118
- <ColorSwatch bgClass="bg-pink-500" label="500" />
119
- <ColorSwatch bgClass="bg-pink-600" label="600" />
120
- <ColorSwatch bgClass="bg-pink-700" label="700" />
121
- <ColorSwatch bgClass="bg-pink-800" label="800" />
122
- <ColorSwatch bgClass="bg-pink-900" label="900" />
123
- </div>
124
- <div className="mt-3">
125
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
126
- <div className="grid grid-cols-4 gap-2 max-w-xs">
127
- <ColorSwatch bgClass="bg-pink-v100" label="v100" />
128
- <ColorSwatch bgClass="bg-pink-v200" label="v200" />
129
- <ColorSwatch bgClass="bg-pink-v300" label="v300" />
130
- <ColorSwatch bgClass="bg-pink-v400" label="v400" />
131
- </div>
132
- </div>
133
- </div>
134
-
135
- {/* Purple */}
136
- <div className="mb-8">
137
- <h3 className="text-lg font-semibold mb-3">Purple</h3>
138
- <div className="grid grid-cols-10 gap-2 mb-2">
139
- <ColorSwatch bgClass="bg-purple-50" label="50" />
140
- <ColorSwatch bgClass="bg-purple-100" label="100" />
141
- <ColorSwatch bgClass="bg-purple-200" label="200" />
142
- <ColorSwatch bgClass="bg-purple-300" label="300" />
143
- <ColorSwatch bgClass="bg-purple-400" label="400" />
144
- <ColorSwatch bgClass="bg-purple-500" label="500" />
145
- <ColorSwatch bgClass="bg-purple-600" label="600" />
146
- <ColorSwatch bgClass="bg-purple-700" label="700" />
147
- <ColorSwatch bgClass="bg-purple-800" label="800" />
148
- <ColorSwatch bgClass="bg-purple-900" label="900" />
149
- </div>
150
- <div className="mt-3">
151
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
152
- <div className="grid grid-cols-4 gap-2 max-w-xs">
153
- <ColorSwatch bgClass="bg-purple-v100" label="v100" />
154
- <ColorSwatch bgClass="bg-purple-v200" label="v200" />
155
- <ColorSwatch bgClass="bg-purple-v300" label="v300" />
156
- <ColorSwatch bgClass="bg-purple-v400" label="v400" />
157
- </div>
158
- </div>
159
- </div>
160
-
161
- {/* Iris */}
162
- <div className="mb-8">
163
- <h3 className="text-lg font-semibold mb-3">Iris</h3>
164
- <div className="grid grid-cols-10 gap-2 mb-2">
165
- <ColorSwatch bgClass="bg-iris-50" label="50" />
166
- <ColorSwatch bgClass="bg-iris-100" label="100" />
167
- <ColorSwatch bgClass="bg-iris-200" label="200" />
168
- <ColorSwatch bgClass="bg-iris-300" label="300" />
169
- <ColorSwatch bgClass="bg-iris-400" label="400" />
170
- <ColorSwatch bgClass="bg-iris-500" label="500" />
171
- <ColorSwatch bgClass="bg-iris-600" label="600" />
172
- <ColorSwatch bgClass="bg-iris-700" label="700" />
173
- <ColorSwatch bgClass="bg-iris-800" label="800" />
174
- <ColorSwatch bgClass="bg-iris-900" label="900" />
175
- </div>
176
- <div className="mt-3">
177
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
178
- <div className="grid grid-cols-4 gap-2 max-w-xs">
179
- <ColorSwatch bgClass="bg-iris-v100" label="v100" />
180
- <ColorSwatch bgClass="bg-iris-v200" label="v200" />
181
- <ColorSwatch bgClass="bg-iris-v300" label="v300" />
182
- <ColorSwatch bgClass="bg-iris-v400" label="v400" />
183
- </div>
184
- </div>
185
- </div>
186
-
187
- {/* Indigo */}
188
- <div className="mb-8">
189
- <h3 className="text-lg font-semibold mb-3">Indigo</h3>
190
- <div className="grid grid-cols-10 gap-2 mb-2">
191
- <ColorSwatch bgClass="bg-indigo-50" label="50" />
192
- <ColorSwatch bgClass="bg-indigo-100" label="100" />
193
- <ColorSwatch bgClass="bg-indigo-200" label="200" />
194
- <ColorSwatch bgClass="bg-indigo-300" label="300" />
195
- <ColorSwatch bgClass="bg-indigo-400" label="400" />
196
- <ColorSwatch bgClass="bg-indigo-500" label="500" />
197
- <ColorSwatch bgClass="bg-indigo-600" label="600" />
198
- <ColorSwatch bgClass="bg-indigo-700" label="700" />
199
- <ColorSwatch bgClass="bg-indigo-800" label="800" />
200
- <ColorSwatch bgClass="bg-indigo-900" label="900" />
201
- </div>
202
- <div className="mt-3">
203
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
204
- <div className="grid grid-cols-4 gap-2 max-w-xs">
205
- <ColorSwatch bgClass="bg-indigo-v100" label="v100" />
206
- <ColorSwatch bgClass="bg-indigo-v200" label="v200" />
207
- <ColorSwatch bgClass="bg-indigo-v300" label="v300" />
208
- <ColorSwatch bgClass="bg-indigo-v400" label="v400" />
209
- </div>
210
- </div>
211
- </div>
212
-
213
- {/* Blue */}
214
- <div className="mb-8">
215
- <h3 className="text-lg font-semibold mb-3">Blue</h3>
216
- <div className="grid grid-cols-10 gap-2 mb-2">
217
- <ColorSwatch bgClass="bg-blue-50" label="50" />
218
- <ColorSwatch bgClass="bg-blue-100" label="100" />
219
- <ColorSwatch bgClass="bg-blue-200" label="200" />
220
- <ColorSwatch bgClass="bg-blue-300" label="300" />
221
- <ColorSwatch bgClass="bg-blue-400" label="400" />
222
- <ColorSwatch bgClass="bg-blue-500" label="500" />
223
- <ColorSwatch bgClass="bg-blue-600" label="600" />
224
- <ColorSwatch bgClass="bg-blue-700" label="700" />
225
- <ColorSwatch bgClass="bg-blue-800" label="800" />
226
- <ColorSwatch bgClass="bg-blue-900" label="900" />
227
- </div>
228
- <div className="mt-3">
229
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
230
- <div className="grid grid-cols-4 gap-2 max-w-xs">
231
- <ColorSwatch bgClass="bg-blue-v100" label="v100" />
232
- <ColorSwatch bgClass="bg-blue-v200" label="v200" />
233
- <ColorSwatch bgClass="bg-blue-v300" label="v300" />
234
- <ColorSwatch bgClass="bg-blue-v400" label="v400" />
235
- </div>
236
- </div>
237
- </div>
238
-
239
- {/* Ice */}
240
- <div className="mb-8">
241
- <h3 className="text-lg font-semibold mb-3">Ice</h3>
242
- <div className="grid grid-cols-10 gap-2 mb-2">
243
- <ColorSwatch bgClass="bg-ice-50" label="50" />
244
- <ColorSwatch bgClass="bg-ice-100" label="100" />
245
- <ColorSwatch bgClass="bg-ice-200" label="200" />
246
- <ColorSwatch bgClass="bg-ice-300" label="300" />
247
- <ColorSwatch bgClass="bg-ice-400" label="400" />
248
- <ColorSwatch bgClass="bg-ice-500" label="500" />
249
- <ColorSwatch bgClass="bg-ice-600" label="600" />
250
- <ColorSwatch bgClass="bg-ice-700" label="700" />
251
- <ColorSwatch bgClass="bg-ice-800" label="800" />
252
- <ColorSwatch bgClass="bg-ice-900" label="900" />
253
- </div>
254
- <div className="mt-3">
255
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
256
- <div className="grid grid-cols-4 gap-2 max-w-xs">
257
- <ColorSwatch bgClass="bg-ice-v100" label="v100" />
258
- <ColorSwatch bgClass="bg-ice-v200" label="v200" />
259
- <ColorSwatch bgClass="bg-ice-v300" label="v300" />
260
- <ColorSwatch bgClass="bg-ice-v400" label="v400" />
261
- </div>
262
- </div>
263
- </div>
264
-
265
- {/* Cyan */}
266
- <div className="mb-8">
267
- <h3 className="text-lg font-semibold mb-3">Cyan</h3>
268
- <div className="grid grid-cols-10 gap-2 mb-2">
269
- <ColorSwatch bgClass="bg-cyan-50" label="50" />
270
- <ColorSwatch bgClass="bg-cyan-100" label="100" />
271
- <ColorSwatch bgClass="bg-cyan-200" label="200" />
272
- <ColorSwatch bgClass="bg-cyan-300" label="300" />
273
- <ColorSwatch bgClass="bg-cyan-400" label="400" />
274
- <ColorSwatch bgClass="bg-cyan-500" label="500" />
275
- <ColorSwatch bgClass="bg-cyan-600" label="600" />
276
- <ColorSwatch bgClass="bg-cyan-700" label="700" />
277
- <ColorSwatch bgClass="bg-cyan-800" label="800" />
278
- <ColorSwatch bgClass="bg-cyan-900" label="900" />
279
- </div>
280
- <div className="mt-3">
281
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
282
- <div className="grid grid-cols-4 gap-2 max-w-xs">
283
- <ColorSwatch bgClass="bg-cyan-v100" label="v100" />
284
- <ColorSwatch bgClass="bg-cyan-v200" label="v200" />
285
- <ColorSwatch bgClass="bg-cyan-v300" label="v300" />
286
- <ColorSwatch bgClass="bg-cyan-v400" label="v400" />
287
- </div>
288
- </div>
289
- </div>
290
-
291
- {/* Teal */}
292
- <div className="mb-8">
293
- <h3 className="text-lg font-semibold mb-3">Teal</h3>
294
- <div className="grid grid-cols-10 gap-2 mb-2">
295
- <ColorSwatch bgClass="bg-teal-50" label="50" />
296
- <ColorSwatch bgClass="bg-teal-100" label="100" />
297
- <ColorSwatch bgClass="bg-teal-200" label="200" />
298
- <ColorSwatch bgClass="bg-teal-300" label="300" />
299
- <ColorSwatch bgClass="bg-teal-400" label="400" />
300
- <ColorSwatch bgClass="bg-teal-500" label="500" />
301
- <ColorSwatch bgClass="bg-teal-600" label="600" />
302
- <ColorSwatch bgClass="bg-teal-700" label="700" />
303
- <ColorSwatch bgClass="bg-teal-800" label="800" />
304
- <ColorSwatch bgClass="bg-teal-900" label="900" />
305
- </div>
306
- <div className="mt-3">
307
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
308
- <div className="grid grid-cols-4 gap-2 max-w-xs">
309
- <ColorSwatch bgClass="bg-teal-v100" label="v100" />
310
- <ColorSwatch bgClass="bg-teal-v200" label="v200" />
311
- <ColorSwatch bgClass="bg-teal-v300" label="v300" />
312
- <ColorSwatch bgClass="bg-teal-v400" label="v400" />
313
- </div>
314
- </div>
315
- </div>
316
-
317
- {/* Green */}
318
- <div className="mb-8">
319
- <h3 className="text-lg font-semibold mb-3">Green</h3>
320
- <div className="grid grid-cols-10 gap-2 mb-2">
321
- <ColorSwatch bgClass="bg-green-50" label="50" />
322
- <ColorSwatch bgClass="bg-green-100" label="100" />
323
- <ColorSwatch bgClass="bg-green-200" label="200" />
324
- <ColorSwatch bgClass="bg-green-300" label="300" />
325
- <ColorSwatch bgClass="bg-green-400" label="400" />
326
- <ColorSwatch bgClass="bg-green-500" label="500" />
327
- <ColorSwatch bgClass="bg-green-600" label="600" />
328
- <ColorSwatch bgClass="bg-green-700" label="700" />
329
- <ColorSwatch bgClass="bg-green-800" label="800" />
330
- <ColorSwatch bgClass="bg-green-900" label="900" />
331
- </div>
332
- <div className="mt-3">
333
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
334
- <div className="grid grid-cols-4 gap-2 max-w-xs">
335
- <ColorSwatch bgClass="bg-green-v100" label="v100" />
336
- <ColorSwatch bgClass="bg-green-v200" label="v200" />
337
- <ColorSwatch bgClass="bg-green-v300" label="v300" />
338
- <ColorSwatch bgClass="bg-green-v400" label="v400" />
339
- </div>
340
- </div>
341
- </div>
342
-
343
- {/* Sage */}
344
- <div className="mb-8">
345
- <h3 className="text-lg font-semibold mb-3">Sage</h3>
346
- <div className="grid grid-cols-10 gap-2 mb-2">
347
- <ColorSwatch bgClass="bg-sage-50" label="50" />
348
- <ColorSwatch bgClass="bg-sage-100" label="100" />
349
- <ColorSwatch bgClass="bg-sage-200" label="200" />
350
- <ColorSwatch bgClass="bg-sage-300" label="300" />
351
- <ColorSwatch bgClass="bg-sage-400" label="400" />
352
- <ColorSwatch bgClass="bg-sage-500" label="500" />
353
- <ColorSwatch bgClass="bg-sage-600" label="600" />
354
- <ColorSwatch bgClass="bg-sage-700" label="700" />
355
- <ColorSwatch bgClass="bg-sage-800" label="800" />
356
- <ColorSwatch bgClass="bg-sage-900" label="900" />
357
- </div>
358
- <div className="mt-3">
359
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
360
- <div className="grid grid-cols-4 gap-2 max-w-xs">
361
- <ColorSwatch bgClass="bg-sage-v100" label="v100" />
362
- <ColorSwatch bgClass="bg-sage-v200" label="v200" />
363
- <ColorSwatch bgClass="bg-sage-v300" label="v300" />
364
- <ColorSwatch bgClass="bg-sage-v400" label="v400" />
365
- </div>
366
- </div>
367
- </div>
368
-
369
- {/* Lime */}
370
- <div className="mb-8">
371
- <h3 className="text-lg font-semibold mb-3">Lime</h3>
372
- <div className="grid grid-cols-10 gap-2 mb-2">
373
- <ColorSwatch bgClass="bg-lime-50" label="50" />
374
- <ColorSwatch bgClass="bg-lime-100" label="100" />
375
- <ColorSwatch bgClass="bg-lime-200" label="200" />
376
- <ColorSwatch bgClass="bg-lime-300" label="300" />
377
- <ColorSwatch bgClass="bg-lime-400" label="400" />
378
- <ColorSwatch bgClass="bg-lime-500" label="500" />
379
- <ColorSwatch bgClass="bg-lime-600" label="600" />
380
- <ColorSwatch bgClass="bg-lime-700" label="700" />
381
- <ColorSwatch bgClass="bg-lime-800" label="800" />
382
- <ColorSwatch bgClass="bg-lime-900" label="900" />
383
- </div>
384
- <div className="mt-3">
385
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
386
- <div className="grid grid-cols-4 gap-2 max-w-xs">
387
- <ColorSwatch bgClass="bg-lime-v100" label="v100" />
388
- <ColorSwatch bgClass="bg-lime-v200" label="v200" />
389
- <ColorSwatch bgClass="bg-lime-v300" label="v300" />
390
- <ColorSwatch bgClass="bg-lime-v400" label="v400" />
391
- </div>
392
- </div>
393
- </div>
394
-
395
- {/* Yellow */}
396
- <div className="mb-8">
397
- <h3 className="text-lg font-semibold mb-3">Yellow</h3>
398
- <div className="grid grid-cols-10 gap-2 mb-2">
399
- <ColorSwatch bgClass="bg-yellow-50" label="50" />
400
- <ColorSwatch bgClass="bg-yellow-100" label="100" />
401
- <ColorSwatch bgClass="bg-yellow-200" label="200" />
402
- <ColorSwatch bgClass="bg-yellow-300" label="300" />
403
- <ColorSwatch bgClass="bg-yellow-400" label="400" />
404
- <ColorSwatch bgClass="bg-yellow-500" label="500" />
405
- <ColorSwatch bgClass="bg-yellow-600" label="600" />
406
- <ColorSwatch bgClass="bg-yellow-700" label="700" />
407
- <ColorSwatch bgClass="bg-yellow-800" label="800" />
408
- <ColorSwatch bgClass="bg-yellow-900" label="900" />
409
- </div>
410
- <div className="mt-3">
411
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
412
- <div className="grid grid-cols-4 gap-2 max-w-xs">
413
- <ColorSwatch bgClass="bg-yellow-v100" label="v100" />
414
- <ColorSwatch bgClass="bg-yellow-v200" label="v200" />
415
- <ColorSwatch bgClass="bg-yellow-v300" label="v300" />
416
- <ColorSwatch bgClass="bg-yellow-v400" label="v400" />
417
- </div>
418
- </div>
419
- </div>
420
-
421
- {/* Amber */}
422
- <div className="mb-8">
423
- <h3 className="text-lg font-semibold mb-3">Amber</h3>
424
- <div className="grid grid-cols-10 gap-2 mb-2">
425
- <ColorSwatch bgClass="bg-amber-50" label="50" />
426
- <ColorSwatch bgClass="bg-amber-100" label="100" />
427
- <ColorSwatch bgClass="bg-amber-200" label="200" />
428
- <ColorSwatch bgClass="bg-amber-300" label="300" />
429
- <ColorSwatch bgClass="bg-amber-400" label="400" />
430
- <ColorSwatch bgClass="bg-amber-500" label="500" />
431
- <ColorSwatch bgClass="bg-amber-600" label="600" />
432
- <ColorSwatch bgClass="bg-amber-700" label="700" />
433
- <ColorSwatch bgClass="bg-amber-800" label="800" />
434
- <ColorSwatch bgClass="bg-amber-900" label="900" />
435
- </div>
436
- <div className="mt-3">
437
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
438
- <div className="grid grid-cols-4 gap-2 max-w-xs">
439
- <ColorSwatch bgClass="bg-amber-v100" label="v100" />
440
- <ColorSwatch bgClass="bg-amber-v200" label="v200" />
441
- <ColorSwatch bgClass="bg-amber-v300" label="v300" />
442
- <ColorSwatch bgClass="bg-amber-v400" label="v400" />
443
- </div>
444
- </div>
445
- </div>
446
-
447
- {/* Orange */}
448
- <div className="mb-8">
449
- <h3 className="text-lg font-semibold mb-3">Orange</h3>
450
- <div className="grid grid-cols-10 gap-2 mb-2">
451
- <ColorSwatch bgClass="bg-orange-50" label="50" />
452
- <ColorSwatch bgClass="bg-orange-100" label="100" />
453
- <ColorSwatch bgClass="bg-orange-200" label="200" />
454
- <ColorSwatch bgClass="bg-orange-300" label="300" />
455
- <ColorSwatch bgClass="bg-orange-400" label="400" />
456
- <ColorSwatch bgClass="bg-orange-500" label="500" />
457
- <ColorSwatch bgClass="bg-orange-600" label="600" />
458
- <ColorSwatch bgClass="bg-orange-700" label="700" />
459
- <ColorSwatch bgClass="bg-orange-800" label="800" />
460
- <ColorSwatch bgClass="bg-orange-900" label="900" />
461
- </div>
462
- <div className="mt-3">
463
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
464
- <div className="grid grid-cols-4 gap-2 max-w-xs">
465
- <ColorSwatch bgClass="bg-orange-v100" label="v100" />
466
- <ColorSwatch bgClass="bg-orange-v200" label="v200" />
467
- <ColorSwatch bgClass="bg-orange-v300" label="v300" />
468
- <ColorSwatch bgClass="bg-orange-v400" label="v400" />
469
- </div>
470
- </div>
471
- </div>
472
-
473
- {/* Ember */}
474
- <div className="mb-8">
475
- <h3 className="text-lg font-semibold mb-3">Ember</h3>
476
- <div className="grid grid-cols-10 gap-2 mb-2">
477
- <ColorSwatch bgClass="bg-ember-50" label="50" />
478
- <ColorSwatch bgClass="bg-ember-100" label="100" />
479
- <ColorSwatch bgClass="bg-ember-200" label="200" />
480
- <ColorSwatch bgClass="bg-ember-300" label="300" />
481
- <ColorSwatch bgClass="bg-ember-400" label="400" />
482
- <ColorSwatch bgClass="bg-ember-500" label="500" />
483
- <ColorSwatch bgClass="bg-ember-600" label="600" />
484
- <ColorSwatch bgClass="bg-ember-700" label="700" />
485
- <ColorSwatch bgClass="bg-ember-800" label="800" />
486
- <ColorSwatch bgClass="bg-ember-900" label="900" />
487
- </div>
488
- <div className="mt-3">
489
- <div className="text-sm text-gray-500 mb-2">Vibrant</div>
490
- <div className="grid grid-cols-4 gap-2 max-w-xs">
491
- <ColorSwatch bgClass="bg-ember-v100" label="v100" />
492
- <ColorSwatch bgClass="bg-ember-v200" label="v200" />
493
- <ColorSwatch bgClass="bg-ember-v300" label="v300" />
494
- <ColorSwatch bgClass="bg-ember-v400" label="v400" />
495
- </div>
496
- </div>
497
- </div>
498
- </div>
499
-
500
- {/* Alpha Colors */}
501
- <div>
502
- <h2 className="text-2xl font-bold mb-6">Alpha Colors</h2>
503
-
504
- {/* Alpha Black */}
505
- <div className="mb-8">
506
- <h3 className="text-lg font-semibold mb-3">Alpha Black</h3>
507
- <div className="grid grid-cols-11 gap-2 p-4 rounded-lg bg-gray-50">
508
- <ColorSwatch bgClass="bg-alpha-black-5" label="5" />
509
- <ColorSwatch bgClass="bg-alpha-black-10" label="10" />
510
- <ColorSwatch bgClass="bg-alpha-black-20" label="20" />
511
- <ColorSwatch bgClass="bg-alpha-black-30" label="30" />
512
- <ColorSwatch bgClass="bg-alpha-black-40" label="40" />
513
- <ColorSwatch bgClass="bg-alpha-black-50" label="50" />
514
- <ColorSwatch bgClass="bg-alpha-black-60" label="60" />
515
- <ColorSwatch bgClass="bg-alpha-black-70" label="70" />
516
- <ColorSwatch bgClass="bg-alpha-black-80" label="80" />
517
- <ColorSwatch bgClass="bg-alpha-black-90" label="90" />
518
- <ColorSwatch bgClass="bg-alpha-black-95" label="95" />
519
- </div>
520
- </div>
521
-
522
- {/* Alpha White */}
523
- <div className="mb-8">
524
- <h3 className="text-lg font-semibold mb-3">Alpha White</h3>
525
- <div className="grid grid-cols-11 gap-2 p-4 rounded-lg bg-gray-900">
526
- <ColorSwatch bgClass="bg-alpha-white-5" label="5" />
527
- <ColorSwatch bgClass="bg-alpha-white-10" label="10" />
528
- <ColorSwatch bgClass="bg-alpha-white-20" label="20" />
529
- <ColorSwatch bgClass="bg-alpha-white-30" label="30" />
530
- <ColorSwatch bgClass="bg-alpha-white-40" label="40" />
531
- <ColorSwatch bgClass="bg-alpha-white-50" label="50" />
532
- <ColorSwatch bgClass="bg-alpha-white-60" label="60" />
533
- <ColorSwatch bgClass="bg-alpha-white-70" label="70" />
534
- <ColorSwatch bgClass="bg-alpha-white-80" label="80" />
535
- <ColorSwatch bgClass="bg-alpha-white-90" label="90" />
536
- <ColorSwatch bgClass="bg-alpha-white-95" label="95" />
537
- </div>
538
- </div>
539
- </div>
540
- </div>
541
- );
542
- };
543
-
544
- // Primitive spacing tokens with hardcoded Tailwind classes
545
- type PrimitiveSpacingToken = {
546
- token: string;
547
- value: string;
548
- widthClass: string;
549
- };
550
-
551
- // Primitive spacing tokens - widthClass uses generated @utility classes
552
- const primitiveSpacingTokens: PrimitiveSpacingToken[] = [
553
- { token: "spacing-2", value: "2px", widthClass: "w-spacing-2" },
554
- { token: "spacing-4", value: "4px", widthClass: "w-spacing-4" },
555
- { token: "spacing-6", value: "6px", widthClass: "w-spacing-6" },
556
- { token: "spacing-8", value: "8px", widthClass: "w-spacing-8" },
557
- { token: "spacing-10", value: "10px", widthClass: "w-spacing-10" },
558
- { token: "spacing-12", value: "12px", widthClass: "w-spacing-12" },
559
- { token: "spacing-16", value: "16px", widthClass: "w-spacing-16" },
560
- { token: "spacing-20", value: "20px", widthClass: "w-spacing-20" },
561
- { token: "spacing-24", value: "24px", widthClass: "w-spacing-24" },
562
- { token: "spacing-28", value: "28px", widthClass: "w-spacing-28" },
563
- { token: "spacing-32", value: "32px", widthClass: "w-spacing-32" },
564
- { token: "spacing-36", value: "36px", widthClass: "w-spacing-36" },
565
- { token: "spacing-40", value: "40px", widthClass: "w-spacing-40" },
566
- { token: "spacing-48", value: "48px", widthClass: "w-spacing-48" },
567
- { token: "spacing-56", value: "56px", widthClass: "w-spacing-56" },
568
- { token: "spacing-64", value: "64px", widthClass: "w-spacing-64" },
569
- { token: "spacing-72", value: "72px", widthClass: "w-spacing-72" },
570
- { token: "spacing-80", value: "80px", widthClass: "w-spacing-80" },
571
- { token: "spacing-96", value: "96px", widthClass: "w-spacing-96" },
572
- { token: "spacing-112", value: "112px", widthClass: "w-spacing-112" },
573
- { token: "spacing-128", value: "128px", widthClass: "w-spacing-128" },
574
- { token: "spacing-144", value: "144px", widthClass: "w-spacing-144" },
575
- { token: "spacing-160", value: "160px", widthClass: "w-spacing-160" },
576
- { token: "spacing-176", value: "176px", widthClass: "w-spacing-176" },
577
- { token: "spacing-192", value: "192px", widthClass: "w-spacing-192" },
578
- { token: "spacing-208", value: "208px", widthClass: "w-spacing-208" },
579
- { token: "spacing-224", value: "224px", widthClass: "w-spacing-224" },
580
- { token: "spacing-240", value: "240px", widthClass: "w-spacing-240" },
581
- { token: "spacing-256", value: "256px", widthClass: "w-spacing-256" },
582
- { token: "spacing-288", value: "288px", widthClass: "w-spacing-288" },
583
- { token: "spacing-320", value: "320px", widthClass: "w-spacing-320" },
584
- { token: "spacing-352", value: "352px", widthClass: "w-spacing-352" },
585
- { token: "spacing-384", value: "384px", widthClass: "w-spacing-384" },
586
- { token: "spacing-400", value: "400px", widthClass: "w-spacing-400" },
587
- ];
588
-
589
- const PrimitiveSpacingSwatch: React.FC<{
590
- token: string;
591
- value: string;
592
- widthClass: string;
593
- }> = ({ token, value, widthClass }) => {
594
- return (
595
- <div className="flex items-center gap-32 py-2 border-b border-gray-100">
596
- <div className="w-16 text-sm font-mono text-gray-600">{value}</div>
597
- <div className="flex-1 flex items-center justify-between gap-3">
598
- <div className="flex-1">
599
- <div className={`h-4 bg-blue-500 rounded max-w-400 ${widthClass}`} />
600
- </div>
601
- <div className="text-xs text-gray-400 font-mono whitespace-nowrap">
602
- {token}
603
- </div>
604
- </div>
605
- </div>
606
- );
607
- };
608
-
609
- export const SpacingTokens: React.FC = () => {
610
- return (
611
- <div className="space-y-8">
612
- <div>
613
- <h2 className="text-2xl font-bold mb-6">Spacing Scale</h2>
614
- <p className="text-gray-600 mb-6">
615
- Consistent spacing values used for margins, padding, and gaps
616
- throughout the design system.
617
- </p>
618
-
619
- <div className="bg-white rounded-lg border border-gray-200 p-6">
620
- {primitiveSpacingTokens.map((t) => (
621
- <PrimitiveSpacingSwatch
622
- key={t.token}
623
- token={t.token}
624
- value={t.value}
625
- widthClass={t.widthClass}
626
- />
627
- ))}
628
- </div>
629
- </div>
630
- </div>
631
- );
632
- };
633
-
634
- // Semantic Typography tokens with hardcoded Tailwind classes
635
- // Each token includes the full class name for Tailwind to pick up statically
636
- type SemanticTypographyToken = {
637
- token: string;
638
- textClass: string;
639
- desc: string;
640
- };
641
-
642
- type SemanticTypographyGroup = {
643
- label: string;
644
- tokens: SemanticTypographyToken[];
645
- };
646
-
647
- const semanticTypographyTokens: SemanticTypographyGroup[] = [
648
- {
649
- label: "Display",
650
- tokens: [
651
- {
652
- token: "brand-large-display-hero",
653
- textClass: "typography-brand-large-display-hero",
654
- desc: "Hero - 280px",
655
- },
656
- {
657
- token: "brand-large-display-xl",
658
- textClass: "typography-brand-large-display-xl",
659
- desc: "XL - 224px",
660
- },
661
- {
662
- token: "brand-large-display-large",
663
- textClass: "typography-brand-large-display-large",
664
- desc: "Large - 192px",
665
- },
666
- {
667
- token: "brand-large-display-medium",
668
- textClass: "typography-brand-large-display-medium",
669
- desc: "Medium - 168px",
670
- },
671
- {
672
- token: "brand-large-display-small",
673
- textClass: "typography-brand-large-display-small",
674
- desc: "Small - 148px",
675
- },
676
- ],
677
- },
678
- {
679
- label: "Headline",
680
- tokens: [
681
- {
682
- token: "brand-large-headline-xl",
683
- textClass: "typography-brand-large-headline-xl",
684
- desc: "XL - 112px",
685
- },
686
- {
687
- token: "brand-large-headline-large",
688
- textClass: "typography-brand-large-headline-large",
689
- desc: "Large - 96px",
690
- },
691
- {
692
- token: "brand-large-headline-medium",
693
- textClass: "typography-brand-large-headline-medium",
694
- desc: "Medium - 72px",
695
- },
696
- {
697
- token: "brand-large-headline-small",
698
- textClass: "typography-brand-large-headline-small",
699
- desc: "Small - 56px",
700
- },
701
- ],
702
- },
703
- {
704
- label: "Subheading",
705
- tokens: [
706
- {
707
- token: "brand-large-subheading-large",
708
- textClass: "typography-brand-large-subheading-large",
709
- desc: "Large - 42px",
710
- },
711
- {
712
- token: "brand-large-subheading-medium",
713
- textClass: "typography-brand-large-subheading-medium",
714
- desc: "Medium - 32px",
715
- },
716
- {
717
- token: "brand-large-subheading-small",
718
- textClass: "typography-brand-large-subheading-small",
719
- desc: "Small - 24px",
720
- },
721
- {
722
- token: "brand-large-subheading-xs",
723
- textClass: "typography-brand-large-subheading-xs",
724
- desc: "XS - 18px",
725
- },
726
- {
727
- token: "brand-large-subheading-xss",
728
- textClass: "typography-brand-large-subheading-xss",
729
- desc: "XSS - 16px",
730
- },
731
- ],
732
- },
733
- {
734
- label: "Body",
735
- tokens: [
736
- {
737
- token: "brand-large-body-large",
738
- textClass: "typography-brand-large-body-large",
739
- desc: "Large - 21px",
740
- },
741
- {
742
- token: "brand-large-body-medium",
743
- textClass: "typography-brand-large-body-medium",
744
- desc: "Medium - 18px",
745
- },
746
- {
747
- token: "brand-large-body-small",
748
- textClass: "typography-brand-large-body-small",
749
- desc: "Small - 16px",
750
- },
751
- ],
752
- },
753
- {
754
- label: "Button",
755
- tokens: [
756
- {
757
- token: "brand-large-button-xl",
758
- textClass: "typography-brand-large-button-xl",
759
- desc: "XL - 24px",
760
- },
761
- {
762
- token: "brand-large-button-large",
763
- textClass: "typography-brand-large-button-large",
764
- desc: "Large - 18px",
765
- },
766
- {
767
- token: "brand-large-button-medium",
768
- textClass: "typography-brand-large-button-medium",
769
- desc: "Medium - 16px",
770
- },
771
- {
772
- token: "brand-large-button-small",
773
- textClass: "typography-brand-large-button-small",
774
- desc: "Small - 14px",
775
- },
776
- ],
777
- },
778
- {
779
- label: "Link",
780
- tokens: [
781
- {
782
- token: "brand-large-link-large",
783
- textClass: "typography-brand-large-link-large",
784
- desc: "Large - 18px",
785
- },
786
- {
787
- token: "brand-large-link-medium",
788
- textClass: "typography-brand-large-link-medium",
789
- desc: "Medium - 16px",
790
- },
791
- {
792
- token: "brand-large-link-small",
793
- textClass: "typography-brand-large-link-small",
794
- desc: "Small - 14px",
795
- },
796
- ],
797
- },
798
- {
799
- label: "Label",
800
- tokens: [
801
- {
802
- token: "brand-large-label-large",
803
- textClass: "typography-brand-large-label-large",
804
- desc: "Large - 16px",
805
- },
806
- {
807
- token: "brand-large-label-medium",
808
- textClass: "typography-brand-large-label-medium",
809
- desc: "Medium - 14px",
810
- },
811
- {
812
- token: "brand-large-label-small",
813
- textClass: "typography-brand-large-label-small",
814
- desc: "Small - 12px",
815
- },
816
- ],
817
- },
818
- {
819
- label: "Caption",
820
- tokens: [
821
- {
822
- token: "brand-large-caption-large",
823
- textClass: "typography-brand-large-caption-large",
824
- desc: "Large - 14px",
825
- },
826
- {
827
- token: "brand-large-caption-small",
828
- textClass: "typography-brand-large-caption-small",
829
- desc: "Small - 12px",
830
- },
831
- ],
832
- },
833
- ];
834
-
835
- // Semantic Spacing tokens with hardcoded Tailwind classes
836
- // Each token includes the full class name for Tailwind to pick up statically
837
- type SemanticSpacingToken = {
838
- token: string;
839
- value: string;
840
- widthClass: string;
841
- };
842
-
843
- type SemanticSpacingGroup = {
844
- label: string;
845
- tokens: SemanticSpacingToken[];
846
- };
847
-
848
- const semanticSpacingTokens: {
849
- component: SemanticSpacingGroup[];
850
- layout: SemanticSpacingGroup[];
851
- content: SemanticSpacingGroup[];
852
- } = {
853
- component: [
854
- {
855
- label: "Button",
856
- tokens: [
857
- {
858
- token: "spacing-brand-large-component-button-padding-x-large",
859
- value: "32px",
860
- widthClass: "w-spacing-brand-large-component-button-padding-x-large",
861
- },
862
- {
863
- token: "spacing-brand-large-component-button-padding-x-medium",
864
- value: "24px",
865
- widthClass: "w-spacing-brand-large-component-button-padding-x-medium",
866
- },
867
- {
868
- token: "spacing-brand-large-component-button-padding-x-small",
869
- value: "16px",
870
- widthClass: "w-spacing-brand-large-component-button-padding-x-small",
871
- },
872
- {
873
- token: "spacing-brand-large-component-button-padding-y-large",
874
- value: "20px",
875
- widthClass: "w-spacing-brand-large-component-button-padding-y-large",
876
- },
877
- {
878
- token: "spacing-brand-large-component-button-padding-y-medium",
879
- value: "16px",
880
- widthClass: "w-spacing-brand-large-component-button-padding-y-medium",
881
- },
882
- {
883
- token: "spacing-brand-large-component-button-padding-y-small",
884
- value: "12px",
885
- widthClass: "w-spacing-brand-large-component-button-padding-y-small",
886
- },
887
- {
888
- token: "spacing-brand-large-component-button-gap-icon-text",
889
- value: "12px",
890
- widthClass: "w-spacing-brand-large-component-button-gap-icon-text",
891
- },
892
- {
893
- token: "spacing-brand-large-component-button-gap-button-group",
894
- value: "16px",
895
- widthClass: "w-spacing-brand-large-component-button-gap-button-group",
896
- },
897
- ],
898
- },
899
- {
900
- label: "Card",
901
- tokens: [
902
- {
903
- token: "spacing-brand-large-component-card-padding-large",
904
- value: "40px",
905
- widthClass: "w-spacing-brand-large-component-card-padding-large",
906
- },
907
- {
908
- token: "spacing-brand-large-component-card-padding-medium",
909
- value: "32px",
910
- widthClass: "w-spacing-brand-large-component-card-padding-medium",
911
- },
912
- {
913
- token: "spacing-brand-large-component-card-padding-small",
914
- value: "24px",
915
- widthClass: "w-spacing-brand-large-component-card-padding-small",
916
- },
917
- {
918
- token: "spacing-brand-large-component-card-gap-internal",
919
- value: "24px",
920
- widthClass: "w-spacing-brand-large-component-card-gap-internal",
921
- },
922
- ],
923
- },
924
- {
925
- label: "Feature Section",
926
- tokens: [
927
- {
928
- token: "spacing-brand-large-component-feature-padding-large",
929
- value: "48px",
930
- widthClass: "w-spacing-brand-large-component-feature-padding-large",
931
- },
932
- {
933
- token: "spacing-brand-large-component-feature-padding-medium",
934
- value: "40px",
935
- widthClass: "w-spacing-brand-large-component-feature-padding-medium",
936
- },
937
- {
938
- token: "spacing-brand-large-component-feature-padding-small",
939
- value: "32px",
940
- widthClass: "w-spacing-brand-large-component-feature-padding-small",
941
- },
942
- {
943
- token: "spacing-brand-large-component-feature-gap-icon-content",
944
- value: "24px",
945
- widthClass:
946
- "w-spacing-brand-large-component-feature-gap-icon-content",
947
- },
948
- ],
949
- },
950
- {
951
- label: "Form",
952
- tokens: [
953
- {
954
- token: "spacing-brand-large-component-form-gap-field-field",
955
- value: "20px",
956
- widthClass: "w-spacing-brand-large-component-form-gap-field-field",
957
- },
958
- {
959
- token: "spacing-brand-large-component-form-gap-label-field",
960
- value: "8px",
961
- widthClass: "w-spacing-brand-large-component-form-gap-label-field",
962
- },
963
- {
964
- token: "spacing-brand-large-component-form-gap-field-button",
965
- value: "24px",
966
- widthClass: "w-spacing-brand-large-component-form-gap-field-button",
967
- },
968
- ],
969
- },
970
- {
971
- label: "Testimonial",
972
- tokens: [
973
- {
974
- token: "spacing-brand-large-component-testimonial-padding",
975
- value: "40px",
976
- widthClass: "w-spacing-brand-large-component-testimonial-padding",
977
- },
978
- {
979
- token:
980
- "spacing-brand-large-component-testimonial-gap-quote-attribution",
981
- value: "24px",
982
- widthClass:
983
- "w-spacing-brand-large-component-testimonial-gap-quote-attribution",
984
- },
985
- ],
986
- },
987
- ],
988
- layout: [
989
- {
990
- label: "Hero Section",
991
- tokens: [
992
- {
993
- token: "spacing-brand-large-layout-hero-padding-y-large",
994
- value: "112px",
995
- widthClass: "w-spacing-brand-large-layout-hero-padding-y-large",
996
- },
997
- {
998
- token: "spacing-brand-large-layout-hero-padding-y-medium",
999
- value: "96px",
1000
- widthClass: "w-spacing-brand-large-layout-hero-padding-y-medium",
1001
- },
1002
- {
1003
- token: "spacing-brand-large-layout-hero-padding-y-small",
1004
- value: "80px",
1005
- widthClass: "w-spacing-brand-large-layout-hero-padding-y-small",
1006
- },
1007
- {
1008
- token: "spacing-brand-large-layout-hero-gap-content-cta",
1009
- value: "40px",
1010
- widthClass: "w-spacing-brand-large-layout-hero-gap-content-cta",
1011
- },
1012
- ],
1013
- },
1014
- {
1015
- label: "Section",
1016
- tokens: [
1017
- {
1018
- token: "spacing-brand-large-layout-section-gap-xlarge",
1019
- value: "224px",
1020
- widthClass: "w-spacing-brand-large-layout-section-gap-xlarge",
1021
- },
1022
- {
1023
- token: "spacing-brand-large-layout-section-gap-large",
1024
- value: "160px",
1025
- widthClass: "w-spacing-brand-large-layout-section-gap-large",
1026
- },
1027
- {
1028
- token: "spacing-brand-large-layout-section-gap-medium",
1029
- value: "112px",
1030
- widthClass: "w-spacing-brand-large-layout-section-gap-medium",
1031
- },
1032
- {
1033
- token: "spacing-brand-large-layout-section-gap-small",
1034
- value: "80px",
1035
- widthClass: "w-spacing-brand-large-layout-section-gap-small",
1036
- },
1037
- {
1038
- token: "spacing-brand-large-layout-section-gap-default",
1039
- value: "160px",
1040
- widthClass: "w-spacing-brand-large-layout-section-gap-default",
1041
- },
1042
- {
1043
- token: "spacing-brand-large-layout-section-padding-y-large",
1044
- value: "128px",
1045
- widthClass: "w-spacing-brand-large-layout-section-padding-y-large",
1046
- },
1047
- {
1048
- token: "spacing-brand-large-layout-section-padding-y-medium",
1049
- value: "96px",
1050
- widthClass: "w-spacing-brand-large-layout-section-padding-y-medium",
1051
- },
1052
- {
1053
- token: "spacing-brand-large-layout-section-padding-y-small",
1054
- value: "64px",
1055
- widthClass: "w-spacing-brand-large-layout-section-padding-y-small",
1056
- },
1057
- ],
1058
- },
1059
- {
1060
- label: "Container",
1061
- tokens: [
1062
- {
1063
- token: "spacing-brand-large-layout-container-padding-x-large",
1064
- value: "48px",
1065
- widthClass: "w-spacing-brand-large-layout-container-padding-x-large",
1066
- },
1067
- {
1068
- token: "spacing-brand-large-layout-container-padding-x-medium",
1069
- value: "32px",
1070
- widthClass: "w-spacing-brand-large-layout-container-padding-x-medium",
1071
- },
1072
- {
1073
- token: "spacing-brand-large-layout-container-padding-x-small",
1074
- value: "20px",
1075
- widthClass: "w-spacing-brand-large-layout-container-padding-x-small",
1076
- },
1077
- ],
1078
- },
1079
- {
1080
- label: "Grid",
1081
- tokens: [
1082
- {
1083
- token: "spacing-brand-large-layout-grid-gap-large",
1084
- value: "48px",
1085
- widthClass: "w-spacing-brand-large-layout-grid-gap-large",
1086
- },
1087
- {
1088
- token: "spacing-brand-large-layout-grid-gap-medium",
1089
- value: "32px",
1090
- widthClass: "w-spacing-brand-large-layout-grid-gap-medium",
1091
- },
1092
- {
1093
- token: "spacing-brand-large-layout-grid-gap-small",
1094
- value: "24px",
1095
- widthClass: "w-spacing-brand-large-layout-grid-gap-small",
1096
- },
1097
- ],
1098
- },
1099
- ],
1100
- content: [
1101
- {
1102
- label: "Content Stack",
1103
- tokens: [
1104
- {
1105
- token: "spacing-brand-large-content-stack-display-body-tight",
1106
- value: "16px",
1107
- widthClass: "w-spacing-brand-large-content-stack-display-body-tight",
1108
- },
1109
- {
1110
- token: "spacing-brand-large-content-stack-display-body-normal",
1111
- value: "24px",
1112
- widthClass: "w-spacing-brand-large-content-stack-display-body-normal",
1113
- },
1114
- {
1115
- token: "spacing-brand-large-content-stack-display-body-relaxed",
1116
- value: "32px",
1117
- widthClass:
1118
- "w-spacing-brand-large-content-stack-display-body-relaxed",
1119
- },
1120
- {
1121
- token: "spacing-brand-large-content-stack-headline-subheading",
1122
- value: "16px",
1123
- widthClass: "w-spacing-brand-large-content-stack-headline-subheading",
1124
- },
1125
- {
1126
- token: "spacing-brand-large-content-stack-subheading-body",
1127
- value: "12px",
1128
- widthClass: "w-spacing-brand-large-content-stack-subheading-body",
1129
- },
1130
- {
1131
- token: "spacing-brand-large-content-stack-body-cta",
1132
- value: "32px",
1133
- widthClass: "w-spacing-brand-large-content-stack-body-cta",
1134
- },
1135
- {
1136
- token: "spacing-brand-large-content-stack-eyebrow-headline",
1137
- value: "12px",
1138
- widthClass: "w-spacing-brand-large-content-stack-eyebrow-headline",
1139
- },
1140
- {
1141
- token: "spacing-brand-large-content-stack-body-body",
1142
- value: "20px",
1143
- widthClass: "w-spacing-brand-large-content-stack-body-body",
1144
- },
1145
- ],
1146
- },
1147
- ],
1148
- };
1149
-
1150
- // Typography sample component using hardcoded classes
1151
- const SemanticTypographySwatch: React.FC<{
1152
- token: string;
1153
- textClass: string;
1154
- desc: string;
1155
- }> = ({ token, textClass, desc }) => {
1156
- const isLargeType = token.includes("display") || token.includes("headline");
1157
- const sampleText = isLargeType
1158
- ? "Aa"
1159
- : "The quick brown fox jumps over the lazy dog";
1160
-
1161
- return (
1162
- <div className="py-4 border-b border-gray-100">
1163
- <div className="flex justify-between items-start mb-2">
1164
- <span className="text-xs font-mono text-blue-600 bg-blue-50 px-2 py-1 rounded">
1165
- {token}
1166
- </span>
1167
- <span className="text-xs text-gray-500">{desc}</span>
1168
- </div>
1169
- <p className={textClass}>{sampleText}</p>
1170
- </div>
1171
- );
1172
- };
1173
-
1174
- export const TypographyTokens: React.FC = () => {
1175
- return (
1176
- <div className="space-y-8">
1177
- <div>
1178
- <h2 className="text-2xl font-bold mb-6">Semantic Typography</h2>
1179
- <p className="text-gray-600 mb-6">
1180
- Typography tokens for marketing pages, landing pages, and promotional
1181
- content.
1182
- </p>
1183
-
1184
- {semanticTypographyTokens.map((group) => (
1185
- <div key={group.label} className="mb-8">
1186
- <h3 className="text-lg font-semibold mb-3">{group.label}</h3>
1187
- <div className="bg-white rounded-lg border border-gray-200 p-6 overflow-x-auto">
1188
- {group.tokens.map((t) => (
1189
- <SemanticTypographySwatch
1190
- key={t.token}
1191
- token={t.token}
1192
- textClass={t.textClass}
1193
- desc={t.desc}
1194
- />
1195
- ))}
1196
- </div>
1197
- </div>
1198
- ))}
1199
- </div>
1200
- </div>
1201
- );
1202
- };
1203
-
1204
- // Semantic Spacing Component - Individual row for each token
1205
- // Uses hardcoded Tailwind classes for static analysis
1206
- const SemanticSpacingSwatch: React.FC<{
1207
- token: string;
1208
- value: string;
1209
- widthClass: string;
1210
- }> = ({ token, value, widthClass }) => {
1211
- return (
1212
- <div className="flex items-center gap-32 py-2 border-b border-gray-100">
1213
- <div className="w-16 text-sm font-mono text-gray-600">{value}</div>
1214
- <div className="flex-1 flex items-center justify-between gap-3">
1215
- <div className="flex-1">
1216
- <div className={`h-4 bg-green-500 rounded max-w-400 ${widthClass}`} />
1217
- </div>
1218
- <div className="text-xs text-gray-400 font-mono whitespace-nowrap">
1219
- {token}
1220
- </div>
1221
- </div>
1222
- </div>
1223
- );
1224
- };
1225
-
1226
- export const SemanticSpacingTokens: React.FC = () => {
1227
- return (
1228
- <div className="space-y-8">
1229
- <div>
1230
- <h2 className="text-2xl font-bold mb-6">Semantic Spacing</h2>
1231
- <p className="text-gray-600 mb-6">
1232
- Purpose-driven spacing tokens for components, layouts, and content
1233
- stacks. These provide consistent spacing across the design system.
1234
- </p>
1235
-
1236
- {/* Component Spacing */}
1237
- <div className="mb-8">
1238
- <h3 className="text-lg font-semibold mb-3">Component Spacing</h3>
1239
- <div className="bg-white rounded-lg border border-gray-200 p-6">
1240
- {semanticSpacingTokens.component.map((group) => (
1241
- <div key={group.label} className="mb-6 last:mb-0">
1242
- <div className="text-sm text-gray-500 mb-2">{group.label}</div>
1243
- {group.tokens.map((t) => (
1244
- <SemanticSpacingSwatch
1245
- key={t.token}
1246
- token={t.token}
1247
- value={t.value}
1248
- widthClass={t.widthClass}
1249
- />
1250
- ))}
1251
- </div>
1252
- ))}
1253
- </div>
1254
- </div>
1255
-
1256
- {/* Layout Spacing */}
1257
- <div className="mb-8">
1258
- <h3 className="text-lg font-semibold mb-3">Layout Spacing</h3>
1259
- <div className="bg-white rounded-lg border border-gray-200 p-6">
1260
- {semanticSpacingTokens.layout.map((group) => (
1261
- <div key={group.label} className="mb-6 last:mb-0">
1262
- <div className="text-sm text-gray-500 mb-2">{group.label}</div>
1263
- {group.tokens.map((t) => (
1264
- <SemanticSpacingSwatch
1265
- key={t.token}
1266
- token={t.token}
1267
- value={t.value}
1268
- widthClass={t.widthClass}
1269
- />
1270
- ))}
1271
- </div>
1272
- ))}
1273
- </div>
1274
- </div>
1275
-
1276
- {/* Content Spacing */}
1277
- <div className="mb-8">
1278
- <h3 className="text-lg font-semibold mb-3">Content Stack Spacing</h3>
1279
- <div className="bg-white rounded-lg border border-gray-200 p-6">
1280
- {semanticSpacingTokens.content.map((group) => (
1281
- <div key={group.label} className="mb-6 last:mb-0">
1282
- <div className="text-sm text-gray-500 mb-2">{group.label}</div>
1283
- {group.tokens.map((t) => (
1284
- <SemanticSpacingSwatch
1285
- key={t.token}
1286
- token={t.token}
1287
- value={t.value}
1288
- widthClass={t.widthClass}
1289
- />
1290
- ))}
1291
- </div>
1292
- ))}
1293
- </div>
1294
- </div>
1295
- </div>
1296
- </div>
1297
- );
1298
- };
1299
-
1300
- export const ResponsiveTypography: React.FC = () => {
1301
- return (
1302
- <div className="space-y-12">
1303
- {/* Headline example */}
1304
- <div>
1305
- <p className="text-sm text-gray-500 mb-2 font-mono">
1306
- sm: headline-small → md: headline-medium → lg: headline-large
1307
- </p>
1308
- <h1 className="typography-brand-small-headline-small md:typography-brand-medium-headline-medium lg:typography-brand-large-headline-large">
1309
- Responsive Headline
1310
- </h1>
1311
- </div>
1312
-
1313
- {/* Subheading example */}
1314
- <div>
1315
- <p className="text-sm text-gray-500 mb-2 font-mono">
1316
- sm: subheading-small → md: subheading-medium → lg: subheading-large
1317
- </p>
1318
- <h2 className="typography-brand-small-subheading-small md:typography-brand-medium-subheading-medium lg:typography-brand-large-subheading-large">
1319
- Responsive Subheading
1320
- </h2>
1321
- </div>
1322
-
1323
- {/* Body example */}
1324
- <div>
1325
- <p className="text-sm text-gray-500 mb-2 font-mono">
1326
- sm: body-small → md: body-medium → lg: body-large
1327
- </p>
1328
- <p className="typography-brand-small-body-small md:typography-brand-medium-body-medium lg:typography-brand-large-body-large">
1329
- This body text adapts to the screen size. On mobile it uses the small
1330
- variant, on tablet the medium variant, and on desktop the large
1331
- variant. Resize the viewport to see it change.
1332
- </p>
1333
- </div>
1334
- </div>
1335
- );
1336
- };
1337
-
1338
- export const TokenShowcase: React.FC = () => {
1339
- return (
1340
- <div className="p-8 bg-gray-50 min-h-screen">
1341
- <div className="max-w-7xl mx-auto">
1342
- <div className="mb-8">
1343
- <h1 className="text-3xl font-bold mb-2">Design Tokens</h1>
1344
- <p className="text-lg text-gray-600">
1345
- Primitive color tokens available in the design system
1346
- </p>
1347
- </div>
1348
- <ColorTokens />
1349
- </div>
1350
- </div>
1351
- );
1352
- };