@nationaldesignstudio/react 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/component-registry.md +2405 -0
  2. package/dist/components/atoms/accordion/accordion.d.ts +44 -3
  3. package/dist/components/atoms/button/button.d.ts +155 -11
  4. package/dist/components/atoms/button/icon-button.d.ts +114 -5
  5. package/dist/components/atoms/ndstudio-footer/ndstudio-footer.d.ts +30 -0
  6. package/dist/components/atoms/pager-control/pager-control.d.ts +116 -9
  7. package/dist/components/dev-tools/dev-toolbar/dev-toolbar.d.ts +4 -0
  8. package/dist/components/dev-tools/grid-overlay/grid-overlay.d.ts +6 -0
  9. package/dist/components/organisms/card/card.d.ts +40 -4
  10. package/dist/components/sections/banner/banner.d.ts +39 -6
  11. package/dist/components/sections/card-grid/card-grid.d.ts +37 -4
  12. package/dist/components/sections/faq-section/faq-section.d.ts +2 -2
  13. package/dist/components/sections/hero/hero.d.ts +167 -16
  14. package/dist/components/sections/river/river.d.ts +37 -4
  15. package/dist/components/sections/tout/tout.d.ts +86 -6
  16. package/dist/components/sections/two-column-section/two-column-section.d.ts +80 -6
  17. package/dist/hooks/index.d.ts +1 -0
  18. package/dist/hooks/use-event-listener.d.ts +24 -0
  19. package/dist/index.d.ts +9 -2
  20. package/dist/index.js +12034 -5934
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/theme.d.ts +330 -0
  23. package/dist/tokens.css +13930 -6368
  24. package/package.json +14 -24
  25. package/src/App.css +0 -0
  26. package/src/App.tsx +0 -7
  27. package/src/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
  28. package/src/assets/react.svg +0 -1
  29. package/src/components/atoms/accordion/accordion.stories.tsx +0 -228
  30. package/src/components/atoms/accordion/accordion.tsx +0 -137
  31. package/src/components/atoms/accordion/index.ts +0 -6
  32. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-darwin.png +0 -0
  33. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-chromium-linux.png +0 -0
  34. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-darwin.png +0 -0
  35. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-chromium-linux.png +0 -0
  36. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-darwin.png +0 -0
  37. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-charcoal-outline-quiet-chromium-linux.png +0 -0
  38. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-darwin.png +0 -0
  39. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-disabled-chromium-linux.png +0 -0
  40. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-darwin.png +0 -0
  41. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-chromium-linux.png +0 -0
  42. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-darwin.png +0 -0
  43. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-chromium-linux.png +0 -0
  44. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-darwin.png +0 -0
  45. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-ivory-outline-quiet-chromium-linux.png +0 -0
  46. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-darwin.png +0 -0
  47. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-large-chromium-linux.png +0 -0
  48. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-darwin.png +0 -0
  49. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-medium-chromium-linux.png +0 -0
  50. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-darwin.png +0 -0
  51. package/src/components/atoms/button/__screenshots__/button.visual.test.tsx/button-size-small-chromium-linux.png +0 -0
  52. package/src/components/atoms/button/button.stories.tsx +0 -84
  53. package/src/components/atoms/button/button.test.tsx +0 -141
  54. package/src/components/atoms/button/button.tsx +0 -95
  55. package/src/components/atoms/button/button.visual.test.tsx +0 -102
  56. package/src/components/atoms/button/icon-button.stories.tsx +0 -166
  57. package/src/components/atoms/button/icon-button.tsx +0 -125
  58. package/src/components/atoms/button/index.ts +0 -6
  59. package/src/components/atoms/pager-control/index.ts +0 -5
  60. package/src/components/atoms/pager-control/pager-control.stories.tsx +0 -209
  61. package/src/components/atoms/pager-control/pager-control.test.tsx +0 -149
  62. package/src/components/atoms/pager-control/pager-control.tsx +0 -328
  63. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-darwin.png +0 -0
  64. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-default-vertical-chromium-linux.png +0 -0
  65. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-darwin.png +0 -0
  66. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-horizontal-chromium-linux.png +0 -0
  67. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-darwin.png +0 -0
  68. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-minimal-chromium-linux.png +0 -0
  69. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-darwin.png +0 -0
  70. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-actions-chromium-linux.png +0 -0
  71. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-darwin.png +0 -0
  72. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-eyebrow-chromium-linux.png +0 -0
  73. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-darwin.png +0 -0
  74. package/src/components/organisms/card/__screenshots__/card.visual.test.tsx/card-without-image-chromium-linux.png +0 -0
  75. package/src/components/organisms/card/card.stories.tsx +0 -293
  76. package/src/components/organisms/card/card.test.tsx +0 -245
  77. package/src/components/organisms/card/card.tsx +0 -227
  78. package/src/components/organisms/card/card.visual.test.tsx +0 -197
  79. package/src/components/organisms/card/index.ts +0 -19
  80. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-darwin.png +0 -0
  81. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-active-link-chromium-linux.png +0 -0
  82. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-darwin.png +0 -0
  83. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-brand-only-chromium-linux.png +0 -0
  84. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-darwin.png +0 -0
  85. package/src/components/organisms/navbar/__screenshots__/navbar.visual.test.tsx/navbar-default-chromium-linux.png +0 -0
  86. package/src/components/organisms/navbar/index.ts +0 -18
  87. package/src/components/organisms/navbar/navbar.stories.tsx +0 -313
  88. package/src/components/organisms/navbar/navbar.test.tsx +0 -190
  89. package/src/components/organisms/navbar/navbar.tsx +0 -317
  90. package/src/components/organisms/navbar/navbar.visual.test.tsx +0 -85
  91. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-darwin.png +0 -0
  92. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-icon-chromium-linux.png +0 -0
  93. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-darwin.png +0 -0
  94. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-custom-text-chromium-linux.png +0 -0
  95. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-darwin.png +0 -0
  96. package/src/components/organisms/us-gov-banner/__screenshots__/us-gov-banner.visual.test.tsx/us-gov-banner-default-chromium-linux.png +0 -0
  97. package/src/components/organisms/us-gov-banner/index.ts +0 -1
  98. package/src/components/organisms/us-gov-banner/us-gov-banner.stories.tsx +0 -35
  99. package/src/components/organisms/us-gov-banner/us-gov-banner.test.tsx +0 -107
  100. package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +0 -73
  101. package/src/components/organisms/us-gov-banner/us-gov-banner.visual.test.tsx +0 -46
  102. package/src/components/sections/banner/banner.stories.tsx +0 -150
  103. package/src/components/sections/banner/banner.test.tsx +0 -185
  104. package/src/components/sections/banner/banner.tsx +0 -130
  105. package/src/components/sections/banner/index.ts +0 -2
  106. package/src/components/sections/card-grid/card-grid.stories.tsx +0 -351
  107. package/src/components/sections/card-grid/card-grid.tsx +0 -118
  108. package/src/components/sections/card-grid/index.ts +0 -1
  109. package/src/components/sections/faq-section/faq-section.tsx +0 -77
  110. package/src/components/sections/faq-section/index.ts +0 -2
  111. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-darwin.png +0 -0
  112. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-desktop-chromium-linux.png +0 -0
  113. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-darwin.png +0 -0
  114. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-mobile-chromium-linux.png +0 -0
  115. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-darwin.png +0 -0
  116. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a1-tablet-chromium-linux.png +0 -0
  117. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-darwin.png +0 -0
  118. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-desktop-chromium-linux.png +0 -0
  119. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-darwin.png +0 -0
  120. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-mobile-chromium-linux.png +0 -0
  121. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-darwin.png +0 -0
  122. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a2-tablet-chromium-linux.png +0 -0
  123. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-darwin.png +0 -0
  124. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-desktop-chromium-linux.png +0 -0
  125. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-darwin.png +0 -0
  126. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-mobile-chromium-linux.png +0 -0
  127. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-darwin.png +0 -0
  128. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-a3-tablet-chromium-linux.png +0 -0
  129. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-darwin.png +0 -0
  130. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-custom-class-chromium-linux.png +0 -0
  131. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-default-chromium-linux.png +0 -0
  132. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-darwin.png +0 -0
  133. package/src/components/sections/hero/__screenshots__/hero.visual.test.tsx/hero-long-title-chromium-linux.png +0 -0
  134. package/src/components/sections/hero/hero.stories.tsx +0 -145
  135. package/src/components/sections/hero/hero.test.tsx +0 -135
  136. package/src/components/sections/hero/hero.tsx +0 -191
  137. package/src/components/sections/hero/hero.visual.test.tsx +0 -140
  138. package/src/components/sections/hero/index.ts +0 -1
  139. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-darwin.png +0 -0
  140. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-h3-heading-chromium-linux.png +0 -0
  141. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-darwin.png +0 -0
  142. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-paragraphs-chromium-linux.png +0 -0
  143. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-darwin.png +0 -0
  144. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-multiple-sections-chromium-linux.png +0 -0
  145. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-darwin.png +0 -0
  146. package/src/components/sections/prose/__screenshots__/prose.visual.test.tsx/prose-single-section-chromium-linux.png +0 -0
  147. package/src/components/sections/prose/index.ts +0 -6
  148. package/src/components/sections/prose/prose.stories.tsx +0 -144
  149. package/src/components/sections/prose/prose.test.tsx +0 -178
  150. package/src/components/sections/prose/prose.tsx +0 -88
  151. package/src/components/sections/prose/prose.visual.test.tsx +0 -105
  152. package/src/components/sections/river/index.ts +0 -1
  153. package/src/components/sections/river/river.stories.tsx +0 -237
  154. package/src/components/sections/river/river.test.tsx +0 -268
  155. package/src/components/sections/river/river.tsx +0 -175
  156. package/src/components/sections/tout/index.ts +0 -1
  157. package/src/components/sections/tout/tout.stories.tsx +0 -154
  158. package/src/components/sections/tout/tout.test.tsx +0 -242
  159. package/src/components/sections/tout/tout.tsx +0 -206
  160. package/src/components/sections/two-column-section/index.ts +0 -5
  161. package/src/components/sections/two-column-section/two-column-section.stories.tsx +0 -285
  162. package/src/components/sections/two-column-section/two-column-section.tsx +0 -152
  163. package/src/index.ts +0 -98
  164. package/src/lib/utils.ts +0 -6
  165. package/src/main.tsx +0 -13
  166. package/src/stories/Introduction.mdx +0 -114
  167. package/src/stories/TokenShowcase.stories.tsx +0 -92
  168. package/src/stories/TokenShowcase.tsx +0 -1352
  169. package/src/styles.css +0 -11
@@ -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>}