@nationaldesignstudio/react 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/component-registry.md +2405 -0
  2. package/dist/components/atoms/accordion/accordion.d.ts +44 -3
  3. package/dist/components/atoms/button/button.d.ts +155 -11
  4. package/dist/components/atoms/button/icon-button.d.ts +114 -5
  5. package/dist/components/atoms/ndstudio-footer/ndstudio-footer.d.ts +30 -0
  6. package/dist/components/atoms/pager-control/pager-control.d.ts +116 -9
  7. package/dist/components/dev-tools/dev-toolbar/dev-toolbar.d.ts +4 -0
  8. package/dist/components/dev-tools/grid-overlay/grid-overlay.d.ts +6 -0
  9. package/dist/components/organisms/card/card.d.ts +40 -4
  10. package/dist/components/sections/banner/banner.d.ts +39 -6
  11. package/dist/components/sections/card-grid/card-grid.d.ts +37 -4
  12. package/dist/components/sections/faq-section/faq-section.d.ts +2 -2
  13. package/dist/components/sections/hero/hero.d.ts +167 -16
  14. package/dist/components/sections/river/river.d.ts +37 -4
  15. package/dist/components/sections/tout/tout.d.ts +86 -6
  16. package/dist/components/sections/two-column-section/two-column-section.d.ts +80 -6
  17. package/dist/hooks/index.d.ts +1 -0
  18. package/dist/hooks/use-event-listener.d.ts +24 -0
  19. package/dist/index.d.ts +9 -2
  20. package/dist/index.js +12034 -5934
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/theme.d.ts +330 -0
  23. package/dist/tailwind.css +1 -15
  24. package/dist/tokens.css +13057 -6852
  25. package/package.json +12 -23
  26. package/src/App.css +0 -0
  27. package/src/App.tsx +0 -7
  28. package/src/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
  29. package/src/assets/react.svg +0 -1
  30. package/src/components/atoms/accordion/accordion.stories.tsx +0 -228
  31. package/src/components/atoms/accordion/accordion.tsx +0 -137
  32. package/src/components/atoms/accordion/index.ts +0 -6
  33. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-darwin.png +0 -0
  34. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-linux.png +0 -0
  35. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-darwin.png +0 -0
  36. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-linux.png +0 -0
  37. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-darwin.png +0 -0
  38. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-linux.png +0 -0
  39. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-darwin.png +0 -0
  40. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-linux.png +0 -0
  41. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-darwin.png +0 -0
  42. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-linux.png +0 -0
  43. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-darwin.png +0 -0
  44. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-linux.png +0 -0
  45. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-darwin.png +0 -0
  46. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-linux.png +0 -0
  47. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-darwin.png +0 -0
  48. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-linux.png +0 -0
  49. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-darwin.png +0 -0
  50. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-linux.png +0 -0
  51. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-darwin.png +0 -0
  52. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-linux.png +0 -0
  53. package/src/components/atoms/button/button.stories.tsx +0 -84
  54. package/src/components/atoms/button/button.test.tsx +0 -141
  55. package/src/components/atoms/button/button.tsx +0 -95
  56. package/src/components/atoms/button/button.visual.test.tsx +0 -102
  57. package/src/components/atoms/button/icon-button.stories.tsx +0 -166
  58. package/src/components/atoms/button/icon-button.tsx +0 -125
  59. package/src/components/atoms/button/index.ts +0 -6
  60. package/src/components/atoms/pager-control/index.ts +0 -5
  61. package/src/components/atoms/pager-control/pager-control.stories.tsx +0 -209
  62. package/src/components/atoms/pager-control/pager-control.test.tsx +0 -149
  63. package/src/components/atoms/pager-control/pager-control.tsx +0 -328
  64. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-darwin.png +0 -0
  65. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-linux.png +0 -0
  66. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-darwin.png +0 -0
  67. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-linux.png +0 -0
  68. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-darwin.png +0 -0
  69. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-linux.png +0 -0
  70. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-darwin.png +0 -0
  71. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-linux.png +0 -0
  72. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-darwin.png +0 -0
  73. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-linux.png +0 -0
  74. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-darwin.png +0 -0
  75. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-linux.png +0 -0
  76. package/src/components/organisms/card/card.stories.tsx +0 -293
  77. package/src/components/organisms/card/card.test.tsx +0 -245
  78. package/src/components/organisms/card/card.tsx +0 -227
  79. package/src/components/organisms/card/card.visual.test.tsx +0 -197
  80. package/src/components/organisms/card/index.ts +0 -19
  81. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-darwin.png +0 -0
  82. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-linux.png +0 -0
  83. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-darwin.png +0 -0
  84. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-linux.png +0 -0
  85. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-darwin.png +0 -0
  86. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-linux.png +0 -0
  87. package/src/components/organisms/navbar/index.ts +0 -18
  88. package/src/components/organisms/navbar/navbar.stories.tsx +0 -313
  89. package/src/components/organisms/navbar/navbar.test.tsx +0 -190
  90. package/src/components/organisms/navbar/navbar.tsx +0 -317
  91. package/src/components/organisms/navbar/navbar.visual.test.tsx +0 -85
  92. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-darwin.png +0 -0
  93. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-linux.png +0 -0
  94. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-darwin.png +0 -0
  95. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-linux.png +0 -0
  96. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-darwin.png +0 -0
  97. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-linux.png +0 -0
  98. package/src/components/organisms/us-gov-banner/index.ts +0 -1
  99. package/src/components/organisms/us-gov-banner/us-gov-banner.stories.tsx +0 -35
  100. package/src/components/organisms/us-gov-banner/us-gov-banner.test.tsx +0 -107
  101. package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +0 -73
  102. package/src/components/organisms/us-gov-banner/us-gov-banner.visual.test.tsx +0 -46
  103. package/src/components/sections/banner/banner.stories.tsx +0 -150
  104. package/src/components/sections/banner/banner.test.tsx +0 -185
  105. package/src/components/sections/banner/banner.tsx +0 -130
  106. package/src/components/sections/banner/index.ts +0 -2
  107. package/src/components/sections/card-grid/card-grid.stories.tsx +0 -351
  108. package/src/components/sections/card-grid/card-grid.tsx +0 -118
  109. package/src/components/sections/card-grid/index.ts +0 -1
  110. package/src/components/sections/faq-section/faq-section.tsx +0 -77
  111. package/src/components/sections/faq-section/index.ts +0 -2
  112. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-darwin.png +0 -0
  113. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-linux.png +0 -0
  114. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-darwin.png +0 -0
  115. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-linux.png +0 -0
  116. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-darwin.png +0 -0
  117. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-linux.png +0 -0
  118. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-darwin.png +0 -0
  119. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-linux.png +0 -0
  120. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-darwin.png +0 -0
  121. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-linux.png +0 -0
  122. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-darwin.png +0 -0
  123. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-linux.png +0 -0
  124. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-darwin.png +0 -0
  125. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-linux.png +0 -0
  126. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-darwin.png +0 -0
  127. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-linux.png +0 -0
  128. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-darwin.png +0 -0
  129. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-linux.png +0 -0
  130. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-darwin.png +0 -0
  131. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-linux.png +0 -0
  132. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-default-chromium-linux.png +0 -0
  133. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-darwin.png +0 -0
  134. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-linux.png +0 -0
  135. package/src/components/sections/hero/hero.stories.tsx +0 -145
  136. package/src/components/sections/hero/hero.test.tsx +0 -135
  137. package/src/components/sections/hero/hero.tsx +0 -191
  138. package/src/components/sections/hero/hero.visual.test.tsx +0 -140
  139. package/src/components/sections/hero/index.ts +0 -1
  140. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-darwin.png +0 -0
  141. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-linux.png +0 -0
  142. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-darwin.png +0 -0
  143. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-linux.png +0 -0
  144. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-darwin.png +0 -0
  145. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-linux.png +0 -0
  146. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-darwin.png +0 -0
  147. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-linux.png +0 -0
  148. package/src/components/sections/prose/index.ts +0 -6
  149. package/src/components/sections/prose/prose.stories.tsx +0 -144
  150. package/src/components/sections/prose/prose.test.tsx +0 -178
  151. package/src/components/sections/prose/prose.tsx +0 -88
  152. package/src/components/sections/prose/prose.visual.test.tsx +0 -105
  153. package/src/components/sections/river/index.ts +0 -1
  154. package/src/components/sections/river/river.stories.tsx +0 -237
  155. package/src/components/sections/river/river.test.tsx +0 -268
  156. package/src/components/sections/river/river.tsx +0 -175
  157. package/src/components/sections/tout/index.ts +0 -1
  158. package/src/components/sections/tout/tout.stories.tsx +0 -154
  159. package/src/components/sections/tout/tout.test.tsx +0 -242
  160. package/src/components/sections/tout/tout.tsx +0 -206
  161. package/src/components/sections/two-column-section/index.ts +0 -5
  162. package/src/components/sections/two-column-section/two-column-section.stories.tsx +0 -285
  163. package/src/components/sections/two-column-section/two-column-section.tsx +0 -152
  164. package/src/index.ts +0 -98
  165. package/src/lib/utils.ts +0 -6
  166. package/src/main.tsx +0 -13
  167. package/src/stories/Introduction.mdx +0 -114
  168. package/src/stories/TokenShowcase.stories.tsx +0 -92
  169. package/src/stories/TokenShowcase.tsx +0 -1352
  170. package/src/styles.css +0 -11
