@nationaldesignstudio/react 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component-registry.md +2405 -0
- package/dist/components/atoms/accordion/accordion.d.ts +44 -3
- package/dist/components/atoms/button/button.d.ts +155 -11
- package/dist/components/atoms/button/icon-button.d.ts +114 -5
- package/dist/components/atoms/ndstudio-footer/ndstudio-footer.d.ts +30 -0
- package/dist/components/atoms/pager-control/pager-control.d.ts +116 -9
- package/dist/components/dev-tools/dev-toolbar/dev-toolbar.d.ts +4 -0
- package/dist/components/dev-tools/grid-overlay/grid-overlay.d.ts +6 -0
- package/dist/components/organisms/card/card.d.ts +40 -4
- package/dist/components/sections/banner/banner.d.ts +39 -6
- package/dist/components/sections/card-grid/card-grid.d.ts +37 -4
- package/dist/components/sections/faq-section/faq-section.d.ts +2 -2
- package/dist/components/sections/hero/hero.d.ts +167 -16
- package/dist/components/sections/river/river.d.ts +37 -4
- package/dist/components/sections/tout/tout.d.ts +86 -6
- package/dist/components/sections/two-column-section/two-column-section.d.ts +80 -6
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/use-event-listener.d.ts +24 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.js +12034 -5934
- package/dist/index.js.map +1 -1
- package/dist/lib/theme.d.ts +330 -0
- package/dist/tokens.css +13650 -6129
- package/package.json +11 -21
- package/src/App.css +0 -0
- package/src/App.tsx +0 -7
- package/src/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
- package/src/assets/react.svg +0 -1
- package/src/components/atoms/accordion/accordion.stories.tsx +0 -228
- package/src/components/atoms/accordion/accordion.tsx +0 -137
- package/src/components/atoms/accordion/index.ts +0 -6
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-linux.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-darwin.png +0 -0
- package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-linux.png +0 -0
- package/src/components/atoms/button/button.stories.tsx +0 -84
- package/src/components/atoms/button/button.test.tsx +0 -141
- package/src/components/atoms/button/button.tsx +0 -95
- package/src/components/atoms/button/button.visual.test.tsx +0 -102
- package/src/components/atoms/button/icon-button.stories.tsx +0 -166
- package/src/components/atoms/button/icon-button.tsx +0 -125
- package/src/components/atoms/button/index.ts +0 -6
- package/src/components/atoms/pager-control/index.ts +0 -5
- package/src/components/atoms/pager-control/pager-control.stories.tsx +0 -209
- package/src/components/atoms/pager-control/pager-control.test.tsx +0 -149
- package/src/components/atoms/pager-control/pager-control.tsx +0 -328
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-linux.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-linux.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-linux.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-linux.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-linux.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-darwin.png +0 -0
- package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-linux.png +0 -0
- package/src/components/organisms/card/card.stories.tsx +0 -293
- package/src/components/organisms/card/card.test.tsx +0 -245
- package/src/components/organisms/card/card.tsx +0 -227
- package/src/components/organisms/card/card.visual.test.tsx +0 -197
- package/src/components/organisms/card/index.ts +0 -19
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-darwin.png +0 -0
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-linux.png +0 -0
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-darwin.png +0 -0
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-linux.png +0 -0
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-darwin.png +0 -0
- package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-linux.png +0 -0
- package/src/components/organisms/navbar/index.ts +0 -18
- package/src/components/organisms/navbar/navbar.stories.tsx +0 -313
- package/src/components/organisms/navbar/navbar.test.tsx +0 -190
- package/src/components/organisms/navbar/navbar.tsx +0 -317
- package/src/components/organisms/navbar/navbar.visual.test.tsx +0 -85
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-darwin.png +0 -0
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-linux.png +0 -0
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-darwin.png +0 -0
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-linux.png +0 -0
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-darwin.png +0 -0
- package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-linux.png +0 -0
- package/src/components/organisms/us-gov-banner/index.ts +0 -1
- package/src/components/organisms/us-gov-banner/us-gov-banner.stories.tsx +0 -35
- package/src/components/organisms/us-gov-banner/us-gov-banner.test.tsx +0 -107
- package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +0 -73
- package/src/components/organisms/us-gov-banner/us-gov-banner.visual.test.tsx +0 -46
- package/src/components/sections/banner/banner.stories.tsx +0 -150
- package/src/components/sections/banner/banner.test.tsx +0 -185
- package/src/components/sections/banner/banner.tsx +0 -130
- package/src/components/sections/banner/index.ts +0 -2
- package/src/components/sections/card-grid/card-grid.stories.tsx +0 -351
- package/src/components/sections/card-grid/card-grid.tsx +0 -118
- package/src/components/sections/card-grid/index.ts +0 -1
- package/src/components/sections/faq-section/faq-section.tsx +0 -77
- package/src/components/sections/faq-section/index.ts +0 -2
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-default-chromium-linux.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-darwin.png +0 -0
- package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-linux.png +0 -0
- package/src/components/sections/hero/hero.stories.tsx +0 -145
- package/src/components/sections/hero/hero.test.tsx +0 -135
- package/src/components/sections/hero/hero.tsx +0 -191
- package/src/components/sections/hero/hero.visual.test.tsx +0 -140
- package/src/components/sections/hero/index.ts +0 -1
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-darwin.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-linux.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-darwin.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-linux.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-darwin.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-linux.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-darwin.png +0 -0
- package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-linux.png +0 -0
- package/src/components/sections/prose/index.ts +0 -6
- package/src/components/sections/prose/prose.stories.tsx +0 -144
- package/src/components/sections/prose/prose.test.tsx +0 -178
- package/src/components/sections/prose/prose.tsx +0 -88
- package/src/components/sections/prose/prose.visual.test.tsx +0 -105
- package/src/components/sections/river/index.ts +0 -1
- package/src/components/sections/river/river.stories.tsx +0 -237
- package/src/components/sections/river/river.test.tsx +0 -268
- package/src/components/sections/river/river.tsx +0 -175
- package/src/components/sections/tout/index.ts +0 -1
- package/src/components/sections/tout/tout.stories.tsx +0 -154
- package/src/components/sections/tout/tout.test.tsx +0 -242
- package/src/components/sections/tout/tout.tsx +0 -206
- package/src/components/sections/two-column-section/index.ts +0 -5
- package/src/components/sections/two-column-section/two-column-section.stories.tsx +0 -285
- package/src/components/sections/two-column-section/two-column-section.tsx +0 -152
- package/src/index.ts +0 -98
- package/src/lib/utils.ts +0 -6
- package/src/main.tsx +0 -13
- package/src/stories/Introduction.mdx +0 -114
- package/src/stories/TokenShowcase.stories.tsx +0 -92
- package/src/stories/TokenShowcase.tsx +0 -1352
- 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
|