@nationaldesignstudio/react 0.5.2 → 0.5.4

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 (161) hide show
  1. package/package.json +10 -2
  2. package/src/components/organisms/navbar/navbar.tsx +8 -8
  3. package/src/App.css +0 -0
  4. package/src/App.tsx +0 -7
  5. package/src/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
  6. package/src/assets/react.svg +0 -1
  7. package/src/components/atoms/accordion/accordion.stories.tsx +0 -228
  8. package/src/components/atoms/accordion/accordion.test.tsx +0 -231
  9. package/src/components/atoms/accordion/index.ts +0 -6
  10. package/src/components/atoms/background/background.test.tsx +0 -213
  11. package/src/components/atoms/background/index.ts +0 -22
  12. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-darwin.png +0 -0
  13. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-linux.png +0 -0
  14. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-darwin.png +0 -0
  15. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-linux.png +0 -0
  16. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-darwin.png +0 -0
  17. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-linux.png +0 -0
  18. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-darwin.png +0 -0
  19. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-linux.png +0 -0
  20. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-darwin.png +0 -0
  21. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-linux.png +0 -0
  22. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-darwin.png +0 -0
  23. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-linux.png +0 -0
  24. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-darwin.png +0 -0
  25. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-linux.png +0 -0
  26. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-darwin.png +0 -0
  27. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-linux.png +0 -0
  28. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-darwin.png +0 -0
  29. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-linux.png +0 -0
  30. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-darwin.png +0 -0
  31. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-linux.png +0 -0
  32. package/src/components/atoms/button/button.stories.tsx +0 -289
  33. package/src/components/atoms/button/button.test.tsx +0 -419
  34. package/src/components/atoms/button/button.visual.test.tsx +0 -98
  35. package/src/components/atoms/button/icon-button.stories.tsx +0 -260
  36. package/src/components/atoms/button/icon-button.test.tsx +0 -186
  37. package/src/components/atoms/button/index.ts +0 -6
  38. package/src/components/atoms/input/index.ts +0 -17
  39. package/src/components/atoms/input/input-group.stories.tsx +0 -646
  40. package/src/components/atoms/input/input-group.test.tsx +0 -362
  41. package/src/components/atoms/input/input.stories.tsx +0 -228
  42. package/src/components/atoms/input/input.test.tsx +0 -167
  43. package/src/components/atoms/ndstudio-footer/index.ts +0 -1
  44. package/src/components/atoms/pager-control/index.ts +0 -5
  45. package/src/components/atoms/pager-control/pager-control.stories.tsx +0 -207
  46. package/src/components/atoms/pager-control/pager-control.test.tsx +0 -130
  47. package/src/components/atoms/popover/index.ts +0 -30
  48. package/src/components/atoms/popover/popover.stories.tsx +0 -531
  49. package/src/components/atoms/popover/popover.test.tsx +0 -486
  50. package/src/components/atoms/select/index.ts +0 -18
  51. package/src/components/atoms/select/select.stories.tsx +0 -455
  52. package/src/components/atoms/tooltip/index.ts +0 -24
  53. package/src/components/atoms/tooltip/tooltip.stories.tsx +0 -348
  54. package/src/components/atoms/tooltip/tooltip.test.tsx +0 -363
  55. package/src/components/dev-tools/dev-toolbar/dev-toolbar.stories.tsx +0 -73
  56. package/src/components/dev-tools/dev-toolbar/index.ts +0 -1
  57. package/src/components/dev-tools/grid-overlay/index.ts +0 -1
  58. package/src/components/dev-tools/index.ts +0 -2
  59. package/src/components/foundation/typography/typography.stories.tsx +0 -401
  60. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-darwin.png +0 -0
  61. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-linux.png +0 -0
  62. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-darwin.png +0 -0
  63. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-linux.png +0 -0
  64. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-darwin.png +0 -0
  65. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-linux.png +0 -0
  66. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-darwin.png +0 -0
  67. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-linux.png +0 -0
  68. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-darwin.png +0 -0
  69. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-linux.png +0 -0
  70. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-darwin.png +0 -0
  71. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-linux.png +0 -0
  72. package/src/components/organisms/card/card.stories.tsx +0 -293
  73. package/src/components/organisms/card/card.test.tsx +0 -247
  74. package/src/components/organisms/card/card.visual.test.tsx +0 -197
  75. package/src/components/organisms/card/index.ts +0 -26
  76. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-darwin.png +0 -0
  77. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-linux.png +0 -0
  78. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-darwin.png +0 -0
  79. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-linux.png +0 -0
  80. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-darwin.png +0 -0
  81. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-linux.png +0 -0
  82. package/src/components/organisms/navbar/index.ts +0 -18
  83. package/src/components/organisms/navbar/navbar.stories.tsx +0 -313
  84. package/src/components/organisms/navbar/navbar.test.tsx +0 -190
  85. package/src/components/organisms/navbar/navbar.visual.test.tsx +0 -85
  86. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-darwin.png +0 -0
  87. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-linux.png +0 -0
  88. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-darwin.png +0 -0
  89. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-linux.png +0 -0
  90. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-darwin.png +0 -0
  91. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-linux.png +0 -0
  92. package/src/components/organisms/us-gov-banner/index.ts +0 -5
  93. package/src/components/organisms/us-gov-banner/us-gov-banner.stories.tsx +0 -35
  94. package/src/components/organisms/us-gov-banner/us-gov-banner.test.tsx +0 -107
  95. package/src/components/organisms/us-gov-banner/us-gov-banner.visual.test.tsx +0 -46
  96. package/src/components/sections/banner/banner.stories.tsx +0 -150
  97. package/src/components/sections/banner/banner.test.tsx +0 -185
  98. package/src/components/sections/banner/index.ts +0 -2
  99. package/src/components/sections/card-grid/card-grid.stories.tsx +0 -351
  100. package/src/components/sections/card-grid/index.ts +0 -1
  101. package/src/components/sections/faq-section/faq-section.stories.tsx +0 -453
  102. package/src/components/sections/faq-section/index.ts +0 -2
  103. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-darwin.png +0 -0
  104. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-linux.png +0 -0
  105. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-darwin.png +0 -0
  106. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-linux.png +0 -0
  107. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-darwin.png +0 -0
  108. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-linux.png +0 -0
  109. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-darwin.png +0 -0
  110. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-linux.png +0 -0
  111. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-darwin.png +0 -0
  112. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-linux.png +0 -0
  113. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-darwin.png +0 -0
  114. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-linux.png +0 -0
  115. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-darwin.png +0 -0
  116. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-linux.png +0 -0
  117. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-darwin.png +0 -0
  118. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-linux.png +0 -0
  119. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-darwin.png +0 -0
  120. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-linux.png +0 -0
  121. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-darwin.png +0 -0
  122. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-linux.png +0 -0
  123. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-default-chromium-linux.png +0 -0
  124. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-darwin.png +0 -0
  125. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-linux.png +0 -0
  126. package/src/components/sections/hero/hero.stories.tsx +0 -397
  127. package/src/components/sections/hero/hero.test.tsx +0 -138
  128. package/src/components/sections/hero/hero.visual.test.tsx +0 -140
  129. package/src/components/sections/hero/index.ts +0 -23
  130. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-darwin.png +0 -0
  131. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-linux.png +0 -0
  132. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-darwin.png +0 -0
  133. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-linux.png +0 -0
  134. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-darwin.png +0 -0
  135. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-linux.png +0 -0
  136. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-darwin.png +0 -0
  137. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-linux.png +0 -0
  138. package/src/components/sections/prose/index.ts +0 -6
  139. package/src/components/sections/prose/prose.stories.tsx +0 -144
  140. package/src/components/sections/prose/prose.test.tsx +0 -178
  141. package/src/components/sections/prose/prose.visual.test.tsx +0 -105
  142. package/src/components/sections/quote-block/index.ts +0 -5
  143. package/src/components/sections/river/index.ts +0 -1
  144. package/src/components/sections/river/river.stories.tsx +0 -237
  145. package/src/components/sections/river/river.test.tsx +0 -268
  146. package/src/components/sections/tout/index.ts +0 -1
  147. package/src/components/sections/tout/tout.stories.tsx +0 -171
  148. package/src/components/sections/tout/tout.test.tsx +0 -242
  149. package/src/components/sections/two-column-section/index.ts +0 -5
  150. package/src/components/sections/two-column-section/two-column-section.stories.tsx +0 -285
  151. package/src/components/shared/index.ts +0 -5
  152. package/src/index.ts +0 -293
  153. package/src/main.tsx +0 -13
  154. package/src/stories/grid-system.stories.tsx +0 -309
  155. package/src/stories/introduction.mdx +0 -128
  156. package/src/stories/theme-provider.stories.tsx +0 -349
  157. package/src/stories/token-showcase.stories.tsx +0 -73
  158. package/src/stories/token-showcase.tsx +0 -777
  159. package/src/styles.css +0 -14
  160. package/src/tests/token-resolution.test.tsx +0 -298
  161. package/src/theme/theme-provider.test.tsx +0 -270