@@ -1,5 +1,42 @@
1
+ import { VariantProps } from 'tailwind-variants';
1
2
  import * as React from "react";
2
- export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ declare const accordionVariants: import('tailwind-variants').TVReturnType<{
4
+ variant: {
5
+ dark: string;
6
+ light: string;
7
+ };
8
+ }, undefined, "flex flex-col", import('tailwind-variants/dist/config.js').TVConfig<{
9
+ variant: {
10
+ dark: string;
11
+ light: string;
12
+ };
13
+ }, {
14
+ variant: {
15
+ dark: string;
16
+ light: string;
17
+ };
18
+ }>, {
19
+ variant: {
20
+ dark: string;
21
+ light: string;
22
+ };
23
+ }, undefined, import('tailwind-variants').TVReturnType<{
24
+ variant: {
25
+ dark: string;
26
+ light: string;
27
+ };
28
+ }, undefined, "flex flex-col", import('tailwind-variants/dist/config.js').TVConfig<{
29
+ variant: {
30
+ dark: string;
31
+ light: string;
32
+ };
33
+ }, {
34
+ variant: {
35
+ dark: string;
36
+ light: string;
37
+ };
38
+ }>, unknown, unknown, undefined>>;
39
+ export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof accordionVariants> {
3
40
  /**
4
41
  * Allow multiple items to be expanded at once
5
42
  * @default false
@@ -15,9 +52,13 @@ export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
15
52
  * Accordion component for expandable/collapsible content sections.
16
53
  * Built on Base UI's Accordion primitive.
17
54
  *
55
+ * Variants:
56
+ * - dark: Dark theme styling (default)
57
+ * - light: Light theme styling
58
+ *
18
59
  * @example
19
60
  * ```tsx
20
- * <Accordion defaultExpanded="item-1">
61
+ * <Accordion defaultExpanded="item-1" variant="dark">
21
62
  * <AccordionItem id="item-1" title="Question 1">
22
63
  * Answer to question 1
23
64
  * </AccordionItem>
@@ -47,4 +88,4 @@ export interface AccordionItemProps extends Omit<React.HTMLAttributes<HTMLDivEle
47
88
  * Must be used within an Accordion component.
48
89
  */
49
90
  declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
50
- export { Accordion, AccordionItem };
91
+ export { Accordion, AccordionItem, accordionVariants };
@@ -1,30 +1,174 @@
1
1
  import { ButtonProps as BaseButtonProps } from '@base-ui-components/react/button';
2
- import { VariantProps } from 'class-variance-authority';
2
+ import { VariantProps } from 'tailwind-variants';
3
+ import { ButtonTheme } from '../../../lib/theme';
3
4
  import * as React from "react";
4
5
  /**
5
6
  * Button component based on Figma BaseKit / Interface / Buttons
6
7
  *
7
8
  * Variants:
8
- * - charcoal: Dark filled button (for light backgrounds)
9
+ * - primary: Primary filled button using semantic color tokens
10
+ * - primaryOutline: Outlined primary button (for light backgrounds)
11
+ * - secondary: Secondary button using semantic color tokens
12
+ * - charcoal: Dark filled button (for light backgrounds) - legacy
9
13
  * - charcoalOutline: Dark outlined button (for light backgrounds)
10
14
  * - charcoalOutlineQuiet: Subtle dark outlined button (for light backgrounds)
11
15
  * - ivory: Light filled button (for dark backgrounds)
12
16
  * - ivoryOutline: Light outlined button (for dark backgrounds)
13
17
  * - ivoryOutlineQuiet: Subtle light outlined button (for dark backgrounds)
14
- * - secondary: Gray filled button (for dark backgrounds)
18
+ * - gray: Gray filled button (for dark backgrounds)
15
19
  *
16
20
  * Sizes:
17
- * - lg: Large buttons (46px height)
18
- * - default: Medium buttons (38px height)
19
- * - sm: Small buttons (33px height)
21
+ * - lg: Large buttons
22
+ * - default: Medium buttons
23
+ * - sm: Small buttons
20
24
  *
21
25
  * For icon-only buttons, use the IconButton component instead.
26
+ *
27
+ * Theme Support:
28
+ * Pass a `theme` prop to override default colors via CSS custom properties.
29
+ * Surface tokens (--radius-surface-button, --surface-button-stroke) control
30
+ * border radius and stroke width across all variants.
22
31
  */
23
- declare const buttonVariants: (props?: ({
24
- variant?: "charcoal" | "charcoalOutline" | "charcoalOutlineQuiet" | "ivory" | "ivoryOutline" | "ivoryOutlineQuiet" | "gray" | null | undefined;
25
- size?: "lg" | "default" | "sm" | null | undefined;
26
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
32
+ declare const buttonVariants: import('tailwind-variants').TVReturnType<{
33
+ variant: {
34
+ primary: string;
35
+ primaryOutline: string;
36
+ secondary: string;
37
+ charcoal: string;
38
+ charcoalOutline: string;
39
+ charcoalOutlineQuiet: string;
40
+ ivory: string;
41
+ ivoryOutline: string;
42
+ ivoryOutlineQuiet: string;
43
+ gray: string;
44
+ themed: string;
45
+ };
46
+ size: {
47
+ lg: string;
48
+ default: string;
49
+ sm: string;
50
+ };
51
+ }, undefined, "inline-flex items-center justify-center gap-spacing-8 whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 rounded-surface-button stroke-surface-button border-solid", import('tailwind-variants/dist/config.js').TVConfig<{
52
+ variant: {
53
+ primary: string;
54
+ primaryOutline: string;
55
+ secondary: string;
56
+ charcoal: string;
57
+ charcoalOutline: string;
58
+ charcoalOutlineQuiet: string;
59
+ ivory: string;
60
+ ivoryOutline: string;
61
+ ivoryOutlineQuiet: string;
62
+ gray: string;
63
+ themed: string;
64
+ };
65
+ size: {
66
+ lg: string;
67
+ default: string;
68
+ sm: string;
69
+ };
70
+ }, {
71
+ variant: {
72
+ primary: string;
73
+ primaryOutline: string;
74
+ secondary: string;
75
+ charcoal: string;
76
+ charcoalOutline: string;
77
+ charcoalOutlineQuiet: string;
78
+ ivory: string;
79
+ ivoryOutline: string;
80
+ ivoryOutlineQuiet: string;
81
+ gray: string;
82
+ themed: string;
83
+ };
84
+ size: {
85
+ lg: string;
86
+ default: string;
87
+ sm: string;
88
+ };
89
+ }>, {
90
+ variant: {
91
+ primary: string;
92
+ primaryOutline: string;
93
+ secondary: string;
94
+ charcoal: string;
95
+ charcoalOutline: string;
96
+ charcoalOutlineQuiet: string;
97
+ ivory: string;
98
+ ivoryOutline: string;
99
+ ivoryOutlineQuiet: string;
100
+ gray: string;
101
+ themed: string;
102
+ };
103
+ size: {
104
+ lg: string;
105
+ default: string;
106
+ sm: string;
107
+ };
108
+ }, undefined, import('tailwind-variants').TVReturnType<{
109
+ variant: {
110
+ primary: string;
111
+ primaryOutline: string;
112
+ secondary: string;
113
+ charcoal: string;
114
+ charcoalOutline: string;
115
+ charcoalOutlineQuiet: string;
116
+ ivory: string;
117
+ ivoryOutline: string;
118
+ ivoryOutlineQuiet: string;
119
+ gray: string;
120
+ themed: string;
121
+ };
122
+ size: {
123
+ lg: string;
124
+ default: string;
125
+ sm: string;
126
+ };
127
+ }, undefined, "inline-flex items-center justify-center gap-spacing-8 whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 rounded-surface-button stroke-surface-button border-solid", import('tailwind-variants/dist/config.js').TVConfig<{
128
+ variant: {
129
+ primary: string;
130
+ primaryOutline: string;
131
+ secondary: string;
132
+ charcoal: string;
133
+ charcoalOutline: string;
134
+ charcoalOutlineQuiet: string;
135
+ ivory: string;
136
+ ivoryOutline: string;
137
+ ivoryOutlineQuiet: string;
138
+ gray: string;
139
+ themed: string;
140
+ };
141
+ size: {
142
+ lg: string;
143
+ default: string;
144
+ sm: string;
145
+ };
146
+ }, {
147
+ variant: {
148
+ primary: string;
149
+ primaryOutline: string;
150
+ secondary: string;
151
+ charcoal: string;
152
+ charcoalOutline: string;
153
+ charcoalOutlineQuiet: string;
154
+ ivory: string;
155
+ ivoryOutline: string;
156
+ ivoryOutlineQuiet: string;
157
+ gray: string;
158
+ themed: string;
159
+ };
160
+ size: {
161
+ lg: string;
162
+ default: string;
163
+ sm: string;
164
+ };
165
+ }>, unknown, unknown, undefined>>;
27
166
  export type HTMLButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement>;
28
- export type ButtonProps = BaseButtonProps & VariantProps<typeof buttonVariants> & HTMLButtonProps;
167
+ export type ButtonProps = BaseButtonProps & VariantProps<typeof buttonVariants> & HTMLButtonProps & {
168
+ /**
169
+ * Theme overrides for button styling via CSS custom properties
170
+ */
171
+ theme?: ButtonTheme;
172
+ };
29
173
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
30
174
  export { Button, buttonVariants };
@@ -1,4 +1,4 @@
1
- import { VariantProps } from 'class-variance-authority';
1
+ import { VariantProps } from 'tailwind-variants';
2
2
  import * as React from "react";
3
3
  /**
4
4
  * IconButton component based on Figma BaseKit / Interface / Icon Button
@@ -38,10 +38,119 @@ import * as React from "react";
38
38
  * - default: Medium (36x36)
39
39
  * - sm: Small (29x29)
40
40
  */
41
- declare const iconButtonVariants: (props?: ({
42
- variant?: "charcoal" | "charcoalOutline" | "charcoalOutlineQuiet" | "ivory" | "ivoryOutline" | "ivoryOutlineQuiet" | "ghost" | "ghostDark" | null | undefined;
43
- size?: "lg" | "default" | "sm" | null | undefined;
44
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
41
+ declare const iconButtonVariants: import('tailwind-variants').TVReturnType<{
42
+ variant: {
43
+ charcoal: string;
44
+ charcoalOutline: string;
45
+ charcoalOutlineQuiet: string;
46
+ ghost: string;
47
+ ghostDark: string;
48
+ ivory: string;
49
+ ivoryOutline: string;
50
+ ivoryOutlineQuiet: string;
51
+ };
52
+ size: {
53
+ lg: string;
54
+ default: string;
55
+ sm: string;
56
+ };
57
+ }, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", import('tailwind-variants/dist/config.js').TVConfig<{
58
+ variant: {
59
+ charcoal: string;
60
+ charcoalOutline: string;
61
+ charcoalOutlineQuiet: string;
62
+ ghost: string;
63
+ ghostDark: string;
64
+ ivory: string;
65
+ ivoryOutline: string;
66
+ ivoryOutlineQuiet: string;
67
+ };
68
+ size: {
69
+ lg: string;
70
+ default: string;
71
+ sm: string;
72
+ };
73
+ }, {
74
+ variant: {
75
+ charcoal: string;
76
+ charcoalOutline: string;
77
+ charcoalOutlineQuiet: string;
78
+ ghost: string;
79
+ ghostDark: string;
80
+ ivory: string;
81
+ ivoryOutline: string;
82
+ ivoryOutlineQuiet: string;
83
+ };
84
+ size: {
85
+ lg: string;
86
+ default: string;
87
+ sm: string;
88
+ };
89
+ }>, {
90
+ variant: {
91
+ charcoal: string;
92
+ charcoalOutline: string;
93
+ charcoalOutlineQuiet: string;
94
+ ghost: string;
95
+ ghostDark: string;
96
+ ivory: string;
97
+ ivoryOutline: string;
98
+ ivoryOutlineQuiet: string;
99
+ };
100
+ size: {
101
+ lg: string;
102
+ default: string;
103
+ sm: string;
104
+ };
105
+ }, undefined, import('tailwind-variants').TVReturnType<{
106
+ variant: {
107
+ charcoal: string;
108
+ charcoalOutline: string;
109
+ charcoalOutlineQuiet: string;
110
+ ghost: string;
111
+ ghostDark: string;
112
+ ivory: string;
113
+ ivoryOutline: string;
114
+ ivoryOutlineQuiet: string;
115
+ };
116
+ size: {
117
+ lg: string;
118
+ default: string;
119
+ sm: string;
120
+ };
121
+ }, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", import('tailwind-variants/dist/config.js').TVConfig<{
122
+ variant: {
123
+ charcoal: string;
124
+ charcoalOutline: string;
125
+ charcoalOutlineQuiet: string;
126
+ ghost: string;
127
+ ghostDark: string;
128
+ ivory: string;
129
+ ivoryOutline: string;
130
+ ivoryOutlineQuiet: string;
131
+ };
132
+ size: {
133
+ lg: string;
134
+ default: string;
135
+ sm: string;
136
+ };
137
+ }, {
138
+ variant: {
139
+ charcoal: string;
140
+ charcoalOutline: string;
141
+ charcoalOutlineQuiet: string;
142
+ ghost: string;
143
+ ghostDark: string;
144
+ ivory: string;
145
+ ivoryOutline: string;
146
+ ivoryOutlineQuiet: string;
147
+ };
148
+ size: {
149
+ lg: string;
150
+ default: string;
151
+ sm: string;
152
+ };
153
+ }>, unknown, unknown, undefined>>;
45
154
  export interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {
46
155
  asChild?: boolean;
47
156
  }
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ export interface NdstudioFooterProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * The URL to link to
5
+ * @default "https://ndstudio.gov"
6
+ */
7
+ href?: string;
8
+ }
9
+ /**
10
+ * NdstudioFooter component displays a "Designed and Engineered in DC by National Design Studio" footer link.
11
+ *
12
+ * This component is designed to be used as a footer within other components like Tout,
13
+ * but can also be used standalone.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * // Used within a Tout component via footer slot
18
+ * <Tout
19
+ * headline="Feature Headline"
20
+ * primaryAction={<Button>Primary</Button>}
21
+ * backgroundMedia={<img src="/bg.jpg" alt="" />}
22
+ * footer={<NdstudioFooter />}
23
+ * />
24
+ *
25
+ * // Standalone usage
26
+ * <NdstudioFooter className="my-custom-class" />
27
+ * ```
28
+ */
29
+ declare const NdstudioFooter: React.ForwardRefExoticComponent<NdstudioFooterProps & React.RefAttributes<HTMLDivElement>>;
30
+ export { NdstudioFooter };
@@ -1,12 +1,119 @@
1
- import { VariantProps } from 'class-variance-authority';
1
+ import { VariantProps } from 'tailwind-variants';
2
2
  import * as React from "react";
3
- declare const pagerControlVariants: (props?: ({
4
- size?: "lg" | "default" | "sm" | null | undefined;
5
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
- declare const dotBaseVariants: (props?: ({
7
- size?: "lg" | "default" | "sm" | null | undefined;
8
- variant?: "charcoal" | "ivory" | null | undefined;
9
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
3
+ declare const pagerControlVariants: import('tailwind-variants').TVReturnType<{
4
+ size: {
5
+ sm: string;
6
+ default: string;
7
+ lg: string;
8
+ };
9
+ }, undefined, "flex items-center", import('tailwind-variants/dist/config.js').TVConfig<{
10
+ size: {
11
+ sm: string;
12
+ default: string;
13
+ lg: string;
14
+ };
15
+ }, {
16
+ size: {
17
+ sm: string;
18
+ default: string;
19
+ lg: string;
20
+ };
21
+ }>, {
22
+ size: {
23
+ sm: string;
24
+ default: string;
25
+ lg: string;
26
+ };
27
+ }, undefined, import('tailwind-variants').TVReturnType<{
28
+ size: {
29
+ sm: string;
30
+ default: string;
31
+ lg: string;
32
+ };
33
+ }, undefined, "flex items-center", import('tailwind-variants/dist/config.js').TVConfig<{
34
+ size: {
35
+ sm: string;
36
+ default: string;
37
+ lg: string;
38
+ };
39
+ }, {
40
+ size: {
41
+ sm: string;
42
+ default: string;
43
+ lg: string;
44
+ };
45
+ }>, unknown, unknown, undefined>>;
46
+ declare const dotBaseVariants: import('tailwind-variants').TVReturnType<{
47
+ size: {
48
+ sm: string;
49
+ default: string;
50
+ lg: string;
51
+ };
52
+ variant: {
53
+ charcoal: string;
54
+ ivory: string;
55
+ };
56
+ }, undefined, "cursor-pointer rounded-full transition-all duration-500 ease-[cubic-bezier(0.23,1,0.32,1)]", import('tailwind-variants/dist/config.js').TVConfig<{
57
+ size: {
58
+ sm: string;
59
+ default: string;
60
+ lg: string;
61
+ };
62
+ variant: {
63
+ charcoal: string;
64
+ ivory: string;
65
+ };
66
+ }, {
67
+ size: {
68
+ sm: string;
69
+ default: string;
70
+ lg: string;
71
+ };
72
+ variant: {
73
+ charcoal: string;
74
+ ivory: string;
75
+ };
76
+ }>, {
77
+ size: {
78
+ sm: string;
79
+ default: string;
80
+ lg: string;
81
+ };
82
+ variant: {
83
+ charcoal: string;
84
+ ivory: string;
85
+ };
86
+ }, undefined, import('tailwind-variants').TVReturnType<{
87
+ size: {
88
+ sm: string;
89
+ default: string;
90
+ lg: string;
91
+ };
92
+ variant: {
93
+ charcoal: string;
94
+ ivory: string;
95
+ };
96
+ }, undefined, "cursor-pointer rounded-full transition-all duration-500 ease-[cubic-bezier(0.23,1,0.32,1)]", import('tailwind-variants/dist/config.js').TVConfig<{
97
+ size: {
98
+ sm: string;
99
+ default: string;
100
+ lg: string;
101
+ };
102
+ variant: {
103
+ charcoal: string;
104
+ ivory: string;
105
+ };
106
+ }, {
107
+ size: {
108
+ sm: string;
109
+ default: string;
110
+ lg: string;
111
+ };
112
+ variant: {
113
+ charcoal: string;
114
+ ivory: string;
115
+ };
116
+ }>, unknown, unknown, undefined>>;
10
117
  export interface PagerControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">, VariantProps<typeof pagerControlVariants>, VariantProps<typeof dotBaseVariants> {
11
118
  /**
12
119
  * Total number of pages/items
@@ -56,7 +163,7 @@ export interface PagerControlProps extends Omit<React.HTMLAttributes<HTMLDivElem
56
163
  * Sizes:
57
164
  * - sm: Small dots (6px height)
58
165
  * - default: Medium dots (10px height)
59
- * - lg: Large dots (14px height)
166
+ * - lg: Large dots (16px height)
60
167
  */
61
168
  declare const PagerControl: React.ForwardRefExoticComponent<PagerControlProps & React.RefAttributes<HTMLDivElement>>;
62
169
  export { PagerControl, pagerControlVariants };
@@ -0,0 +1,4 @@
1
+ export interface DevToolbarProps {
2
+ defaultExpanded?: boolean;
3
+ }
4
+ export declare function DevToolbar({ defaultExpanded }: DevToolbarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export interface GridOverlayProps {
2
+ columnOpacity?: number;
3
+ borderOpacity?: number;
4
+ visible?: boolean;
5
+ }
6
+ export declare function GridOverlay({ columnOpacity, borderOpacity, visible, }: GridOverlayProps): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,41 @@
1
- import { VariantProps } from 'class-variance-authority';
1
+ import { VariantProps } from 'tailwind-variants';
2
2
  import * as React from "react";
3
- declare const cardVariants: (props?: ({
4
- layout?: "horizontal" | "vertical" | null | undefined;
5
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
3
+ declare const cardVariants: import('tailwind-variants').TVReturnType<{
4
+ layout: {
5
+ vertical: string;
6
+ horizontal: string;
7
+ };
8
+ }, undefined, "flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", import('tailwind-variants/dist/config.js').TVConfig<{
9
+ layout: {
10
+ vertical: string;
11
+ horizontal: string;
12
+ };
13
+ }, {
14
+ layout: {
15
+ vertical: string;
16
+ horizontal: string;
17
+ };
18
+ }>, {
19
+ layout: {
20
+ vertical: string;
21
+ horizontal: string;
22
+ };
23
+ }, undefined, import('tailwind-variants').TVReturnType<{
24
+ layout: {
25
+ vertical: string;
26
+ horizontal: string;
27
+ };
28
+ }, undefined, "flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", import('tailwind-variants/dist/config.js').TVConfig<{
29
+ layout: {
30
+ vertical: string;
31
+ horizontal: string;
32
+ };
33
+ }, {
34
+ layout: {
35
+ vertical: string;
36
+ horizontal: string;
37
+ };
38
+ }>, unknown, unknown, undefined>>;
6
39
  export interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
7
40
  }
8
41
  /**
@@ -34,6 +67,7 @@ export interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {
34
67
  }
35
68
  /**
36
69
  * Card content container with proper padding and spacing.
70
+ * Uses spatial card tokens for consistent sizing.
37
71
  */
38
72
  declare const CardContent: React.ForwardRefExoticComponent<CardContentProps & React.RefAttributes<HTMLDivElement>>;
39
73
  export interface CardEyebrowProps extends React.HTMLAttributes<HTMLParagraphElement> {
@@ -62,12 +96,14 @@ export interface CardBodyProps extends React.HTMLAttributes<HTMLDivElement> {
62
96
  }
63
97
  /**
64
98
  * Container for card text content (eyebrow, title, description).
99
+ * Uses spatial card tokens for consistent sizing.
65
100
  */
66
101
  declare const CardBody: React.ForwardRefExoticComponent<CardBodyProps & React.RefAttributes<HTMLDivElement>>;
67
102
  export interface CardActionsProps extends React.HTMLAttributes<HTMLDivElement> {
68
103
  }
69
104
  /**
70
105
  * Container for card action buttons.
106
+ * Uses primitive spacing tokens.
71
107
  */
72
108
  declare const CardActions: React.ForwardRefExoticComponent<CardActionsProps & React.RefAttributes<HTMLDivElement>>;
73
109
  export { Card, cardVariants, CardImage, CardContent, CardEyebrow, CardTitle, CardDescription, CardBody, CardActions, };
@@ -1,4 +1,4 @@
1
- import { VariantProps } from 'class-variance-authority';
1
+ import { VariantProps } from 'tailwind-variants';
2
2
  import * as React from "react";
3
3
  /**
4
4
  * Banner component based on Figma BaseKit / Banners
@@ -13,9 +13,42 @@ import * as React from "react";
13
13
  *
14
14
  * Must be placed inside a `grid-container`. Uses `col-full` to span all columns.
15
15
  */
16
- declare const bannerVariants: (props?: ({
17
- theme?: "light" | "dark" | null | undefined;
18
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
16
+ declare const bannerVariants: import('tailwind-variants').TVReturnType<{
17
+ variant: {
18
+ light: string;
19
+ dark: string;
20
+ };
21
+ }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
22
+ variant: {
23
+ light: string;
24
+ dark: string;
25
+ };
26
+ }, {
27
+ variant: {
28
+ light: string;
29
+ dark: string;
30
+ };
31
+ }>, {
32
+ variant: {
33
+ light: string;
34
+ dark: string;
35
+ };
36
+ }, undefined, import('tailwind-variants').TVReturnType<{
37
+ variant: {
38
+ light: string;
39
+ dark: string;
40
+ };
41
+ }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
42
+ variant: {
43
+ light: string;
44
+ dark: string;
45
+ };
46
+ }, {
47
+ variant: {
48
+ light: string;
49
+ dark: string;
50
+ };
51
+ }>, unknown, unknown, undefined>>;
19
52
  export interface BannerProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof bannerVariants> {
20
53
  /**
21
54
  * The heading text displayed in the banner
@@ -51,9 +84,9 @@ export interface BannerProps extends React.HTMLAttributes<HTMLElement>, VariantP
51
84
  * />
52
85
  * </div>
53
86
  *
54
- * // Dark theme
87
+ * // Dark variant
55
88
  * <Banner
56
- * theme="dark"
89
+ * variant="dark"
57
90
  * heading="Still Have Questions?"
58
91
  * description="Contact us at support@example.com"
59
92
  * action={<Button variant="secondary">Email Us</Button>}