@nationaldesignstudio/react 0.5.0 → 0.5.2

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 (41) hide show
  1. package/dist/index.d.ts +3617 -51
  2. package/dist/index.js +3368 -14973
  3. package/dist/index.js.map +1 -1
  4. package/dist/tailwind.css +0 -10
  5. package/package.json +3 -2
  6. package/src/components/atoms/popover/popover.tsx +1 -1
  7. package/src/components/atoms/tooltip/tooltip.tsx +1 -1
  8. package/dist/assets/fonts/PPNeueMontreal-Variable.woff2 +0 -0
  9. package/dist/assets/react.svg +0 -1
  10. package/dist/components/atoms/accordion/accordion.d.ts +0 -91
  11. package/dist/components/atoms/background/background.d.ts +0 -144
  12. package/dist/components/atoms/button/button.d.ts +0 -148
  13. package/dist/components/atoms/button/button.figma.d.ts +0 -1
  14. package/dist/components/atoms/button/icon-button.d.ts +0 -172
  15. package/dist/components/atoms/input/input-group.d.ts +0 -278
  16. package/dist/components/atoms/input/input.d.ts +0 -121
  17. package/dist/components/atoms/ndstudio-footer/ndstudio-footer.d.ts +0 -30
  18. package/dist/components/atoms/pager-control/pager-control.d.ts +0 -169
  19. package/dist/components/atoms/popover/popover.d.ts +0 -195
  20. package/dist/components/atoms/select/select.d.ts +0 -131
  21. package/dist/components/atoms/tooltip/tooltip.d.ts +0 -161
  22. package/dist/components/dev-tools/dev-toolbar/dev-toolbar.d.ts +0 -4
  23. package/dist/components/dev-tools/grid-overlay/grid-overlay.d.ts +0 -6
  24. package/dist/components/organisms/card/card.d.ts +0 -235
  25. package/dist/components/organisms/navbar/navbar.d.ts +0 -66
  26. package/dist/components/organisms/us-gov-banner/us-gov-banner.d.ts +0 -137
  27. package/dist/components/sections/banner/banner.d.ts +0 -97
  28. package/dist/components/sections/card-grid/card-grid.d.ts +0 -86
  29. package/dist/components/sections/faq-section/faq-section.d.ts +0 -44
  30. package/dist/components/sections/hero/hero.d.ts +0 -337
  31. package/dist/components/sections/prose/prose.d.ts +0 -37
  32. package/dist/components/sections/quote-block/quote-block.d.ts +0 -152
  33. package/dist/components/sections/river/river.d.ts +0 -96
  34. package/dist/components/sections/tout/tout.d.ts +0 -153
  35. package/dist/components/sections/two-column-section/two-column-section.d.ts +0 -118
  36. package/dist/components/shared/floating-arrow.d.ts +0 -34
  37. package/dist/hooks/index.d.ts +0 -1
  38. package/dist/hooks/use-event-listener.d.ts +0 -24
  39. package/dist/lib/form-control.d.ts +0 -106
  40. package/dist/lib/theme.d.ts +0 -330
  41. package/dist/lib/utils.d.ts +0 -1
