@nationaldesignstudio/react 0.0.10 → 0.0.12

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 +13930 -6368
  24. package/package.json +14 -24
  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
@@ -0,0 +1,2405 @@
1
+ # Component Registry
2
+
3
+ > Auto-generated component metadata for AI/agent consumption.
4
+ > Generated: 2026-01-08T20:44:48.781Z
5
+
6
+ ---
7
+
8
+ ## Design Tokens & Styling Guide
9
+
10
+ > Tokens loaded via `@nds-design-system/react/tokens.css`. The `@theme` directive in Tailwind v4 registers CSS variables as utility classes.
11
+
12
+ ### Colors
13
+
14
+ Colors are registered directly as utilities (no `color-` prefix needed).
15
+
16
+ ```tsx
17
+ // Background colors
18
+ className="bg-indigo-900"
19
+ className="bg-gray-100"
20
+
21
+ // Text colors
22
+ className="text-gray-800"
23
+ className="text-indigo-900"
24
+
25
+ // Border colors
26
+ className="border-indigo-600"
27
+ className="border-b-gray-200"
28
+
29
+ // Alpha colors for overlays
30
+ className="bg-alpha-black-50"
31
+ className="text-alpha-white-90"
32
+ ```
33
+
34
+ **Available palettes:** `alpha-black`, `alpha-white`, `amber`, `black`, `blue`, `brown`, `cyan`, `ember`, `gray`, `green`, `ice`, `indigo`, `iris`, `lime`, `orange`, `pink`, `purple`, `red`, `sage`, `steel`, `teal`, `white`, `yellow`
35
+
36
+ ### Spacing
37
+
38
+ Spacing tokens use the `spacing-` prefix with utility classes.
39
+
40
+ ```tsx
41
+ // Padding - use single p- when all sides are the same
42
+ className="p-spacing-32" // 32px all sides (PREFERRED)
43
+ className="px-spacing-24" // 24px horizontal
44
+ className="py-spacing-64" // 64px vertical
45
+
46
+ // Gap
47
+ className="gap-spacing-24" // 24px gap
48
+
49
+ // Margin
50
+ className="m-spacing-16" // 16px margin
51
+
52
+ // Width/Height
53
+ className="w-spacing-48" // 48px width
54
+ className="h-spacing-64" // 64px height
55
+ ```
56
+
57
+ **Available sizes:** 0, 2, 4, 6, 8, 10, 11, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 288, 320, 352, 384, 400
58
+
59
+ ### Typography
60
+
61
+ Use pre-defined typography classes for consistent styling. Uses `typography-` prefix (not `text-`) to avoid conflicts with color utilities.
62
+
63
+ **Pattern:** `typography-{namespace}-{category}-{size}[-weight]`
64
+
65
+ **Namespaces:**
66
+ - `brand-small` - Mobile breakpoints
67
+ - `brand-medium` - Tablet breakpoints (most common)
68
+ - `brand-large` - Desktop breakpoints
69
+
70
+ ```tsx
71
+ // Brand typography (medium breakpoint - most common)
72
+ className="typography-brand-medium-display-small"
73
+ className="typography-brand-medium-headline-large"
74
+ className="typography-brand-medium-body-medium"
75
+ className="typography-brand-medium-caption-small"
76
+
77
+ // With weight variants
78
+ className="typography-brand-medium-headline-large-regular"
79
+ className="typography-brand-medium-headline-large-semibold"
80
+ ```
81
+
82
+ **Categories:**
83
+
84
+
85
+ **Individual typography tokens** (for custom combinations):
86
+
87
+ ```tsx
88
+ className="text-72" // Font size 72px
89
+ className="leading-72" // Line height
90
+ className="tracking-72" // Letter spacing
91
+ className="font-pp-neue-montreal"// Font family
92
+ className="font-medium" // Font weight 500
93
+ className="font-semibold" // Font weight 600
94
+ ```
95
+
96
+ ### Figma to Tailwind Mapping
97
+
98
+ | Figma CSS Variable | Tailwind Equivalent |
99
+ |-------------------|---------------------|
100
+ | `var(--spacing/24,24px)` | `p-spacing-24` or `gap-spacing-24` |
101
+ | `var(--font-size/64,64px)` | `text-64` |
102
+ | `var(--color/indigo/900,#...)` | `bg-indigo-900` or `text-indigo-900` |
103
+ | `var(--global/line-height/16,24px)` | `leading-16` |
104
+
105
+ **Figma Auto Layout to Flexbox:**
106
+
107
+ | Figma Property | Tailwind Class |
108
+ |----------------|----------------|
109
+ | Direction: Vertical | `flex flex-col` |
110
+ | Direction: Horizontal | `flex` |
111
+ | Gap | `gap-spacing-{N}` |
112
+ | Align items: Center | `items-center` |
113
+ | Justify: Space between | `justify-between` |
114
+
115
+ ### Debugging Tips
116
+
117
+ 1. **Colors not applying?** Use direct names like `bg-indigo-900` (no `color-` prefix)
118
+ 2. **Spacing not working?** Use `spacing-` prefix: `gap-spacing-24` (not `gap-24`)
119
+ 3. **Typography off?** Use composite classes `typography-brand-medium-headline-large`
120
+ 4. **Non-token values?** Use arbitrary values: `gap-[10px]`, `py-[18px]`
121
+ 5. **Width/Height with tokens?** Use `h-spacing-{size}` and `w-spacing-{size}`
122
+
123
+ ---
124
+
125
+ ## Action
126
+
127
+ ### Button
128
+
129
+ **Import:** `import { Button } from "@nationaldesignstudio/react";`
130
+
131
+ **Category:** Action
132
+
133
+ **Props:**
134
+
135
+ - `theme`: ButtonTheme
136
+ Theme overrides for button styling via CSS custom properties
137
+
138
+ **Examples:**
139
+
140
+ ```tsx
141
+ <Button {...args}>Button</Button>
142
+ ```
143
+
144
+ ```tsx
145
+ <Button variant="primary">Primary</Button>
146
+ ```
147
+
148
+ ```tsx
149
+ <Button variant="primaryOutline">Primary Outline</Button>
150
+ ```
151
+
152
+ ```tsx
153
+ <Button variant="secondary">Secondary</Button>
154
+ ```
155
+
156
+ ```tsx
157
+ <Button variant="charcoal">Charcoal</Button>
158
+ ```
159
+
160
+ ```tsx
161
+ <Button variant="charcoalOutline">Charcoal Outline</Button>
162
+ ```
163
+
164
+ ```tsx
165
+ <Button variant="charcoalOutlineQuiet">Charcoal Outline Quiet</Button>
166
+ ```
167
+
168
+ ```tsx
169
+ <Button variant="ivory">Ivory</Button>
170
+ ```
171
+
172
+ ```tsx
173
+ <Button variant="ivoryOutline">Ivory Outline</Button>
174
+ ```
175
+
176
+ ```tsx
177
+ <Button variant="ivoryOutlineQuiet">Ivory Outline Quiet</Button>
178
+ ```
179
+
180
+ ```tsx
181
+ <Button variant="gray">Gray</Button>
182
+ ```
183
+
184
+ ```tsx
185
+ <Button size="sm">Small</Button>
186
+ ```
187
+
188
+ ```tsx
189
+ <Button size="default">Medium</Button>
190
+ ```
191
+
192
+ ```tsx
193
+ <Button size="lg">Large</Button>
194
+ ```
195
+
196
+ ```tsx
197
+ <Button disabled>Disabled</Button>
198
+ ```
199
+
200
+
201
+ ## Display
202
+
203
+ ### Card
204
+
205
+ **Import:** `import { Card } from "@nationaldesignstudio/react";`
206
+
207
+ **Category:** Display
208
+
209
+ **Examples:**
210
+
211
+ ```tsx
212
+ <div className="w-[418px]">
213
+ <Card>
214
+ <CardImage />
215
+ <CardContent>
216
+ <CardBody>
217
+ <CardEyebrow>Optional Eyebrow</CardEyebrow>
218
+ <div className="flex flex-col gap-[6px]">
219
+ <CardTitle>Card Title</CardTitle>
220
+ <CardDescription>
221
+ Use cards when citizens need to scan items at a glance, either
222
+ to jump to a more detailed page or absorb short information.
223
+ </CardDescription>
224
+ </div>
225
+ </CardBody>
226
+ <CardActions>
227
+ <Button size="default" variant="charcoal">
228
+ Primary
229
+ </Button>
230
+ <Button size="default" variant="charcoalOutline">
231
+ Secondary
232
+ </Button>
233
+ </CardActions>
234
+ </CardContent>
235
+ </Card>
236
+ </div>
237
+ ```
238
+
239
+ ```tsx
240
+ <div className="w-[418px]">
241
+ <Card layout="vertical">
242
+ <CardImage />
243
+ <CardContent>
244
+ <CardBody>
245
+ <CardEyebrow>Optional Eyebrow</CardEyebrow>
246
+ <div className="flex flex-col gap-[6px]">
247
+ <CardTitle>Card Title</CardTitle>
248
+ <CardDescription>
249
+ Use cards when citizens need to scan items at a glance, either
250
+ to jump to a more detailed page or absorb short information.
251
+ </CardDescription>
252
+ </div>
253
+ </CardBody>
254
+ <CardActions>
255
+ <Button size="default" variant="charcoal">
256
+ Primary
257
+ </Button>
258
+ <Button size="default" variant="charcoalOutline">
259
+ Secondary
260
+ </Button>
261
+ </CardActions>
262
+ </CardContent>
263
+ </Card>
264
+ </div>
265
+ ```
266
+
267
+ ```tsx
268
+ <div className="w-[700px]">
269
+ <Card layout="horizontal">
270
+ <CardImage />
271
+ <CardContent>
272
+ <CardBody>
273
+ <CardEyebrow>Eyebrow</CardEyebrow>
274
+ <div className="flex flex-col gap-[9px]">
275
+ <CardTitle>
276
+ Cards can support multi line headings easily.
277
+ </CardTitle>
278
+ <CardDescription>
279
+ Use cards when citizens need to scan items at a glance, either
280
+ to jump to a more detailed page or absorb short information.
281
+ </CardDescription>
282
+ </div>
283
+ </CardBody>
284
+ <CardActions>
285
+ <Button size="sm" variant="charcoal">
286
+ Primary
287
+ </Button>
288
+ <Button size="sm" variant="charcoalOutline">
289
+ Secondary
290
+ </Button>
291
+ </CardActions>
292
+ </CardContent>
293
+ </Card>
294
+ </div>
295
+ ```
296
+
297
+ ```tsx
298
+ <div className="w-[418px]">
299
+ <Card>
300
+ <CardContent>
301
+ <CardBody>
302
+ <CardEyebrow>Category</CardEyebrow>
303
+ <div className="flex flex-col gap-[6px]">
304
+ <CardTitle>Card Without Image</CardTitle>
305
+ <CardDescription>
306
+ Cards can be used without images for text-focused content.
307
+ </CardDescription>
308
+ </div>
309
+ </CardBody>
310
+ <CardActions>
311
+ <Button size="default" variant="charcoal">
312
+ Learn More
313
+ </Button>
314
+ </CardActions>
315
+ </CardContent>
316
+ </Card>
317
+ </div>
318
+ ```
319
+
320
+ ```tsx
321
+ <div className="w-[418px]">
322
+ <Card>
323
+ <CardImage />
324
+ <CardContent>
325
+ <CardBody>
326
+ <div className="flex flex-col gap-[6px]">
327
+ <CardTitle>Card Title</CardTitle>
328
+ <CardDescription>
329
+ The eyebrow is optional and can be omitted when not needed.
330
+ </CardDescription>
331
+ </div>
332
+ </CardBody>
333
+ <CardActions>
334
+ <Button size="default" variant="charcoal">
335
+ Primary
336
+ </Button>
337
+ </CardActions>
338
+ </CardContent>
339
+ </Card>
340
+ </div>
341
+ ```
342
+
343
+ ```tsx
344
+ <div className="w-[418px]">
345
+ <Card>
346
+ <CardImage />
347
+ <CardContent>
348
+ <CardBody>
349
+ <CardEyebrow>Information</CardEyebrow>
350
+ <div className="flex flex-col gap-[6px]">
351
+ <CardTitle>Informational Card</CardTitle>
352
+ <CardDescription>
353
+ Cards without actions can be used for purely informational
354
+ content that doesn't require user interaction.
355
+ </CardDescription>
356
+ </div>
357
+ </CardBody>
358
+ </CardContent>
359
+ </Card>
360
+ </div>
361
+ ```
362
+
363
+ ```tsx
364
+ <div className="w-[418px]">
365
+ <Card>
366
+ <CardContent>
367
+ <CardBody>
368
+ <CardTitle>Minimal Card</CardTitle>
369
+ <CardDescription>
370
+ A minimal card with just title and description.
371
+ </CardDescription>
372
+ </CardBody>
373
+ </CardContent>
374
+ </Card>
375
+ </div>
376
+ ```
377
+
378
+ ```tsx
379
+ <div className="grid max-w-[900px] grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
380
+ {[1, 2, 3].map((i) => (
381
+ <Card key={i}>
382
+ <CardImage />
383
+ <CardContent>
384
+ <CardBody>
385
+ <CardEyebrow>Category {i}</CardEyebrow>
386
+ <div className="flex flex-col gap-[6px]">
387
+ <CardTitle>Card Title {i}</CardTitle>
388
+ <CardDescription>
389
+ Brief description of the card content goes here.
390
+ </CardDescription>
391
+ </div>
392
+ </CardBody>
393
+ <CardActions>
394
+ <Button size="sm" variant="charcoal">
395
+ Action
396
+ </Button>
397
+ </CardActions>
398
+ </CardContent>
399
+ </Card>
400
+ ))}
401
+ </div>
402
+ ```
403
+
404
+ ```tsx
405
+ <div className="w-[418px]">
406
+ <Card {...args}>
407
+ <CardImage />
408
+ <CardContent>
409
+ <CardBody>
410
+ <CardEyebrow>Eyebrow</CardEyebrow>
411
+ <div className="flex flex-col gap-[6px]">
412
+ <CardTitle>Card Title</CardTitle>
413
+ <CardDescription>
414
+ Use cards when citizens need to scan items at a glance.
415
+ </CardDescription>
416
+ </div>
417
+ </CardBody>
418
+ <CardActions>
419
+ <Button size="default" variant="charcoal">
420
+ Primary
421
+ </Button>
422
+ <Button size="default" variant="charcoalOutline">
423
+ Secondary
424
+ </Button>
425
+ </CardActions>
426
+ </CardContent>
427
+ </Card>
428
+ </div>
429
+ ```
430
+
431
+
432
+ ### Hero
433
+
434
+ **Import:** `import { Hero } from "@nationaldesignstudio/react";`
435
+
436
+ **Category:** Display
437
+
438
+ **Props:**
439
+
440
+ - `title`: string (required)
441
+ The title text displayed in the hero
442
+ - `titleClassName`: string
443
+ Custom typography class for the title using primitive tokens.
444
+ - `background`: React.ReactNode | string
445
+ Background for the hero. Can be:
446
+ - `overlayOpacity`: number
447
+ Opacity of the overlay (0-1, default: 0)
448
+ - `overlayColor`: string
449
+ Color of the overlay (default: "black")
450
+ - `theme`: ComponentTheme
451
+ Theme overrides for component styling via CSS custom properties
452
+
453
+ **Examples:**
454
+
455
+ ```tsx
456
+ <Hero {...args} />
457
+ ```
458
+
459
+ ```tsx
460
+ <Hero variant="A1" title="Hero A1" />
461
+ ```
462
+
463
+ ```tsx
464
+ <Hero variant="A2" title="Hero A2" />
465
+ ```
466
+
467
+ ```tsx
468
+ <Hero variant="A3" title="Hero A3" />
469
+ ```
470
+
471
+ ```tsx
472
+ <Hero variant="A1" title="Color Background" background="#2563eb" />
473
+ ```
474
+
475
+ ```tsx
476
+ <Hero
477
+ variant="A1"
478
+ title="Image Background"
479
+ background={
480
+ <HeroBackground.Image
481
+ src="https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1920&q=80"
482
+ position="center"
483
+ alt="Earth from space"
484
+ />
485
+ }
486
+ overlayOpacity={0.4}
487
+ />
488
+ ```
489
+
490
+ ```tsx
491
+ <Hero
492
+ variant="A1"
493
+ title="Video Background"
494
+ background={
495
+ <HeroBackground.Video
496
+ src="https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"
497
+ poster="https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1920&q=80"
498
+ />
499
+ }
500
+ overlayOpacity={0.3}
501
+ />
502
+ ```
503
+
504
+ ```tsx
505
+ <Hero
506
+ variant="A1"
507
+ title="Stream Background"
508
+ background={
509
+ <HeroBackground.Stream
510
+ videoId="5d5bc37ffcf54c9b82e996823bffbb81"
511
+ muted
512
+ autoplay
513
+ loop
514
+ />
515
+ }
516
+ overlayOpacity={0.4}
517
+ />
518
+ ```
519
+
520
+ ```tsx
521
+ <Hero variant="A1" title="Hero A1" />
522
+ ```
523
+
524
+ ```tsx
525
+ <Hero variant="A1" title="Hero A1" />
526
+ ```
527
+
528
+ ```tsx
529
+ <Hero variant="A1" title="Hero A1" />
530
+ ```
531
+
532
+ ```tsx
533
+ <Hero variant="A2" title="Hero A2" />
534
+ ```
535
+
536
+ ```tsx
537
+ <Hero variant="A2" title="Hero A2" />
538
+ ```
539
+
540
+ ```tsx
541
+ <Hero variant="A2" title="Hero A2" />
542
+ ```
543
+
544
+ ```tsx
545
+ <Hero variant="A3" title="Hero A3" />
546
+ ```
547
+
548
+ ```tsx
549
+ <Hero variant="A3" title="Hero A3" />
550
+ ```
551
+
552
+ ```tsx
553
+ <Hero variant="A3" title="Hero A3" />
554
+ ```
555
+
556
+ ```tsx
557
+ <Hero title="A Much Longer Hero Title That Wraps" />
558
+ ```
559
+
560
+ ```tsx
561
+ <Hero title="Custom Background" className="bg-blue-600" />
562
+ ```
563
+
564
+ ```tsx
565
+ <Hero
566
+ variant="A3"
567
+ title="High Contrast"
568
+ background={
569
+ <HeroBackground.Image
570
+ src="https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1920&q=80"
571
+ position="center bottom"
572
+ />
573
+ }
574
+ overlayOpacity={0.7}
575
+ overlayColor="#000000"
576
+ />
577
+ ```
578
+
579
+ ```tsx
580
+ <Hero
581
+ variant="A1"
582
+ title="Tinted Overlay"
583
+ background={
584
+ <HeroBackground.Image
585
+ src="https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=1920&q=80"
586
+ position="center"
587
+ />
588
+ }
589
+ overlayOpacity={0.5}
590
+ overlayColor="#1e3a5f"
591
+ />
592
+ ```
593
+
594
+
595
+ ### UsGovBanner
596
+
597
+ **Import:** `import { UsGovBanner } from "@nationaldesignstudio/react";`
598
+
599
+ **Category:** Display
600
+
601
+ **Props:**
602
+
603
+ - `flagIcon`: React.ReactNode
604
+ Custom flag icon element. Defaults to a US flag SVG.
605
+ - `text`: string
606
+ "An official website of the United States government"
607
+
608
+ **Examples:**
609
+
610
+ ```tsx
611
+ <USGovBanner />
612
+ ```
613
+
614
+ ```tsx
615
+ <USGovBanner text="An official website of the U.S. Department of State" />
616
+ ```
617
+
618
+ ```tsx
619
+ <USGovBanner {...args} />
620
+ ```
621
+
622
+
623
+ ## Navigation
624
+
625
+ ### Navbar
626
+
627
+ **Import:** `import { Navbar } from "@nationaldesignstudio/react";`
628
+
629
+ **Category:** Navigation
630
+
631
+ **Examples:**
632
+
633
+ ```tsx
634
+ <Navbar>
635
+ <NavbarBrand>
636
+ <BrandPlaceholder />
637
+ </NavbarBrand>
638
+ <NavbarLinks>
639
+ <NavbarLink href="#">Link</NavbarLink>
640
+ <NavbarLink href="#">Link</NavbarLink>
641
+ <NavbarLink href="#">Link</NavbarLink>
642
+ <NavbarLink href="#">Link</NavbarLink>
643
+ <NavbarLink href="#">Link</NavbarLink>
644
+ <NavbarLink href="#">Link</NavbarLink>
645
+ <NavbarLink href="#">Link</NavbarLink>
646
+ </NavbarLinks>
647
+ <NavbarActions>
648
+ <IconButton variant="ghost" size="lg" aria-label="Search">
649
+ <SearchIcon />
650
+ </IconButton>
651
+ </NavbarActions>
652
+ </Navbar>
653
+ ```
654
+
655
+ ```tsx
656
+ <div className="flex w-full flex-col">
657
+ <USGovBanner />
658
+ <Navbar>
659
+ <NavbarBrand>
660
+ <BrandPlaceholder />
661
+ </NavbarBrand>
662
+ <NavbarLinks>
663
+ <NavbarLink href="#">Link</NavbarLink>
664
+ <NavbarLink href="#">Link</NavbarLink>
665
+ <NavbarLink href="#">Link</NavbarLink>
666
+ <NavbarLink href="#">Link</NavbarLink>
667
+ <NavbarLink href="#">Link</NavbarLink>
668
+ <NavbarLink href="#">Link</NavbarLink>
669
+ <NavbarLink href="#">Link</NavbarLink>
670
+ </NavbarLinks>
671
+ <NavbarActions>
672
+ <IconButton variant="ivoryOutlineQuiet" size="lg" aria-label="Search">
673
+ <SearchIcon />
674
+ </IconButton>
675
+ </NavbarActions>
676
+ </Navbar>
677
+ </div>
678
+ ```
679
+
680
+ ```tsx
681
+ <div className="flex w-full flex-col">
682
+ <USGovBanner />
683
+ <Navbar>
684
+ <NavbarBrand>
685
+ <BrandPlaceholder />
686
+ </NavbarBrand>
687
+ <NavbarLinks>
688
+ <NavbarLink href="#">Link</NavbarLink>
689
+ <NavbarLink href="#">Link</NavbarLink>
690
+ <NavbarLink href="#">Link</NavbarLink>
691
+ <NavbarLink href="#">Link</NavbarLink>
692
+ <NavbarLink href="#">Link</NavbarLink>
693
+ <NavbarLink href="#">Link</NavbarLink>
694
+ <NavbarLink href="#">Link</NavbarLink>
695
+ </NavbarLinks>
696
+ <NavbarActions>
697
+ <IconButton variant="ivoryOutlineQuiet" size="lg" aria-label="Search">
698
+ <SearchIcon />
699
+ </IconButton>
700
+ </NavbarActions>
701
+ </Navbar>
702
+ </div>
703
+ ```
704
+
705
+ ```tsx
706
+ <div className="flex w-full flex-col">
707
+ <USGovBanner />
708
+ <Navbar>
709
+ <NavbarBrand>
710
+ <BrandPlaceholder />
711
+ </NavbarBrand>
712
+ <NavbarLinks>
713
+ <NavbarLink href="#">Link</NavbarLink>
714
+ <NavbarLink href="#">Link</NavbarLink>
715
+ <NavbarLink href="#">Link</NavbarLink>
716
+ <NavbarLink href="#">Link</NavbarLink>
717
+ <NavbarLink href="#">Link</NavbarLink>
718
+ <NavbarLink href="#">Link</NavbarLink>
719
+ <NavbarLink href="#">Link</NavbarLink>
720
+ </NavbarLinks>
721
+ <NavbarActions>
722
+ <IconButton variant="ghost" size="default" aria-label="Search">
723
+ <SearchIcon />
724
+ </IconButton>
725
+ </NavbarActions>
726
+ </Navbar>
727
+ </div>
728
+ ```
729
+
730
+ ```tsx
731
+ <div className="flex w-full flex-col">
732
+ <USGovBanner />
733
+ <Navbar>
734
+ <NavbarBrand>
735
+ <div className="size-[26px] rounded-radius-8 bg-gray-300" />
736
+ </NavbarBrand>
737
+ <NavbarLinks>
738
+ <NavbarLink href="#">Link</NavbarLink>
739
+ <NavbarLink href="#">Link</NavbarLink>
740
+ <NavbarLink href="#">Link</NavbarLink>
741
+ <NavbarLink href="#">Link</NavbarLink>
742
+ <NavbarLink href="#">Link</NavbarLink>
743
+ <NavbarLink href="#">Link</NavbarLink>
744
+ <NavbarLink href="#">Link</NavbarLink>
745
+ </NavbarLinks>
746
+ <NavbarActions>
747
+ <NavbarMobileMenuButton asChild>
748
+ <IconButton variant="ghost" size="default" aria-label="Menu">
749
+ <MenuIcon />
750
+ </IconButton>
751
+ </NavbarMobileMenuButton>
752
+ </NavbarActions>
753
+ <NavbarMobileMenu>
754
+ <NavbarMobileMenuLink href="#">Home</NavbarMobileMenuLink>
755
+ <NavbarMobileMenuLink href="#">About</NavbarMobileMenuLink>
756
+ <NavbarMobileMenuLink href="#">Services</NavbarMobileMenuLink>
757
+ <NavbarMobileMenuLink href="#">Resources</NavbarMobileMenuLink>
758
+ <NavbarMobileMenuLink href="#">News</NavbarMobileMenuLink>
759
+ <NavbarMobileMenuLink href="#">Careers</NavbarMobileMenuLink>
760
+ <NavbarMobileMenuLink href="#">Contact</NavbarMobileMenuLink>
761
+ </NavbarMobileMenu>
762
+ </Navbar>
763
+ </div>
764
+ ```
765
+
766
+ ```tsx
767
+ <Navbar>
768
+ <NavbarBrand>
769
+ <BrandPlaceholder />
770
+ </NavbarBrand>
771
+ <NavbarLinks>
772
+ <NavbarLink href="#" active>
773
+ Home
774
+ </NavbarLink>
775
+ <NavbarLink href="#">About</NavbarLink>
776
+ <NavbarLink href="#">Services</NavbarLink>
777
+ <NavbarLink href="#">Contact</NavbarLink>
778
+ </NavbarLinks>
779
+ <NavbarActions>
780
+ <IconButton variant="ghost" size="lg" aria-label="Search">
781
+ <SearchIcon />
782
+ </IconButton>
783
+ </NavbarActions>
784
+ </Navbar>
785
+ ```
786
+
787
+ ```tsx
788
+ <div className="flex w-full flex-col">
789
+ <USGovBanner />
790
+ <Navbar>
791
+ <NavbarBrand>
792
+ <BrandPlaceholder />
793
+ </NavbarBrand>
794
+ <NavbarLinks>
795
+ <NavbarLink href="#" active>
796
+ Home
797
+ </NavbarLink>
798
+ <NavbarLink href="#">About</NavbarLink>
799
+ <NavbarLink href="#">Services</NavbarLink>
800
+ <NavbarLink href="#">Resources</NavbarLink>
801
+ <NavbarLink href="#">Contact</NavbarLink>
802
+ </NavbarLinks>
803
+ <NavbarActions>
804
+ <IconButton
805
+ variant="ghost"
806
+ size="lg"
807
+ aria-label="Search"
808
+ className="hidden md:flex"
809
+ >
810
+ <SearchIcon />
811
+ </IconButton>
812
+ <NavbarMobileMenuButton asChild>
813
+ <IconButton variant="ghost" size="default" aria-label="Menu">
814
+ <MenuIcon />
815
+ </IconButton>
816
+ </NavbarMobileMenuButton>
817
+ </NavbarActions>
818
+ <NavbarMobileMenu>
819
+ <NavbarMobileMenuLink href="#" active>
820
+ Home
821
+ </NavbarMobileMenuLink>
822
+ <NavbarMobileMenuLink href="#">About</NavbarMobileMenuLink>
823
+ <NavbarMobileMenuLink href="#">Services</NavbarMobileMenuLink>
824
+ <NavbarMobileMenuLink href="#">Resources</NavbarMobileMenuLink>
825
+ <NavbarMobileMenuLink href="#">Contact</NavbarMobileMenuLink>
826
+ </NavbarMobileMenu>
827
+ </Navbar>
828
+ </div>
829
+ ```
830
+
831
+
832
+ ## Other
833
+
834
+ ### Accordion
835
+
836
+ **Import:** `import { Accordion } from "@nationaldesignstudio/react";`
837
+
838
+ **Category:** Other
839
+
840
+ **Props:**
841
+
842
+ - `allowMultiple`: boolean
843
+ false
844
+ - `defaultExpanded`: string | string[]
845
+ The ID(s) of items that should be expanded by default
846
+ - `children`: React.ReactNode (required)
847
+
848
+ **Examples:**
849
+
850
+ ```tsx
851
+ <Accordion {...args}>
852
+ <AccordionItem
853
+ id="item-1"
854
+ title="What is the US Tech Force (Tech Force)?"
855
+ >
856
+ Tech Force will be an elite group of ~1,000 technology specialists hired
857
+ by agencies to accelerate artificial intelligence (AI) implementation
858
+ and solve the federal government's most critical technological
859
+ challenges.
860
+ </AccordionItem>
861
+ <AccordionItem
862
+ id="item-2"
863
+ title="What are the key steps in the recruiting process?"
864
+ >
865
+ The recruiting process includes an initial application, technical
866
+ assessment, interviews with agency leadership, and a background check.
867
+ Selected candidates will receive an offer within 4-6 weeks of completing
868
+ all steps.
869
+ </AccordionItem>
870
+ <AccordionItem id="item-3" title="What skills are required?">
871
+ We're looking for expertise in software engineering, artificial
872
+ intelligence, cybersecurity, data analytics, or technical project
873
+ management. Strong problem-solving abilities and a passion for public
874
+ service are essential.
875
+ </AccordionItem>
876
+ </Accordion>
877
+ ```
878
+
879
+ ```tsx
880
+ <Accordion defaultExpanded="item-1">
881
+ <AccordionItem
882
+ id="item-1"
883
+ title="What is the US Tech Force (Tech Force)?"
884
+ >
885
+ Tech Force will be an elite group of ~1,000 technology specialists hired
886
+ by agencies to accelerate artificial intelligence (AI) implementation
887
+ and solve the federal government's most critical technological
888
+ challenges. Tech Force will primarily recruit early-career technologists
889
+ from traditional recruiting channels, along with experienced engineering
890
+ managers from private sector partners, to serve two-year employment
891
+ terms in the federal government.
892
+ </AccordionItem>
893
+ <AccordionItem
894
+ id="item-2"
895
+ title="What are the key steps in the recruiting process?"
896
+ >
897
+ The recruiting process includes an initial application, technical
898
+ assessment, interviews with agency leadership, and a background check.
899
+ </AccordionItem>
900
+ <AccordionItem id="item-3" title="What skills are required?">
901
+ We're looking for expertise in software engineering, AI, cybersecurity,
902
+ data analytics, or technical project management.
903
+ </AccordionItem>
904
+ </Accordion>
905
+ ```
906
+
907
+ ```tsx
908
+ <Accordion allowMultiple defaultExpanded={["item-1", "item-2"]}>
909
+ <AccordionItem
910
+ id="item-1"
911
+ title="What is the US Tech Force (Tech Force)?"
912
+ >
913
+ Tech Force will be an elite group of ~1,000 technology specialists hired
914
+ by agencies to accelerate artificial intelligence (AI) implementation
915
+ and solve the federal government's most critical technological
916
+ challenges.
917
+ </AccordionItem>
918
+ <AccordionItem
919
+ id="item-2"
920
+ title="What are the key steps in the recruiting process?"
921
+ >
922
+ The recruiting process includes an initial application, technical
923
+ assessment, interviews with agency leadership, and a background check.
924
+ </AccordionItem>
925
+ <AccordionItem id="item-3" title="What skills are required?">
926
+ We're looking for expertise in software engineering, AI, cybersecurity,
927
+ data analytics, or technical project management.
928
+ </AccordionItem>
929
+ </Accordion>
930
+ ```
931
+
932
+ ```tsx
933
+ <Accordion>
934
+ <AccordionItem
935
+ id="item-1"
936
+ title="What is the US Tech Force (Tech Force)?"
937
+ >
938
+ Tech Force will be an elite group of ~1,000 technology specialists.
939
+ </AccordionItem>
940
+ <AccordionItem
941
+ id="item-2"
942
+ title="What are the key steps in the recruiting process?"
943
+ >
944
+ The recruiting process includes an initial application and interviews.
945
+ </AccordionItem>
946
+ <AccordionItem id="item-3" title="What skills are required?">
947
+ Software engineering, AI, cybersecurity, data analytics.
948
+ </AccordionItem>
949
+ </Accordion>
950
+ ```
951
+
952
+ ```tsx
953
+ <Accordion defaultExpanded="faq-1">
954
+ <AccordionItem id="faq-1" title="What is the US Tech Force (Tech Force)?">
955
+ Tech Force will be an elite group of ~1,000 technology specialists hired
956
+ by agencies to accelerate artificial intelligence (AI) implementation
957
+ and solve the federal government's most critical technological
958
+ challenges. Tech Force will primarily recruit early-career technologists
959
+ from traditional recruiting channels, along with experienced engineering
960
+ managers from private sector partners, to serve two-year employment
961
+ terms in the federal government. Tech Force will include centralized
962
+ organization and programming and serve as a recruiting platform
963
+ post-employment.
964
+ </AccordionItem>
965
+ <AccordionItem
966
+ id="faq-2"
967
+ title="What are the key steps in the recruiting process?"
968
+ >
969
+ The recruiting process includes an initial application, technical
970
+ assessment, interviews with agency leadership, and a background check.
971
+ Selected candidates will receive an offer within 4-6 weeks of completing
972
+ all steps.
973
+ </AccordionItem>
974
+ <AccordionItem id="faq-3" title="What skills are required?">
975
+ We're looking for expertise in software engineering, artificial
976
+ intelligence, cybersecurity, data analytics, or technical project
977
+ management. Strong problem-solving abilities and a passion for public
978
+ service are essential.
979
+ </AccordionItem>
980
+ <AccordionItem
981
+ id="faq-4"
982
+ title="Are specific educational credentials required to participate?"
983
+ >
984
+ While we value diverse educational backgrounds, candidates should
985
+ demonstrate strong technical skills through their work experience,
986
+ projects, or certifications. A traditional degree is not strictly
987
+ required.
988
+ </AccordionItem>
989
+ <AccordionItem
990
+ id="faq-5"
991
+ title="Is there a minimum experience level required to apply?"
992
+ >
993
+ We welcome applications from early-career technologists with 1-3 years
994
+ of experience as well as experienced professionals. What matters most is
995
+ your ability to contribute to critical government technology challenges.
996
+ </AccordionItem>
997
+ <AccordionItem id="faq-6" title="Is this a political appointment?">
998
+ No, Tech Force positions are not political appointments. Participants
999
+ are hired as federal employees based on their technical qualifications
1000
+ and serve in non-partisan roles focused on technology implementation.
1001
+ </AccordionItem>
1002
+ <AccordionItem id="faq-7" title="When am I expected to start?">
1003
+ Start dates vary by cohort. Most participants begin within 2-3 months of
1004
+ receiving their offer, pending completion of background checks and
1005
+ onboarding requirements.
1006
+ </AccordionItem>
1007
+ <AccordionItem id="faq-8" title="Where will the employment be located?">
1008
+ Positions are primarily based in Washington, D.C., though some roles may
1009
+ be available at agency locations across the country. Remote work options
1010
+ vary by agency and role.
1011
+ </AccordionItem>
1012
+ </Accordion>
1013
+ ```
1014
+
1015
+
1016
+ ### Banner
1017
+
1018
+ **Import:** `import { Banner } from "@nationaldesignstudio/react";`
1019
+
1020
+ **Category:** Other
1021
+
1022
+ **Props:**
1023
+
1024
+ - `heading`: string (required)
1025
+ The heading text displayed in the banner
1026
+ - `description`: string (required)
1027
+ The description text displayed below the heading
1028
+ - `action`: React.ReactNode
1029
+ Optional action element (typically a Button component)
1030
+
1031
+ **Examples:**
1032
+
1033
+ ```tsx
1034
+ <Banner {...args} />
1035
+ ```
1036
+
1037
+ ```tsx
1038
+ <Banner
1039
+ heading="Important Update"
1040
+ description="Use banners to surface short, important updates or a single key action without disrupting the main page content."
1041
+ action={<Button>Learn More</Button>}
1042
+ />
1043
+ ```
1044
+
1045
+ ```tsx
1046
+ <Banner
1047
+ heading="Announcement"
1048
+ description="Use banners to surface short, important updates or a single key action without disrupting the main page content."
1049
+ />
1050
+ ```
1051
+
1052
+ ```tsx
1053
+ <Banner
1054
+ heading="Desktop Banner"
1055
+ description="Use banners to surface short, important updates or a single key action without disrupting the main page content."
1056
+ action={<Button>Learn More</Button>}
1057
+ />
1058
+ ```
1059
+
1060
+ ```tsx
1061
+ <Banner
1062
+ heading="Tablet Banner"
1063
+ description="Use banners to surface short, important updates or a single key action without disrupting the main page content."
1064
+ action={<Button>Learn More</Button>}
1065
+ />
1066
+ ```
1067
+
1068
+ ```tsx
1069
+ <Banner
1070
+ heading="Mobile Banner"
1071
+ description="Use banners to surface short, important updates or a single key action without disruption."
1072
+ action={<Button size="sm">Learn More</Button>}
1073
+ />
1074
+ ```
1075
+
1076
+ ```tsx
1077
+ <Banner
1078
+ heading="New Features Available"
1079
+ description="We've made significant improvements to our platform including enhanced security features, faster load times, improved accessibility across all components, and a redesigned dashboard experience. Check out the documentation for more details on how to take advantage of these updates."
1080
+ action={<Button>View Documentation</Button>}
1081
+ />
1082
+ ```
1083
+
1084
+ ```tsx
1085
+ <Banner
1086
+ heading="Custom Styled Banner"
1087
+ description="This banner has a custom background color applied via className."
1088
+ action={<Button variant="ivory">Action</Button>}
1089
+ className="bg-gray-1000 text-gray-50 [&_h2]:text-gray-50 [&_p]:text-gray-200"
1090
+ />
1091
+ ```
1092
+
1093
+
1094
+ ### CardGrid
1095
+
1096
+ **Import:** `import { CardGrid } from "@nationaldesignstudio/react";`
1097
+
1098
+ **Category:** Other
1099
+
1100
+ **Props:**
1101
+
1102
+ - `title`: string (required)
1103
+ The title text displayed above the cards
1104
+ - `cards`: React.ReactNode[] (required)
1105
+ The card elements to display in the grid
1106
+
1107
+ **Examples:**
1108
+
1109
+ ```tsx
1110
+ <CardGrid {...args} />
1111
+ ```
1112
+
1113
+ ```tsx
1114
+ <CardGrid
1115
+ variant="A"
1116
+ title="Our Services"
1117
+ cards={sampleCards.slice(0, 4)}
1118
+ />
1119
+ ```
1120
+
1121
+ ```tsx
1122
+ <CardGrid
1123
+ variant="B"
1124
+ title="Featured Articles"
1125
+ cards={sampleCards.slice(0, 4)}
1126
+ />
1127
+ ```
1128
+
1129
+ ```tsx
1130
+ <CardGrid
1131
+ variant="B"
1132
+ title="Desktop View (Variant B)"
1133
+ cards={[
1134
+ <PlaceholderCard
1135
+ key="1"
1136
+ title="Card One"
1137
+ description="Variant B displays 2 columns on desktop instead of 3."
1138
+ />,
1139
+ <PlaceholderCard
1140
+ key="2"
1141
+ title="Card Two"
1142
+ description="This is useful for larger card layouts or featured content."
1143
+ />,
1144
+ ]}
1145
+ />
1146
+ ```
1147
+
1148
+ ```tsx
1149
+ <CardGrid
1150
+ variant="A"
1151
+ title="Desktop View"
1152
+ cards={[
1153
+ <PlaceholderCard
1154
+ key="1"
1155
+ title="Card One"
1156
+ description="On desktop (lg, 1440px), cards are displayed in a 2-column grid with 12 columns each."
1157
+ />,
1158
+ <PlaceholderCard
1159
+ key="2"
1160
+ title="Card Two"
1161
+ description="The layout uses 128px vertical padding and 64px gap between title and cards."
1162
+ />,
1163
+ <PlaceholderCard
1164
+ key="3"
1165
+ title="Card Three"
1166
+ description="The layout uses 128px vertical padding and 64px gap between title and cards."
1167
+ />,
1168
+ ]}
1169
+ />
1170
+ ```
1171
+
1172
+ ```tsx
1173
+ <CardGrid
1174
+ variant="A"
1175
+ title="Tablet View"
1176
+ cards={[
1177
+ <PlaceholderCard
1178
+ key="1"
1179
+ title="Card One"
1180
+ description="On tablet (md, 768px), cards are in a 2-column layout with 56px gap from title."
1181
+ />,
1182
+ <PlaceholderCard
1183
+ key="2"
1184
+ title="Card Two"
1185
+ description="Cards maintain the 12/12 column split on tablet viewports."
1186
+ />,
1187
+ ]}
1188
+ />
1189
+ ```
1190
+
1191
+ ```tsx
1192
+ <CardGrid
1193
+ variant="A"
1194
+ title="Mobile View"
1195
+ cards={[
1196
+ <PlaceholderCard
1197
+ key="1"
1198
+ title="Card One"
1199
+ description="On mobile (sm, 320px), cards stack in a single column."
1200
+ />,
1201
+ <PlaceholderCard
1202
+ key="2"
1203
+ title="Card Two"
1204
+ description="Each card takes full width on mobile devices."
1205
+ />,
1206
+ ]}
1207
+ />
1208
+ ```
1209
+
1210
+ ```tsx
1211
+ <CardGrid
1212
+ variant="A"
1213
+ title="Two Card Layout"
1214
+ cards={sampleCards.slice(0, 2)}
1215
+ />
1216
+ ```
1217
+
1218
+ ```tsx
1219
+ <CardGrid variant="A" title="Four Card Layout" cards={sampleCards} />
1220
+ ```
1221
+
1222
+ ```tsx
1223
+ <CardGrid
1224
+ variant="A"
1225
+ title="Six Card Layout"
1226
+ cards={[
1227
+ ...sampleCards,
1228
+ <PlaceholderCard
1229
+ key="5"
1230
+ title="Fifth Card"
1231
+ description="Additional card to show multiple rows."
1232
+ />,
1233
+ <PlaceholderCard
1234
+ key="6"
1235
+ title="Sixth Card"
1236
+ description="The grid handles any number of cards."
1237
+ />,
1238
+ ]}
1239
+ />
1240
+ ```
1241
+
1242
+ ```tsx
1243
+ <CardGrid
1244
+ variant="A"
1245
+ title="Featured Resources"
1246
+ cards={[
1247
+ <SampleCard
1248
+ key="1"
1249
+ title="Getting Started Guide"
1250
+ description="Learn the basics and get up and running quickly with our comprehensive guide."
1251
+ />,
1252
+ <SampleCard
1253
+ key="2"
1254
+ title="Best Practices"
1255
+ description="Discover proven strategies and techniques to maximize your results."
1256
+ />,
1257
+ <SampleCard
1258
+ key="3"
1259
+ title="Advanced Topics"
1260
+ description="Deep dive into advanced features and configurations."
1261
+ />,
1262
+ <SampleCard
1263
+ key="4"
1264
+ title="Case Studies"
1265
+ description="See how others have achieved success with real-world examples."
1266
+ />,
1267
+ ]}
1268
+ />
1269
+ ```
1270
+
1271
+ ```tsx
1272
+ <CardGrid
1273
+ variant="A"
1274
+ title="Three Card Layout"
1275
+ cards={sampleCards.slice(0, 3)}
1276
+ />
1277
+ ```
1278
+
1279
+
1280
+ ### DevToolbar
1281
+
1282
+ **Import:** `import { DevToolbar } from "@nationaldesignstudio/react";`
1283
+
1284
+ **Category:** Other
1285
+
1286
+ **Props:**
1287
+
1288
+ - `defaultExpanded`: boolean
1289
+
1290
+ **Examples:**
1291
+
1292
+ ```tsx
1293
+ <>
1294
+ <DemoContent />
1295
+ <DevToolbar {...args} />
1296
+ </>
1297
+ ```
1298
+
1299
+ ```tsx
1300
+ <>
1301
+ <DemoContent />
1302
+ <DevToolbar {...args} />
1303
+ </>
1304
+ ```
1305
+
1306
+
1307
+ ### FaqSection
1308
+
1309
+ **Import:** `import { FaqSection } from "@nationaldesignstudio/react";`
1310
+
1311
+ **Category:** Other
1312
+
1313
+ **Props:**
1314
+
1315
+ - `title`: string
1316
+ "Frequently Asked Questions"
1317
+ - `children`: React.ReactNode (required)
1318
+ The FAQ content - typically an Accordion with AccordionItems
1319
+
1320
+ **Examples:**
1321
+
1322
+ ```tsx
1323
+ <FaqSection {...args}>
1324
+ <Accordion defaultExpanded="faq-1">
1325
+ <AccordionItem
1326
+ id="faq-1"
1327
+ title="What is the US Tech Force (Tech Force)?"
1328
+ >
1329
+ Tech Force will be an elite group of ~1,000 technology specialists
1330
+ hired by agencies to accelerate artificial intelligence (AI)
1331
+ implementation and solve the federal government's most critical
1332
+ technological challenges.
1333
+ </AccordionItem>
1334
+ <AccordionItem
1335
+ id="faq-2"
1336
+ title="What are the key steps in the recruiting process?"
1337
+ >
1338
+ The recruiting process includes an initial application, technical
1339
+ assessment, interviews with agency leadership, and a background check.
1340
+ Selected candidates will receive an offer within 4-6 weeks of
1341
+ completing all steps.
1342
+ </AccordionItem>
1343
+ <AccordionItem id="faq-3" title="What skills are required?">
1344
+ We're looking for expertise in software engineering, artificial
1345
+ intelligence, cybersecurity, data analytics, or technical project
1346
+ management. Strong problem-solving abilities and a passion for public
1347
+ service are essential.
1348
+ </AccordionItem>
1349
+ </Accordion>
1350
+ </FaqSection>
1351
+ ```
1352
+
1353
+ ```tsx
1354
+ <FaqSection>
1355
+ <Accordion defaultExpanded="faq-1">
1356
+ <AccordionItem
1357
+ id="faq-1"
1358
+ title="What is the US Tech Force (Tech Force)?"
1359
+ >
1360
+ Tech Force will be an elite group of ~1,000 technology specialists
1361
+ hired by agencies to accelerate artificial intelligence (AI)
1362
+ implementation and solve the federal government's most critical
1363
+ technological challenges. Tech Force will primarily recruit
1364
+ early-career technologists from traditional recruiting channels, along
1365
+ with experienced engineering managers from private sector partners, to
1366
+ serve two-year employment terms in the federal government.
1367
+ </AccordionItem>
1368
+ <AccordionItem
1369
+ id="faq-2"
1370
+ title="What are the key steps in the recruiting process?"
1371
+ >
1372
+ The recruiting process includes an initial application, technical
1373
+ assessment, interviews with agency leadership, and a background check.
1374
+ Selected candidates will receive an offer within 4-6 weeks of
1375
+ completing all steps.
1376
+ </AccordionItem>
1377
+ <AccordionItem id="faq-3" title="What skills are required?">
1378
+ We're looking for expertise in software engineering, artificial
1379
+ intelligence, cybersecurity, data analytics, or technical project
1380
+ management. Strong problem-solving abilities and a passion for public
1381
+ service are essential.
1382
+ </AccordionItem>
1383
+ </Accordion>
1384
+ </FaqSection>
1385
+ ```
1386
+
1387
+ ```tsx
1388
+ <FaqSection variant="dark">
1389
+ <Accordion defaultExpanded="faq-1">
1390
+ <AccordionItem
1391
+ id="faq-1"
1392
+ title="What is the US Tech Force (Tech Force)?"
1393
+ >
1394
+ Tech Force will be an elite group of ~1,000 technology specialists
1395
+ hired by agencies to accelerate artificial intelligence (AI)
1396
+ implementation and solve the federal government's most critical
1397
+ technological challenges.
1398
+ </AccordionItem>
1399
+ <AccordionItem
1400
+ id="faq-2"
1401
+ title="What are the key steps in the recruiting process?"
1402
+ >
1403
+ The recruiting process includes an initial application, technical
1404
+ assessment, interviews with agency leadership, and a background check.
1405
+ </AccordionItem>
1406
+ <AccordionItem id="faq-3" title="What skills are required?">
1407
+ We're looking for expertise in software engineering, artificial
1408
+ intelligence, cybersecurity, data analytics, or technical project
1409
+ management.
1410
+ </AccordionItem>
1411
+ </Accordion>
1412
+ </FaqSection>
1413
+ ```
1414
+
1415
+ ```tsx
1416
+ <FaqSection variant="light">
1417
+ <Accordion defaultExpanded="faq-1">
1418
+ <AccordionItem
1419
+ id="faq-1"
1420
+ title="What is the US Tech Force (Tech Force)?"
1421
+ >
1422
+ Tech Force will be an elite group of ~1,000 technology specialists
1423
+ hired by agencies to accelerate artificial intelligence (AI)
1424
+ implementation and solve the federal government's most critical
1425
+ technological challenges.
1426
+ </AccordionItem>
1427
+ <AccordionItem
1428
+ id="faq-2"
1429
+ title="What are the key steps in the recruiting process?"
1430
+ >
1431
+ The recruiting process includes an initial application, technical
1432
+ assessment, interviews with agency leadership, and a background check.
1433
+ </AccordionItem>
1434
+ <AccordionItem id="faq-3" title="What skills are required?">
1435
+ We're looking for expertise in software engineering, artificial
1436
+ intelligence, cybersecurity, data analytics, or technical project
1437
+ management.
1438
+ </AccordionItem>
1439
+ </Accordion>
1440
+ </FaqSection>
1441
+ ```
1442
+
1443
+ ```tsx
1444
+ <FaqSection>
1445
+ <Accordion defaultExpanded="faq-1">
1446
+ <AccordionItem
1447
+ id="faq-1"
1448
+ title="What is the US Tech Force (Tech Force)?"
1449
+ >
1450
+ Tech Force will be an elite group of ~1,000 technology specialists
1451
+ hired by agencies to accelerate artificial intelligence (AI)
1452
+ implementation and solve the federal government's most critical
1453
+ technological challenges. Tech Force will primarily recruit
1454
+ early-career technologists from traditional recruiting channels, along
1455
+ with experienced engineering managers from private sector partners, to
1456
+ serve two-year employment terms in the federal government.
1457
+ </AccordionItem>
1458
+ <AccordionItem
1459
+ id="faq-2"
1460
+ title="What are the key steps in the recruiting process?"
1461
+ >
1462
+ The recruiting process includes an initial application, technical
1463
+ assessment, interviews with agency leadership, and a background check.
1464
+ Selected candidates will receive an offer within 4-6 weeks of
1465
+ completing all steps.
1466
+ </AccordionItem>
1467
+ <AccordionItem id="faq-3" title="What skills are required?">
1468
+ We're looking for expertise in software engineering, artificial
1469
+ intelligence, cybersecurity, data analytics, or technical project
1470
+ management. Strong problem-solving abilities and a passion for public
1471
+ service are essential.
1472
+ </AccordionItem>
1473
+ </Accordion>
1474
+ </FaqSection>
1475
+ ```
1476
+
1477
+ ```tsx
1478
+ <FaqSection>
1479
+ <Accordion defaultExpanded="faq-1">
1480
+ <AccordionItem
1481
+ id="faq-1"
1482
+ title="What is the US Tech Force (Tech Force)?"
1483
+ >
1484
+ Tech Force will be an elite group of ~1,000 technology specialists
1485
+ hired by agencies to accelerate artificial intelligence (AI)
1486
+ implementation and solve the federal government's most critical
1487
+ technological challenges.
1488
+ </AccordionItem>
1489
+ <AccordionItem
1490
+ id="faq-2"
1491
+ title="What are the key steps in the recruiting process?"
1492
+ >
1493
+ The recruiting process includes an initial application, technical
1494
+ assessment, interviews with agency leadership, and a background check.
1495
+ </AccordionItem>
1496
+ <AccordionItem id="faq-3" title="What skills are required?">
1497
+ We're looking for expertise in software engineering, artificial
1498
+ intelligence, cybersecurity, data analytics, or technical project
1499
+ management.
1500
+ </AccordionItem>
1501
+ </Accordion>
1502
+ </FaqSection>
1503
+ ```
1504
+
1505
+ ```tsx
1506
+ <FaqSection>
1507
+ <Accordion defaultExpanded="faq-1">
1508
+ <AccordionItem
1509
+ id="faq-1"
1510
+ title="What is the US Tech Force (Tech Force)?"
1511
+ >
1512
+ Tech Force will be an elite group of ~1,000 technology specialists
1513
+ hired by agencies to accelerate artificial intelligence (AI)
1514
+ implementation and solve the federal government's most critical
1515
+ technological challenges.
1516
+ </AccordionItem>
1517
+ <AccordionItem
1518
+ id="faq-2"
1519
+ title="What are the key steps in the recruiting process?"
1520
+ >
1521
+ The recruiting process includes an initial application, technical
1522
+ assessment, interviews with agency leadership, and a background check.
1523
+ </AccordionItem>
1524
+ <AccordionItem id="faq-3" title="What skills are required?">
1525
+ We're looking for expertise in software engineering, artificial
1526
+ intelligence, cybersecurity, data analytics, or technical project
1527
+ management.
1528
+ </AccordionItem>
1529
+ </Accordion>
1530
+ </FaqSection>
1531
+ ```
1532
+
1533
+ ```tsx
1534
+ <FaqSection title="Common Questions">
1535
+ <Accordion defaultExpanded="faq-1">
1536
+ <AccordionItem
1537
+ id="faq-1"
1538
+ title="What is the US Tech Force (Tech Force)?"
1539
+ >
1540
+ Tech Force will be an elite group of ~1,000 technology specialists
1541
+ hired by agencies to accelerate artificial intelligence (AI)
1542
+ implementation and solve the federal government's most critical
1543
+ technological challenges.
1544
+ </AccordionItem>
1545
+ <AccordionItem
1546
+ id="faq-2"
1547
+ title="What are the key steps in the recruiting process?"
1548
+ >
1549
+ The recruiting process includes an initial application, technical
1550
+ assessment, interviews with agency leadership, and a background check.
1551
+ </AccordionItem>
1552
+ </Accordion>
1553
+ </FaqSection>
1554
+ ```
1555
+
1556
+ ```tsx
1557
+ <FaqSection>
1558
+ <Accordion defaultExpanded="faq-1">
1559
+ <AccordionItem
1560
+ id="faq-1"
1561
+ title="What is the US Tech Force (Tech Force)?"
1562
+ >
1563
+ Tech Force will be an elite group of ~1,000 technology specialists
1564
+ hired by agencies to accelerate artificial intelligence (AI)
1565
+ implementation and solve the federal government's most critical
1566
+ technological challenges. Tech Force will primarily recruit
1567
+ early-career technologists from traditional recruiting channels, along
1568
+ with experienced engineering managers from private sector partners, to
1569
+ serve two-year employment terms in the federal government. Tech Force
1570
+ will include centralized organization and programming and serve as a
1571
+ recruiting platform post-employment.
1572
+ </AccordionItem>
1573
+ <AccordionItem
1574
+ id="faq-2"
1575
+ title="What are the key steps in the recruiting process?"
1576
+ >
1577
+ The recruiting process includes an initial application, technical
1578
+ assessment, interviews with agency leadership, and a background check.
1579
+ Selected candidates will receive an offer within 4-6 weeks of
1580
+ completing all steps.
1581
+ </AccordionItem>
1582
+ <AccordionItem id="faq-3" title="What skills are required?">
1583
+ We're looking for expertise in software engineering, artificial
1584
+ intelligence, cybersecurity, data analytics, or technical project
1585
+ management. Strong problem-solving abilities and a passion for public
1586
+ service are essential.
1587
+ </AccordionItem>
1588
+ <AccordionItem
1589
+ id="faq-4"
1590
+ title="Are specific educational credentials required to participate?"
1591
+ >
1592
+ While we value diverse educational backgrounds, candidates should
1593
+ demonstrate strong technical skills through their work experience,
1594
+ projects, or certifications. A traditional degree is not strictly
1595
+ required.
1596
+ </AccordionItem>
1597
+ <AccordionItem
1598
+ id="faq-5"
1599
+ title="Is there a minimum experience level required to apply?"
1600
+ >
1601
+ We welcome applications from early-career technologists with 1-3 years
1602
+ of experience as well as experienced professionals. What matters most
1603
+ is your ability to contribute to critical government technology
1604
+ challenges.
1605
+ </AccordionItem>
1606
+ <AccordionItem id="faq-6" title="Is this a political appointment?">
1607
+ No, Tech Force positions are not political appointments. Participants
1608
+ are hired as federal employees based on their technical qualifications
1609
+ and serve in non-partisan roles focused on technology implementation.
1610
+ </AccordionItem>
1611
+ <AccordionItem id="faq-7" title="When am I expected to start?">
1612
+ Start dates vary by cohort. Most participants begin within 2-3 months
1613
+ of receiving their offer, pending completion of background checks and
1614
+ onboarding requirements.
1615
+ </AccordionItem>
1616
+ <AccordionItem id="faq-8" title="Where will the employment be located?">
1617
+ Positions are primarily based in Washington, D.C., though some roles
1618
+ may be available at agency locations across the country. Remote work
1619
+ options vary by agency and role.
1620
+ </AccordionItem>
1621
+ </Accordion>
1622
+ </FaqSection>
1623
+ ```
1624
+
1625
+ ```tsx
1626
+ <FaqSection>
1627
+ <Accordion>
1628
+ <AccordionItem
1629
+ id="faq-1"
1630
+ title="What is the US Tech Force (Tech Force)?"
1631
+ >
1632
+ Tech Force will be an elite group of ~1,000 technology specialists
1633
+ hired by agencies to accelerate artificial intelligence (AI)
1634
+ implementation and solve the federal government's most critical
1635
+ technological challenges.
1636
+ </AccordionItem>
1637
+ <AccordionItem id="faq-2" title="What skills are required?">
1638
+ We're looking for expertise in software engineering, artificial
1639
+ intelligence, cybersecurity, data analytics, or technical project
1640
+ management.
1641
+ </AccordionItem>
1642
+ </Accordion>
1643
+ </FaqSection>
1644
+ ```
1645
+
1646
+ ```tsx
1647
+ <FaqSection>
1648
+ <Accordion allowMultiple defaultExpanded={["faq-1", "faq-2"]}>
1649
+ <AccordionItem
1650
+ id="faq-1"
1651
+ title="What is the US Tech Force (Tech Force)?"
1652
+ >
1653
+ Tech Force will be an elite group of ~1,000 technology specialists
1654
+ hired by agencies to accelerate artificial intelligence (AI)
1655
+ implementation and solve the federal government's most critical
1656
+ technological challenges.
1657
+ </AccordionItem>
1658
+ <AccordionItem
1659
+ id="faq-2"
1660
+ title="What are the key steps in the recruiting process?"
1661
+ >
1662
+ The recruiting process includes an initial application, technical
1663
+ assessment, interviews with agency leadership, and a background check.
1664
+ Selected candidates will receive an offer within 4-6 weeks of
1665
+ completing all steps.
1666
+ </AccordionItem>
1667
+ <AccordionItem id="faq-3" title="What skills are required?">
1668
+ We're looking for expertise in software engineering, artificial
1669
+ intelligence, cybersecurity, data analytics, or technical project
1670
+ management. Strong problem-solving abilities and a passion for public
1671
+ service are essential.
1672
+ </AccordionItem>
1673
+ </Accordion>
1674
+ </FaqSection>
1675
+ ```
1676
+
1677
+
1678
+ ### GridOverlay
1679
+
1680
+ **Import:** `import { GridOverlay } from "@nationaldesignstudio/react";`
1681
+
1682
+ **Category:** Other
1683
+
1684
+ **Props:**
1685
+
1686
+ - `columnOpacity`: number
1687
+ - `borderOpacity`: number
1688
+ - `visible`: boolean
1689
+
1690
+
1691
+ ### NdstudioFooter
1692
+
1693
+ **Import:** `import { NdstudioFooter } from "@nationaldesignstudio/react";`
1694
+
1695
+ **Category:** Other
1696
+
1697
+ **Props:**
1698
+
1699
+ - `href`: string
1700
+ "https://ndstudio.gov"
1701
+
1702
+
1703
+ ### PagerControl
1704
+
1705
+ **Import:** `import { PagerControl } from "@nationaldesignstudio/react";`
1706
+
1707
+ **Category:** Other
1708
+
1709
+ **Props:**
1710
+
1711
+ - `count`: number (required)
1712
+ Total number of pages/items
1713
+ - `activeIndex`: number
1714
+ Current active page index (0-based)
1715
+ - `duration`: number
1716
+ 5000
1717
+ - `autoPlay`: boolean
1718
+ true
1719
+ - `onChange`: (index: number) => void
1720
+ Callback when the active page changes
1721
+ - `pauseOnHover`: boolean
1722
+ true
1723
+ - `loop`: boolean
1724
+ true
1725
+
1726
+ **Examples:**
1727
+
1728
+ ```tsx
1729
+ <PagerControl {...args} />
1730
+ ```
1731
+
1732
+ ```tsx
1733
+ <PagerControl count={4} variant="charcoal" />
1734
+ ```
1735
+
1736
+ ```tsx
1737
+ <PagerControl count={4} variant="ivory" />
1738
+ ```
1739
+
1740
+ ```tsx
1741
+ <PagerControl count={4} size="sm" />
1742
+ ```
1743
+
1744
+ ```tsx
1745
+ <PagerControl count={4} size="default" />
1746
+ ```
1747
+
1748
+ ```tsx
1749
+ <PagerControl count={4} size="lg" />
1750
+ ```
1751
+
1752
+ ```tsx
1753
+ <PagerControl count={2} />
1754
+ ```
1755
+
1756
+ ```tsx
1757
+ <PagerControl count={5} />
1758
+ ```
1759
+
1760
+ ```tsx
1761
+ <PagerControl count={8} />
1762
+ ```
1763
+
1764
+ ```tsx
1765
+ <PagerControl count={4} duration={2000} />
1766
+ ```
1767
+
1768
+ ```tsx
1769
+ <PagerControl count={4} duration={8000} />
1770
+ ```
1771
+
1772
+ ```tsx
1773
+ <PagerControl count={4} autoPlay={false} />
1774
+ ```
1775
+
1776
+ ```tsx
1777
+ <PagerControl count={4} loop={false} duration={3000} />
1778
+ ```
1779
+
1780
+ ```tsx
1781
+ <PagerControl count={4} pauseOnHover={false} />
1782
+ ```
1783
+
1784
+ ```tsx
1785
+ <div className="flex flex-col items-center gap-spacing-24">
1786
+ <PagerControl
1787
+ count={4}
1788
+ activeIndex={activeIndex}
1789
+ onChange={setActiveIndex}
1790
+ autoPlay={false}
1791
+ />
1792
+ <div className="flex gap-spacing-10">
1793
+ <button
1794
+ type="button"
1795
+ onClick={() => setActiveIndex((prev) => Math.max(0, prev - 1))}
1796
+ className="rounded bg-gray-200 px-spacing-12 py-spacing-6"
1797
+ >
1798
+ Previous
1799
+ </button>
1800
+ <span className="px-spacing-12 py-spacing-6">
1801
+ Page {activeIndex + 1} of 4
1802
+ </span>
1803
+ <button
1804
+ type="button"
1805
+ onClick={() => setActiveIndex((prev) => Math.min(3, prev + 1))}
1806
+ className="rounded bg-gray-200 px-spacing-12 py-spacing-6"
1807
+ >
1808
+ Next
1809
+ </button>
1810
+ </div>
1811
+ </div>
1812
+ ```
1813
+
1814
+ ```tsx
1815
+ <div className="flex w-[400px] flex-col gap-spacing-16">
1816
+ <div className="relative h-[200px] overflow-hidden rounded-radius-12">
1817
+ {slides.map((slide, index) => (
1818
+ <div
1819
+ key={slide.id}
1820
+ className={cn(
1821
+ "absolute inset-0 flex items-center justify-center transition-transform duration-500",
1822
+ slide.color,
1823
+ )}
1824
+ style={{
1825
+ transform: `translateX(${(index - activeIndex) * 100}%)`,
1826
+ }}
1827
+ >
1828
+ <span className="text-xl font-semibold">{slide.title}</span>
1829
+ </div>
1830
+ ))}
1831
+ </div>
1832
+ <div className="flex justify-center">
1833
+ <PagerControl
1834
+ count={slides.length}
1835
+ activeIndex={activeIndex}
1836
+ onChange={setActiveIndex}
1837
+ duration={5000}
1838
+ />
1839
+ </div>
1840
+ </div>
1841
+ ```
1842
+
1843
+
1844
+ ### River
1845
+
1846
+ **Import:** `import { River } from "@nationaldesignstudio/react";`
1847
+
1848
+ **Category:** Other
1849
+
1850
+ **Props:**
1851
+
1852
+ - `headline`: string (required)
1853
+ The headline text
1854
+ - `body`: string (required)
1855
+ The body text
1856
+ - `primaryAction`: React.ReactNode (required)
1857
+ Primary action button (required)
1858
+ - `secondaryAction`: React.ReactNode
1859
+ Secondary action button (optional)
1860
+ - `media`: React.ReactNode (required)
1861
+ Media content (image, video, etc.)
1862
+
1863
+ **Examples:**
1864
+
1865
+ ```tsx
1866
+ <River {...args} />
1867
+ ```
1868
+
1869
+ ```tsx
1870
+ <River
1871
+ variant="A"
1872
+ headline="Text Left, Media Right"
1873
+ body="Variant A places the text content on the left (9 columns) and media on the right (15 columns) on desktop viewports. On mobile and tablet, they stack vertically."
1874
+ primaryAction={<Button>Primary Action</Button>}
1875
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
1876
+ media={<PlaceholderImage />}
1877
+ />
1878
+ ```
1879
+
1880
+ ```tsx
1881
+ <River
1882
+ variant="B"
1883
+ headline="Media Left, Text Right"
1884
+ body="Variant B places the media on the left (15 columns) and text content on the right (9 columns) on desktop viewports. On mobile and tablet, they stack vertically with text first."
1885
+ primaryAction={<Button>Primary Action</Button>}
1886
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
1887
+ media={<PlaceholderImage />}
1888
+ />
1889
+ ```
1890
+
1891
+ ```tsx
1892
+ <River
1893
+ variant="A"
1894
+ headline="Desktop View"
1895
+ body="On desktop (lg, 1440px), the content spans 9 columns and the media spans 15 columns in a horizontal layout."
1896
+ primaryAction={<Button>Primary</Button>}
1897
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
1898
+ media={<PlaceholderImage />}
1899
+ />
1900
+ ```
1901
+
1902
+ ```tsx
1903
+ <River
1904
+ variant="A"
1905
+ headline="Tablet View"
1906
+ body="On tablet (md, 768px), the content and media stack vertically with the text above the media."
1907
+ primaryAction={<Button>Primary</Button>}
1908
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
1909
+ media={<PlaceholderImage />}
1910
+ />
1911
+ ```
1912
+
1913
+ ```tsx
1914
+ <River
1915
+ variant="A"
1916
+ headline="Mobile View"
1917
+ body="On mobile (sm, 320px), content is stacked with smaller button sizing."
1918
+ primaryAction={<Button size="sm">Primary</Button>}
1919
+ secondaryAction={
1920
+ <Button size="sm" variant="charcoalOutline">
1921
+ Secondary
1922
+ </Button>
1923
+ }
1924
+ media={<PlaceholderImage />}
1925
+ />
1926
+ ```
1927
+
1928
+ ```tsx
1929
+ <River
1930
+ variant="B"
1931
+ headline="Desktop View - Reversed"
1932
+ body="Variant B reverses the layout, placing media on the left and content on the right."
1933
+ primaryAction={<Button>Primary</Button>}
1934
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
1935
+ media={<PlaceholderImage />}
1936
+ />
1937
+ ```
1938
+
1939
+ ```tsx
1940
+ <River
1941
+ variant="A"
1942
+ headline="Single Action Button"
1943
+ body="Rivers can also be used with just a primary action button when a secondary action isn't needed."
1944
+ primaryAction={<Button>Learn More</Button>}
1945
+ media={<PlaceholderImage />}
1946
+ />
1947
+ ```
1948
+
1949
+ ```tsx
1950
+ <>
1951
+ <River
1952
+ variant="A"
1953
+ headline="First Feature"
1954
+ body="Start with text on the left for the first section."
1955
+ primaryAction={<Button>Explore</Button>}
1956
+ media={<PlaceholderImage />}
1957
+ />
1958
+ <River
1959
+ variant="B"
1960
+ headline="Second Feature"
1961
+ body="Alternate to media on the left for visual variety."
1962
+ primaryAction={<Button>Discover</Button>}
1963
+ media={<PlaceholderImage />}
1964
+ className="bg-gray-100"
1965
+ />
1966
+ <River
1967
+ variant="A"
1968
+ headline="Third Feature"
1969
+ body="Return to the original layout to create rhythm."
1970
+ primaryAction={<Button>Learn More</Button>}
1971
+ media={<PlaceholderImage />}
1972
+ />
1973
+ </>
1974
+ ```
1975
+
1976
+ ```tsx
1977
+ <River
1978
+ variant="A"
1979
+ headline="Real World Example"
1980
+ body="Rivers work great with actual images, videos, or any media content. The media column is designed to accommodate various aspect ratios."
1981
+ primaryAction={<Button>Get Started</Button>}
1982
+ secondaryAction={<Button variant="charcoalOutline">Learn More</Button>}
1983
+ media={
1984
+ <img
1985
+ src="https://images.unsplash.com/photo-1551434678-e076c223a692?w=800&h=600&fit=crop"
1986
+ alt="Team collaboration"
1987
+ className="rounded-lg object-cover"
1988
+ />
1989
+ }
1990
+ />
1991
+ ```
1992
+
1993
+
1994
+ ### Tout
1995
+
1996
+ **Import:** `import { Tout } from "@nationaldesignstudio/react";`
1997
+
1998
+ **Category:** Other
1999
+
2000
+ **Props:**
2001
+
2002
+ - `headline`: React.ReactNode (required)
2003
+ The headline displayed in the tout
2004
+ - `body`: string
2005
+ The body text displayed below the headline (optional)
2006
+ - `primaryAction`: React.ReactNode (required)
2007
+ Primary action button (required)
2008
+ - `secondaryAction`: React.ReactNode
2009
+ Secondary action button (optional)
2010
+ - `backgroundMedia`: React.ReactNode (required)
2011
+ Background media (image or video element)
2012
+ - `footer`: React.ReactNode
2013
+ Optional footer content to display at the bottom of the section.
2014
+ - `theme`: ComponentTheme
2015
+ Component-level theme overrides.
2016
+
2017
+ **Examples:**
2018
+
2019
+ ```tsx
2020
+ <Tout {...args} />
2021
+ ```
2022
+
2023
+ ```tsx
2024
+ <Tout
2025
+ headline="Brand-Large/Headline/Small"
2026
+ body="A river pattern stacks content in a simple vertical flow: one clear heading, a short block of copy, then the next step. It's ideal for guiding citizens through a process or story, keeping focus moving straight down the page with minimal choices and well-timed calls to action."
2027
+ primaryAction={<Button>Primary</Button>}
2028
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
2029
+ backgroundMedia={<PlaceholderBackground />}
2030
+ />
2031
+ ```
2032
+
2033
+ ```tsx
2034
+ <Tout
2035
+ headline="Brand-Large/Headline/Small"
2036
+ body="A river pattern stacks content in a simple vertical flow: one clear heading, a short block of copy, then the next step. It's ideal for guiding citizens through a process or story, keeping focus moving straight down the page with minimal choices and well-timed calls to action."
2037
+ primaryAction={<Button>Primary</Button>}
2038
+ secondaryAction={<Button variant="charcoalOutline">Secondary</Button>}
2039
+ backgroundMedia={<PlaceholderBackground />}
2040
+ />
2041
+ ```
2042
+
2043
+ ```tsx
2044
+ <Tout
2045
+ headline="Brand-Large/Headline/Small"
2046
+ body="A river pattern stacks content in a simple vertical flow: one clear heading, a short block of copy, then the next step. It's ideal for guiding citizens through a process or story, keeping focus moving straight down the page with minimal choices and well-timed calls to action."
2047
+ primaryAction={<Button size="sm">Primary</Button>}
2048
+ secondaryAction={
2049
+ <Button size="sm" variant="charcoalOutline">
2050
+ Secondary
2051
+ </Button>
2052
+ }
2053
+ backgroundMedia={<PlaceholderBackground />}
2054
+ />
2055
+ ```
2056
+
2057
+ ```tsx
2058
+ <Tout
2059
+ headline="Work with Purpose"
2060
+ body="Join a team that's building the future of government services. We're looking for passionate individuals who want to make a difference."
2061
+ primaryAction={<Button>View Careers</Button>}
2062
+ secondaryAction={<Button variant="charcoalOutline">Learn More</Button>}
2063
+ backgroundMedia={<ImageBackground />}
2064
+ />
2065
+ ```
2066
+
2067
+ ```tsx
2068
+ <Tout
2069
+ headline="Get Started Today"
2070
+ body="Begin your journey with our comprehensive onboarding process designed to help you succeed from day one."
2071
+ primaryAction={<Button>Start Now</Button>}
2072
+ backgroundMedia={<PlaceholderBackground />}
2073
+ />
2074
+ ```
2075
+
2076
+ ```tsx
2077
+ <Tout
2078
+ headline="Experience Innovation"
2079
+ body="See how modern technology is transforming the way government serves its citizens."
2080
+ primaryAction={<Button>Watch Video</Button>}
2081
+ secondaryAction={<Button variant="charcoalOutline">Learn More</Button>}
2082
+ backgroundMedia={
2083
+ <div className="absolute inset-0 bg-gray-800 flex items-center justify-center">
2084
+ <span className="text-gray-400 typography-body-small">
2085
+ Video Background
2086
+ </span>
2087
+ </div>
2088
+ }
2089
+ />
2090
+ ```
2091
+
2092
+ ```tsx
2093
+ <Tout
2094
+ headline="Work with Purpose"
2095
+ body="Join a team that's building the future of government services. We're looking for passionate individuals who want to make a difference."
2096
+ primaryAction={<Button>View Careers</Button>}
2097
+ secondaryAction={<Button variant="charcoalOutline">Learn More</Button>}
2098
+ backgroundMedia={<ImageBackground />}
2099
+ footer={<NdstudioFooter />}
2100
+ />
2101
+ ```
2102
+
2103
+
2104
+ ### TwoColumnSection
2105
+
2106
+ **Import:** `import { TwoColumnSection } from "@nationaldesignstudio/react";`
2107
+
2108
+ **Category:** Other
2109
+
2110
+ **Props:**
2111
+
2112
+ - `title`: string (required)
2113
+ The title text displayed in the left column
2114
+ - `lead`: React.ReactNode
2115
+ Lead content - prominently styled (brighter text)
2116
+ - `children`: React.ReactNode (required)
2117
+ Body content - secondary styled (muted text)
2118
+ - `layout`: "asymmetric" | "equal"
2119
+ Layout style for the columns
2120
+ Values: `asymmetric`, `equal`
2121
+
2122
+ **Examples:**
2123
+
2124
+ ```tsx
2125
+ <TwoColumnSection {...args} />
2126
+ ```
2127
+
2128
+ ```tsx
2129
+ <TwoColumnSection
2130
+ variant="dark"
2131
+ title="US Tech Force"
2132
+ lead="The US Tech Force is recruiting an elite corps of engineers to build the next generation of government technology."
2133
+ >
2134
+ <p>
2135
+ Through a two-year program, participants will work in teams reporting
2136
+ directly to agency leadership.
2137
+ </p>
2138
+ <p>
2139
+ Upon completing the program, engineers can seek employment with the
2140
+ partnering private-sector companies for potential full-time roles.
2141
+ </p>
2142
+ </TwoColumnSection>
2143
+ ```
2144
+
2145
+ ```tsx
2146
+ <TwoColumnSection
2147
+ variant="light"
2148
+ title="US Tech Force"
2149
+ lead="The US Tech Force is recruiting an elite corps of engineers to build the next generation of government technology."
2150
+ >
2151
+ <p>
2152
+ Through a two-year program, participants will work in teams reporting
2153
+ directly to agency leadership.
2154
+ </p>
2155
+ <p>
2156
+ Upon completing the program, engineers can seek employment with the
2157
+ partnering private-sector companies for potential full-time roles.
2158
+ </p>
2159
+ </TwoColumnSection>
2160
+ ```
2161
+
2162
+ ```tsx
2163
+ <TwoColumnSection
2164
+ variant="dark"
2165
+ title="US Tech Force"
2166
+ lead="The US Tech Force is recruiting an elite corps of engineers to build the next generation of government technology. Backed by the White House, Tech Force will tackle the most complex and large-scale civic and defense challenges of our era."
2167
+ >
2168
+ <p>
2169
+ Through a two-year program, participants will work in teams reporting
2170
+ directly to agency leadership. In collaboration with leading technology
2171
+ companies, participants will receive technical training, engage with
2172
+ industry leaders, and work closely with senior managers from companies
2173
+ partnering with the Tech Force.
2174
+ </p>
2175
+ <p>
2176
+ Upon completing the program, engineers can seek employment with the
2177
+ partnering private-sector companies for potential full-time roles –
2178
+ demonstrating the value of combining civil service with technical
2179
+ expertise.
2180
+ </p>
2181
+ <p>
2182
+ If you are highly skilled in the areas of software engineering,
2183
+ artificial intelligence, cybersecurity, data analytics, or technical
2184
+ project management and want to build the future of American government
2185
+ technology, join the Tech Force today.
2186
+ </p>
2187
+ </TwoColumnSection>
2188
+ ```
2189
+
2190
+ ```tsx
2191
+ <TwoColumnSection
2192
+ variant="dark"
2193
+ title="US Tech Force"
2194
+ lead="The US Tech Force is recruiting an elite corps of engineers to build the next generation of government technology. Backed by the White House, Tech Force will tackle the most complex and large-scale civic and defense challenges of our era."
2195
+ >
2196
+ <p>
2197
+ Through a two-year program, participants will work in teams reporting
2198
+ directly to agency leadership. In collaboration with leading technology
2199
+ companies, participants will receive technical training, engage with
2200
+ industry leaders, and work closely with senior managers from companies
2201
+ partnering with the Tech Force.
2202
+ </p>
2203
+ <p>
2204
+ Upon completing the program, engineers can seek employment with the
2205
+ partnering private-sector companies for potential full-time roles –
2206
+ demonstrating the value of combining civil service with technical
2207
+ expertise.
2208
+ </p>
2209
+ <p>
2210
+ If you are highly skilled in the areas of software engineering,
2211
+ artificial intelligence, cybersecurity, data analytics, or technical
2212
+ project management and want to build the future of American government
2213
+ technology, join the Tech Force today.
2214
+ </p>
2215
+ </TwoColumnSection>
2216
+ ```
2217
+
2218
+ ```tsx
2219
+ <TwoColumnSection
2220
+ variant="dark"
2221
+ title="US Tech Force"
2222
+ lead="The US Tech Force is recruiting an elite corps of engineers to build the next generation of government technology. Backed by the White House, Tech Force will tackle the most complex and large-scale civic and defense challenges of our era."
2223
+ >
2224
+ <p>
2225
+ Through a two-year program, participants will work in teams reporting
2226
+ directly to agency leadership. In collaboration with leading technology
2227
+ companies, participants will receive technical training, engage with
2228
+ industry leaders, and work closely with senior managers from companies
2229
+ partnering with the Tech Force.
2230
+ </p>
2231
+ <p>
2232
+ Upon completing the program, engineers can seek employment with the
2233
+ partnering private-sector companies for potential full-time roles –
2234
+ demonstrating the value of combining civil service with technical
2235
+ expertise.
2236
+ </p>
2237
+ <p>
2238
+ If you are highly skilled in the areas of software engineering,
2239
+ artificial intelligence, cybersecurity, data analytics, or technical
2240
+ project management and want to build the future of American government
2241
+ technology, join the Tech Force today.
2242
+ </p>
2243
+ </TwoColumnSection>
2244
+ ```
2245
+
2246
+ ```tsx
2247
+ <TwoColumnSection variant="dark" title="About the Program">
2248
+ <p>
2249
+ Through a two-year program, participants will work in teams reporting
2250
+ directly to agency leadership. In collaboration with leading technology
2251
+ companies, participants will receive technical training, engage with
2252
+ industry leaders, and work closely with senior managers from companies
2253
+ partnering with the Tech Force.
2254
+ </p>
2255
+ <p>
2256
+ Upon completing the program, engineers can seek employment with the
2257
+ partnering private-sector companies for potential full-time roles.
2258
+ </p>
2259
+ </TwoColumnSection>
2260
+ ```
2261
+
2262
+ ```tsx
2263
+ <TwoColumnSection
2264
+ variant="dark"
2265
+ title="Our Mission"
2266
+ lead={
2267
+ <>
2268
+ <p>
2269
+ The US Tech Force is recruiting an elite corps of engineers to build
2270
+ the next generation of government technology.
2271
+ </p>
2272
+ <p>
2273
+ Backed by the White House, Tech Force will tackle the most complex
2274
+ and large-scale civic and defense challenges of our era.
2275
+ </p>
2276
+ </>
2277
+ }
2278
+ >
2279
+ <p>
2280
+ From administering critical financial infrastructure at the Treasury
2281
+ Department to advancing cutting-edge programs at the Department of War –
2282
+ and everything in between.
2283
+ </p>
2284
+ </TwoColumnSection>
2285
+ ```
2286
+
2287
+ ```tsx
2288
+ <TwoColumnSection
2289
+ variant="dark"
2290
+ title="Join Us"
2291
+ lead="Build the future of American government technology."
2292
+ >
2293
+ <p>Applications are now open for qualified engineers.</p>
2294
+ </TwoColumnSection>
2295
+ ```
2296
+
2297
+
2298
+ ## Typography
2299
+
2300
+ ### Prose
2301
+
2302
+ **Import:** `import { Prose } from "@nationaldesignstudio/react";`
2303
+
2304
+ **Category:** Typography
2305
+
2306
+ **Props:**
2307
+
2308
+ - `children`: React.ReactNode (required)
2309
+
2310
+ **Examples:**
2311
+
2312
+ ```tsx
2313
+ <Prose>
2314
+ <ProseSection heading="Headline - Medium" as="h2">
2315
+ <p>{sampleIntro}</p>
2316
+ </ProseSection>
2317
+ <ProseSection heading="Headline - Small" as="h3">
2318
+ <p>{sampleParagraph1}</p>
2319
+ <p>{sampleParagraph2}</p>
2320
+ </ProseSection>
2321
+ </Prose>
2322
+ ```
2323
+
2324
+ ```tsx
2325
+ <Prose>
2326
+ <ProseSection heading="Headline - Medium" as="h2">
2327
+ <p>{sampleIntro}</p>
2328
+ </ProseSection>
2329
+ <ProseSection heading="Headline - Small" as="h3">
2330
+ <p>{sampleParagraph1}</p>
2331
+ <p>{sampleParagraph2}</p>
2332
+ </ProseSection>
2333
+ </Prose>
2334
+ ```
2335
+
2336
+ ```tsx
2337
+ <Prose>
2338
+ <ProseSection heading="Headline - Medium" as="h2">
2339
+ <p>{sampleIntro}</p>
2340
+ </ProseSection>
2341
+ <ProseSection heading="Headline - Small" as="h3">
2342
+ <p>{sampleParagraph1}</p>
2343
+ <p>{sampleParagraph2}</p>
2344
+ </ProseSection>
2345
+ </Prose>
2346
+ ```
2347
+
2348
+ ```tsx
2349
+ <Prose>
2350
+ <ProseSection heading="Headline - Medium" as="h2">
2351
+ <p>{sampleIntro}</p>
2352
+ </ProseSection>
2353
+ <ProseSection heading="Headline - Small" as="h3">
2354
+ <p>{sampleParagraph1}</p>
2355
+ <p>{sampleParagraph2}</p>
2356
+ </ProseSection>
2357
+ </Prose>
2358
+ ```
2359
+
2360
+ ```tsx
2361
+ <Prose {...args}>
2362
+ <ProseSection heading="Main Heading" as="h2">
2363
+ <p>{sampleIntro}</p>
2364
+ </ProseSection>
2365
+ <ProseSection heading="Subheading" as="h3">
2366
+ <p>{sampleParagraph1}</p>
2367
+ <p>{sampleParagraph2}</p>
2368
+ </ProseSection>
2369
+ </Prose>
2370
+ ```
2371
+
2372
+ ```tsx
2373
+ <Prose>
2374
+ <ProseSection heading="About Our Mission" as="h2">
2375
+ <p>{sampleIntro}</p>
2376
+ <p>{sampleParagraph1}</p>
2377
+ </ProseSection>
2378
+ </Prose>
2379
+ ```
2380
+
2381
+ ```tsx
2382
+ <Prose>
2383
+ <ProseSection heading="Introduction" as="h2">
2384
+ <p>{sampleIntro}</p>
2385
+ </ProseSection>
2386
+ <ProseSection heading="The Importance of Style" as="h3">
2387
+ <p>{sampleParagraph1}</p>
2388
+ </ProseSection>
2389
+ <ProseSection heading="Finding Your Rhythm" as="h3">
2390
+ <p>{sampleParagraph2}</p>
2391
+ </ProseSection>
2392
+ </Prose>
2393
+ ```
2394
+
2395
+
2396
+ ---
2397
+
2398
+ ## Quick Reference
2399
+
2400
+ **Components by Category:**
2401
+ - **Action:** Button
2402
+ - **Display:** Card, Hero, UsGovBanner
2403
+ - **Navigation:** Navbar
2404
+ - **Other:** Accordion, Banner, CardGrid, DevToolbar, FaqSection, GridOverlay, NdstudioFooter, PagerControl, River, Tout, TwoColumnSection
2405
+ - **Typography:** Prose