@nationaldesignstudio/react 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component-registry.md +1310 -127
- package/dist/components/atoms/background/background.d.ts +13 -27
- package/dist/components/atoms/button/button.d.ts +64 -72
- package/dist/components/atoms/button/button.figma.d.ts +1 -0
- package/dist/components/atoms/button/icon-button.d.ts +62 -110
- package/dist/components/atoms/input/input-group.d.ts +278 -0
- package/dist/components/atoms/input/input.d.ts +121 -0
- package/dist/components/atoms/popover/popover.d.ts +195 -0
- package/dist/components/atoms/select/select.d.ts +131 -0
- package/dist/components/atoms/tooltip/tooltip.d.ts +161 -0
- package/dist/components/organisms/card/card.d.ts +3 -3
- package/dist/components/sections/hero/hero.d.ts +2 -2
- package/dist/components/sections/prose/prose.d.ts +3 -3
- package/dist/components/sections/river/river.d.ts +1 -1
- package/dist/components/sections/tout/tout.d.ts +4 -4
- package/dist/components/shared/floating-arrow.d.ts +34 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +13935 -7622
- package/dist/index.js.map +1 -1
- package/dist/lib/form-control.d.ts +106 -0
- package/dist/tokens.css +4725 -19065
- package/package.json +2 -1
- package/src/components/atoms/accordion/accordion.stories.tsx +1 -1
- package/src/components/atoms/accordion/accordion.tsx +2 -2
- package/src/components/atoms/background/background.tsx +71 -109
- package/src/components/atoms/button/button.figma.tsx +37 -0
- package/src/components/atoms/button/button.stories.tsx +253 -115
- package/src/components/atoms/button/button.test.tsx +289 -5
- package/src/components/atoms/button/button.tsx +40 -101
- package/src/components/atoms/button/button.visual.test.tsx +28 -32
- package/src/components/atoms/button/icon-button.stories.tsx +44 -101
- package/src/components/atoms/button/icon-button.test.tsx +26 -94
- package/src/components/atoms/button/icon-button.tsx +81 -224
- package/src/components/atoms/input/index.ts +17 -0
- package/src/components/atoms/input/input-group.stories.tsx +646 -0
- package/src/components/atoms/input/input-group.test.tsx +362 -0
- package/src/components/atoms/input/input-group.tsx +409 -0
- package/src/components/atoms/input/input.stories.tsx +228 -0
- package/src/components/atoms/input/input.test.tsx +167 -0
- package/src/components/atoms/input/input.tsx +104 -0
- package/src/components/atoms/pager-control/pager-control.stories.tsx +6 -8
- package/src/components/atoms/pager-control/pager-control.tsx +12 -12
- package/src/components/atoms/popover/index.ts +30 -0
- package/src/components/atoms/popover/popover.stories.tsx +531 -0
- package/src/components/atoms/popover/popover.test.tsx +486 -0
- package/src/components/atoms/popover/popover.tsx +488 -0
- package/src/components/atoms/select/index.ts +18 -0
- package/src/components/atoms/select/select.stories.tsx +455 -0
- package/src/components/atoms/select/select.tsx +324 -0
- package/src/components/atoms/tooltip/index.ts +24 -0
- package/src/components/atoms/tooltip/tooltip.stories.tsx +348 -0
- package/src/components/atoms/tooltip/tooltip.test.tsx +363 -0
- package/src/components/atoms/tooltip/tooltip.tsx +347 -0
- package/src/components/dev-tools/dev-toolbar/dev-toolbar.stories.tsx +8 -17
- package/src/components/dev-tools/dev-toolbar/dev-toolbar.tsx +3 -3
- package/src/components/foundation/typography/typography.stories.tsx +401 -0
- package/src/components/organisms/card/card.stories.tsx +19 -19
- package/src/components/organisms/card/card.test.tsx +1 -1
- package/src/components/organisms/card/card.tsx +3 -3
- package/src/components/organisms/card/card.visual.test.tsx +11 -11
- package/src/components/organisms/navbar/navbar.tsx +2 -2
- package/src/components/organisms/navbar/navbar.visual.test.tsx +2 -2
- package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +2 -2
- package/src/components/sections/banner/banner.stories.tsx +1 -5
- package/src/components/sections/banner/banner.test.tsx +2 -2
- package/src/components/sections/banner/banner.tsx +6 -6
- package/src/components/sections/card-grid/card-grid.tsx +5 -5
- package/src/components/sections/faq-section/faq-section.tsx +2 -2
- package/src/components/sections/hero/hero.stories.tsx +7 -7
- package/src/components/sections/hero/hero.test.tsx +5 -5
- package/src/components/sections/hero/hero.tsx +10 -11
- package/src/components/sections/prose/prose.test.tsx +2 -2
- package/src/components/sections/prose/prose.tsx +6 -7
- package/src/components/sections/river/river.stories.tsx +8 -8
- package/src/components/sections/river/river.test.tsx +4 -4
- package/src/components/sections/river/river.tsx +8 -16
- package/src/components/sections/tout/tout.stories.tsx +7 -31
- package/src/components/sections/tout/tout.test.tsx +1 -1
- package/src/components/sections/tout/tout.tsx +11 -11
- package/src/components/sections/two-column-section/two-column-section.tsx +7 -9
- package/src/components/shared/floating-arrow.tsx +78 -0
- package/src/components/shared/index.ts +5 -0
- package/src/index.ts +98 -0
- package/src/lib/form-control.ts +71 -0
- package/src/stories/grid-system.stories.tsx +309 -0
- package/src/stories/{Introduction.mdx → introduction.mdx} +29 -15
- package/src/stories/{ThemeProvider.stories.tsx → theme-provider.stories.tsx} +8 -22
- package/src/stories/{TokenShowcase.stories.tsx → token-showcase.stories.tsx} +1 -20
- package/src/stories/token-showcase.tsx +777 -0
- package/src/styles.css +3 -0
- package/src/tests/token-resolution.test.tsx +298 -0
- package/src/theme/hooks.ts +1 -1
- package/src/theme/index.ts +1 -1
- package/src/theme/theme-provider.test.tsx +270 -0
- package/src/theme/{ThemeProvider.tsx → theme-provider.tsx} +18 -2
- package/src/stories/GridSystem.stories.tsx +0 -84
- package/src/stories/TokenShowcase.tsx +0 -1429
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { VariantProps } from 'tailwind-variants';
|
|
2
|
+
import { ButtonProps } from '../button';
|
|
3
|
+
import type * as React from "react";
|
|
4
|
+
declare const inputGroupVariants: import('tailwind-variants').TVReturnType<{
|
|
5
|
+
size: {
|
|
6
|
+
sm: string;
|
|
7
|
+
default: string;
|
|
8
|
+
lg: string;
|
|
9
|
+
};
|
|
10
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
11
|
+
size: {
|
|
12
|
+
sm: string;
|
|
13
|
+
default: string;
|
|
14
|
+
lg: string;
|
|
15
|
+
};
|
|
16
|
+
}, {
|
|
17
|
+
size: {
|
|
18
|
+
sm: string;
|
|
19
|
+
default: string;
|
|
20
|
+
lg: string;
|
|
21
|
+
};
|
|
22
|
+
}>, {
|
|
23
|
+
size: {
|
|
24
|
+
sm: string;
|
|
25
|
+
default: string;
|
|
26
|
+
lg: string;
|
|
27
|
+
};
|
|
28
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
29
|
+
size: {
|
|
30
|
+
sm: string;
|
|
31
|
+
default: string;
|
|
32
|
+
lg: string;
|
|
33
|
+
};
|
|
34
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
35
|
+
size: {
|
|
36
|
+
sm: string;
|
|
37
|
+
default: string;
|
|
38
|
+
lg: string;
|
|
39
|
+
};
|
|
40
|
+
}, {
|
|
41
|
+
size: {
|
|
42
|
+
sm: string;
|
|
43
|
+
default: string;
|
|
44
|
+
lg: string;
|
|
45
|
+
};
|
|
46
|
+
}>, unknown, unknown, undefined>>;
|
|
47
|
+
declare const inputGroupAddonVariants: import('tailwind-variants').TVReturnType<{
|
|
48
|
+
align: {
|
|
49
|
+
"inline-start": string[];
|
|
50
|
+
"inline-end": string[];
|
|
51
|
+
"block-start": string[];
|
|
52
|
+
"block-end": string[];
|
|
53
|
+
};
|
|
54
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
55
|
+
align: {
|
|
56
|
+
"inline-start": string[];
|
|
57
|
+
"inline-end": string[];
|
|
58
|
+
"block-start": string[];
|
|
59
|
+
"block-end": string[];
|
|
60
|
+
};
|
|
61
|
+
}, {
|
|
62
|
+
align: {
|
|
63
|
+
"inline-start": string[];
|
|
64
|
+
"inline-end": string[];
|
|
65
|
+
"block-start": string[];
|
|
66
|
+
"block-end": string[];
|
|
67
|
+
};
|
|
68
|
+
}>, {
|
|
69
|
+
align: {
|
|
70
|
+
"inline-start": string[];
|
|
71
|
+
"inline-end": string[];
|
|
72
|
+
"block-start": string[];
|
|
73
|
+
"block-end": string[];
|
|
74
|
+
};
|
|
75
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
76
|
+
align: {
|
|
77
|
+
"inline-start": string[];
|
|
78
|
+
"inline-end": string[];
|
|
79
|
+
"block-start": string[];
|
|
80
|
+
"block-end": string[];
|
|
81
|
+
};
|
|
82
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
83
|
+
align: {
|
|
84
|
+
"inline-start": string[];
|
|
85
|
+
"inline-end": string[];
|
|
86
|
+
"block-start": string[];
|
|
87
|
+
"block-end": string[];
|
|
88
|
+
};
|
|
89
|
+
}, {
|
|
90
|
+
align: {
|
|
91
|
+
"inline-start": string[];
|
|
92
|
+
"inline-end": string[];
|
|
93
|
+
"block-start": string[];
|
|
94
|
+
"block-end": string[];
|
|
95
|
+
};
|
|
96
|
+
}>, unknown, unknown, undefined>>;
|
|
97
|
+
export interface InputGroupProps extends React.FieldsetHTMLAttributes<HTMLFieldSetElement>, VariantProps<typeof inputGroupVariants> {
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* InputGroup component for combining inputs with addons, buttons, and text.
|
|
101
|
+
*
|
|
102
|
+
* A container that groups an input with prefix/suffix addons, icons, or buttons.
|
|
103
|
+
* Supports inline (left/right) and block (top/bottom) addon positioning.
|
|
104
|
+
*
|
|
105
|
+
* Uses semantic UI tokens for theming support.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```tsx
|
|
109
|
+
* // With prefix icon
|
|
110
|
+
* <InputGroup>
|
|
111
|
+
* <InputGroupAddon>
|
|
112
|
+
* <SearchIcon />
|
|
113
|
+
* </InputGroupAddon>
|
|
114
|
+
* <InputGroupInput placeholder="Search..." />
|
|
115
|
+
* </InputGroup>
|
|
116
|
+
*
|
|
117
|
+
* // With suffix button
|
|
118
|
+
* <InputGroup>
|
|
119
|
+
* <InputGroupInput placeholder="Enter email" />
|
|
120
|
+
* <InputGroupAddon align="inline-end">
|
|
121
|
+
* <InputGroupButton>Subscribe</InputGroupButton>
|
|
122
|
+
* </InputGroupAddon>
|
|
123
|
+
* </InputGroup>
|
|
124
|
+
*
|
|
125
|
+
* // With text prefix
|
|
126
|
+
* <InputGroup>
|
|
127
|
+
* <InputGroupAddon>
|
|
128
|
+
* <InputGroupText>https://</InputGroupText>
|
|
129
|
+
* </InputGroupAddon>
|
|
130
|
+
* <InputGroupInput placeholder="example.com" />
|
|
131
|
+
* </InputGroup>
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
declare function InputGroup({ className, size, disabled, ...props }: InputGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
135
|
+
export interface InputGroupAddonProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof inputGroupAddonVariants> {
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* InputGroupAddon component for positioning addons within an InputGroup.
|
|
139
|
+
*
|
|
140
|
+
* Can contain icons, text, or buttons. Clicking the addon focuses the input.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```tsx
|
|
144
|
+
* // Inline start (default - left side)
|
|
145
|
+
* <InputGroupAddon>
|
|
146
|
+
* <SearchIcon />
|
|
147
|
+
* </InputGroupAddon>
|
|
148
|
+
*
|
|
149
|
+
* // Inline end (right side)
|
|
150
|
+
* <InputGroupAddon align="inline-end">
|
|
151
|
+
* <InputGroupButton>Submit</InputGroupButton>
|
|
152
|
+
* </InputGroupAddon>
|
|
153
|
+
*
|
|
154
|
+
* // Block positions (top/bottom)
|
|
155
|
+
* <InputGroupAddon align="block-start">
|
|
156
|
+
* <label>Email Address</label>
|
|
157
|
+
* </InputGroupAddon>
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
declare function InputGroupAddon({ className, align, onClick, onKeyDown, ...props }: InputGroupAddonProps): import("react/jsx-runtime").JSX.Element;
|
|
161
|
+
declare const inputGroupButtonVariants: import('tailwind-variants').TVReturnType<{
|
|
162
|
+
size: {
|
|
163
|
+
xs: string;
|
|
164
|
+
sm: string;
|
|
165
|
+
"icon-xs": string;
|
|
166
|
+
"icon-sm": string;
|
|
167
|
+
};
|
|
168
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
169
|
+
size: {
|
|
170
|
+
xs: string;
|
|
171
|
+
sm: string;
|
|
172
|
+
"icon-xs": string;
|
|
173
|
+
"icon-sm": string;
|
|
174
|
+
};
|
|
175
|
+
}, {
|
|
176
|
+
size: {
|
|
177
|
+
xs: string;
|
|
178
|
+
sm: string;
|
|
179
|
+
"icon-xs": string;
|
|
180
|
+
"icon-sm": string;
|
|
181
|
+
};
|
|
182
|
+
}>, {
|
|
183
|
+
size: {
|
|
184
|
+
xs: string;
|
|
185
|
+
sm: string;
|
|
186
|
+
"icon-xs": string;
|
|
187
|
+
"icon-sm": string;
|
|
188
|
+
};
|
|
189
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
190
|
+
size: {
|
|
191
|
+
xs: string;
|
|
192
|
+
sm: string;
|
|
193
|
+
"icon-xs": string;
|
|
194
|
+
"icon-sm": string;
|
|
195
|
+
};
|
|
196
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
197
|
+
size: {
|
|
198
|
+
xs: string;
|
|
199
|
+
sm: string;
|
|
200
|
+
"icon-xs": string;
|
|
201
|
+
"icon-sm": string;
|
|
202
|
+
};
|
|
203
|
+
}, {
|
|
204
|
+
size: {
|
|
205
|
+
xs: string;
|
|
206
|
+
sm: string;
|
|
207
|
+
"icon-xs": string;
|
|
208
|
+
"icon-sm": string;
|
|
209
|
+
};
|
|
210
|
+
}>, unknown, unknown, undefined>>;
|
|
211
|
+
export interface InputGroupButtonProps extends Omit<ButtonProps, "size">, VariantProps<typeof inputGroupButtonVariants> {
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* InputGroupButton component for inline buttons within an InputGroup.
|
|
215
|
+
*
|
|
216
|
+
* A small button variant designed to fit inside input groups.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```tsx
|
|
220
|
+
* <InputGroupAddon align="inline-end">
|
|
221
|
+
* <InputGroupButton>Submit</InputGroupButton>
|
|
222
|
+
* </InputGroupAddon>
|
|
223
|
+
*
|
|
224
|
+
* // Icon button
|
|
225
|
+
* <InputGroupAddon align="inline-end">
|
|
226
|
+
* <InputGroupButton size="icon-xs">
|
|
227
|
+
* <ClearIcon />
|
|
228
|
+
* </InputGroupButton>
|
|
229
|
+
* </InputGroupAddon>
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
declare function InputGroupButton({ className, type, variant, size, ...props }: InputGroupButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
233
|
+
export interface InputGroupTextProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* InputGroupText component for static text within an InputGroup.
|
|
237
|
+
*
|
|
238
|
+
* Use for prefixes like "https://" or suffixes like ".com"
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```tsx
|
|
242
|
+
* <InputGroupAddon>
|
|
243
|
+
* <InputGroupText>https://</InputGroupText>
|
|
244
|
+
* </InputGroupAddon>
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
declare function InputGroupText({ className, ...props }: InputGroupTextProps): import("react/jsx-runtime").JSX.Element;
|
|
248
|
+
export interface InputGroupInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* InputGroupInput component - the input element within an InputGroup.
|
|
252
|
+
*
|
|
253
|
+
* Styled to integrate seamlessly with the InputGroup container.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```tsx
|
|
257
|
+
* <InputGroup>
|
|
258
|
+
* <InputGroupInput placeholder="Enter text..." />
|
|
259
|
+
* </InputGroup>
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
declare function InputGroupInput({ className, ...props }: InputGroupInputProps): import("react/jsx-runtime").JSX.Element;
|
|
263
|
+
export interface InputGroupTextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* InputGroupTextarea component - a textarea element within an InputGroup.
|
|
267
|
+
*
|
|
268
|
+
* Styled to integrate seamlessly with the InputGroup container.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```tsx
|
|
272
|
+
* <InputGroup>
|
|
273
|
+
* <InputGroupTextarea placeholder="Enter long text..." rows={4} />
|
|
274
|
+
* </InputGroup>
|
|
275
|
+
* ```
|
|
276
|
+
*/
|
|
277
|
+
declare function InputGroupTextarea({ className, ...props }: InputGroupTextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
278
|
+
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, inputGroupVariants, inputGroupAddonVariants, };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { VariantProps } from 'tailwind-variants';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Input variants for styling based on Figma BaseKit / Interface / Input
|
|
5
|
+
*
|
|
6
|
+
* States (handled via CSS pseudo-classes and props):
|
|
7
|
+
* - Default: White background, subtle border
|
|
8
|
+
* - Hover: Light gray background (via :hover)
|
|
9
|
+
* - Focus: Accent border with focus ring (via :focus-visible)
|
|
10
|
+
* - Error: Error border color (via error prop)
|
|
11
|
+
* - Disabled: Disabled background (via :disabled)
|
|
12
|
+
*
|
|
13
|
+
* Sizes:
|
|
14
|
+
* - sm: Smaller height and padding (36px)
|
|
15
|
+
* - default: Standard height (48px)
|
|
16
|
+
* - lg: Larger height and padding (56px)
|
|
17
|
+
*/
|
|
18
|
+
declare const inputVariants: import('tailwind-variants').TVReturnType<{
|
|
19
|
+
size: {
|
|
20
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
21
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
22
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
23
|
+
};
|
|
24
|
+
error: {
|
|
25
|
+
true: string;
|
|
26
|
+
false: "";
|
|
27
|
+
};
|
|
28
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
29
|
+
size: {
|
|
30
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
31
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
32
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
33
|
+
};
|
|
34
|
+
error: {
|
|
35
|
+
true: string;
|
|
36
|
+
false: "";
|
|
37
|
+
};
|
|
38
|
+
}, {
|
|
39
|
+
size: {
|
|
40
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
41
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
42
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
43
|
+
};
|
|
44
|
+
error: {
|
|
45
|
+
true: string;
|
|
46
|
+
false: "";
|
|
47
|
+
};
|
|
48
|
+
}>, {
|
|
49
|
+
size: {
|
|
50
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
51
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
52
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
53
|
+
};
|
|
54
|
+
error: {
|
|
55
|
+
true: string;
|
|
56
|
+
false: "";
|
|
57
|
+
};
|
|
58
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
59
|
+
size: {
|
|
60
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
61
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
62
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
63
|
+
};
|
|
64
|
+
error: {
|
|
65
|
+
true: string;
|
|
66
|
+
false: "";
|
|
67
|
+
};
|
|
68
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
69
|
+
size: {
|
|
70
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
71
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
72
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
73
|
+
};
|
|
74
|
+
error: {
|
|
75
|
+
true: string;
|
|
76
|
+
false: "";
|
|
77
|
+
};
|
|
78
|
+
}, {
|
|
79
|
+
size: {
|
|
80
|
+
readonly sm: "h-spatial-ui-input-height-small px-spatial-ui-input-padding-x-small py-spatial-ui-input-padding-y-small typography-body-sm-md";
|
|
81
|
+
readonly default: "h-spatial-ui-input-height-medium px-spatial-ui-input-padding-x-medium py-spatial-ui-input-padding-y-medium typography-body-md-md";
|
|
82
|
+
readonly lg: "h-spatial-ui-input-height-large px-spatial-ui-input-padding-x-large py-spatial-ui-input-padding-y-large typography-body-md-lg";
|
|
83
|
+
};
|
|
84
|
+
error: {
|
|
85
|
+
true: string;
|
|
86
|
+
false: "";
|
|
87
|
+
};
|
|
88
|
+
}>, unknown, unknown, undefined>>;
|
|
89
|
+
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
|
|
90
|
+
/**
|
|
91
|
+
* Whether the input is in an error state
|
|
92
|
+
*/
|
|
93
|
+
error?: boolean;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Input component based on Figma BaseKit / Interface / Input
|
|
97
|
+
*
|
|
98
|
+
* A styled text input with support for various states:
|
|
99
|
+
* - Default, hover, focus, error, and disabled states
|
|
100
|
+
* - Three size variants: sm, default, lg
|
|
101
|
+
*
|
|
102
|
+
* Uses semantic UI tokens for theming support.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```tsx
|
|
106
|
+
* // Basic usage
|
|
107
|
+
* <Input placeholder="Enter your email" />
|
|
108
|
+
*
|
|
109
|
+
* // With error state
|
|
110
|
+
* <Input error placeholder="Invalid input" />
|
|
111
|
+
*
|
|
112
|
+
* // Different sizes
|
|
113
|
+
* <Input size="sm" placeholder="Small" />
|
|
114
|
+
* <Input size="lg" placeholder="Large" />
|
|
115
|
+
*
|
|
116
|
+
* // Disabled
|
|
117
|
+
* <Input disabled placeholder="Disabled input" />
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
121
|
+
export { Input, inputVariants };
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Popover as BasePopover } from '@base-ui-components/react/popover';
|
|
2
|
+
import { VariantProps } from 'tailwind-variants';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
/**
|
|
5
|
+
* Popover popup variants
|
|
6
|
+
*
|
|
7
|
+
* Uses semantic overlay tokens for themeable styling:
|
|
8
|
+
* - color.overlay.background - Light background
|
|
9
|
+
* - color.overlay.border - Subtle border
|
|
10
|
+
* - color.overlay.text - Primary text
|
|
11
|
+
* - surface.overlay.radius - Rounded corners
|
|
12
|
+
* - spatial.component.overlay.padding/gap - Consistent spacing
|
|
13
|
+
*/
|
|
14
|
+
declare const popoverPopupVariants: import('tailwind-variants').TVReturnType<{
|
|
15
|
+
variant: {
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
19
|
+
variant: {
|
|
20
|
+
default: string;
|
|
21
|
+
};
|
|
22
|
+
}, {
|
|
23
|
+
variant: {
|
|
24
|
+
default: string;
|
|
25
|
+
};
|
|
26
|
+
}>, {
|
|
27
|
+
variant: {
|
|
28
|
+
default: string;
|
|
29
|
+
};
|
|
30
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
31
|
+
variant: {
|
|
32
|
+
default: string;
|
|
33
|
+
};
|
|
34
|
+
}, undefined, string[], import('tailwind-variants/dist/config.js').TVConfig<{
|
|
35
|
+
variant: {
|
|
36
|
+
default: string;
|
|
37
|
+
};
|
|
38
|
+
}, {
|
|
39
|
+
variant: {
|
|
40
|
+
default: string;
|
|
41
|
+
};
|
|
42
|
+
}>, unknown, unknown, undefined>>;
|
|
43
|
+
/**
|
|
44
|
+
* Popover arrow variants - uses shared floating arrow variants
|
|
45
|
+
*/
|
|
46
|
+
declare const popoverArrowVariants: 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>>;
|
|
47
|
+
export interface PopoverRootProps extends BasePopover.Root.Props {
|
|
48
|
+
children: React.ReactNode;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Popover Root
|
|
52
|
+
*
|
|
53
|
+
* Groups all popover parts. Does not render an element.
|
|
54
|
+
*/
|
|
55
|
+
declare const PopoverRoot: ({ children, ...props }: PopoverRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export interface PopoverTriggerProps extends React.ComponentProps<typeof BasePopover.Trigger> {
|
|
57
|
+
className?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Popover Trigger
|
|
61
|
+
*
|
|
62
|
+
* The element that triggers the popover on click.
|
|
63
|
+
* Renders as the child element with popover behavior attached.
|
|
64
|
+
* When children is a single React element, uses `render` prop to avoid wrapper element.
|
|
65
|
+
*/
|
|
66
|
+
declare const PopoverTrigger: React.ForwardRefExoticComponent<Omit<PopoverTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
67
|
+
export interface PopoverPortalProps extends BasePopover.Portal.Props {
|
|
68
|
+
children: React.ReactNode;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Popover Portal
|
|
72
|
+
*
|
|
73
|
+
* Renders the popover popup in a portal outside the DOM hierarchy.
|
|
74
|
+
*/
|
|
75
|
+
declare const PopoverPortal: ({ children, ...props }: PopoverPortalProps) => import("react/jsx-runtime").JSX.Element;
|
|
76
|
+
export interface PopoverBackdropProps extends Omit<React.ComponentProps<typeof BasePopover.Backdrop>, "className"> {
|
|
77
|
+
className?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Popover Backdrop
|
|
81
|
+
*
|
|
82
|
+
* Optional backdrop element that can be used to close the popover on click.
|
|
83
|
+
*/
|
|
84
|
+
declare const PopoverBackdrop: React.ForwardRefExoticComponent<Omit<PopoverBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
85
|
+
export interface PopoverPositionerProps extends Omit<React.ComponentProps<typeof BasePopover.Positioner>, "className"> {
|
|
86
|
+
className?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Popover Positioner
|
|
90
|
+
*
|
|
91
|
+
* Positions the popover popup relative to the trigger.
|
|
92
|
+
*/
|
|
93
|
+
declare const PopoverPositioner: React.ForwardRefExoticComponent<Omit<PopoverPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
94
|
+
export interface PopoverPopupProps extends Omit<React.ComponentProps<typeof BasePopover.Popup>, "className">, VariantProps<typeof popoverPopupVariants> {
|
|
95
|
+
className?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Popover Popup
|
|
99
|
+
*
|
|
100
|
+
* The popover content container with styled appearance.
|
|
101
|
+
*/
|
|
102
|
+
declare const PopoverPopup: React.ForwardRefExoticComponent<Omit<PopoverPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
103
|
+
export interface PopoverArrowProps extends Omit<React.ComponentProps<typeof BasePopover.Arrow>, "className"> {
|
|
104
|
+
className?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Popover Arrow
|
|
108
|
+
*
|
|
109
|
+
* Visual pointer element for the popover.
|
|
110
|
+
* Uses shared FloatingArrowSvg with overlay color tokens for fill and border.
|
|
111
|
+
*/
|
|
112
|
+
declare const PopoverArrow: React.ForwardRefExoticComponent<Omit<PopoverArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
113
|
+
export interface PopoverTitleProps extends Omit<React.ComponentProps<typeof BasePopover.Title>, "className"> {
|
|
114
|
+
className?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Popover Title
|
|
118
|
+
*
|
|
119
|
+
* Title element for the popover content.
|
|
120
|
+
*/
|
|
121
|
+
declare const PopoverTitle: React.ForwardRefExoticComponent<Omit<PopoverTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
122
|
+
export interface PopoverDescriptionProps extends Omit<React.ComponentProps<typeof BasePopover.Description>, "className"> {
|
|
123
|
+
className?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Popover Description
|
|
127
|
+
*
|
|
128
|
+
* Description element for the popover content.
|
|
129
|
+
*/
|
|
130
|
+
declare const PopoverDescription: React.ForwardRefExoticComponent<Omit<PopoverDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
131
|
+
export interface PopoverCloseProps extends Omit<React.ComponentProps<typeof BasePopover.Close>, "className"> {
|
|
132
|
+
className?: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Popover Close
|
|
136
|
+
*
|
|
137
|
+
* Close button for the popover.
|
|
138
|
+
*/
|
|
139
|
+
declare const PopoverClose: React.ForwardRefExoticComponent<Omit<PopoverCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
140
|
+
export interface PopoverProps {
|
|
141
|
+
/** The content to show in the popover */
|
|
142
|
+
children: React.ReactNode;
|
|
143
|
+
/** The element that triggers the popover */
|
|
144
|
+
trigger: React.ReactNode;
|
|
145
|
+
/** Title for the popover (optional) */
|
|
146
|
+
title?: React.ReactNode;
|
|
147
|
+
/** Side of the trigger to show the popover */
|
|
148
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
149
|
+
/** Offset from the trigger */
|
|
150
|
+
sideOffset?: number;
|
|
151
|
+
/** Alignment along the side */
|
|
152
|
+
align?: "start" | "center" | "end";
|
|
153
|
+
/** Whether to show an arrow */
|
|
154
|
+
showArrow?: boolean;
|
|
155
|
+
/** Whether to show a close button */
|
|
156
|
+
showClose?: boolean;
|
|
157
|
+
/** Controlled open state */
|
|
158
|
+
open?: boolean;
|
|
159
|
+
/** Default open state */
|
|
160
|
+
defaultOpen?: boolean;
|
|
161
|
+
/** Callback when open state changes */
|
|
162
|
+
onOpenChange?: (open: boolean) => void;
|
|
163
|
+
/** Additional className for the popup */
|
|
164
|
+
className?: string;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Popover
|
|
168
|
+
*
|
|
169
|
+
* A simple, pre-composed popover component for common use cases.
|
|
170
|
+
* For more complex needs, use the compound components directly.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```tsx
|
|
174
|
+
* <Popover
|
|
175
|
+
* trigger={<Button>Click me</Button>}
|
|
176
|
+
* title="Popover Title"
|
|
177
|
+
* >
|
|
178
|
+
* <p>This is the popover content.</p>
|
|
179
|
+
* </Popover>
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
declare const Popover: ({ children, trigger, title, side, sideOffset, align, showArrow, showClose, open, defaultOpen, onOpenChange, className, }: PopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
183
|
+
export declare const PopoverParts: (({ children, ...props }: PopoverRootProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
184
|
+
Root: ({ children, ...props }: PopoverRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
185
|
+
Trigger: React.ForwardRefExoticComponent<Omit<PopoverTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
186
|
+
Portal: ({ children, ...props }: PopoverPortalProps) => import("react/jsx-runtime").JSX.Element;
|
|
187
|
+
Backdrop: React.ForwardRefExoticComponent<Omit<PopoverBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
188
|
+
Positioner: React.ForwardRefExoticComponent<Omit<PopoverPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
189
|
+
Popup: React.ForwardRefExoticComponent<Omit<PopoverPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
190
|
+
Arrow: React.ForwardRefExoticComponent<Omit<PopoverArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
191
|
+
Title: React.ForwardRefExoticComponent<Omit<PopoverTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
192
|
+
Description: React.ForwardRefExoticComponent<Omit<PopoverDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
193
|
+
Close: React.ForwardRefExoticComponent<Omit<PopoverCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
194
|
+
};
|
|
195
|
+
export { Popover, PopoverRoot, PopoverTrigger, PopoverPortal, PopoverBackdrop, PopoverPositioner, PopoverPopup, PopoverArrow, PopoverTitle, PopoverDescription, PopoverClose, popoverPopupVariants, popoverArrowVariants, };
|