@@ -1,777 +0,0 @@
1
- import type * as React from "react";
2
-
3
- // =============================================================================
4
- // Color Tokens
5
- // =============================================================================
6
-
7
- type ColorScale = {
8
- name: string;
9
- prefix: string;
10
- shades: (string | number)[];
11
- vibrant?: (string | number)[];
12
- };
13
-
14
- const neutralScales: ColorScale[] = [
15
- {
16
- name: "Gray",
17
- prefix: "gray",
18
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200],
19
- },
20
- {
21
- name: "Brown",
22
- prefix: "brown",
23
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200],
24
- },
25
- {
26
- name: "Steel",
27
- prefix: "steel",
28
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200],
29
- },
30
- ];
31
-
32
- const colorScales: ColorScale[] = [
33
- {
34
- name: "Red",
35
- prefix: "red",
36
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
37
- vibrant: ["v100", "v200", "v300", "v400"],
38
- },
39
- {
40
- name: "Pink",
41
- prefix: "pink",
42
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
43
- vibrant: ["v100", "v200", "v300", "v400"],
44
- },
45
- {
46
- name: "Purple",
47
- prefix: "purple",
48
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
49
- vibrant: ["v100", "v200", "v300", "v400"],
50
- },
51
- {
52
- name: "Iris",
53
- prefix: "iris",
54
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
55
- vibrant: ["v100", "v200", "v300", "v400"],
56
- },
57
- {
58
- name: "Indigo",
59
- prefix: "indigo",
60
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
61
- vibrant: ["v100", "v200", "v300", "v400"],
62
- },
63
- {
64
- name: "Blue",
65
- prefix: "blue",
66
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
67
- vibrant: ["v100", "v200", "v300", "v400"],
68
- },
69
- {
70
- name: "Ice",
71
- prefix: "ice",
72
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
73
- vibrant: ["v100", "v200", "v300", "v400"],
74
- },
75
- {
76
- name: "Cyan",
77
- prefix: "cyan",
78
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
79
- vibrant: ["v100", "v200", "v300", "v400"],
80
- },
81
- {
82
- name: "Teal",
83
- prefix: "teal",
84
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
85
- vibrant: ["v100", "v200", "v300", "v400"],
86
- },
87
- {
88
- name: "Green",
89
- prefix: "green",
90
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
91
- vibrant: ["v100", "v200", "v300", "v400"],
92
- },
93
- {
94
- name: "Sage",
95
- prefix: "sage",
96
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
97
- vibrant: ["v100", "v200", "v300", "v400"],
98
- },
99
- {
100
- name: "Lime",
101
- prefix: "lime",
102
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
103
- vibrant: ["v100", "v200", "v300", "v400"],
104
- },
105
- {
106
- name: "Yellow",
107
- prefix: "yellow",
108
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
109
- vibrant: ["v100", "v200", "v300", "v400"],
110
- },
111
- {
112
- name: "Amber",
113
- prefix: "amber",
114
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
115
- vibrant: ["v100", "v200", "v300", "v400"],
116
- },
117
- {
118
- name: "Orange",
119
- prefix: "orange",
120
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
121
- vibrant: ["v100", "v200", "v300", "v400"],
122
- },
123
- {
124
- name: "Ember",
125
- prefix: "ember",
126
- shades: [50, 100, 200, 300, 400, 500, 600, 700, 800, 900],
127
- vibrant: ["v100", "v200", "v300", "v400"],
128
- },
129
- ];
130
-
131
- // Tailwind needs static class names - generate lookup maps
132
- const bgClasses: Record<string, string> = {
133
- // Neutrals
134
- "gray-50": "bg-gray-50",
135
- "gray-100": "bg-gray-100",
136
- "gray-200": "bg-gray-200",
137
- "gray-300": "bg-gray-300",
138
- "gray-400": "bg-gray-400",
139
- "gray-500": "bg-gray-500",
140
- "gray-600": "bg-gray-600",
141
- "gray-700": "bg-gray-700",
142
- "gray-800": "bg-gray-800",
143
- "gray-900": "bg-gray-900",
144
- "gray-1000": "bg-gray-1000",
145
- "gray-1100": "bg-gray-1100",
146
- "gray-1200": "bg-gray-1200",
147
- "brown-50": "bg-brown-50",
148
- "brown-100": "bg-brown-100",
149
- "brown-200": "bg-brown-200",
150
- "brown-300": "bg-brown-300",
151
- "brown-400": "bg-brown-400",
152
- "brown-500": "bg-brown-500",
153
- "brown-600": "bg-brown-600",
154
- "brown-700": "bg-brown-700",
155
- "brown-800": "bg-brown-800",
156
- "brown-900": "bg-brown-900",
157
- "brown-1000": "bg-brown-1000",
158
- "brown-1100": "bg-brown-1100",
159
- "brown-1200": "bg-brown-1200",
160
- "steel-50": "bg-steel-50",
161
- "steel-100": "bg-steel-100",
162
- "steel-200": "bg-steel-200",
163
- "steel-300": "bg-steel-300",
164
- "steel-400": "bg-steel-400",
165
- "steel-500": "bg-steel-500",
166
- "steel-600": "bg-steel-600",
167
- "steel-700": "bg-steel-700",
168
- "steel-800": "bg-steel-800",
169
- "steel-900": "bg-steel-900",
170
- "steel-1000": "bg-steel-1000",
171
- "steel-1100": "bg-steel-1100",
172
- "steel-1200": "bg-steel-1200",
173
- // Colors
174
- "red-50": "bg-red-50",
175
- "red-100": "bg-red-100",
176
- "red-200": "bg-red-200",
177
- "red-300": "bg-red-300",
178
- "red-400": "bg-red-400",
179
- "red-500": "bg-red-500",
180
- "red-600": "bg-red-600",
181
- "red-700": "bg-red-700",
182
- "red-800": "bg-red-800",
183
- "red-900": "bg-red-900",
184
- "red-v100": "bg-red-v100",
185
- "red-v200": "bg-red-v200",
186
- "red-v300": "bg-red-v300",
187
- "red-v400": "bg-red-v400",
188
- "pink-50": "bg-pink-50",
189
- "pink-100": "bg-pink-100",
190
- "pink-200": "bg-pink-200",
191
- "pink-300": "bg-pink-300",
192
- "pink-400": "bg-pink-400",
193
- "pink-500": "bg-pink-500",
194
- "pink-600": "bg-pink-600",
195
- "pink-700": "bg-pink-700",
196
- "pink-800": "bg-pink-800",
197
- "pink-900": "bg-pink-900",
198
- "pink-v100": "bg-pink-v100",
199
- "pink-v200": "bg-pink-v200",
200
- "pink-v300": "bg-pink-v300",
201
- "pink-v400": "bg-pink-v400",
202
- "purple-50": "bg-purple-50",
203
- "purple-100": "bg-purple-100",
204
- "purple-200": "bg-purple-200",
205
- "purple-300": "bg-purple-300",
206
- "purple-400": "bg-purple-400",
207
- "purple-500": "bg-purple-500",
208
- "purple-600": "bg-purple-600",
209
- "purple-700": "bg-purple-700",
210
- "purple-800": "bg-purple-800",
211
- "purple-900": "bg-purple-900",
212
- "purple-v100": "bg-purple-v100",
213
- "purple-v200": "bg-purple-v200",
214
- "purple-v300": "bg-purple-v300",
215
- "purple-v400": "bg-purple-v400",
216
- "iris-50": "bg-iris-50",
217
- "iris-100": "bg-iris-100",
218
- "iris-200": "bg-iris-200",
219
- "iris-300": "bg-iris-300",
220
- "iris-400": "bg-iris-400",
221
- "iris-500": "bg-iris-500",
222
- "iris-600": "bg-iris-600",
223
- "iris-700": "bg-iris-700",
224
- "iris-800": "bg-iris-800",
225
- "iris-900": "bg-iris-900",
226
- "iris-v100": "bg-iris-v100",
227
- "iris-v200": "bg-iris-v200",
228
- "iris-v300": "bg-iris-v300",
229
- "iris-v400": "bg-iris-v400",
230
- "indigo-50": "bg-indigo-50",
231
- "indigo-100": "bg-indigo-100",
232
- "indigo-200": "bg-indigo-200",
233
- "indigo-300": "bg-indigo-300",
234
- "indigo-400": "bg-indigo-400",
235
- "indigo-500": "bg-indigo-500",
236
- "indigo-600": "bg-indigo-600",
237
- "indigo-700": "bg-indigo-700",
238
- "indigo-800": "bg-indigo-800",
239
- "indigo-900": "bg-indigo-900",
240
- "indigo-v100": "bg-indigo-v100",
241
- "indigo-v200": "bg-indigo-v200",
242
- "indigo-v300": "bg-indigo-v300",
243
- "indigo-v400": "bg-indigo-v400",
244
- "blue-50": "bg-blue-50",
245
- "blue-100": "bg-blue-100",
246
- "blue-200": "bg-blue-200",
247
- "blue-300": "bg-blue-300",
248
- "blue-400": "bg-blue-400",
249
- "blue-500": "bg-blue-500",
250
- "blue-600": "bg-blue-600",
251
- "blue-700": "bg-blue-700",
252
- "blue-800": "bg-blue-800",
253
- "blue-900": "bg-blue-900",
254
- "blue-v100": "bg-blue-v100",
255
- "blue-v200": "bg-blue-v200",
256
- "blue-v300": "bg-blue-v300",
257
- "blue-v400": "bg-blue-v400",
258
- "ice-50": "bg-ice-50",
259
- "ice-100": "bg-ice-100",
260
- "ice-200": "bg-ice-200",
261
- "ice-300": "bg-ice-300",
262
- "ice-400": "bg-ice-400",
263
- "ice-500": "bg-ice-500",
264
- "ice-600": "bg-ice-600",
265
- "ice-700": "bg-ice-700",
266
- "ice-800": "bg-ice-800",
267
- "ice-900": "bg-ice-900",
268
- "ice-v100": "bg-ice-v100",
269
- "ice-v200": "bg-ice-v200",
270
- "ice-v300": "bg-ice-v300",
271
- "ice-v400": "bg-ice-v400",
272
- "cyan-50": "bg-cyan-50",
273
- "cyan-100": "bg-cyan-100",
274
- "cyan-200": "bg-cyan-200",
275
- "cyan-300": "bg-cyan-300",
276
- "cyan-400": "bg-cyan-400",
277
- "cyan-500": "bg-cyan-500",
278
- "cyan-600": "bg-cyan-600",
279
- "cyan-700": "bg-cyan-700",
280
- "cyan-800": "bg-cyan-800",
281
- "cyan-900": "bg-cyan-900",
282
- "cyan-v100": "bg-cyan-v100",
283
- "cyan-v200": "bg-cyan-v200",
284
- "cyan-v300": "bg-cyan-v300",
285
- "cyan-v400": "bg-cyan-v400",
286
- "teal-50": "bg-teal-50",
287
- "teal-100": "bg-teal-100",
288
- "teal-200": "bg-teal-200",
289
- "teal-300": "bg-teal-300",
290
- "teal-400": "bg-teal-400",
291
- "teal-500": "bg-teal-500",
292
- "teal-600": "bg-teal-600",
293
- "teal-700": "bg-teal-700",
294
- "teal-800": "bg-teal-800",
295
- "teal-900": "bg-teal-900",
296
- "teal-v100": "bg-teal-v100",
297
- "teal-v200": "bg-teal-v200",
298
- "teal-v300": "bg-teal-v300",
299
- "teal-v400": "bg-teal-v400",
300
- "green-50": "bg-green-50",
301
- "green-100": "bg-green-100",
302
- "green-200": "bg-green-200",
303
- "green-300": "bg-green-300",
304
- "green-400": "bg-green-400",
305
- "green-500": "bg-green-500",
306
- "green-600": "bg-green-600",
307
- "green-700": "bg-green-700",
308
- "green-800": "bg-green-800",
309
- "green-900": "bg-green-900",
310
- "green-v100": "bg-green-v100",
311
- "green-v200": "bg-green-v200",
312
- "green-v300": "bg-green-v300",
313
- "green-v400": "bg-green-v400",
314
- "sage-50": "bg-sage-50",
315
- "sage-100": "bg-sage-100",
316
- "sage-200": "bg-sage-200",
317
- "sage-300": "bg-sage-300",
318
- "sage-400": "bg-sage-400",
319
- "sage-500": "bg-sage-500",
320
- "sage-600": "bg-sage-600",
321
- "sage-700": "bg-sage-700",
322
- "sage-800": "bg-sage-800",
323
- "sage-900": "bg-sage-900",
324
- "sage-v100": "bg-sage-v100",
325
- "sage-v200": "bg-sage-v200",
326
- "sage-v300": "bg-sage-v300",
327
- "sage-v400": "bg-sage-v400",
328
- "lime-50": "bg-lime-50",
329
- "lime-100": "bg-lime-100",
330
- "lime-200": "bg-lime-200",
331
- "lime-300": "bg-lime-300",
332
- "lime-400": "bg-lime-400",
333
- "lime-500": "bg-lime-500",
334
- "lime-600": "bg-lime-600",
335
- "lime-700": "bg-lime-700",
336
- "lime-800": "bg-lime-800",
337
- "lime-900": "bg-lime-900",
338
- "lime-v100": "bg-lime-v100",
339
- "lime-v200": "bg-lime-v200",
340
- "lime-v300": "bg-lime-v300",
341
- "lime-v400": "bg-lime-v400",
342
- "yellow-50": "bg-yellow-50",
343
- "yellow-100": "bg-yellow-100",
344
- "yellow-200": "bg-yellow-200",
345
- "yellow-300": "bg-yellow-300",
346
- "yellow-400": "bg-yellow-400",
347
- "yellow-500": "bg-yellow-500",
348
- "yellow-600": "bg-yellow-600",
349
- "yellow-700": "bg-yellow-700",
350
- "yellow-800": "bg-yellow-800",
351
- "yellow-900": "bg-yellow-900",
352
- "yellow-v100": "bg-yellow-v100",
353
- "yellow-v200": "bg-yellow-v200",
354
- "yellow-v300": "bg-yellow-v300",
355
- "yellow-v400": "bg-yellow-v400",
356
- "amber-50": "bg-amber-50",
357
- "amber-100": "bg-amber-100",
358
- "amber-200": "bg-amber-200",
359
- "amber-300": "bg-amber-300",
360
- "amber-400": "bg-amber-400",
361
- "amber-500": "bg-amber-500",
362
- "amber-600": "bg-amber-600",
363
- "amber-700": "bg-amber-700",
364
- "amber-800": "bg-amber-800",
365
- "amber-900": "bg-amber-900",
366
- "amber-v100": "bg-amber-v100",
367
- "amber-v200": "bg-amber-v200",
368
- "amber-v300": "bg-amber-v300",
369
- "amber-v400": "bg-amber-v400",
370
- "orange-50": "bg-orange-50",
371
- "orange-100": "bg-orange-100",
372
- "orange-200": "bg-orange-200",
373
- "orange-300": "bg-orange-300",
374
- "orange-400": "bg-orange-400",
375
- "orange-500": "bg-orange-500",
376
- "orange-600": "bg-orange-600",
377
- "orange-700": "bg-orange-700",
378
- "orange-800": "bg-orange-800",
379
- "orange-900": "bg-orange-900",
380
- "orange-v100": "bg-orange-v100",
381
- "orange-v200": "bg-orange-v200",
382
- "orange-v300": "bg-orange-v300",
383
- "orange-v400": "bg-orange-v400",
384
- "ember-50": "bg-ember-50",
385
- "ember-100": "bg-ember-100",
386
- "ember-200": "bg-ember-200",
387
- "ember-300": "bg-ember-300",
388
- "ember-400": "bg-ember-400",
389
- "ember-500": "bg-ember-500",
390
- "ember-600": "bg-ember-600",
391
- "ember-700": "bg-ember-700",
392
- "ember-800": "bg-ember-800",
393
- "ember-900": "bg-ember-900",
394
- "ember-v100": "bg-ember-v100",
395
- "ember-v200": "bg-ember-v200",
396
- "ember-v300": "bg-ember-v300",
397
- "ember-v400": "bg-ember-v400",
398
- // Alpha
399
- "alpha-black-5": "bg-alpha-black-5",
400
- "alpha-black-10": "bg-alpha-black-10",
401
- "alpha-black-20": "bg-alpha-black-20",
402
- "alpha-black-30": "bg-alpha-black-30",
403
- "alpha-black-40": "bg-alpha-black-40",
404
- "alpha-black-50": "bg-alpha-black-50",
405
- "alpha-black-60": "bg-alpha-black-60",
406
- "alpha-black-70": "bg-alpha-black-70",
407
- "alpha-black-80": "bg-alpha-black-80",
408
- "alpha-black-90": "bg-alpha-black-90",
409
- "alpha-black-95": "bg-alpha-black-95",
410
- "alpha-white-5": "bg-alpha-white-5",
411
- "alpha-white-10": "bg-alpha-white-10",
412
- "alpha-white-20": "bg-alpha-white-20",
413
- "alpha-white-30": "bg-alpha-white-30",
414
- "alpha-white-40": "bg-alpha-white-40",
415
- "alpha-white-50": "bg-alpha-white-50",
416
- "alpha-white-60": "bg-alpha-white-60",
417
- "alpha-white-70": "bg-alpha-white-70",
418
- "alpha-white-80": "bg-alpha-white-80",
419
- "alpha-white-90": "bg-alpha-white-90",
420
- "alpha-white-95": "bg-alpha-white-95",
421
- };
422
-
423
- const ColorScaleRow: React.FC<{ scale: ColorScale; showVibrant?: boolean }> = ({
424
- scale,
425
- showVibrant = true,
426
- }) => {
427
- const allShades =
428
- showVibrant && scale.vibrant
429
- ? [...scale.shades, ...scale.vibrant]
430
- : scale.shades;
431
- return (
432
- <div className="grid grid-cols-[72px_1fr] gap-16 items-center">
433
- <span className="text-14 font-medium text-gray-700">{scale.name}</span>
434
- <div className="grid grid-flow-col auto-cols-fr gap-2">
435
- {allShades.map((shade) => {
436
- const key = `${scale.prefix}-${shade}`;
437
- return (
438
- <div
439
- key={key}
440
- className={`h-32 rounded-4 ${bgClasses[key] || ""}`}
441
- title={`${scale.prefix}-${shade}`}
442
- />
443
- );
444
- })}
445
- </div>
446
- </div>
447
- );
448
- };
449
-
450
- export const ColorTokens: React.FC = () => (
451
- <div className="space-y-48">
452
- {/* Neutrals */}
453
- <section>
454
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
455
- Neutrals
456
- </h3>
457
- <div className="bg-white rounded-8 border border-gray-200 p-24 space-y-12">
458
- {neutralScales.map((scale) => (
459
- <ColorScaleRow key={scale.prefix} scale={scale} showVibrant={false} />
460
- ))}
461
- </div>
462
- </section>
463
-
464
- {/* Chromatic Colors */}
465
- <section>
466
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
467
- Colors
468
- </h3>
469
- <div className="bg-white rounded-8 border border-gray-200 p-24 space-y-12">
470
- {colorScales.map((scale) => (
471
- <ColorScaleRow key={scale.prefix} scale={scale} />
472
- ))}
473
- </div>
474
- </section>
475
-
476
- {/* Alpha Colors */}
477
- <section>
478
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
479
- Alpha
480
- </h3>
481
- <div className="grid grid-cols-2 gap-24">
482
- <div className="bg-white rounded-8 border border-gray-200 p-24">
483
- <div className="text-12 font-medium text-gray-600 mb-16">
484
- Black (on light)
485
- </div>
486
- <div className="grid grid-flow-col auto-cols-fr gap-2 bg-gray-100 p-16 rounded-8">
487
- {[5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95].map((alpha) => (
488
- <div
489
- key={`alpha-black-${alpha}`}
490
- className={`h-32 rounded-4 ${bgClasses[`alpha-black-${alpha}`] || ""}`}
491
- title={`alpha-black-${alpha}`}
492
- />
493
- ))}
494
- </div>
495
- </div>
496
- <div className="bg-white rounded-8 border border-gray-200 p-24">
497
- <div className="text-12 font-medium text-gray-600 mb-16">
498
- White (on dark)
499
- </div>
500
- <div className="grid grid-flow-col auto-cols-fr gap-2 bg-gray-900 p-16 rounded-8">
501
- {[5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95].map((alpha) => (
502
- <div
503
- key={`alpha-white-${alpha}`}
504
- className={`h-32 rounded-4 ${bgClasses[`alpha-white-${alpha}`] || ""}`}
505
- title={`alpha-white-${alpha}`}
506
- />
507
- ))}
508
- </div>
509
- </div>
510
- </div>
511
- </section>
512
- </div>
513
- );
514
-
515
- // =============================================================================
516
- // Spacing Tokens
517
- // =============================================================================
518
-
519
- const spacingScale = [
520
- 2, 4, 6, 8, 10, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 96, 112,
521
- 128, 144, 160, 176, 192, 208, 224, 240, 256, 288, 320, 352, 384, 400,
522
- ];
523
-
524
- const widthClasses: Record<number, string> = {
525
- 2: "w-2",
526
- 4: "w-4",
527
- 6: "w-6",
528
- 8: "w-8",
529
- 10: "w-10",
530
- 12: "w-12",
531
- 16: "w-16",
532
- 20: "w-20",
533
- 24: "w-24",
534
- 28: "w-28",
535
- 32: "w-32",
536
- 36: "w-36",
537
- 40: "w-40",
538
- 48: "w-48",
539
- 56: "w-56",
540
- 64: "w-64",
541
- 72: "w-72",
542
- 80: "w-80",
543
- 96: "w-96",
544
- 112: "w-112",
545
- 128: "w-128",
546
- 144: "w-144",
547
- 160: "w-160",
548
- 176: "w-176",
549
- 192: "w-192",
550
- 208: "w-208",
551
- 224: "w-224",
552
- 240: "w-240",
553
- 256: "w-256",
554
- 288: "w-288",
555
- 320: "w-320",
556
- 352: "w-352",
557
- 384: "w-384",
558
- 400: "w-400",
559
- };
560
-
561
- export const SpacingTokens: React.FC = () => (
562
- <div className="bg-white rounded-8 border border-gray-200 overflow-hidden">
563
- <div className="grid grid-cols-[64px_1fr_100px] gap-16 px-24 py-12 bg-gray-50 border-b border-gray-200 text-12 font-medium text-gray-500 uppercase">
564
- <div>Value</div>
565
- <div>Preview</div>
566
- <div>Token</div>
567
- </div>
568
- <div className="divide-y divide-gray-100">
569
- {spacingScale.map((size) => (
570
- <div
571
- key={size}
572
- className="grid grid-cols-[64px_1fr_100px] gap-16 px-24 py-8 items-center"
573
- >
574
- <div className="text-14 font-mono text-gray-600">{size}px</div>
575
- <div className="flex items-center">
576
- <div
577
- className={`h-12 bg-indigo-500 rounded-2 ${widthClasses[size]} max-w-full`}
578
- />
579
- </div>
580
- <div className="text-12 font-mono text-gray-400">spacing-{size}</div>
581
- </div>
582
- ))}
583
- </div>
584
- </div>
585
- );
586
-
587
- // =============================================================================
588
- // Typography Tokens
589
- // =============================================================================
590
-
591
- type TypographyToken = {
592
- name: string;
593
- class: string;
594
- sizes: string;
595
- };
596
-
597
- const headingTokens: TypographyToken[] = [
598
- {
599
- name: "Display",
600
- class: "typography-h1-display",
601
- sizes: "64px → 96px → 128px",
602
- },
603
- { name: "H1", class: "typography-h1", sizes: "48px → 72px → 96px" },
604
- { name: "H2", class: "typography-h2", sizes: "48px → 64px → 72px" },
605
- { name: "H3", class: "typography-h3", sizes: "32px → 48px → 64px" },
606
- { name: "H4", class: "typography-h4", sizes: "24px → 32px → 48px" },
607
- { name: "H5", class: "typography-h5", sizes: "21px → 24px → 32px" },
608
- ];
609
-
610
- const bodyTokens: TypographyToken[] = [
611
- {
612
- name: "Body Large",
613
- class: "typography-body-large",
614
- sizes: "16px → 18px → 21px",
615
- },
616
- {
617
- name: "Body Medium",
618
- class: "typography-body-medium",
619
- sizes: "14px → 16px → 18px",
620
- },
621
- {
622
- name: "Body Small",
623
- class: "typography-body-small",
624
- sizes: "12px → 14px → 14px",
625
- },
626
- ];
627
-
628
- const uiTokens: TypographyToken[] = [
629
- { name: "Overline", class: "typography-overline", sizes: "14px" },
630
- { name: "Caption", class: "typography-caption", sizes: "11px" },
631
- { name: "Button Large", class: "typography-ui-button-large", sizes: "18px" },
632
- {
633
- name: "Button Medium",
634
- class: "typography-ui-button-medium",
635
- sizes: "16px",
636
- },
637
- { name: "Button Small", class: "typography-ui-button-small", sizes: "14px" },
638
- { name: "Label", class: "typography-ui-label", sizes: "14px" },
639
- ];
640
-
641
- const TypographyRow: React.FC<{ token: TypographyToken; sample?: string }> = ({
642
- token,
643
- sample,
644
- }) => {
645
- const isHeading = token.class.includes("h1") || token.class.includes("h2");
646
- const text = sample || (isHeading ? "Aa" : "The quick brown fox");
647
-
648
- return (
649
- <div className="py-12 border-b border-gray-100 last:border-0">
650
- <div className="flex items-baseline justify-between gap-16 mb-4">
651
- <code className="text-12 font-mono text-indigo-600 bg-indigo-50 px-8 py-2 rounded-4">
652
- {token.class}
653
- </code>
654
- <span className="text-12 text-gray-400">{token.sizes}</span>
655
- </div>
656
- <p className={token.class}>{text}</p>
657
- </div>
658
- );
659
- };
660
-
661
- export const TypographyTokens: React.FC = () => (
662
- <div className="space-y-32">
663
- <section>
664
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
665
- Headings (Responsive)
666
- </h3>
667
- <div className="bg-white rounded-8 border border-gray-200 p-24">
668
- {headingTokens.map((token) => (
669
- <TypographyRow key={token.class} token={token} />
670
- ))}
671
- </div>
672
- </section>
673
-
674
- <section>
675
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
676
- Body (Responsive)
677
- </h3>
678
- <div className="bg-white rounded-8 border border-gray-200 p-24">
679
- {bodyTokens.map((token) => (
680
- <TypographyRow key={token.class} token={token} />
681
- ))}
682
- </div>
683
- </section>
684
-
685
- <section>
686
- <h3 className="text-12 font-semibold text-gray-500 uppercase tracking-wider mb-16">
687
- UI Elements
688
- </h3>
689
- <div className="bg-white rounded-8 border border-gray-200 p-24">
690
- {uiTokens.map((token) => (
691
- <TypographyRow key={token.class} token={token} />
692
- ))}
693
- </div>
694
- </section>
695
- </div>
696
- );
697
-
698
- // =============================================================================
699
- // Responsive Typography Demo
700
- // =============================================================================
701
-
702
- export const ResponsiveTypography: React.FC = () => (
703
- <div className="space-y-32">
704
- <div className="bg-indigo-50 border border-indigo-100 rounded-8 p-16">
705
- <p className="text-14 text-indigo-700">
706
- <strong>Responsive Typography</strong> — Resize viewport to see
707
- typography scale. Mobile (&lt;768px) → Tablet → Desktop (&gt;1440px)
708
- </p>
709
- </div>
710
-
711
- <section className="space-y-16">
712
- <div className="border-l-4 border-indigo-500 pl-16">
713
- <code className="text-12 font-mono text-gray-500">
714
- typography-h1-display
715
- </code>
716
- <h1 className="typography-h1-display">Display</h1>
717
- </div>
718
- <div className="border-l-4 border-indigo-400 pl-16">
719
- <code className="text-12 font-mono text-gray-500">typography-h1</code>
720
- <h1 className="typography-h1">Heading 1</h1>
721
- </div>
722
- <div className="border-l-4 border-indigo-300 pl-16">
723
- <code className="text-12 font-mono text-gray-500">typography-h2</code>
724
- <h2 className="typography-h2">Heading 2</h2>
725
- </div>
726
- <div className="border-l-4 border-indigo-200 pl-16">
727
- <code className="text-12 font-mono text-gray-500">typography-h3</code>
728
- <h3 className="typography-h3">Heading 3</h3>
729
- </div>
730
- </section>
731
-
732
- <section className="bg-gray-50 rounded-8 p-16 space-y-12">
733
- <div>
734
- <code className="text-12 font-mono text-gray-500">
735
- typography-body-large
736
- </code>
737
- <p className="typography-body-large">
738
- Large body text scales from 16px to 21px.
739
- </p>
740
- </div>
741
- <div>
742
- <code className="text-12 font-mono text-gray-500">
743
- typography-body-medium
744
- </code>
745
- <p className="typography-body-medium">
746
- Medium body text scales from 14px to 18px.
747
- </p>
748
- </div>
749
- <div>
750
- <code className="text-12 font-mono text-gray-500">
751
- typography-body-small
752
- </code>
753
- <p className="typography-body-small">
754
- Small body text scales from 12px to 14px.
755
- </p>
756
- </div>
757
- </section>
758
- </div>
759
- );
760
-
761
- // =============================================================================
762
- // Main Export
763
- // =============================================================================
764
-
765
- export const TokenShowcase: React.FC = () => (
766
- <div className="p-32 bg-gray-50 min-h-screen">
767
- <div className="max-w-6xl mx-auto">
768
- <header className="mb-32">
769
- <h1 className="text-24 font-bold text-gray-900">Design Tokens</h1>
770
- <p className="text-gray-600">
771
- Primitive color palette from the design system
772
- </p>
773
- </header>
774
- <ColorTokens />
775
- </div>
776
- </div>
777
- );