@@ -1,153 +0,0 @@
1
- import { VariantProps } from 'tailwind-variants';
2
- import { ComponentTheme } from '../../../lib/theme';
3
- import * as React from "react";
4
- /**
5
- * Tout variants for background and content styling
6
- */
7
- declare const toutVariants: import('tailwind-variants').TVReturnType<{
8
- colorScheme: {
9
- light: string;
10
- dark: string;
11
- };
12
- align: {
13
- left: string;
14
- center: string;
15
- };
16
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
17
- colorScheme: {
18
- light: string;
19
- dark: string;
20
- };
21
- align: {
22
- left: string;
23
- center: string;
24
- };
25
- }, {
26
- colorScheme: {
27
- light: string;
28
- dark: string;
29
- };
30
- align: {
31
- left: string;
32
- center: string;
33
- };
34
- }>, {
35
- colorScheme: {
36
- light: string;
37
- dark: string;
38
- };
39
- align: {
40
- left: string;
41
- center: string;
42
- };
43
- }, undefined, import('tailwind-variants').TVReturnType<{
44
- colorScheme: {
45
- light: string;
46
- dark: string;
47
- };
48
- align: {
49
- left: string;
50
- center: string;
51
- };
52
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
53
- colorScheme: {
54
- light: string;
55
- dark: string;
56
- };
57
- align: {
58
- left: string;
59
- center: string;
60
- };
61
- }, {
62
- colorScheme: {
63
- light: string;
64
- dark: string;
65
- };
66
- align: {
67
- left: string;
68
- center: string;
69
- };
70
- }>, unknown, unknown, undefined>>;
71
- /**
72
- * Tout component based on Figma BaseKit / Touts
73
- *
74
- * A full-bleed section with a background image and overlaid content.
75
- * Content can be positioned on the left side or centered.
76
- *
77
- * Color schemes:
78
- * - light: Light text styling (default)
79
- * - dark: Dark text styling
80
- *
81
- * Alignment:
82
- * - left: Content aligned to the left (default)
83
- * - center: Content centered
84
- *
85
- * Responsive behavior:
86
- * - Mobile (sm): 600px height, 4 columns with gap-20, content spans all 4 cols
87
- * - Tablet (md): 750px height, 12 columns with gap-20, content spans 9 cols (left) or centered
88
- * - Desktop (lg): 900px height, 24 columns with gap-20, content spans 9 cols (left) or centered
89
- *
90
- * This component is self-contained - do NOT wrap in a grid-container.
91
- */
92
- export interface ToutProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof toutVariants> {
93
- /**
94
- * The headline displayed in the tout
95
- */
96
- headline: React.ReactNode;
97
- /**
98
- * The body text displayed below the headline (optional)
99
- */
100
- body?: string;
101
- /**
102
- * Primary action button (required)
103
- */
104
- primaryAction: React.ReactNode;
105
- /**
106
- * Secondary action button (optional)
107
- */
108
- secondaryAction?: React.ReactNode;
109
- /**
110
- * Background media (image or video element)
111
- * Should be a full-bleed element that covers the entire section
112
- */
113
- backgroundMedia: React.ReactNode;
114
- /**
115
- * Optional footer content to display at the bottom of the section.
116
- * Use with NdstudioFooter component for the branded footer.
117
- */
118
- footer?: React.ReactNode;
119
- /**
120
- * Component-level theme overrides.
121
- * Allows customization of colors, spacing, and surface properties.
122
- */
123
- theme?: ComponentTheme;
124
- }
125
- /**
126
- * Tout component for hero-like sections with background media and overlaid content.
127
- *
128
- * This component is self-contained with its own grid.
129
- * Grid setup:
130
- * - Desktop (lg): 24 columns, gap-20, content spans 9 cols
131
- * - Tablet (md): 12 columns, gap-20, content spans 9 cols
132
- * - Mobile: 4 columns, gap-20, content spans all 4 cols
133
- *
134
- * @example
135
- * ```tsx
136
- * <Tout
137
- * headline="Feature Headline"
138
- * body="Description of the feature..."
139
- * primaryAction={<Button>Primary</Button>}
140
- * secondaryAction={<Button variant="outline" colorScheme="light">Secondary</Button>}
141
- * backgroundMedia={
142
- * <img
143
- * src="/background.jpg"
144
- * alt=""
145
- * className="absolute inset-0 w-full h-full object-cover"
146
- * />
147
- * }
148
- * footer={<NdstudioFooter />}
149
- * />
150
- * ```
151
- */
152
- declare const Tout: React.ForwardRefExoticComponent<ToutProps & React.RefAttributes<HTMLElement>>;
153
- export { Tout, toutVariants };
@@ -1,118 +0,0 @@
1
- import { VariantProps } from 'tailwind-variants';
2
- import * as React from "react";
3
- /**
4
- * TwoColumnSection component for text-heavy content sections
5
- *
6
- * Layout:
7
- * - Desktop (lg+): Title left, content right with border-top divider
8
- * - Mobile/Tablet: Stacked vertically
9
- *
10
- * Uses the 24-column grid system.
11
- */
12
- declare const twoColumnSectionVariants: import('tailwind-variants').TVReturnType<{
13
- colorScheme: {
14
- dark: string;
15
- light: string;
16
- };
17
- layout: {
18
- asymmetric: string;
19
- equal: string;
20
- };
21
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
22
- colorScheme: {
23
- dark: string;
24
- light: string;
25
- };
26
- layout: {
27
- asymmetric: string;
28
- equal: string;
29
- };
30
- }, {
31
- colorScheme: {
32
- dark: string;
33
- light: string;
34
- };
35
- layout: {
36
- asymmetric: string;
37
- equal: string;
38
- };
39
- }>, {
40
- colorScheme: {
41
- dark: string;
42
- light: string;
43
- };
44
- layout: {
45
- asymmetric: string;
46
- equal: string;
47
- };
48
- }, undefined, import('tailwind-variants').TVReturnType<{
49
- colorScheme: {
50
- dark: string;
51
- light: string;
52
- };
53
- layout: {
54
- asymmetric: string;
55
- equal: string;
56
- };
57
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
58
- colorScheme: {
59
- dark: string;
60
- light: string;
61
- };
62
- layout: {
63
- asymmetric: string;
64
- equal: string;
65
- };
66
- }, {
67
- colorScheme: {
68
- dark: string;
69
- light: string;
70
- };
71
- layout: {
72
- asymmetric: string;
73
- equal: string;
74
- };
75
- }>, unknown, unknown, undefined>>;
76
- export interface TwoColumnSectionProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof twoColumnSectionVariants> {
77
- /**
78
- * The title text displayed in the left column
79
- */
80
- title: string;
81
- /**
82
- * Lead content - prominently styled (brighter text)
83
- * Can be a string or ReactNode for rich content
84
- */
85
- lead?: React.ReactNode;
86
- /**
87
- * Body content - secondary styled (muted text)
88
- * Can be a string or ReactNode for rich content
89
- */
90
- children: React.ReactNode;
91
- /**
92
- * Layout style for the columns
93
- * - "asymmetric" (default): Uses 24-column grid with ~40/60 split (title: 9, content: 15)
94
- * - "equal": Simple 2-column equal-width layout at md+ breakpoints
95
- */
96
- layout?: "asymmetric" | "equal";
97
- }
98
- /**
99
- * TwoColumnSection component for text-heavy content with title/content split.
100
- *
101
- * Layout:
102
- * - Mobile/Tablet: Stacked (title above content)
103
- * - Desktop (lg+): Title left (~40%), Content right (~60%)
104
- *
105
- * @example
106
- * ```tsx
107
- * <TwoColumnSection
108
- * title="US Tech Force"
109
- * lead="The US Tech Force is recruiting an elite corps of engineers..."
110
- * variant="dark"
111
- * >
112
- * <p>Through a two-year program, participants will work...</p>
113
- * <p>Upon completing the program, engineers can seek...</p>
114
- * </TwoColumnSection>
115
- * ```
116
- */
117
- declare const TwoColumnSection: React.ForwardRefExoticComponent<TwoColumnSectionProps & React.RefAttributes<HTMLElement>>;
118
- export { TwoColumnSection, twoColumnSectionVariants };
@@ -1,34 +0,0 @@
1
- /**
2
- * Shared arrow variants for floating UI components
3
- *
4
- * Used by Tooltip, Popover, and other floating components.
5
- * Handles positioning based on the side attribute.
6
- */
7
- export declare const floatingArrowVariants: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<unknown, {} | {}>, {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
8
- export interface FloatingArrowSvgProps {
9
- /** CSS class for the main fill color (e.g., "fill-tooltip-bg" or "fill-overlay-background") */
10
- fillClassName: string;
11
- /** CSS class for the border color using fill-* (e.g., "fill-overlay-border") - renders as outline behind main fill */
12
- borderClassName?: string;
13
- /** Additional className for the SVG element */
14
- className?: string;
15
- }
16
- /**
17
- * FloatingArrowSvg
18
- *
19
- * A shared arrow SVG component for floating UI elements.
20
- * Use with Tooltip, Popover, Dropdown, and other floating components.
21
- *
22
- * @example
23
- * ```tsx
24
- * // For dark tooltip (no border)
25
- * <FloatingArrowSvg fillClassName="fill-tooltip-bg" />
26
- *
27
- * // For light popover with border
28
- * <FloatingArrowSvg
29
- * fillClassName="fill-overlay-background"
30
- * borderClassName="fill-overlay-border"
31
- * />
32
- * ```
33
- */
34
- export declare const FloatingArrowSvg: ({ fillClassName, borderClassName, className, }: FloatingArrowSvgProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export { useEventListener } from './use-event-listener';
@@ -1,24 +0,0 @@
1
- type EventMap<T> = T extends Window ? WindowEventMap : T extends Document ? DocumentEventMap : T extends HTMLElement ? HTMLElementEventMap : never;
2
- /**
3
- * Custom hook that attaches an event listener to a specified element.
4
- * Automatically handles cleanup on unmount and when dependencies change.
5
- *
6
- * @param eventName - The name of the event to listen for
7
- * @param handler - The callback function to execute when the event fires
8
- * @param element - The element to attach the listener to (defaults to window)
9
- * @param options - Optional event listener options
10
- *
11
- * @example
12
- * ```tsx
13
- * // Listen to window resize
14
- * useEventListener('resize', handleResize);
15
- *
16
- * // Listen to element scroll
17
- * useEventListener('scroll', handleScroll, containerRef.current);
18
- *
19
- * // With options
20
- * useEventListener('scroll', handleScroll, window, { passive: true });
21
- * ```
22
- */
23
- export declare function useEventListener<T extends Window | Document | HTMLElement, K extends keyof EventMap<T>>(eventName: K, handler: (event: EventMap<T>[K]) => void, element?: T | null, options?: boolean | AddEventListenerOptions): void;
24
- export {};
@@ -1,106 +0,0 @@
1
- /**
2
- * Shared form control styles for Input, Select, and similar components.
3
- *
4
- * These base styles ensure consistent appearance across all form controls:
5
- * - Consistent height and padding
6
- * - Unified focus ring and border treatment
7
- * - Shared hover/disabled states
8
- *
9
- * Based on Figma BaseKit / Interface / Input & Dropdown designs.
10
- */
11
- /**
12
- * Base styles shared by all form controls (input, select, etc.)
13
- */
14
- export declare const formControlBase: string[];
15
- /**
16
- * Size variants shared by form controls
17
- * Uses spatial tokens for consistent sizing across form controls
18
- */
19
- export declare const formControlSizes: {
20
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
21
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
22
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
23
- };
24
- /**
25
- * Error state styles shared by form controls
26
- */
27
- export declare const formControlError: {
28
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
29
- readonly false: "";
30
- };
31
- /**
32
- * Form control variants using tailwind-variants
33
- * Can be composed with other variants for specific components
34
- */
35
- export declare const formControlVariants: import('tailwind-variants').TVReturnType<{
36
- size: {
37
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
38
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
39
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
40
- };
41
- error: {
42
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
43
- readonly false: "";
44
- };
45
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
46
- size: {
47
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
48
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
49
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
50
- };
51
- error: {
52
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
53
- readonly false: "";
54
- };
55
- }, {
56
- size: {
57
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
58
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
59
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
60
- };
61
- error: {
62
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
63
- readonly false: "";
64
- };
65
- }>, {
66
- size: {
67
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
68
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
69
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
70
- };
71
- error: {
72
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
73
- readonly false: "";
74
- };
75
- }, undefined, import('tailwind-variants').TVReturnType<{
76
- size: {
77
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
78
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
79
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
80
- };
81
- error: {
82
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
83
- readonly false: "";
84
- };
85
- }, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
86
- size: {
87
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
88
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
89
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
90
- };
91
- error: {
92
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
93
- readonly false: "";
94
- };
95
- }, {
96
- size: {
97
- readonly sm: "h-spatial-ui-control-height-small px-spatial-ui-control-padding-x-small py-spatial-ui-control-padding-y-small text-14";
98
- readonly default: "h-spatial-ui-control-height-medium px-spatial-ui-control-padding-x-medium py-spatial-ui-control-padding-y-medium";
99
- readonly lg: "h-spatial-ui-control-height-large px-spatial-ui-control-padding-x-large py-spatial-ui-control-padding-y-large text-18";
100
- };
101
- error: {
102
- readonly true: "border-ui-error-color focus-visible:border-ui-error-color focus-visible:ring-ui-error-color/20 text-ui-error-color";
103
- readonly false: "";
104
- };
105
- }>, unknown, unknown, undefined>>;
106
- export type FormControlSize = keyof typeof formControlSizes;