panelize 0.0.0-stage → 0.1.1
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/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +617 -2
- package/dist/index.d.cts +1815 -0
- package/dist/index.d.ts +1815 -0
- package/dist/panelize.cjs +858 -0
- package/dist/panelize.cjs.map +1 -0
- package/dist/panelize.es.js +3011 -0
- package/dist/panelize.es.js.map +1 -0
- package/docs/accessibility.md +43 -0
- package/docs/components.md +61 -0
- package/docs/composition.md +138 -0
- package/docs/controls.md +47 -0
- package/docs/forms.md +64 -0
- package/docs/layout.md +59 -0
- package/docs/recipes.md +170 -0
- package/docs/shell.md +57 -0
- package/docs/text.md +26 -0
- package/docs/theme.md +121 -0
- package/examples/AGENTS.md +9 -0
- package/examples/cursor-rule.mdc +17 -0
- package/examples/panelize.theme.md +312 -0
- package/llms-full.txt +1206 -0
- package/llms.txt +51 -0
- package/package.json +105 -4
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,1815 @@
|
|
|
1
|
+
// Generated by dts-bundle-generator v9.5.1
|
|
2
|
+
|
|
3
|
+
import { ComponentPropsWithRef, ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
4
|
+
|
|
5
|
+
export declare const panelVariants: readonly [
|
|
6
|
+
"muted",
|
|
7
|
+
"base",
|
|
8
|
+
"highlighted"
|
|
9
|
+
];
|
|
10
|
+
export type PanelVariant = (typeof panelVariants)[number];
|
|
11
|
+
/** Type roles on a panel surface. Brand and status chromas are global, not per variant. */
|
|
12
|
+
export declare const panelTextRoles: readonly [
|
|
13
|
+
"base",
|
|
14
|
+
"muted",
|
|
15
|
+
"highlighted"
|
|
16
|
+
];
|
|
17
|
+
export type PanelTextRole = (typeof panelTextRoles)[number];
|
|
18
|
+
export type PanelTextColors = Record<PanelTextRole, string>;
|
|
19
|
+
export type PanelColors = {
|
|
20
|
+
background: string;
|
|
21
|
+
text: PanelTextColors;
|
|
22
|
+
border: string;
|
|
23
|
+
};
|
|
24
|
+
export type AppColors = {
|
|
25
|
+
background?: string;
|
|
26
|
+
text?: string;
|
|
27
|
+
};
|
|
28
|
+
type ThemeColors = Record<PanelVariant, PanelColors> & {
|
|
29
|
+
app?: AppColors;
|
|
30
|
+
};
|
|
31
|
+
/** Runtime / authoring schemes. Surfaces stay `muted` / `base` / `highlighted`. */
|
|
32
|
+
export declare const colorSchemeTokens: readonly [
|
|
33
|
+
"dark",
|
|
34
|
+
"light"
|
|
35
|
+
];
|
|
36
|
+
export type ColorScheme = (typeof colorSchemeTokens)[number];
|
|
37
|
+
export type ColorSchemes = Record<ColorScheme, ThemeColors>;
|
|
38
|
+
/** App brand chromas. Use on `Text` as `color="primary"`. Not panel variants. */
|
|
39
|
+
export declare const brandTokens: readonly [
|
|
40
|
+
"primary",
|
|
41
|
+
"secondary",
|
|
42
|
+
"accent"
|
|
43
|
+
];
|
|
44
|
+
export type BrandToken = (typeof brandTokens)[number];
|
|
45
|
+
/** Meaning chromas. Shared across schemes. Not brand. No `subtle` — mix into `--panelize-bg`. */
|
|
46
|
+
export declare const statusTokens: readonly [
|
|
47
|
+
"danger",
|
|
48
|
+
"warning",
|
|
49
|
+
"success",
|
|
50
|
+
"info"
|
|
51
|
+
];
|
|
52
|
+
export type StatusToken = (typeof statusTokens)[number];
|
|
53
|
+
export declare const brandStateTokens: readonly [
|
|
54
|
+
"base",
|
|
55
|
+
"hover",
|
|
56
|
+
"active"
|
|
57
|
+
];
|
|
58
|
+
export type BrandStateToken = (typeof brandStateTokens)[number];
|
|
59
|
+
/** Resolved brand slot. `color="primary"` uses `base`. */
|
|
60
|
+
export type BrandState = Record<BrandStateToken, string>;
|
|
61
|
+
/** Same `{ base, hover, active }` as brand. Status uses this too. */
|
|
62
|
+
export type ChromaState = BrandState;
|
|
63
|
+
export type BrandColors = Record<BrandToken, ChromaState>;
|
|
64
|
+
/** Hex (`#ff9f2e`) expands to base/hover/active, or set those keys. */
|
|
65
|
+
export type BrandSlotOverride = string | Partial<BrandState>;
|
|
66
|
+
export type BrandOverrides = Partial<Record<BrandToken, BrandSlotOverride>>;
|
|
67
|
+
export type StatusColors = Record<StatusToken, ChromaState>;
|
|
68
|
+
export type StatusOverrides = Partial<Record<StatusToken, BrandSlotOverride>>;
|
|
69
|
+
/** Brand (`primary`), status (`danger`), or raw CSS. Token → that slot’s `.base`. */
|
|
70
|
+
export type ColorValue = BrandToken | StatusToken | (string & {});
|
|
71
|
+
export declare const spaceTokens: readonly [
|
|
72
|
+
"none",
|
|
73
|
+
"extraSmall",
|
|
74
|
+
"small",
|
|
75
|
+
"base",
|
|
76
|
+
"large",
|
|
77
|
+
"extraLarge"
|
|
78
|
+
];
|
|
79
|
+
export type SpaceToken = (typeof spaceTokens)[number];
|
|
80
|
+
export type SpaceScale = Record<SpaceToken, string>;
|
|
81
|
+
/** A space token (`small`), `auto`, or a raw CSS length (`1rem`, `100%`). */
|
|
82
|
+
export type SpaceValue = SpaceToken | (string & {});
|
|
83
|
+
type SpacingDefaults = {
|
|
84
|
+
padding: SpaceToken;
|
|
85
|
+
margin: SpaceToken;
|
|
86
|
+
};
|
|
87
|
+
type LayoutDefaults = SpacingDefaults & {
|
|
88
|
+
borderWidth: SpaceToken;
|
|
89
|
+
borderRadius: SpaceToken;
|
|
90
|
+
};
|
|
91
|
+
type RowDefaults = LayoutDefaults & {
|
|
92
|
+
height: SpaceValue;
|
|
93
|
+
};
|
|
94
|
+
type ColDefaults = LayoutDefaults & {
|
|
95
|
+
width: SpaceValue;
|
|
96
|
+
};
|
|
97
|
+
export declare const alignValues: readonly [
|
|
98
|
+
"start",
|
|
99
|
+
"end",
|
|
100
|
+
"center",
|
|
101
|
+
"stretch",
|
|
102
|
+
"baseline",
|
|
103
|
+
"space-between",
|
|
104
|
+
"space-around",
|
|
105
|
+
"space-evenly"
|
|
106
|
+
];
|
|
107
|
+
export type AlignValue = (typeof alignValues)[number];
|
|
108
|
+
export declare const scrollValues: readonly [
|
|
109
|
+
"vertical",
|
|
110
|
+
"horizontal",
|
|
111
|
+
"both"
|
|
112
|
+
];
|
|
113
|
+
export type ScrollValue = (typeof scrollValues)[number];
|
|
114
|
+
type FlexDefaults = SpacingDefaults & {
|
|
115
|
+
gap: SpaceToken;
|
|
116
|
+
alignX: AlignValue;
|
|
117
|
+
alignY: AlignValue;
|
|
118
|
+
};
|
|
119
|
+
type PanelsDefaults = SpacingDefaults & {
|
|
120
|
+
gap: SpaceToken;
|
|
121
|
+
};
|
|
122
|
+
type ThemeDefaults = {
|
|
123
|
+
panel: LayoutDefaults;
|
|
124
|
+
/** Spacing and gap. Align is instance-only because `Panels` is row or column. */
|
|
125
|
+
panels: PanelsDefaults;
|
|
126
|
+
rows: FlexDefaults;
|
|
127
|
+
row: RowDefaults;
|
|
128
|
+
cols: FlexDefaults;
|
|
129
|
+
col: ColDefaults;
|
|
130
|
+
/** Gap and item align (`stretch` / `stretch`). Track counts are instance-only (`numCols` / `numRows`). */
|
|
131
|
+
grid: FlexDefaults;
|
|
132
|
+
cell: LayoutDefaults;
|
|
133
|
+
div: LayoutDefaults;
|
|
134
|
+
text: TextDefaults;
|
|
135
|
+
heading: HeadingDefaults;
|
|
136
|
+
textLink: TextLinkDefaults;
|
|
137
|
+
button: ButtonDefaults;
|
|
138
|
+
chip: ChipDefaults;
|
|
139
|
+
input: InputDefaults;
|
|
140
|
+
textarea: TextareaDefaults;
|
|
141
|
+
select: SelectDefaults;
|
|
142
|
+
switch: SwitchDefaults;
|
|
143
|
+
checkbox: CheckboxDefaults;
|
|
144
|
+
radio: RadioDefaults;
|
|
145
|
+
};
|
|
146
|
+
export declare const breakpointTokens: readonly [
|
|
147
|
+
"sm",
|
|
148
|
+
"md",
|
|
149
|
+
"lg"
|
|
150
|
+
];
|
|
151
|
+
export type BreakpointToken = (typeof breakpointTokens)[number];
|
|
152
|
+
export type BreakpointScale = Record<BreakpointToken, string>;
|
|
153
|
+
/** A breakpoint token (`sm`) or a raw CSS length (`40rem`). */
|
|
154
|
+
export type StackValue = BreakpointToken | (string & {});
|
|
155
|
+
export declare const fontSizeTokens: readonly [
|
|
156
|
+
"extraSmall",
|
|
157
|
+
"small",
|
|
158
|
+
"base",
|
|
159
|
+
"large",
|
|
160
|
+
"extraLarge"
|
|
161
|
+
];
|
|
162
|
+
export type FontSizeToken = (typeof fontSizeTokens)[number];
|
|
163
|
+
export type FontSizeScale = Record<FontSizeToken, string>;
|
|
164
|
+
/** A font size token (`small`) or a raw CSS size (`1.125rem`). */
|
|
165
|
+
export type FontSizeValue = FontSizeToken | (string & {});
|
|
166
|
+
export declare const fontWeightTokens: readonly [
|
|
167
|
+
"thin",
|
|
168
|
+
"base",
|
|
169
|
+
"bold",
|
|
170
|
+
"heavy"
|
|
171
|
+
];
|
|
172
|
+
export type FontWeightToken = (typeof fontWeightTokens)[number];
|
|
173
|
+
export type FontWeightScale = Record<FontWeightToken, string>;
|
|
174
|
+
/** A font weight token (`thin` / `base` / `bold` / `heavy`) or a raw CSS weight (`600`). */
|
|
175
|
+
export type FontWeightValue = FontWeightToken | (string & {});
|
|
176
|
+
export declare const fontFamilyTokens: readonly [
|
|
177
|
+
"base",
|
|
178
|
+
"display",
|
|
179
|
+
"mono"
|
|
180
|
+
];
|
|
181
|
+
export type FontFamilyToken = (typeof fontFamilyTokens)[number];
|
|
182
|
+
export type FontFamilyScale = Record<FontFamilyToken, string>;
|
|
183
|
+
type TextDefaults = {
|
|
184
|
+
size: FontSizeToken;
|
|
185
|
+
/** Default `base` (`400`) so `Text` does not inherit a parent’s weight. */
|
|
186
|
+
weight: FontWeightToken;
|
|
187
|
+
};
|
|
188
|
+
export declare const headingLevels: readonly [
|
|
189
|
+
1,
|
|
190
|
+
2,
|
|
191
|
+
3,
|
|
192
|
+
4,
|
|
193
|
+
5,
|
|
194
|
+
6
|
|
195
|
+
];
|
|
196
|
+
export type HeadingLevel = (typeof headingLevels)[number];
|
|
197
|
+
/** UA-like `h1`–`h6` sizes (`2rem` … `0.67rem`). Instance `size` overrides. */
|
|
198
|
+
export type HeadingSizeScale = Record<HeadingLevel, string>;
|
|
199
|
+
export type HeadingDefaults = {
|
|
200
|
+
size: HeadingSizeScale;
|
|
201
|
+
/** Default `bold` (browser headings). */
|
|
202
|
+
weight: FontWeightToken;
|
|
203
|
+
/** Default `display`. Instance `family` overrides. */
|
|
204
|
+
family: FontFamilyToken;
|
|
205
|
+
};
|
|
206
|
+
/** `hover: 'primary'` with rest `primary` uses that slot’s `.hover`. `inherit` = panel `text.base`. */
|
|
207
|
+
export type TextLinkHoverValue = ColorValue | "inherit";
|
|
208
|
+
export type TextLinkDefaults = {
|
|
209
|
+
/** Rest color. Default `primary` (that slot’s `.base`). */
|
|
210
|
+
color: ColorValue;
|
|
211
|
+
/** Hover color. Default `primary` (that slot’s `.hover` when rest is also `primary`). */
|
|
212
|
+
hover: TextLinkHoverValue;
|
|
213
|
+
/** Underline on `:hover`. Default `false`. Rest `underlined` still stays underlined on hover. */
|
|
214
|
+
hoverUnderline: boolean;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Filled hover paints. Instance `color` owns chroma (`.hover` / `.active`).
|
|
218
|
+
* `background` is only a raw CSS override for the filled hover fill.
|
|
219
|
+
*/
|
|
220
|
+
export type ButtonHoverDefaults = {
|
|
221
|
+
/** Filled hover/active label. Brand/status token → that slot’s `.base`. Default `palette.black`. */
|
|
222
|
+
color: ColorValue;
|
|
223
|
+
/** Omit = instance slot `.hover`. Raw CSS replaces filled hover/active fill. Brand/status tokens are ignored. */
|
|
224
|
+
background?: string;
|
|
225
|
+
};
|
|
226
|
+
/** Badge chrome. Fill is `color-mix` of chroma into `--panelize-bg` at `tint`. */
|
|
227
|
+
export type ChipDefaults = {
|
|
228
|
+
/** Brand or status slot. Default `primary`. */
|
|
229
|
+
color: ColorValue;
|
|
230
|
+
/** Default `extraSmall` (`0.75rem`). */
|
|
231
|
+
size: FontSizeValue;
|
|
232
|
+
weight: FontWeightToken;
|
|
233
|
+
/** Share of chroma in `color-mix` against the panel background. Default `12%`. */
|
|
234
|
+
tint: string;
|
|
235
|
+
paddingX: SpaceValue;
|
|
236
|
+
paddingY: SpaceValue;
|
|
237
|
+
gap: SpaceValue;
|
|
238
|
+
/** Capsule. Default `999px`. */
|
|
239
|
+
borderRadius: SpaceValue;
|
|
240
|
+
/** Default `true`. */
|
|
241
|
+
uppercase: boolean;
|
|
242
|
+
};
|
|
243
|
+
/** Chrome for `Input` / `NumberInput`. Rest is panel vars; `color` is focus chroma (not ink). */
|
|
244
|
+
export type InputDefaults = {
|
|
245
|
+
/** Brand or status slot for focus border, glow, and caret. Default `primary`. */
|
|
246
|
+
color: ColorValue;
|
|
247
|
+
size: FontSizeToken;
|
|
248
|
+
/** Default `base` (`400`). */
|
|
249
|
+
weight: FontWeightToken;
|
|
250
|
+
paddingX: SpaceValue;
|
|
251
|
+
paddingY: SpaceValue;
|
|
252
|
+
borderWidth: SpaceToken;
|
|
253
|
+
borderRadius: SpaceToken;
|
|
254
|
+
};
|
|
255
|
+
/** Chrome for `Textarea`. Field keys inherit merged `defaults.input` unless overridden here. */
|
|
256
|
+
export type TextareaDefaults = InputDefaults & {
|
|
257
|
+
/** Vertical resize handle. Default `false`. */
|
|
258
|
+
resize: boolean;
|
|
259
|
+
/** Native `rows`. Default `3`. */
|
|
260
|
+
rows: number;
|
|
261
|
+
};
|
|
262
|
+
/** Chrome for `Select`. Field keys inherit merged `defaults.input` unless overridden here. */
|
|
263
|
+
export type SelectDefaults = InputDefaults & {
|
|
264
|
+
/** Menu max height (CSS). Default `16rem`. */
|
|
265
|
+
listMaxHeight: string;
|
|
266
|
+
/** Gap between trigger and menu. Default `extraSmall`. */
|
|
267
|
+
listOffset: SpaceToken;
|
|
268
|
+
/** Option row padding X. Default `base`. */
|
|
269
|
+
optionPaddingX: SpaceToken;
|
|
270
|
+
/** Option row padding Y. Default `extraSmall`. */
|
|
271
|
+
optionPaddingY: SpaceToken;
|
|
272
|
+
/** Menu stacking order. Default `1100`. */
|
|
273
|
+
listZIndex: number;
|
|
274
|
+
/** Menu drop shadow. Default `0 8px 24px rgb(0 0 0 / 35%)`. */
|
|
275
|
+
listShadow: string;
|
|
276
|
+
};
|
|
277
|
+
/** Chrome for `Switch`. Track height is type size × `lineHeight`. */
|
|
278
|
+
export type SwitchDefaults = {
|
|
279
|
+
/** Brand or status slot for the on track. Default `primary`. */
|
|
280
|
+
color: ColorValue;
|
|
281
|
+
/** Type size the track is built for. Default `base`. */
|
|
282
|
+
size: FontSizeToken;
|
|
283
|
+
/** Thumb fill. Default `palette.white`. */
|
|
284
|
+
ink: string;
|
|
285
|
+
/** Track width as a multiple of the type size. Default `2`. */
|
|
286
|
+
widthFactor: number;
|
|
287
|
+
/** Inset on every edge as a multiple of the type size. Default `0.2`. Thumb is height − 2×this. */
|
|
288
|
+
insetFactor: number;
|
|
289
|
+
/** Track radius. Default `999px` (capsule). Instance `borderRadius` overrides. Thumb follows `min(this, 50%)`. */
|
|
290
|
+
borderRadius: SpaceValue;
|
|
291
|
+
};
|
|
292
|
+
/** Chrome for `Checkbox`. Box is the type size (`1em`), square. */
|
|
293
|
+
export type CheckboxDefaults = {
|
|
294
|
+
/** Brand or status slot for the on fill. Default `primary`. */
|
|
295
|
+
color: ColorValue;
|
|
296
|
+
/** Type size the box is built for. Default `base`. */
|
|
297
|
+
size: FontSizeToken;
|
|
298
|
+
/** Check / dash on the on fill. Default `palette.black` (same as filled `Button`). */
|
|
299
|
+
ink: string;
|
|
300
|
+
/** Rest stroke. Default `extraSmall` (`1px`). */
|
|
301
|
+
borderWidth: SpaceToken;
|
|
302
|
+
/** Box radius. Default `small`. */
|
|
303
|
+
borderRadius: SpaceValue;
|
|
304
|
+
};
|
|
305
|
+
/** Chrome for `Radio`. Box is the type size (`1em`), circle. */
|
|
306
|
+
export type RadioDefaults = {
|
|
307
|
+
/** Brand or status slot for the checked ring and inner disc. Default `primary`. */
|
|
308
|
+
color: ColorValue;
|
|
309
|
+
/** Type size the box is built for. Default `base`. */
|
|
310
|
+
size: FontSizeToken;
|
|
311
|
+
/** Rest stroke. Default `extraSmall` (`1px`). */
|
|
312
|
+
borderWidth: SpaceToken;
|
|
313
|
+
/** Box radius. Default `999px` (circle). Instance `borderRadius` overrides. Inner disc follows `min(this, 50%)`. */
|
|
314
|
+
borderRadius: SpaceValue;
|
|
315
|
+
/** Gap from the inner edge of the ring to the disc, as a multiple of the type size. Default `0.22`. */
|
|
316
|
+
insetFactor: number;
|
|
317
|
+
};
|
|
318
|
+
/** Chrome for `Button`. `color` is the chroma slot; `ink` is the filled rest label. */
|
|
319
|
+
export type ButtonDefaults = {
|
|
320
|
+
/** Brand or status slot. Default `primary`. */
|
|
321
|
+
color: ColorValue;
|
|
322
|
+
size: FontSizeToken;
|
|
323
|
+
weight: FontWeightToken;
|
|
324
|
+
/** Filled rest label. Outline rest uses the chroma slot instead. Default `palette.black`. */
|
|
325
|
+
ink: string;
|
|
326
|
+
hover: ButtonHoverDefaults;
|
|
327
|
+
paddingX: SpaceValue;
|
|
328
|
+
paddingY: SpaceValue;
|
|
329
|
+
/** Flex gap between children (icon + label). Default `extraSmall`. */
|
|
330
|
+
gap: SpaceValue;
|
|
331
|
+
borderWidth: SpaceValue;
|
|
332
|
+
borderRadius: SpaceValue;
|
|
333
|
+
};
|
|
334
|
+
export type PanelizeTheme = {
|
|
335
|
+
/** Active scheme. Default `dark`. Set on `PanelizeProvider`, not in `createPanelizeTheme`. */
|
|
336
|
+
mode: ColorScheme;
|
|
337
|
+
/** Both scheme maps. Input is `createPanelizeTheme({ colors: { dark, light } })`. */
|
|
338
|
+
colorSchemes: ColorSchemes;
|
|
339
|
+
/**
|
|
340
|
+
* Active surfaces only (`muted` / `base` / `highlighted` / `app`). Not `{ dark, light }`.
|
|
341
|
+
* `Panel` / `usePanelizeTheme().colors` read this. Both maps are `colorSchemes`.
|
|
342
|
+
*/
|
|
343
|
+
colors: ThemeColors;
|
|
344
|
+
/** Global brand chromas. Shared across schemes. `Text` `color="primary"` reads `brand.primary.base`. */
|
|
345
|
+
brand: BrandColors;
|
|
346
|
+
/** Meaning chromas. Shared across schemes. `Text` `color="danger"` reads `status.danger.base`. */
|
|
347
|
+
status: StatusColors;
|
|
348
|
+
space: SpaceScale;
|
|
349
|
+
borderWidths: SpaceScale;
|
|
350
|
+
radii: SpaceScale;
|
|
351
|
+
breakpoints: BreakpointScale;
|
|
352
|
+
fontSizes: FontSizeScale;
|
|
353
|
+
fontWeights: FontWeightScale;
|
|
354
|
+
fontFamilies: FontFamilyScale;
|
|
355
|
+
/**
|
|
356
|
+
* Unitless `line-height` on `Text` (`font-size × this`). Default `1.2`.
|
|
357
|
+
* `Checkbox` / `Radio` use the type size (`1em`), not this. `Switch` track height is type × this.
|
|
358
|
+
*/
|
|
359
|
+
lineHeight: number | string;
|
|
360
|
+
defaults: ThemeDefaults;
|
|
361
|
+
};
|
|
362
|
+
type DeepPartial<T> = {
|
|
363
|
+
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
364
|
+
};
|
|
365
|
+
/** `createPanelizeTheme` input. `colors.dark` / `colors.light` are scheme maps. `mode` is a provider prop. */
|
|
366
|
+
export type PanelizeThemeOverrides = Omit<DeepPartial<PanelizeTheme>, "brand" | "status" | "colors" | "colorSchemes" | "mode"> & {
|
|
367
|
+
brand?: BrandOverrides;
|
|
368
|
+
status?: StatusOverrides;
|
|
369
|
+
/**
|
|
370
|
+
* Scheme maps (`dark` / `light`), each with `muted` / `base` / `highlighted` / `app`.
|
|
371
|
+
* Top-level `muted` (old shape) is ignored. `dark` here is a scheme, not a panel variant.
|
|
372
|
+
*/
|
|
373
|
+
colors?: Partial<Record<ColorScheme, DeepPartial<ThemeColors>>>;
|
|
374
|
+
};
|
|
375
|
+
export declare const defaultBorderWidths: SpaceScale;
|
|
376
|
+
export declare const defaultRadii: SpaceScale;
|
|
377
|
+
/**
|
|
378
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`),
|
|
379
|
+
* or raw CSS. `base` is the panel `base` surface, not a brand slot.
|
|
380
|
+
*/
|
|
381
|
+
export type PaintValue = PanelVariant | BrandToken | StatusToken | (string & {});
|
|
382
|
+
/** Same tokens as `PaintValue`. `base` is the panel `base` border, not a brand slot. */
|
|
383
|
+
export type BorderColorValue = PaintValue;
|
|
384
|
+
/** Token/CSS for every step, or per-step overrides. Omitted keys fall through to the control default. */
|
|
385
|
+
export type PaintSteps = PaintValue | Partial<Record<BrandStateToken, PaintValue>>;
|
|
386
|
+
/** Width cascade: `borderWidth` → `borderX` / `borderY` → `borderTop` / … Same tokens as `borderWidth`. */
|
|
387
|
+
export type DirectionalBorderProps = {
|
|
388
|
+
/** All sides. Token (`extraSmall` = 1px) or CSS. Theme default `none`. */
|
|
389
|
+
borderWidth?: SpaceValue;
|
|
390
|
+
/** Left and right. Overrides `borderWidth`. */
|
|
391
|
+
borderX?: SpaceValue;
|
|
392
|
+
/** Top and bottom. Overrides `borderWidth`. */
|
|
393
|
+
borderY?: SpaceValue;
|
|
394
|
+
/** Overrides `borderWidth` and `borderY` on this side. */
|
|
395
|
+
borderTop?: SpaceValue;
|
|
396
|
+
/** Overrides `borderWidth` and `borderX` on this side. */
|
|
397
|
+
borderRight?: SpaceValue;
|
|
398
|
+
/** Overrides `borderWidth` and `borderY` on this side. */
|
|
399
|
+
borderBottom?: SpaceValue;
|
|
400
|
+
/** Overrides `borderWidth` and `borderX` on this side. */
|
|
401
|
+
borderLeft?: SpaceValue;
|
|
402
|
+
};
|
|
403
|
+
/** Tailwind `sm` / `md` / `lg` widths, in rem (16px root). */
|
|
404
|
+
export declare const defaultBreakpoints: BreakpointScale;
|
|
405
|
+
/** Named aliases on the 7-step ramp. Same names as later hue ramps (`palette.red.dark`, …). */
|
|
406
|
+
export declare const grayTokens: readonly [
|
|
407
|
+
"extraDark",
|
|
408
|
+
"dark",
|
|
409
|
+
"base",
|
|
410
|
+
"light",
|
|
411
|
+
"extraLight"
|
|
412
|
+
];
|
|
413
|
+
export type GrayToken = (typeof grayTokens)[number];
|
|
414
|
+
/** Even-L* grayscale including black (`0`) and white (`6`). */
|
|
415
|
+
export declare const grayRampTokens: readonly [
|
|
416
|
+
0,
|
|
417
|
+
1,
|
|
418
|
+
2,
|
|
419
|
+
3,
|
|
420
|
+
4,
|
|
421
|
+
5,
|
|
422
|
+
6
|
|
423
|
+
];
|
|
424
|
+
export type GrayRampToken = (typeof grayRampTokens)[number];
|
|
425
|
+
export type GrayScale = Record<GrayToken | GrayRampToken, string>;
|
|
426
|
+
/**
|
|
427
|
+
* Importable color bank. Not a `createPanelizeTheme` key.
|
|
428
|
+
* `palette.gray[0]`–`[6]` is the CVD-spaced ramp. Names alias those steps.
|
|
429
|
+
* Adjacent steps are not a text-on-fill pair — skip at least one.
|
|
430
|
+
*/
|
|
431
|
+
export declare const palette: {
|
|
432
|
+
readonly black: "#000000";
|
|
433
|
+
readonly white: "#ffffff";
|
|
434
|
+
readonly gray: {
|
|
435
|
+
0: "#000000";
|
|
436
|
+
1: "#292929";
|
|
437
|
+
2: "#4e4e4e";
|
|
438
|
+
3: "#777777";
|
|
439
|
+
4: "#a2a2a2";
|
|
440
|
+
5: "#d0d0d0";
|
|
441
|
+
6: "#ffffff";
|
|
442
|
+
extraDark: "#292929";
|
|
443
|
+
dark: "#4e4e4e";
|
|
444
|
+
base: "#777777";
|
|
445
|
+
light: "#a2a2a2";
|
|
446
|
+
extraLight: "#d0d0d0";
|
|
447
|
+
};
|
|
448
|
+
};
|
|
449
|
+
export type Palette = typeof palette;
|
|
450
|
+
export declare const defaultTheme: PanelizeTheme;
|
|
451
|
+
/**
|
|
452
|
+
* Merge overrides onto library defaults. Author `colors.dark` / `colors.light`.
|
|
453
|
+
* The returned `colors` is the **dark slice**; both maps are `colorSchemes`.
|
|
454
|
+
* Pass `mode` to `PanelizeProvider`, not here. Export a stable object and wrap with
|
|
455
|
+
* `PanelizeProvider`. Full keys: `examples/panelize.theme.md`.
|
|
456
|
+
*/
|
|
457
|
+
export declare function createPanelizeTheme(overrides?: PanelizeThemeOverrides): PanelizeTheme;
|
|
458
|
+
export type GridAlignProps = {
|
|
459
|
+
/**
|
|
460
|
+
* Left–right alignment of items in their cells (`justify-items`).
|
|
461
|
+
* Omitted: `stretch` (theme `defaults.grid`). Not flex packing — `space-*` does not apply.
|
|
462
|
+
*/
|
|
463
|
+
alignX?: AlignValue;
|
|
464
|
+
/**
|
|
465
|
+
* Top–bottom alignment of items in their cells (`align-items`).
|
|
466
|
+
* Omitted: `stretch` (theme `defaults.grid`). Not flex packing — `space-*` does not apply.
|
|
467
|
+
*/
|
|
468
|
+
alignY?: AlignValue;
|
|
469
|
+
};
|
|
470
|
+
export type SelfAlignProps = {
|
|
471
|
+
/**
|
|
472
|
+
* Left–right alignment of this box in its parent track (`align-self` in a column flex /
|
|
473
|
+
* `justify-self` on a grid). Omitted: inherit. No-op in a row flex (`Cols`, `horizontal` `Panels`).
|
|
474
|
+
* `space-*` does not apply.
|
|
475
|
+
*/
|
|
476
|
+
alignX?: AlignValue;
|
|
477
|
+
/**
|
|
478
|
+
* Top–bottom alignment of this box in its parent track (`align-self` in a row flex /
|
|
479
|
+
* `align-self` on a grid). Omitted: inherit. No-op in a column flex (`Rows`, default `Panels`).
|
|
480
|
+
* `space-*` does not apply.
|
|
481
|
+
*/
|
|
482
|
+
alignY?: AlignValue;
|
|
483
|
+
};
|
|
484
|
+
type FlexAlignProps = {
|
|
485
|
+
/**
|
|
486
|
+
* Left–right alignment. Same meaning on `Panels`, `Rows`, and `Cols`.
|
|
487
|
+
* Omitted: cross-axis `stretch`, main-axis `start` (CSS flex initials for this direction).
|
|
488
|
+
* `Rows` / `Cols` load that pair from `defaults.rows` / `defaults.cols`.
|
|
489
|
+
* `Panels` uses the same initials for the current direction (column vs `horizontal`).
|
|
490
|
+
* `space-*` only does something when X is the main axis (`horizontal` `Panels` / `Cols`).
|
|
491
|
+
* `baseline` only does something when X is the cross axis (default `Panels` / `Rows`).
|
|
492
|
+
*/
|
|
493
|
+
alignX?: AlignValue;
|
|
494
|
+
/**
|
|
495
|
+
* Top–bottom alignment. Same meaning on `Panels`, `Rows`, and `Cols`.
|
|
496
|
+
* Omitted: same initials as `alignX` (cross `stretch`, main `start`).
|
|
497
|
+
* `space-*` only does something when Y is the main axis (default `Panels` / `Rows`).
|
|
498
|
+
* `baseline` only does something when Y is the cross axis (`horizontal` `Panels` / `Cols`).
|
|
499
|
+
*/
|
|
500
|
+
alignY?: AlignValue;
|
|
501
|
+
};
|
|
502
|
+
/** Tailwind-adjacent rem scale (16px root). */
|
|
503
|
+
export declare const defaultFontSizes: FontSizeScale;
|
|
504
|
+
/** CSS `font-weight`. `Text` defaults to `base` so parent weight does not leak. Host must load `thin` (100). */
|
|
505
|
+
export declare const defaultFontWeights: FontWeightScale;
|
|
506
|
+
/** Host apps must load these files. The library only sets `font-family`. */
|
|
507
|
+
export declare const defaultFontFamilies: FontFamilyScale;
|
|
508
|
+
/** Unitless UI leading (`font-size × this`). Tight so flex centers the glyphs, not extra leading. */
|
|
509
|
+
export declare const defaultLineHeight = 1.2;
|
|
510
|
+
type ScrollProps = {
|
|
511
|
+
/**
|
|
512
|
+
* Scroll this box when content overflows. Opt in on `Panels` and `Panel` only
|
|
513
|
+
* (`Rows` / `Cols` are stacks, not scrollports).
|
|
514
|
+
* `vertical` / `horizontal` / `both`. Omit for no clip.
|
|
515
|
+
* Horizontal still needs inner content wider than this box (`width` / `minWidth` on children).
|
|
516
|
+
*/
|
|
517
|
+
scroll?: ScrollValue;
|
|
518
|
+
};
|
|
519
|
+
export declare const appCssVars: {
|
|
520
|
+
readonly background: "--panelize-app-bg";
|
|
521
|
+
readonly text: "--panelize-app-text";
|
|
522
|
+
};
|
|
523
|
+
/**
|
|
524
|
+
* Puts the theme on the tree. Wrap the host once. Does not replace the host’s styled-components
|
|
525
|
+
* `ThemeProvider`. Does not set `html` / `body`. `mode` selects `dark` / `light`.
|
|
526
|
+
*
|
|
527
|
+
* @example
|
|
528
|
+
* ```tsx
|
|
529
|
+
* <PanelizeProvider theme={panelizeTheme} mode={mode}>
|
|
530
|
+
* <App />
|
|
531
|
+
* </PanelizeProvider>
|
|
532
|
+
* ```
|
|
533
|
+
*/
|
|
534
|
+
export declare function PanelizeProvider({ theme, mode, children, }: {
|
|
535
|
+
theme?: PanelizeTheme | PanelizeThemeOverrides;
|
|
536
|
+
/**
|
|
537
|
+
* Active color scheme. Default `dark`. Hosts toggle by passing the other value.
|
|
538
|
+
* Sets CSS `color-scheme` on the canvas wrapper (native scrollbars / form controls).
|
|
539
|
+
*/
|
|
540
|
+
mode?: ColorScheme;
|
|
541
|
+
children: ReactNode;
|
|
542
|
+
}): import("react").JSX.Element;
|
|
543
|
+
/**
|
|
544
|
+
* Active theme for views and custom components. `.colors` is the current scheme’s surfaces
|
|
545
|
+
* (`muted` / `base` / `highlighted` / `app`), not `{ dark, light }`. `.mode` is the scheme name.
|
|
546
|
+
* `.brand` / `.status` are shared. Prefer inheriting `--panelize-*` from the nearest `Panel`
|
|
547
|
+
* when you only need surface paint.
|
|
548
|
+
*
|
|
549
|
+
* @example
|
|
550
|
+
* ```tsx
|
|
551
|
+
* const { colors, space } = usePanelizeTheme()
|
|
552
|
+
* ```
|
|
553
|
+
*/
|
|
554
|
+
export declare function usePanelizeTheme(): PanelizeTheme;
|
|
555
|
+
export declare const defaultSpace: SpaceScale;
|
|
556
|
+
export type DirectionalSpacingProps = {
|
|
557
|
+
/** Horizontal padding (left and right). Overrides `padding`. */
|
|
558
|
+
paddingX?: SpaceValue;
|
|
559
|
+
/** Vertical padding (top and bottom). Overrides `padding`. */
|
|
560
|
+
paddingY?: SpaceValue;
|
|
561
|
+
/** Overrides `padding` and `paddingY` on this side. */
|
|
562
|
+
paddingTop?: SpaceValue;
|
|
563
|
+
/** Overrides `padding` and `paddingX` on this side. */
|
|
564
|
+
paddingRight?: SpaceValue;
|
|
565
|
+
/** Overrides `padding` and `paddingY` on this side. */
|
|
566
|
+
paddingBottom?: SpaceValue;
|
|
567
|
+
/** Overrides `padding` and `paddingX` on this side. */
|
|
568
|
+
paddingLeft?: SpaceValue;
|
|
569
|
+
/** Horizontal margin (left and right). Overrides `margin`. */
|
|
570
|
+
marginX?: SpaceValue;
|
|
571
|
+
/** Vertical margin (top and bottom). Overrides `margin`. */
|
|
572
|
+
marginY?: SpaceValue;
|
|
573
|
+
/** Overrides `margin` and `marginY` on this side. */
|
|
574
|
+
marginTop?: SpaceValue;
|
|
575
|
+
/** Overrides `margin` and `marginX` on this side. */
|
|
576
|
+
marginRight?: SpaceValue;
|
|
577
|
+
/** Overrides `margin` and `marginY` on this side. */
|
|
578
|
+
marginBottom?: SpaceValue;
|
|
579
|
+
/** Overrides `margin` and `marginX` on this side. */
|
|
580
|
+
marginLeft?: SpaceValue;
|
|
581
|
+
};
|
|
582
|
+
export type BoxSpacingProps = DirectionalSpacingProps & {
|
|
583
|
+
/** Padding on all sides. Space token or CSS length. Theme default if omitted. */
|
|
584
|
+
padding?: SpaceValue;
|
|
585
|
+
/** Margin on all sides. Space token or CSS length. Theme default if omitted. */
|
|
586
|
+
margin?: SpaceValue;
|
|
587
|
+
};
|
|
588
|
+
export type SizeLimitProps = {
|
|
589
|
+
/** Minimum width. Space token or CSS. Omitted means no min. */
|
|
590
|
+
minWidth?: SpaceValue;
|
|
591
|
+
/** Maximum width. Space token or CSS. Omitted means no max. */
|
|
592
|
+
maxWidth?: SpaceValue;
|
|
593
|
+
/** Minimum height. Space token or CSS. Omitted means no min. */
|
|
594
|
+
minHeight?: SpaceValue;
|
|
595
|
+
/** Maximum height. Space token or CSS. Omitted means no max. */
|
|
596
|
+
maxHeight?: SpaceValue;
|
|
597
|
+
};
|
|
598
|
+
export type SizeProps = SizeLimitProps & {
|
|
599
|
+
/**
|
|
600
|
+
* Width. Space token or CSS (`auto`, `4rem`, `100%`). Omitted: unset, except `Col` uses
|
|
601
|
+
* theme `defaults.col.width` (`auto`). Overrides `fill` on this axis. Not on `Cell`.
|
|
602
|
+
*/
|
|
603
|
+
width?: SpaceValue;
|
|
604
|
+
/**
|
|
605
|
+
* Height. Space token or CSS (`auto`, `4rem`, `100%`). Omitted: unset, except `Row` uses
|
|
606
|
+
* theme `defaults.row.height` (`auto`). Overrides `fill` on this axis. Not on `Cell`.
|
|
607
|
+
*/
|
|
608
|
+
height?: SpaceValue;
|
|
609
|
+
};
|
|
610
|
+
export type ButtonProps = ComponentPropsWithoutRef<"button"> & {
|
|
611
|
+
/**
|
|
612
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / `warning` / `success` / `info`), or raw CSS.
|
|
613
|
+
* Theme default `primary`. Rest, hover, and active stay on that slot.
|
|
614
|
+
*/
|
|
615
|
+
color?: ColorValue;
|
|
616
|
+
/** Border + slot label, panel shows through. Omit = filled. */
|
|
617
|
+
outline?: boolean;
|
|
618
|
+
/** Font size token (`small`) or CSS — not the control box. Theme default `small`. Stretch with `fill`. */
|
|
619
|
+
size?: FontSizeValue;
|
|
620
|
+
/** Font weight token (`thin` / `base` / `bold` / `heavy`) or CSS. Theme default `bold`. */
|
|
621
|
+
weight?: FontWeightValue;
|
|
622
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
623
|
+
family?: FontFamilyToken;
|
|
624
|
+
/** Italic. Default off. */
|
|
625
|
+
italic?: boolean;
|
|
626
|
+
/** `text-transform: uppercase`. Default off. */
|
|
627
|
+
uppercase?: boolean;
|
|
628
|
+
/**
|
|
629
|
+
* Width and height 100% of the parent. Height `%` only applies when the parent has a
|
|
630
|
+
* definite height. Same idea as layout `fill`.
|
|
631
|
+
*/
|
|
632
|
+
fill?: boolean;
|
|
633
|
+
/**
|
|
634
|
+
* Visible caption. Preferred over a string as `children`.
|
|
635
|
+
* Custom insides (`Cols` / `Text` / host icons) go in `children`; those win if both are set.
|
|
636
|
+
* No visible text: set `aria-label`.
|
|
637
|
+
*/
|
|
638
|
+
label?: string;
|
|
639
|
+
/** Extra CSS appended to this component’s styles. */
|
|
640
|
+
css?: string;
|
|
641
|
+
/** Padding on all axes. Space token or CSS. Overrides theme `paddingX` / `paddingY` until those props are set. */
|
|
642
|
+
padding?: SpaceValue;
|
|
643
|
+
/** Horizontal padding. Space token or CSS. Overrides `padding` and theme `paddingX`. */
|
|
644
|
+
paddingX?: SpaceValue;
|
|
645
|
+
/** Vertical padding. Space token or CSS. Overrides `padding` and theme `paddingY`. */
|
|
646
|
+
paddingY?: SpaceValue;
|
|
647
|
+
/** Border width token or CSS. Theme default `extraSmall`. */
|
|
648
|
+
borderWidth?: SpaceValue;
|
|
649
|
+
/** Border radius token or CSS. Theme default `base`. */
|
|
650
|
+
borderRadius?: SpaceValue;
|
|
651
|
+
/**
|
|
652
|
+
* Fill. Token/CSS → all steps (`.base`). `{ base, hover, active }` for a one-off; omitted keys
|
|
653
|
+
* keep the `color` slot (filled) or stay transparent (`outline`). Passing this on `outline` opts in to fill.
|
|
654
|
+
*/
|
|
655
|
+
background?: PaintSteps;
|
|
656
|
+
/**
|
|
657
|
+
* Label. Token/CSS → all steps (`.base`). `{ base, hover, active }` for a one-off; omitted keys
|
|
658
|
+
* keep filled `defaults.button.ink` / hover label, or the `color` slot on `outline`.
|
|
659
|
+
*/
|
|
660
|
+
ink?: PaintSteps;
|
|
661
|
+
};
|
|
662
|
+
/**
|
|
663
|
+
* Control (`<button>`). Caption: `label` (preferred); `children` win. Place it in a `Col` /
|
|
664
|
+
* `Row` / `Panel` — the wrapper positions it. `fill` stretches the button, not a panel.
|
|
665
|
+
*
|
|
666
|
+
* @example
|
|
667
|
+
* ```tsx
|
|
668
|
+
* <Cols gap='small'>
|
|
669
|
+
* <Col>
|
|
670
|
+
* <Button label='Save' />
|
|
671
|
+
* </Col>
|
|
672
|
+
* <Col>
|
|
673
|
+
* <Button outline label='Cancel' />
|
|
674
|
+
* </Col>
|
|
675
|
+
* </Cols>
|
|
676
|
+
* ```
|
|
677
|
+
*/
|
|
678
|
+
export declare function Button(props: ButtonProps): import("react").JSX.Element;
|
|
679
|
+
export type ChipProps = ComponentPropsWithoutRef<"span"> & {
|
|
680
|
+
/**
|
|
681
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS.
|
|
682
|
+
* Omit `ink` = this chroma on the label. Omit `background` = 12% mix into `--panelize-bg`.
|
|
683
|
+
* Theme default `primary`.
|
|
684
|
+
*/
|
|
685
|
+
color?: ColorValue;
|
|
686
|
+
/** Font size token or CSS. Theme default `extraSmall`. */
|
|
687
|
+
size?: FontSizeValue;
|
|
688
|
+
/** Font weight token or CSS. Theme default `bold`. */
|
|
689
|
+
weight?: FontWeightValue;
|
|
690
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
691
|
+
family?: FontFamilyToken;
|
|
692
|
+
/** `text-transform: uppercase`. Theme default `true`. */
|
|
693
|
+
uppercase?: boolean;
|
|
694
|
+
/**
|
|
695
|
+
* Visible caption. Preferred over a string as `children`.
|
|
696
|
+
* Custom insides go in `children`; those win if both are set.
|
|
697
|
+
*/
|
|
698
|
+
label?: string;
|
|
699
|
+
/** Extra CSS appended to this component’s styles. */
|
|
700
|
+
css?: string;
|
|
701
|
+
/** Padding on all axes. Space token or CSS. Overrides theme until `paddingX` / `paddingY`. */
|
|
702
|
+
padding?: SpaceValue;
|
|
703
|
+
/** Horizontal padding. Overrides `padding`. */
|
|
704
|
+
paddingX?: SpaceValue;
|
|
705
|
+
/** Vertical padding. Overrides `padding`. */
|
|
706
|
+
paddingY?: SpaceValue;
|
|
707
|
+
/** Border width token or CSS. Theme default `none` (no stroke). */
|
|
708
|
+
borderWidth?: SpaceValue;
|
|
709
|
+
/** Border radius token or CSS. Theme default `999px` (capsule). */
|
|
710
|
+
borderRadius?: SpaceValue;
|
|
711
|
+
/**
|
|
712
|
+
* Rest fill. Surface, brand, status, or CSS. Omit = tint of `color` into `--panelize-bg`.
|
|
713
|
+
*/
|
|
714
|
+
background?: PaintValue;
|
|
715
|
+
/**
|
|
716
|
+
* Label ink. Surface, brand, status, or CSS. Omit = `color` chroma (`.base`).
|
|
717
|
+
*/
|
|
718
|
+
ink?: PaintValue;
|
|
719
|
+
/**
|
|
720
|
+
* Rest border. Surface, brand, status, or CSS. Omit = label chroma. Invisible until `borderWidth`.
|
|
721
|
+
*/
|
|
722
|
+
borderColor?: PaintValue;
|
|
723
|
+
};
|
|
724
|
+
/**
|
|
725
|
+
* Badge (`<span>`), not a button. Label uses the chroma slot until `ink`. Place it with layout
|
|
726
|
+
* — no hover, no `alignX`.
|
|
727
|
+
*
|
|
728
|
+
* @example
|
|
729
|
+
* ```tsx
|
|
730
|
+
* <Chip color='accent' label='New' />
|
|
731
|
+
* ```
|
|
732
|
+
*/
|
|
733
|
+
export declare function Chip(props: ChipProps): import("react").JSX.Element;
|
|
734
|
+
export type CheckboxProps = Omit<ComponentPropsWithRef<"input">, "size" | "type"> & {
|
|
735
|
+
/**
|
|
736
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS.
|
|
737
|
+
* Theme default `primary`. Checked / indeterminate fill uses this slot’s `.base` / `.hover` /
|
|
738
|
+
* `.active` (same steps as `Button`). Empty rest / hover / active stroke is `currentColor`
|
|
739
|
+
* (wrapping `Label` ink, else panel `text.base`) until `borderColor`.
|
|
740
|
+
*/
|
|
741
|
+
color?: ColorValue;
|
|
742
|
+
/**
|
|
743
|
+
* Type size token or CSS. Box is this size (`1em`), square. Theme default `base`. Native HTML
|
|
744
|
+
* `size` is omitted. Use the same `size` on the paired `Label`.
|
|
745
|
+
*/
|
|
746
|
+
size?: FontSizeValue;
|
|
747
|
+
/** Extra CSS appended to this component’s styles. */
|
|
748
|
+
css?: string;
|
|
749
|
+
/**
|
|
750
|
+
* Rest fill. Surface, brand, status, or CSS. Omit = transparent (panel shows through).
|
|
751
|
+
*/
|
|
752
|
+
background?: PaintValue;
|
|
753
|
+
/**
|
|
754
|
+
* Check / dash. Token/CSS → `.base` (same as filled `Button` `ink`). `{ base, hover, active }`
|
|
755
|
+
* for a one-off; omitted keys keep `defaults.checkbox.ink`. Hover/active are unused (no hover
|
|
756
|
+
* on the mark). Theme default `palette.black`.
|
|
757
|
+
*/
|
|
758
|
+
ink?: PaintSteps;
|
|
759
|
+
/**
|
|
760
|
+
* Rest (empty) border. Surface, brand, status, or CSS. Omit = `currentColor` (same as the
|
|
761
|
+
* wrapping `Label`, else panel `text.base`). Checked stroke follows the fill.
|
|
762
|
+
*/
|
|
763
|
+
borderColor?: PaintValue;
|
|
764
|
+
/** Border width token or CSS. Theme default `extraSmall` (`1px`). */
|
|
765
|
+
borderWidth?: SpaceValue;
|
|
766
|
+
/** Box radius. Space token or CSS. Theme default `small`. */
|
|
767
|
+
borderRadius?: SpaceValue;
|
|
768
|
+
/** Box width. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
769
|
+
width?: SpaceValue;
|
|
770
|
+
/** Box height. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
771
|
+
height?: SpaceValue;
|
|
772
|
+
/**
|
|
773
|
+
* Native `indeterminate` property (dash). Not an HTML attribute. Host owns it. Does not set
|
|
774
|
+
* `checked`. The dash still draws when `hideCheckIcon`.
|
|
775
|
+
*/
|
|
776
|
+
indeterminate?: boolean;
|
|
777
|
+
/**
|
|
778
|
+
* Hide the check glyph when `checked`. Default `false`. `true` = fill-only (chroma well, no
|
|
779
|
+
* check). Does not hide the indeterminate dash.
|
|
780
|
+
*/
|
|
781
|
+
hideCheckIcon?: boolean;
|
|
782
|
+
};
|
|
783
|
+
/**
|
|
784
|
+
* Native checkbox. `color` is the checked fill. Empty stroke follows wrapping `Label`
|
|
785
|
+
* (`currentColor`). Wrap with `Label` (same `size`).
|
|
786
|
+
*
|
|
787
|
+
* @example
|
|
788
|
+
* ```tsx
|
|
789
|
+
* <Label htmlFor='email' label='Email' />
|
|
790
|
+
* <Checkbox id='email' checked={on} onChange={(e) => setOn(e.target.checked)} />
|
|
791
|
+
* ```
|
|
792
|
+
*/
|
|
793
|
+
export declare function Checkbox(props: CheckboxProps): import("react").JSX.Element;
|
|
794
|
+
export declare namespace Checkbox {
|
|
795
|
+
var displayName: string;
|
|
796
|
+
}
|
|
797
|
+
export type InputProps = Omit<ComponentPropsWithRef<"input">, "size"> & {
|
|
798
|
+
/**
|
|
799
|
+
* Focus chroma only (border, glow, caret). Not glyph ink — use `ink` (omit = `--panelize-text`).
|
|
800
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS. Theme default `primary`.
|
|
801
|
+
*/
|
|
802
|
+
color?: ColorValue;
|
|
803
|
+
/** Font size token or CSS. Theme default `small`. Native HTML `size` is omitted — use `fill` or a layout parent. */
|
|
804
|
+
size?: FontSizeValue;
|
|
805
|
+
/** Font weight token or CSS. Theme default `base`. */
|
|
806
|
+
weight?: FontWeightValue;
|
|
807
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
808
|
+
family?: FontFamilyToken;
|
|
809
|
+
/** Italic. Default off. */
|
|
810
|
+
italic?: boolean;
|
|
811
|
+
/** `text-transform: uppercase`. Default off. */
|
|
812
|
+
uppercase?: boolean;
|
|
813
|
+
/**
|
|
814
|
+
* Width and height 100% of the parent. Height `%` only applies when the parent has a
|
|
815
|
+
* definite height. Same idea as layout `fill`.
|
|
816
|
+
*/
|
|
817
|
+
fill?: boolean;
|
|
818
|
+
/** Extra CSS appended to this component’s styles. */
|
|
819
|
+
css?: string;
|
|
820
|
+
/** Padding on all axes. Space token or CSS. Overrides theme until `paddingX` / `paddingY`. */
|
|
821
|
+
padding?: SpaceValue;
|
|
822
|
+
/** Horizontal padding. Overrides `padding`. */
|
|
823
|
+
paddingX?: SpaceValue;
|
|
824
|
+
/** Vertical padding. Overrides `padding`. */
|
|
825
|
+
paddingY?: SpaceValue;
|
|
826
|
+
/** Border width token or CSS. Theme default `extraSmall`. */
|
|
827
|
+
borderWidth?: SpaceValue;
|
|
828
|
+
/** Border radius token or CSS. Theme default `base`. */
|
|
829
|
+
borderRadius?: SpaceValue;
|
|
830
|
+
/**
|
|
831
|
+
* Rest fill. Surface (`muted` / `base` / `highlighted`), brand, status, or CSS.
|
|
832
|
+
* Omit = nearest panel `--panelize-bg`.
|
|
833
|
+
*/
|
|
834
|
+
background?: PaintValue;
|
|
835
|
+
/**
|
|
836
|
+
* Glyph ink. Surface (`muted` / `base` / `highlighted` → that text.base), brand, status, or CSS.
|
|
837
|
+
* Omit = `--panelize-text`. Not focus chroma (`color`).
|
|
838
|
+
*/
|
|
839
|
+
ink?: PaintValue;
|
|
840
|
+
/**
|
|
841
|
+
* Rest border. Surface (`muted` / `base` / `highlighted` → that border), brand, status, or CSS.
|
|
842
|
+
* Omit = `--panelize-border`. Focus / `:user-invalid` still own the stroke.
|
|
843
|
+
*/
|
|
844
|
+
borderColor?: PaintValue;
|
|
845
|
+
};
|
|
846
|
+
/**
|
|
847
|
+
* Native text field. Instance `color` is focus chroma (border / glow / caret), not glyph ink
|
|
848
|
+
* (`ink`). Prefer `Label` + `htmlFor`. Place with layout; `fill` stretches the field.
|
|
849
|
+
*
|
|
850
|
+
* @example
|
|
851
|
+
* ```tsx
|
|
852
|
+
* <Label htmlFor='name' label='Name' />
|
|
853
|
+
* <Input id='name' placeholder='Name' />
|
|
854
|
+
* ```
|
|
855
|
+
*/
|
|
856
|
+
export declare function Input(props: InputProps): import("react").JSX.Element;
|
|
857
|
+
export type LabelProps = ComponentPropsWithRef<"label"> & {
|
|
858
|
+
/** Font size token or CSS. Theme default `base` (`defaults.text`). */
|
|
859
|
+
size?: FontSizeValue;
|
|
860
|
+
/**
|
|
861
|
+
* Glyph ink. Brand, status, or raw CSS. Wins over `muted` / `highlighted`.
|
|
862
|
+
* Omit = panel `text.base`. Fields use `ink` for glyphs (`color` there is focus).
|
|
863
|
+
*/
|
|
864
|
+
color?: ColorValue;
|
|
865
|
+
/** Use the nearest `Panel`’s `text.muted`. Ignored if `color` or `highlighted` is set. */
|
|
866
|
+
muted?: boolean;
|
|
867
|
+
/** Use the nearest `Panel`’s `text.highlighted`. Ignored if `color` is set. Wins over `muted`. */
|
|
868
|
+
highlighted?: boolean;
|
|
869
|
+
/** Font weight token or CSS. Theme default `base`. */
|
|
870
|
+
weight?: FontWeightValue;
|
|
871
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
872
|
+
family?: FontFamilyToken;
|
|
873
|
+
/** Italic. Default off. */
|
|
874
|
+
italic?: boolean;
|
|
875
|
+
/** Underline. Default off. */
|
|
876
|
+
underlined?: boolean;
|
|
877
|
+
/** `text-transform: uppercase`. Default off. */
|
|
878
|
+
uppercase?: boolean;
|
|
879
|
+
/**
|
|
880
|
+
* Visible caption. Preferred over a string as `children`.
|
|
881
|
+
* Custom insides (`Span` / host icons) go in `children`; those win if both are set.
|
|
882
|
+
*/
|
|
883
|
+
label?: string;
|
|
884
|
+
/** Extra CSS appended to this component’s styles. */
|
|
885
|
+
css?: string;
|
|
886
|
+
};
|
|
887
|
+
/**
|
|
888
|
+
* Caption (`<label>`). Ink like `Text`. Prefer `label` + `htmlFor` at a control `id`. Wrap
|
|
889
|
+
* `Switch` / `Checkbox` / `Radio` (same `size`). Not a layout shell.
|
|
890
|
+
*
|
|
891
|
+
* @example
|
|
892
|
+
* ```tsx
|
|
893
|
+
* <Label htmlFor='email' label='Email' />
|
|
894
|
+
* <Input id='email' />
|
|
895
|
+
* ```
|
|
896
|
+
*/
|
|
897
|
+
export declare function Label(props: LabelProps): import("react").JSX.Element;
|
|
898
|
+
export declare namespace Label {
|
|
899
|
+
var displayName: string;
|
|
900
|
+
}
|
|
901
|
+
/** Same chrome as `Input` (`css`, `background`, `ink`, `borderColor`, …). No `type`. */
|
|
902
|
+
export type NumberInputProps = Omit<InputProps, "type"> & {
|
|
903
|
+
/** Native `min`. Number or string. */
|
|
904
|
+
min?: number | string;
|
|
905
|
+
/** Native `max`. Number or string. */
|
|
906
|
+
max?: number | string;
|
|
907
|
+
/** Native `step`. Number, string, or `'any'`. */
|
|
908
|
+
step?: number | string;
|
|
909
|
+
};
|
|
910
|
+
/**
|
|
911
|
+
* `Input` locked to `type='number'`. Same chrome. `onChange` value is a string — use
|
|
912
|
+
* `event.currentTarget.valueAsNumber`. Wheel blurs so the value does not nudge.
|
|
913
|
+
*
|
|
914
|
+
* @example
|
|
915
|
+
* ```tsx
|
|
916
|
+
* <Label htmlFor='count' label='Count' />
|
|
917
|
+
* <NumberInput id='count' min={0} step={1} />
|
|
918
|
+
* ```
|
|
919
|
+
*/
|
|
920
|
+
export declare function NumberInput(props: NumberInputProps): import("react").JSX.Element;
|
|
921
|
+
export declare namespace NumberInput {
|
|
922
|
+
var displayName: string;
|
|
923
|
+
}
|
|
924
|
+
export type RadioProps = Omit<ComponentPropsWithRef<"input">, "size" | "type"> & {
|
|
925
|
+
/**
|
|
926
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS.
|
|
927
|
+
* Theme default `primary`. Checked ring / inner disc use this slot’s `.base` / `.hover` /
|
|
928
|
+
* `.active` (same steps as `Button`). Empty rest / hover / active stroke is `currentColor`
|
|
929
|
+
* (wrapping `Label` ink, else panel `text.base`) until `borderColor`. Rest fill stays
|
|
930
|
+
* transparent until `background` (the disc is the on mark, not a filled well).
|
|
931
|
+
*/
|
|
932
|
+
color?: ColorValue;
|
|
933
|
+
/**
|
|
934
|
+
* Type size token or CSS. Box is this size (`1em`), circle. Theme default `base`. Native HTML
|
|
935
|
+
* `size` is omitted. Use the same `size` on the paired `Label`.
|
|
936
|
+
*/
|
|
937
|
+
size?: FontSizeValue;
|
|
938
|
+
/** Extra CSS appended to this component’s styles. */
|
|
939
|
+
css?: string;
|
|
940
|
+
/**
|
|
941
|
+
* Rest fill (the ring’s interior). Surface, brand, status, or CSS. Omit = transparent (panel
|
|
942
|
+
* shows through around the disc).
|
|
943
|
+
*/
|
|
944
|
+
background?: PaintValue;
|
|
945
|
+
/**
|
|
946
|
+
* Inner disc. Token/CSS → `.base` (same as `Checkbox` `ink`). `{ base, hover, active }` for a
|
|
947
|
+
* one-off; omitted keys keep the `color` slot. Omit entirely = disc follows the `color` slot
|
|
948
|
+
* (lockstep with the ring, including hover/active).
|
|
949
|
+
*/
|
|
950
|
+
ink?: PaintSteps;
|
|
951
|
+
/**
|
|
952
|
+
* Rest (empty) border. Surface, brand, status, or CSS. Omit = `currentColor` (same as the
|
|
953
|
+
* wrapping `Label`, else panel `text.base`). Checked stroke follows the `color` slot.
|
|
954
|
+
*/
|
|
955
|
+
borderColor?: PaintValue;
|
|
956
|
+
/** Border width token or CSS. Theme default `extraSmall` (`1px`). */
|
|
957
|
+
borderWidth?: SpaceValue;
|
|
958
|
+
/** Box radius. Space token or CSS. Theme default `999px` (circle). Inner disc uses `min(this, 50%)`. */
|
|
959
|
+
borderRadius?: SpaceValue;
|
|
960
|
+
/** Box width. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
961
|
+
width?: SpaceValue;
|
|
962
|
+
/** Box height. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
963
|
+
height?: SpaceValue;
|
|
964
|
+
};
|
|
965
|
+
/**
|
|
966
|
+
* Native radio. `color` is the checked ring and disc. Empty stroke follows wrapping `Label`.
|
|
967
|
+
* Wrap with `Label` (same `size`). Share `name` across the group.
|
|
968
|
+
*
|
|
969
|
+
* @example
|
|
970
|
+
* ```tsx
|
|
971
|
+
* <Label htmlFor='hobby' label='Hobby' />
|
|
972
|
+
* <Radio id='hobby' name='plan' value='hobby' checked={plan === 'hobby'} onChange={(e) => setPlan(e.target.value)} />
|
|
973
|
+
* ```
|
|
974
|
+
*/
|
|
975
|
+
export declare function Radio(props: RadioProps): import("react").JSX.Element;
|
|
976
|
+
export declare namespace Radio {
|
|
977
|
+
var displayName: string;
|
|
978
|
+
}
|
|
979
|
+
export type SelectOptionData = {
|
|
980
|
+
value: string;
|
|
981
|
+
label: string;
|
|
982
|
+
disabled?: boolean;
|
|
983
|
+
};
|
|
984
|
+
export type OptionProps = {
|
|
985
|
+
/** Value written to `Select` / `MultiSelect` state. */
|
|
986
|
+
value: string;
|
|
987
|
+
/** Visible caption. Omit = string `children`, else `value`. */
|
|
988
|
+
label?: string;
|
|
989
|
+
/** Skip pointer / keyboard pick. Default `false`. */
|
|
990
|
+
disabled?: boolean;
|
|
991
|
+
children?: ReactNode;
|
|
992
|
+
};
|
|
993
|
+
/** Marker for `Select` / `MultiSelect` children. Not rendered on its own. */
|
|
994
|
+
declare function Option$1(props: OptionProps): null;
|
|
995
|
+
declare namespace Option$1 {
|
|
996
|
+
var displayName: string;
|
|
997
|
+
}
|
|
998
|
+
export type MultiSelectProps = Omit<ComponentPropsWithRef<"button">, "type" | "onChange" | "value"> & {
|
|
999
|
+
/**
|
|
1000
|
+
* Focus chroma (open ring) and checked-option ink. Brand / status / CSS.
|
|
1001
|
+
* Theme default `primary`. Glyph on the trigger is `ink` (omit = panel highlighted text).
|
|
1002
|
+
*/
|
|
1003
|
+
color?: ColorValue;
|
|
1004
|
+
/** Type size token or CSS. Theme default `small`. Native HTML `size` is omitted. */
|
|
1005
|
+
size?: FontSizeValue;
|
|
1006
|
+
weight?: FontWeightValue;
|
|
1007
|
+
family?: FontFamilyToken;
|
|
1008
|
+
italic?: boolean;
|
|
1009
|
+
uppercase?: boolean;
|
|
1010
|
+
fill?: boolean;
|
|
1011
|
+
css?: string;
|
|
1012
|
+
padding?: SpaceValue;
|
|
1013
|
+
/** Horizontal padding. Overrides `padding`. */
|
|
1014
|
+
paddingX?: SpaceValue;
|
|
1015
|
+
/** Vertical padding. Overrides `padding`. */
|
|
1016
|
+
paddingY?: SpaceValue;
|
|
1017
|
+
borderWidth?: SpaceValue;
|
|
1018
|
+
borderRadius?: SpaceValue;
|
|
1019
|
+
background?: PaintValue;
|
|
1020
|
+
ink?: PaintValue;
|
|
1021
|
+
borderColor?: PaintValue;
|
|
1022
|
+
/**
|
|
1023
|
+
* Menu open. Omit = internal (click / keyboard / outside / Escape). Pass with
|
|
1024
|
+
* `onOpenChange` to control.
|
|
1025
|
+
*/
|
|
1026
|
+
open?: boolean;
|
|
1027
|
+
onOpenChange?: (open: boolean) => void;
|
|
1028
|
+
/** Options. Merged with child `Option` (children win on the same `value`). */
|
|
1029
|
+
options?: SelectOptionData[];
|
|
1030
|
+
/** Shown when nothing is selected. Muted ink. */
|
|
1031
|
+
placeholder?: string;
|
|
1032
|
+
/** Hidden input `name` for native form submit (one input per selected value). */
|
|
1033
|
+
name?: string;
|
|
1034
|
+
/**
|
|
1035
|
+
* When true, the value cannot be cleared to empty (no clear-all, last check cannot
|
|
1036
|
+
* uncheck). Default `false`.
|
|
1037
|
+
*/
|
|
1038
|
+
required?: boolean;
|
|
1039
|
+
/**
|
|
1040
|
+
* Show a clear-all control when there is a value. Default `false`. Ignored when `required`.
|
|
1041
|
+
*/
|
|
1042
|
+
clearable?: boolean;
|
|
1043
|
+
/**
|
|
1044
|
+
* When true, checked options are listed first (original order within each group).
|
|
1045
|
+
* Default `false`.
|
|
1046
|
+
*/
|
|
1047
|
+
selectedAtTop?: boolean;
|
|
1048
|
+
/**
|
|
1049
|
+
* Open to inspect; no toggle / clear / type-ahead commit. Not dimmed (`disabled` is).
|
|
1050
|
+
* Default `false`.
|
|
1051
|
+
*/
|
|
1052
|
+
readOnly?: boolean;
|
|
1053
|
+
/** Selected values. Omit with `defaultValue` for uncontrolled. */
|
|
1054
|
+
value?: string[];
|
|
1055
|
+
defaultValue?: string[];
|
|
1056
|
+
/** Called with the selected values when the set changes. Empty array when cleared. */
|
|
1057
|
+
onChange?: (value: string[]) => void;
|
|
1058
|
+
children?: ReactNode;
|
|
1059
|
+
};
|
|
1060
|
+
/**
|
|
1061
|
+
* Custom multi listbox. Host `value` / `onChange` are `string[]`. Trigger shows a count
|
|
1062
|
+
* (`N selected`), not chips. Menu stays open while toggling. Place with layout.
|
|
1063
|
+
*
|
|
1064
|
+
* @example
|
|
1065
|
+
* ```tsx
|
|
1066
|
+
* <Label htmlFor='tags' label='Tags' />
|
|
1067
|
+
* <MultiSelect id='tags' value={tags} onChange={setTags} clearable>
|
|
1068
|
+
* <Option value='a' label='Alpha' />
|
|
1069
|
+
* <Option value='b' label='Beta' />
|
|
1070
|
+
* </MultiSelect>
|
|
1071
|
+
* ```
|
|
1072
|
+
*/
|
|
1073
|
+
export declare function MultiSelect(props: MultiSelectProps): import("react").JSX.Element;
|
|
1074
|
+
export declare namespace MultiSelect {
|
|
1075
|
+
var displayName: string;
|
|
1076
|
+
}
|
|
1077
|
+
export type SelectProps = Omit<ComponentPropsWithRef<"button">, "type" | "onChange" | "value"> & {
|
|
1078
|
+
/**
|
|
1079
|
+
* Focus chroma (open ring) and selected-option ink. Brand / status / CSS.
|
|
1080
|
+
* Theme default `primary`. Glyph on the trigger is `ink` (omit = panel highlighted text).
|
|
1081
|
+
*/
|
|
1082
|
+
color?: ColorValue;
|
|
1083
|
+
/** Type size token or CSS. Theme default `small`. Native HTML `size` is omitted. */
|
|
1084
|
+
size?: FontSizeValue;
|
|
1085
|
+
weight?: FontWeightValue;
|
|
1086
|
+
family?: FontFamilyToken;
|
|
1087
|
+
italic?: boolean;
|
|
1088
|
+
uppercase?: boolean;
|
|
1089
|
+
fill?: boolean;
|
|
1090
|
+
css?: string;
|
|
1091
|
+
padding?: SpaceValue;
|
|
1092
|
+
/** Horizontal padding. Overrides `padding`. */
|
|
1093
|
+
paddingX?: SpaceValue;
|
|
1094
|
+
/** Vertical padding. Overrides `padding`. */
|
|
1095
|
+
paddingY?: SpaceValue;
|
|
1096
|
+
borderWidth?: SpaceValue;
|
|
1097
|
+
borderRadius?: SpaceValue;
|
|
1098
|
+
background?: PaintValue;
|
|
1099
|
+
ink?: PaintValue;
|
|
1100
|
+
borderColor?: PaintValue;
|
|
1101
|
+
/**
|
|
1102
|
+
* Menu open. Omit = internal (click / keyboard / outside / Escape). Pass with
|
|
1103
|
+
* `onOpenChange` to control.
|
|
1104
|
+
*/
|
|
1105
|
+
open?: boolean;
|
|
1106
|
+
onOpenChange?: (open: boolean) => void;
|
|
1107
|
+
/** Options. Merged with child `Option` (children win on the same `value`). */
|
|
1108
|
+
options?: SelectOptionData[];
|
|
1109
|
+
/** Shown when nothing is selected. Muted ink until a value is set. */
|
|
1110
|
+
placeholder?: string;
|
|
1111
|
+
/** Hidden input `name` for native form submit. */
|
|
1112
|
+
name?: string;
|
|
1113
|
+
/**
|
|
1114
|
+
* When true, the value cannot be cleared to empty (no clear control, clicking the
|
|
1115
|
+
* selected option does not deselect). Default `false`.
|
|
1116
|
+
*/
|
|
1117
|
+
required?: boolean;
|
|
1118
|
+
/**
|
|
1119
|
+
* Show a clear control when there is a value. Default `false`. Ignored when `required`.
|
|
1120
|
+
*/
|
|
1121
|
+
clearable?: boolean;
|
|
1122
|
+
/**
|
|
1123
|
+
* When true and a known value is selected, that option is listed first in the menu.
|
|
1124
|
+
* Default `false`. The empty row from `emptyOption` stays first.
|
|
1125
|
+
*/
|
|
1126
|
+
selectedAtTop?: boolean;
|
|
1127
|
+
/**
|
|
1128
|
+
* First menu row with value `''` (visible “none”). `true` uses `placeholder` as the
|
|
1129
|
+
* caption; a string is a custom caption. Ignored when `required`, or when an option
|
|
1130
|
+
* already has value `''`. Default off.
|
|
1131
|
+
*/
|
|
1132
|
+
emptyOption?: boolean | string;
|
|
1133
|
+
/**
|
|
1134
|
+
* Open to inspect; no pick / clear / type-ahead commit. Not dimmed (`disabled` is).
|
|
1135
|
+
* Default `false`.
|
|
1136
|
+
*/
|
|
1137
|
+
readOnly?: boolean;
|
|
1138
|
+
/** Selected value. Omit with `defaultValue` for uncontrolled. */
|
|
1139
|
+
value?: string;
|
|
1140
|
+
defaultValue?: string;
|
|
1141
|
+
/** Called with the option `value` when the selection changes. Empty string when cleared. */
|
|
1142
|
+
onChange?: (value: string) => void;
|
|
1143
|
+
children?: ReactNode;
|
|
1144
|
+
};
|
|
1145
|
+
/**
|
|
1146
|
+
* Custom listbox (not a native `<select>`). Host `value` / `onChange`. Place the trigger with
|
|
1147
|
+
* layout; `fill` stretches the trigger. Prefer `Label` + `htmlFor`.
|
|
1148
|
+
*
|
|
1149
|
+
* @example
|
|
1150
|
+
* ```tsx
|
|
1151
|
+
* <Label htmlFor='country' label='Country' />
|
|
1152
|
+
* <Select id='country' value={country} onChange={setCountry} placeholder='Select'>
|
|
1153
|
+
* <Option value='us' label='United States' />
|
|
1154
|
+
* <Option value='ca' label='Canada' />
|
|
1155
|
+
* </Select>
|
|
1156
|
+
* ```
|
|
1157
|
+
*/
|
|
1158
|
+
export declare function Select(props: SelectProps): import("react").JSX.Element;
|
|
1159
|
+
export declare namespace Select {
|
|
1160
|
+
var displayName: string;
|
|
1161
|
+
}
|
|
1162
|
+
export type SwitchProps = Omit<ComponentPropsWithRef<"input">, "size" | "type"> & {
|
|
1163
|
+
/**
|
|
1164
|
+
* On-track chroma. Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS.
|
|
1165
|
+
* Theme default `primary`. Off-track is not this slot — use `background`.
|
|
1166
|
+
*/
|
|
1167
|
+
color?: ColorValue;
|
|
1168
|
+
/**
|
|
1169
|
+
* Type size token or CSS. Track height is this size × theme `lineHeight` (keep `lineHeight`
|
|
1170
|
+
* unitless). Width is this size × `defaults.switch.widthFactor`. Theme default `base`. Native
|
|
1171
|
+
* HTML `size` is omitted. Use the same `size` on the paired `Label`.
|
|
1172
|
+
*/
|
|
1173
|
+
size?: FontSizeValue;
|
|
1174
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1175
|
+
css?: string;
|
|
1176
|
+
/**
|
|
1177
|
+
* Off-track fill. Surface, brand, status, or CSS.
|
|
1178
|
+
* Omit = mix of `--panelize-text` into `--panelize-bg`.
|
|
1179
|
+
*/
|
|
1180
|
+
background?: PaintValue;
|
|
1181
|
+
/**
|
|
1182
|
+
* Thumb fill. Surface, brand, status, or CSS. Theme default `palette.white`.
|
|
1183
|
+
*/
|
|
1184
|
+
ink?: PaintValue;
|
|
1185
|
+
/** Track width. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
1186
|
+
width?: SpaceValue;
|
|
1187
|
+
/** Track height. Space token or CSS (not `fontSizes`). Overrides `size` on this axis. */
|
|
1188
|
+
height?: SpaceValue;
|
|
1189
|
+
/**
|
|
1190
|
+
* Track radius. Space token or CSS. Theme default `999px` (capsule). Thumb uses
|
|
1191
|
+
* `min(this, 50%)` so a capsule stays round and a token like `small` squares both pieces.
|
|
1192
|
+
*/
|
|
1193
|
+
borderRadius?: SpaceValue;
|
|
1194
|
+
};
|
|
1195
|
+
/**
|
|
1196
|
+
* Native switch (`role='switch'`). On-track is `color` chroma; thumb is `ink`. Wrap with
|
|
1197
|
+
* `Label` (same `size`). No `fill` / `label` / `children`.
|
|
1198
|
+
*
|
|
1199
|
+
* @example
|
|
1200
|
+
* ```tsx
|
|
1201
|
+
* <Label htmlFor='air'>
|
|
1202
|
+
* <Cols gap='small' alignY='center'>
|
|
1203
|
+
* <Col>
|
|
1204
|
+
* <Switch id='air' checked={on} onChange={(e) => setOn(e.target.checked)} />
|
|
1205
|
+
* </Col>
|
|
1206
|
+
* <Col>
|
|
1207
|
+
* <Text>Airplane mode</Text>
|
|
1208
|
+
* </Col>
|
|
1209
|
+
* </Cols>
|
|
1210
|
+
* </Label>
|
|
1211
|
+
* ```
|
|
1212
|
+
*/
|
|
1213
|
+
export declare function Switch(props: SwitchProps): import("react").JSX.Element;
|
|
1214
|
+
export declare namespace Switch {
|
|
1215
|
+
var displayName: string;
|
|
1216
|
+
}
|
|
1217
|
+
export type TextareaProps = ComponentPropsWithRef<"textarea"> & {
|
|
1218
|
+
/**
|
|
1219
|
+
* Focus chroma only (border, glow, caret). Not glyph ink — use `ink` (omit = `--panelize-text`).
|
|
1220
|
+
* Brand (`primary` / `secondary` / `accent`), status (`danger` / …), or raw CSS. Theme default `primary`.
|
|
1221
|
+
*/
|
|
1222
|
+
color?: ColorValue;
|
|
1223
|
+
/** Font size token or CSS. Theme default `small`. */
|
|
1224
|
+
size?: FontSizeValue;
|
|
1225
|
+
/** Font weight token or CSS. Theme default `base`. */
|
|
1226
|
+
weight?: FontWeightValue;
|
|
1227
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
1228
|
+
family?: FontFamilyToken;
|
|
1229
|
+
/** Italic. Default off. */
|
|
1230
|
+
italic?: boolean;
|
|
1231
|
+
/** `text-transform: uppercase`. Default off. */
|
|
1232
|
+
uppercase?: boolean;
|
|
1233
|
+
/**
|
|
1234
|
+
* Width and height 100% of the parent. Height `%` only applies when the parent has a
|
|
1235
|
+
* definite height. Same idea as layout `fill`.
|
|
1236
|
+
*/
|
|
1237
|
+
fill?: boolean;
|
|
1238
|
+
/** Vertical resize handle. Theme default `false`. `true` opts in; does not depend on `fill`. */
|
|
1239
|
+
resize?: boolean;
|
|
1240
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1241
|
+
css?: string;
|
|
1242
|
+
/** Padding on all axes. Space token or CSS. Overrides theme until `paddingX` / `paddingY`. */
|
|
1243
|
+
padding?: SpaceValue;
|
|
1244
|
+
/** Horizontal padding. Overrides `padding`. */
|
|
1245
|
+
paddingX?: SpaceValue;
|
|
1246
|
+
/** Vertical padding. Overrides `padding`. */
|
|
1247
|
+
paddingY?: SpaceValue;
|
|
1248
|
+
/** Border width token or CSS. Theme default `extraSmall`. */
|
|
1249
|
+
borderWidth?: SpaceValue;
|
|
1250
|
+
/** Border radius token or CSS. Theme default `base`. */
|
|
1251
|
+
borderRadius?: SpaceValue;
|
|
1252
|
+
/**
|
|
1253
|
+
* Rest fill. Surface (`muted` / `base` / `highlighted`), brand, status, or CSS.
|
|
1254
|
+
* Omit = nearest panel `--panelize-bg`.
|
|
1255
|
+
*/
|
|
1256
|
+
background?: PaintValue;
|
|
1257
|
+
/**
|
|
1258
|
+
* Glyph ink. Surface (`muted` / `base` / `highlighted` → that text.base), brand, status, or CSS.
|
|
1259
|
+
* Omit = `--panelize-text`. Not focus chroma (`color`).
|
|
1260
|
+
*/
|
|
1261
|
+
ink?: PaintValue;
|
|
1262
|
+
/**
|
|
1263
|
+
* Rest border. Surface (`muted` / `base` / `highlighted` → that border), brand, status, or CSS.
|
|
1264
|
+
* Omit = `--panelize-border`. Focus / `:user-invalid` still own the stroke.
|
|
1265
|
+
*/
|
|
1266
|
+
borderColor?: PaintValue;
|
|
1267
|
+
};
|
|
1268
|
+
/**
|
|
1269
|
+
* Multiline field. Same chrome as `Input`. Theme starts from merged `defaults.input`. Default
|
|
1270
|
+
* `resize` off, `rows` 3. Place with layout.
|
|
1271
|
+
*
|
|
1272
|
+
* @example
|
|
1273
|
+
* ```tsx
|
|
1274
|
+
* <Label htmlFor='notes' label='Notes' />
|
|
1275
|
+
* <Textarea id='notes' placeholder='Notes' />
|
|
1276
|
+
* ```
|
|
1277
|
+
*/
|
|
1278
|
+
export declare function Textarea(props: TextareaProps): import("react").JSX.Element;
|
|
1279
|
+
export type CellProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeLimitProps & DirectionalBorderProps & {
|
|
1280
|
+
/** How many column tracks this cell covers. Default `1`. Becomes 1 when the parent `Grid` is stacked to one column. */
|
|
1281
|
+
spanX?: number;
|
|
1282
|
+
/** How many row tracks this cell covers. Default `1`. */
|
|
1283
|
+
spanY?: number;
|
|
1284
|
+
/**
|
|
1285
|
+
* Left–right alignment in this cell (`justify-self`).
|
|
1286
|
+
* Omitted: inherit the parent `Grid` `alignX`.
|
|
1287
|
+
*/
|
|
1288
|
+
alignX?: AlignValue;
|
|
1289
|
+
/**
|
|
1290
|
+
* Top–bottom alignment in this cell (`align-self`).
|
|
1291
|
+
* Omitted: inherit the parent `Grid` `alignY`.
|
|
1292
|
+
*/
|
|
1293
|
+
alignY?: AlignValue;
|
|
1294
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1295
|
+
borderRadius?: SpaceValue;
|
|
1296
|
+
/**
|
|
1297
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1298
|
+
* Default is `base` border. `base` is the surface, not a brand slot.
|
|
1299
|
+
*/
|
|
1300
|
+
borderColor?: BorderColorValue;
|
|
1301
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1302
|
+
css?: string;
|
|
1303
|
+
};
|
|
1304
|
+
/**
|
|
1305
|
+
* One cell in a `Grid`. Direct child of `Grid` only. No `width` / `height` / `fill` — span
|
|
1306
|
+
* tracks with `spanX` / `spanY`. Place content here.
|
|
1307
|
+
*
|
|
1308
|
+
* @example
|
|
1309
|
+
* ```tsx
|
|
1310
|
+
* <Grid numCols={3} gap='small'>
|
|
1311
|
+
* <Cell>
|
|
1312
|
+
* <Text>A</Text>
|
|
1313
|
+
* </Cell>
|
|
1314
|
+
* <Cell spanX={2}>
|
|
1315
|
+
* <Text>B</Text>
|
|
1316
|
+
* </Cell>
|
|
1317
|
+
* </Grid>
|
|
1318
|
+
* ```
|
|
1319
|
+
*/
|
|
1320
|
+
export declare function Cell(props: CellProps): import("react").JSX.Element;
|
|
1321
|
+
export type ColProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & SelfAlignProps & DirectionalBorderProps & {
|
|
1322
|
+
/**
|
|
1323
|
+
* Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). Until then this box is
|
|
1324
|
+
* `flex-shrink: 0` (same as `Panel`).
|
|
1325
|
+
*/
|
|
1326
|
+
flex?: boolean;
|
|
1327
|
+
/**
|
|
1328
|
+
* Size to the parent on axes without a size. Theme `width` is `auto`, so omit `width` → height
|
|
1329
|
+
* 100% only. Explicit `width` / `height` win.
|
|
1330
|
+
*/
|
|
1331
|
+
fill?: boolean;
|
|
1332
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1333
|
+
borderRadius?: SpaceValue;
|
|
1334
|
+
/**
|
|
1335
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1336
|
+
* Default is `base` border. `base` is the surface, not a brand slot.
|
|
1337
|
+
*/
|
|
1338
|
+
borderColor?: BorderColorValue;
|
|
1339
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1340
|
+
css?: string;
|
|
1341
|
+
};
|
|
1342
|
+
/**
|
|
1343
|
+
* One column in a `Cols` track. Direct child of `Cols` only. Place content here. This box owns
|
|
1344
|
+
* `flex` / `width` / `alignY` — children do not position themselves.
|
|
1345
|
+
*
|
|
1346
|
+
* @example
|
|
1347
|
+
* ```tsx
|
|
1348
|
+
* <Cols gap='small'>
|
|
1349
|
+
* <Col>
|
|
1350
|
+
* <Button label='Save' />
|
|
1351
|
+
* </Col>
|
|
1352
|
+
* <Col>
|
|
1353
|
+
* <Button outline label='Cancel' />
|
|
1354
|
+
* </Col>
|
|
1355
|
+
* </Cols>
|
|
1356
|
+
* ```
|
|
1357
|
+
*/
|
|
1358
|
+
export declare function Col(props: ColProps): import("react").JSX.Element;
|
|
1359
|
+
export type ColsProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & FlexAlignProps & DirectionalBorderProps & {
|
|
1360
|
+
/** Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). */
|
|
1361
|
+
flex?: boolean;
|
|
1362
|
+
/** Size to the parent (`height` and `width` 100%). Explicit `width` / `height` win on that axis. */
|
|
1363
|
+
fill?: boolean;
|
|
1364
|
+
/** Space between child `Col`s. Token or CSS length. Theme default is `none`. */
|
|
1365
|
+
gap?: SpaceValue;
|
|
1366
|
+
/** Allow child `Col`s to wrap onto the next line. Default is no wrap. */
|
|
1367
|
+
wrap?: boolean;
|
|
1368
|
+
/**
|
|
1369
|
+
* Become a column when this box is at most this wide (`sm` / `md` / `lg`, or CSS).
|
|
1370
|
+
* Measures this `Cols`, not the viewport. `stack="md"` is not Tailwind `md:` (that is and-up).
|
|
1371
|
+
* While stacked, children stretch full width (`alignX` centering is ignored).
|
|
1372
|
+
* Column packing uses explicit `alignY`, or `start` if `alignY` was omitted (not row `stretch`).
|
|
1373
|
+
*/
|
|
1374
|
+
stack?: StackValue;
|
|
1375
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1376
|
+
borderRadius?: SpaceValue;
|
|
1377
|
+
/**
|
|
1378
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1379
|
+
* Default is `base` border. Does not paint a panel background.
|
|
1380
|
+
*/
|
|
1381
|
+
borderColor?: BorderColorValue;
|
|
1382
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1383
|
+
css?: string;
|
|
1384
|
+
};
|
|
1385
|
+
/**
|
|
1386
|
+
* Row track. Direct children must be `Col`, two or more. Do not wrap a single column — use
|
|
1387
|
+
* the parent `Panel` or a `Div`. `stack` collapses this row when the box is at most that wide.
|
|
1388
|
+
*
|
|
1389
|
+
* @example
|
|
1390
|
+
* ```tsx
|
|
1391
|
+
* <Cols gap='small' stack='sm'>
|
|
1392
|
+
* <Col width='12rem'>
|
|
1393
|
+
* <Text>Side</Text>
|
|
1394
|
+
* </Col>
|
|
1395
|
+
* <Col flex>
|
|
1396
|
+
* <Text>Main</Text>
|
|
1397
|
+
* </Col>
|
|
1398
|
+
* </Cols>
|
|
1399
|
+
* ```
|
|
1400
|
+
*/
|
|
1401
|
+
export declare function Cols(props: ColsProps): import("react").JSX.Element;
|
|
1402
|
+
export type DivProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & SelfAlignProps & DirectionalBorderProps & {
|
|
1403
|
+
/**
|
|
1404
|
+
* Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). Until then this box is
|
|
1405
|
+
* `flex-shrink: 0` (same as `Panel`).
|
|
1406
|
+
*/
|
|
1407
|
+
flex?: boolean;
|
|
1408
|
+
/** Size to the parent (`height` and `width` 100%). Explicit `width` / `height` win on that axis. */
|
|
1409
|
+
fill?: boolean;
|
|
1410
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1411
|
+
borderRadius?: SpaceValue;
|
|
1412
|
+
/**
|
|
1413
|
+
* Panel surface, brand (`primary`), status (`danger`), or raw CSS.
|
|
1414
|
+
* Omitted uses the parent `Panel` border (`var(--panelize-border)`).
|
|
1415
|
+
* Does not paint a panel background.
|
|
1416
|
+
*/
|
|
1417
|
+
borderColor?: BorderColorValue;
|
|
1418
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1419
|
+
css?: string;
|
|
1420
|
+
};
|
|
1421
|
+
/**
|
|
1422
|
+
* Catch-all box (spacing, size, border, `fill` / `flex`). No surface paint. Use when a single
|
|
1423
|
+
* wrapper is enough — not a substitute for `Row` / `Col` / `Cell` (those still belong under
|
|
1424
|
+
* their tracks).
|
|
1425
|
+
*
|
|
1426
|
+
* @example
|
|
1427
|
+
* ```tsx
|
|
1428
|
+
* <Panel padding='base'>
|
|
1429
|
+
* <Div maxWidth='24rem'>
|
|
1430
|
+
* <Heading level={2}>Card</Heading>
|
|
1431
|
+
* <Text muted>Body</Text>
|
|
1432
|
+
* </Div>
|
|
1433
|
+
* </Panel>
|
|
1434
|
+
* ```
|
|
1435
|
+
*/
|
|
1436
|
+
export declare function Div(props: DivProps): import("react").JSX.Element;
|
|
1437
|
+
export type GridProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & GridAlignProps & DirectionalBorderProps & {
|
|
1438
|
+
/** Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). */
|
|
1439
|
+
flex?: boolean;
|
|
1440
|
+
/** Size to the parent (`height` and `width` 100%). Explicit `width` / `height` win on that axis. */
|
|
1441
|
+
fill?: boolean;
|
|
1442
|
+
/** Space between cells. Token or CSS length. Theme default is `none`. */
|
|
1443
|
+
gap?: SpaceValue;
|
|
1444
|
+
/** Column track count. Each track is `minmax(0, 1fr)`. Omit for implicit auto columns. */
|
|
1445
|
+
numCols?: number;
|
|
1446
|
+
/** Row track count. Each track is `minmax(0, 1fr)`. Omit for implicit content-sized rows. */
|
|
1447
|
+
numRows?: number;
|
|
1448
|
+
/**
|
|
1449
|
+
* Reduce columns when this box is at most this wide (`sm` / `md` / `lg`, or CSS).
|
|
1450
|
+
* Measures this `Grid`, not the viewport. `stack="md"` is not Tailwind `md:` (that is and-up).
|
|
1451
|
+
* Track count while stacked is `stackCols` (default 1). Items stretch. Child `spanX`
|
|
1452
|
+
* becomes 1 only when stacked to one column.
|
|
1453
|
+
*/
|
|
1454
|
+
stack?: StackValue;
|
|
1455
|
+
/** Column tracks while `stack`ed. Default `1`. Ignored if `stack` is omitted. */
|
|
1456
|
+
stackCols?: number;
|
|
1457
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1458
|
+
borderRadius?: SpaceValue;
|
|
1459
|
+
/**
|
|
1460
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1461
|
+
* Default is `base` border. Does not paint a panel background.
|
|
1462
|
+
*/
|
|
1463
|
+
borderColor?: BorderColorValue;
|
|
1464
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1465
|
+
css?: string;
|
|
1466
|
+
};
|
|
1467
|
+
/**
|
|
1468
|
+
* Grid track. Direct children must be `Cell`, two or more. `numCols` / `numRows` are equal
|
|
1469
|
+
* `minmax(0, 1fr)` tracks. `stack` reduces columns when this box is at most that wide.
|
|
1470
|
+
*
|
|
1471
|
+
* @example
|
|
1472
|
+
* ```tsx
|
|
1473
|
+
* <Grid numCols={2} gap='small'>
|
|
1474
|
+
* <Cell>
|
|
1475
|
+
* <Text>A</Text>
|
|
1476
|
+
* </Cell>
|
|
1477
|
+
* <Cell>
|
|
1478
|
+
* <Text>B</Text>
|
|
1479
|
+
* </Cell>
|
|
1480
|
+
* </Grid>
|
|
1481
|
+
* ```
|
|
1482
|
+
*/
|
|
1483
|
+
export declare function Grid(props: GridProps): import("react").JSX.Element;
|
|
1484
|
+
export declare const panelCssVars: {
|
|
1485
|
+
readonly background: "--panelize-bg";
|
|
1486
|
+
readonly text: "--panelize-text";
|
|
1487
|
+
readonly textMuted: "--panelize-text-muted";
|
|
1488
|
+
readonly textHighlighted: "--panelize-text-highlighted";
|
|
1489
|
+
readonly border: "--panelize-border";
|
|
1490
|
+
};
|
|
1491
|
+
export type PanelProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & SelfAlignProps & ScrollProps & DirectionalBorderProps & {
|
|
1492
|
+
/**
|
|
1493
|
+
* Grow to fill remaining flex space (`flex: 1 1 0%`, `min-width` / `min-height` 0 so nested
|
|
1494
|
+
* `scroll` can shrink). Until then this box is `flex-shrink: 0` so a column of panels does not
|
|
1495
|
+
* collapse.
|
|
1496
|
+
*/
|
|
1497
|
+
flex?: boolean;
|
|
1498
|
+
/**
|
|
1499
|
+
* Size to the parent (`height` and `width` 100%). Explicit `width` / `height` win on that axis.
|
|
1500
|
+
* Do not use on the inner surface of a scrolling shell — that locks height and the paint
|
|
1501
|
+
* will not grow. Use `minHeight="100%"` instead.
|
|
1502
|
+
*/
|
|
1503
|
+
fill?: boolean;
|
|
1504
|
+
/** Color palette: `muted`, `base`, or `highlighted`. Default `base`. */
|
|
1505
|
+
variant?: PanelVariant;
|
|
1506
|
+
/** Border radius token (`small`) or CSS length. Default `none`. */
|
|
1507
|
+
borderRadius?: SpaceValue;
|
|
1508
|
+
/**
|
|
1509
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1510
|
+
* Default is this panel’s variant border. `base` is the surface, not a brand slot.
|
|
1511
|
+
*/
|
|
1512
|
+
borderColor?: BorderColorValue;
|
|
1513
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1514
|
+
css?: string;
|
|
1515
|
+
};
|
|
1516
|
+
/**
|
|
1517
|
+
* Section surface. Direct child of `Panels` only. Open inside: tracks, `Div`, type, controls,
|
|
1518
|
+
* nested `Panels`, custom components. Not a stray `Row` / `Col` / `Cell`. `variant` paints
|
|
1519
|
+
* `--panelize-*` for descendants.
|
|
1520
|
+
*
|
|
1521
|
+
* @example
|
|
1522
|
+
* ```tsx
|
|
1523
|
+
* <Panels fill>
|
|
1524
|
+
* <Panel variant='base' padding='base'>
|
|
1525
|
+
* <Heading level={2}>Account</Heading>
|
|
1526
|
+
* </Panel>
|
|
1527
|
+
* </Panels>
|
|
1528
|
+
* ```
|
|
1529
|
+
*/
|
|
1530
|
+
export declare function Panel(props: PanelProps): import("react").JSX.Element;
|
|
1531
|
+
export type PanelsProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & FlexAlignProps & ScrollProps & DirectionalBorderProps & {
|
|
1532
|
+
/** Lay children out in a row. Default is a column. */
|
|
1533
|
+
horizontal?: boolean;
|
|
1534
|
+
/** Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). */
|
|
1535
|
+
flex?: boolean;
|
|
1536
|
+
/**
|
|
1537
|
+
* Size to the parent. Default (absolute): `inset: 0` on axes without explicit `width` / `height`.
|
|
1538
|
+
* `relative`: `height` / `width` 100% instead. Explicit size still wins on that axis.
|
|
1539
|
+
* Does not change position (`absolute` unless `relative`).
|
|
1540
|
+
* Page: `<Panels fill scroll="vertical">` with inner `Panel minHeight="100%"` (not `fill`).
|
|
1541
|
+
* Split: `<Panels horizontal fill>` — `scroll` on the pane, not here.
|
|
1542
|
+
* Center in the window: `alignX="center"` `alignY="center"`, no `flex` on children, no `scroll` here.
|
|
1543
|
+
*/
|
|
1544
|
+
fill?: boolean;
|
|
1545
|
+
/** Stay in document flow (`position: relative`). Default is `absolute`. */
|
|
1546
|
+
relative?: boolean;
|
|
1547
|
+
/** Space between child `Panel`s. Token or CSS length. Theme default is `none`. */
|
|
1548
|
+
gap?: SpaceValue;
|
|
1549
|
+
/**
|
|
1550
|
+
* For `horizontal` `Panels` only (ignored on the default column).
|
|
1551
|
+
* Become a column when this box is at most this wide (`sm` / `md` / `lg`, or CSS).
|
|
1552
|
+
* Measures this `Panels`, not the viewport. `stack="md"` is not Tailwind `md:` (that is and-up).
|
|
1553
|
+
* While stacked, children stretch full width (`alignX` centering is ignored).
|
|
1554
|
+
* Column packing uses explicit `alignY`, or `start` if `alignY` was omitted (not row `stretch`).
|
|
1555
|
+
*/
|
|
1556
|
+
stack?: StackValue;
|
|
1557
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1558
|
+
borderRadius?: SpaceValue;
|
|
1559
|
+
/**
|
|
1560
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1561
|
+
* Default is `base` border. Does not paint a panel background.
|
|
1562
|
+
*/
|
|
1563
|
+
borderColor?: BorderColorValue;
|
|
1564
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1565
|
+
css?: string;
|
|
1566
|
+
};
|
|
1567
|
+
/**
|
|
1568
|
+
* Outer shell of a view. Direct children must be `Panel` (one is allowed).
|
|
1569
|
+
* Default is an absolute column. `relative` stays in flow. `horizontal` is a row (sidebar + main).
|
|
1570
|
+
*
|
|
1571
|
+
* @example
|
|
1572
|
+
* ```tsx
|
|
1573
|
+
* <Panels fill scroll='vertical'>
|
|
1574
|
+
* <Panel variant='muted' minHeight='100%'>
|
|
1575
|
+
* <Heading level={1}>Title</Heading>
|
|
1576
|
+
* </Panel>
|
|
1577
|
+
* </Panels>
|
|
1578
|
+
* ```
|
|
1579
|
+
*/
|
|
1580
|
+
export declare function Panels(props: PanelsProps): import("react").JSX.Element;
|
|
1581
|
+
export type RowProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & SelfAlignProps & DirectionalBorderProps & {
|
|
1582
|
+
/**
|
|
1583
|
+
* Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). Until then this box is
|
|
1584
|
+
* `flex-shrink: 0` (same as `Panel`).
|
|
1585
|
+
*/
|
|
1586
|
+
flex?: boolean;
|
|
1587
|
+
/**
|
|
1588
|
+
* Size to the parent on axes without a size. Theme `height` is `auto`, so omit `height` → width
|
|
1589
|
+
* 100% only. Explicit `width` / `height` win.
|
|
1590
|
+
*/
|
|
1591
|
+
fill?: boolean;
|
|
1592
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1593
|
+
borderRadius?: SpaceValue;
|
|
1594
|
+
/**
|
|
1595
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1596
|
+
* Default is `base` border. `base` is the surface, not a brand slot.
|
|
1597
|
+
*/
|
|
1598
|
+
borderColor?: BorderColorValue;
|
|
1599
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1600
|
+
css?: string;
|
|
1601
|
+
};
|
|
1602
|
+
/**
|
|
1603
|
+
* One band in a `Rows` track. Direct child of `Rows` only. Place content here (`Text`, `Cols`,
|
|
1604
|
+
* controls). This box owns `alignX` / `fill` / size — children do not position themselves.
|
|
1605
|
+
*
|
|
1606
|
+
* @example
|
|
1607
|
+
* ```tsx
|
|
1608
|
+
* <Rows gap='small'>
|
|
1609
|
+
* <Row>
|
|
1610
|
+
* <Text>One</Text>
|
|
1611
|
+
* </Row>
|
|
1612
|
+
* <Row>
|
|
1613
|
+
* <Text>Two</Text>
|
|
1614
|
+
* </Row>
|
|
1615
|
+
* </Rows>
|
|
1616
|
+
* ```
|
|
1617
|
+
*/
|
|
1618
|
+
export declare function Row(props: RowProps): import("react").JSX.Element;
|
|
1619
|
+
export type RowsProps = ComponentPropsWithoutRef<"div"> & BoxSpacingProps & SizeProps & FlexAlignProps & DirectionalBorderProps & {
|
|
1620
|
+
/** Grow in a flex parent (`flex: 1 1 0%`, `min-width` / `min-height` 0). */
|
|
1621
|
+
flex?: boolean;
|
|
1622
|
+
/** Size to the parent (`height` and `width` 100%). Explicit `width` / `height` win on that axis. */
|
|
1623
|
+
fill?: boolean;
|
|
1624
|
+
/** Space between child `Row`s. Token or CSS length. Theme default is `none`. */
|
|
1625
|
+
gap?: SpaceValue;
|
|
1626
|
+
/**
|
|
1627
|
+
* Allow child `Row`s to wrap onto the next line. Default is no wrap.
|
|
1628
|
+
* No `stack`: `Rows` is already a column. Use `Cols` or `Panels` `stack` to collapse a row.
|
|
1629
|
+
*/
|
|
1630
|
+
wrap?: boolean;
|
|
1631
|
+
/** Border radius token or CSS length. Default `none`. */
|
|
1632
|
+
borderRadius?: SpaceValue;
|
|
1633
|
+
/**
|
|
1634
|
+
* Panel surface (`muted` / `base` / `highlighted`), brand (`primary`), status (`danger`), or CSS.
|
|
1635
|
+
* Default is `base` border. Does not paint a panel background.
|
|
1636
|
+
*/
|
|
1637
|
+
borderColor?: BorderColorValue;
|
|
1638
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1639
|
+
css?: string;
|
|
1640
|
+
};
|
|
1641
|
+
/**
|
|
1642
|
+
* Column track. Direct children must be `Row`, two or more. Do not wrap a single band — use
|
|
1643
|
+
* the parent `Panel` or a `Div`.
|
|
1644
|
+
*
|
|
1645
|
+
* @example
|
|
1646
|
+
* ```tsx
|
|
1647
|
+
* <Rows gap='base'>
|
|
1648
|
+
* <Row>
|
|
1649
|
+
* <Heading level={1}>Title</Heading>
|
|
1650
|
+
* </Row>
|
|
1651
|
+
* <Row>
|
|
1652
|
+
* <Text muted>Caption</Text>
|
|
1653
|
+
* </Row>
|
|
1654
|
+
* </Rows>
|
|
1655
|
+
* ```
|
|
1656
|
+
*/
|
|
1657
|
+
export declare function Rows(props: RowsProps): import("react").JSX.Element;
|
|
1658
|
+
export type HeadingProps = ComponentPropsWithoutRef<"h1"> & {
|
|
1659
|
+
/**
|
|
1660
|
+
* HTML heading level (`h1`–`h6`). Required. Size comes from `defaults.heading.size` unless `size` is set.
|
|
1661
|
+
* No UA margin/padding. Line box hugs cap height (`line-height: 1` + `text-box` trim). Gap belongs on a layout parent.
|
|
1662
|
+
*/
|
|
1663
|
+
level: HeadingLevel;
|
|
1664
|
+
/** Font size token or CSS. Omit uses `defaults.heading.size[level]`. */
|
|
1665
|
+
size?: FontSizeValue;
|
|
1666
|
+
/**
|
|
1667
|
+
* Brand (`primary` → `brand.primary.base`), status (`danger` → `status.danger.base`), or raw CSS.
|
|
1668
|
+
* Wins over `muted` / `highlighted`. Omit with no flags = that panel’s `text.base`.
|
|
1669
|
+
*/
|
|
1670
|
+
color?: ColorValue;
|
|
1671
|
+
/** Use the nearest `Panel`’s `text.muted`. Ignored if `color` or `highlighted` is set. */
|
|
1672
|
+
muted?: boolean;
|
|
1673
|
+
/** Use the nearest `Panel`’s `text.highlighted`. Ignored if `color` is set. Wins over `muted`. */
|
|
1674
|
+
highlighted?: boolean;
|
|
1675
|
+
/** Font weight token (`thin` / `base` / `bold` / `heavy`) or CSS (`600`). Theme default `bold`. */
|
|
1676
|
+
weight?: FontWeightValue;
|
|
1677
|
+
/** `fontFamilies` token. Theme default `display`. */
|
|
1678
|
+
family?: FontFamilyToken;
|
|
1679
|
+
/** Italic. Default off. */
|
|
1680
|
+
italic?: boolean;
|
|
1681
|
+
/** Underline. Default off. */
|
|
1682
|
+
underlined?: boolean;
|
|
1683
|
+
/** `text-transform: uppercase`. Default off. */
|
|
1684
|
+
uppercase?: boolean;
|
|
1685
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1686
|
+
css?: string;
|
|
1687
|
+
};
|
|
1688
|
+
/**
|
|
1689
|
+
* Heading (`h1`–`h6`). Required `level`. Omit `size` → theme size for that level. Not a layout
|
|
1690
|
+
* shell — put gap on `Rows` / `Cols`.
|
|
1691
|
+
*
|
|
1692
|
+
* @example
|
|
1693
|
+
* ```tsx
|
|
1694
|
+
* <Heading level={1} uppercase color='primary'>
|
|
1695
|
+
* Panelize
|
|
1696
|
+
* </Heading>
|
|
1697
|
+
* ```
|
|
1698
|
+
*/
|
|
1699
|
+
export declare function Heading(props: HeadingProps): import("react").JSX.Element;
|
|
1700
|
+
export type SpanProps = ComponentPropsWithoutRef<"span"> & {
|
|
1701
|
+
/** Font size token (`small`) or CSS. Nested in `Text` with omit = inherit that `Text`. Else theme `base`. */
|
|
1702
|
+
size?: FontSizeValue;
|
|
1703
|
+
/**
|
|
1704
|
+
* Brand (`primary` → `brand.primary.base`), status (`danger` → `status.danger.base`), or raw CSS.
|
|
1705
|
+
* Wins over `muted` / `highlighted`. Omit = inherit parent color (panel `text.base` if none).
|
|
1706
|
+
*/
|
|
1707
|
+
color?: ColorValue;
|
|
1708
|
+
/** Use the nearest `Panel`’s `text.muted`. Ignored if `color` or `highlighted` is set. */
|
|
1709
|
+
muted?: boolean;
|
|
1710
|
+
/** Use the nearest `Panel`’s `text.highlighted`. Ignored if `color` is set. Wins over `muted`. */
|
|
1711
|
+
highlighted?: boolean;
|
|
1712
|
+
/** Font weight token or CSS. Nested omit = inherit parent `Text`. Else theme `base` (`400`). */
|
|
1713
|
+
weight?: FontWeightValue;
|
|
1714
|
+
/** `fontFamilies` token. Nested omit = inherit parent `Text`. Else `base`. */
|
|
1715
|
+
family?: FontFamilyToken;
|
|
1716
|
+
/** Italic. Default off (inherits parent `font-style`). */
|
|
1717
|
+
italic?: boolean;
|
|
1718
|
+
/** Underline. Default off. */
|
|
1719
|
+
underlined?: boolean;
|
|
1720
|
+
/** `text-transform: uppercase`. Default off (inherits parent transform). */
|
|
1721
|
+
uppercase?: boolean;
|
|
1722
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1723
|
+
css?: string;
|
|
1724
|
+
};
|
|
1725
|
+
/**
|
|
1726
|
+
* Inline run (`<span>`). Nested in `Text` / `Span`: omit size/weight/`family` → inherit that
|
|
1727
|
+
* line; omit color → CSS `inherit`. Not a layout shell.
|
|
1728
|
+
*
|
|
1729
|
+
* @example
|
|
1730
|
+
* ```tsx
|
|
1731
|
+
* <Text>
|
|
1732
|
+
* Nested <Span weight='bold'>bold</Span>
|
|
1733
|
+
* </Text>
|
|
1734
|
+
* ```
|
|
1735
|
+
*/
|
|
1736
|
+
export declare function Span(props: SpanProps): import("react").JSX.Element;
|
|
1737
|
+
export type TextProps = ComponentPropsWithoutRef<"p"> & {
|
|
1738
|
+
/** Font size token (`small`) or CSS. Theme default `base`. */
|
|
1739
|
+
size?: FontSizeValue;
|
|
1740
|
+
/**
|
|
1741
|
+
* Brand (`primary` → `brand.primary.base`), status (`danger` → `status.danger.base`), or raw CSS.
|
|
1742
|
+
* Wins over `muted` / `highlighted`. Omit with no flags = that panel’s `text.base`.
|
|
1743
|
+
*/
|
|
1744
|
+
color?: ColorValue;
|
|
1745
|
+
/** Use the nearest `Panel`’s `text.muted`. Ignored if `color` or `highlighted` is set. */
|
|
1746
|
+
muted?: boolean;
|
|
1747
|
+
/** Use the nearest `Panel`’s `text.highlighted`. Ignored if `color` is set. Wins over `muted`. */
|
|
1748
|
+
highlighted?: boolean;
|
|
1749
|
+
/** Font weight token (`thin` / `base` / `bold` / `heavy`) or CSS (`600`). Theme default `base` (`400`). */
|
|
1750
|
+
weight?: FontWeightValue;
|
|
1751
|
+
/** `fontFamilies` token. Omit uses `base`. */
|
|
1752
|
+
family?: FontFamilyToken;
|
|
1753
|
+
/** Italic. Default off. */
|
|
1754
|
+
italic?: boolean;
|
|
1755
|
+
/** Underline. Default off. */
|
|
1756
|
+
underlined?: boolean;
|
|
1757
|
+
/** `text-transform: uppercase`. Default off. */
|
|
1758
|
+
uppercase?: boolean;
|
|
1759
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1760
|
+
css?: string;
|
|
1761
|
+
};
|
|
1762
|
+
/**
|
|
1763
|
+
* Body copy (`<p>`). Use this (or `Heading` / `Span` / `TextLink` / `Label`) for visible writing
|
|
1764
|
+
* so it inherits the nearest `Panel` text tokens. Not a layout shell.
|
|
1765
|
+
*
|
|
1766
|
+
* @example
|
|
1767
|
+
* ```tsx
|
|
1768
|
+
* <Text muted>A React panel layout library.</Text>
|
|
1769
|
+
* ```
|
|
1770
|
+
*/
|
|
1771
|
+
declare function Text$1(props: TextProps): import("react").JSX.Element;
|
|
1772
|
+
export type TextLinkProps = ComponentPropsWithoutRef<"a"> & {
|
|
1773
|
+
/** Font size token (`small`) or CSS. Nested in `Text` / `Span` with omit = inherit. Else theme `base`. */
|
|
1774
|
+
size?: FontSizeValue;
|
|
1775
|
+
/**
|
|
1776
|
+
* Brand (`primary` → `brand.primary.base`), status (`danger` → `status.danger.base`), or raw CSS.
|
|
1777
|
+
* Theme default `primary`. Wins over `muted` / `highlighted`.
|
|
1778
|
+
*/
|
|
1779
|
+
color?: ColorValue;
|
|
1780
|
+
/** Use the nearest `Panel`’s `text.muted`. Ignored if `color` or `highlighted` is set. */
|
|
1781
|
+
muted?: boolean;
|
|
1782
|
+
/** Use the nearest `Panel`’s `text.highlighted`. Ignored if `color` is set. Wins over `muted`. */
|
|
1783
|
+
highlighted?: boolean;
|
|
1784
|
+
/** Font weight token or CSS. Nested omit = inherit parent `Text` / `Span`. Else theme `base`. */
|
|
1785
|
+
weight?: FontWeightValue;
|
|
1786
|
+
/** `fontFamilies` token. Nested omit = inherit parent `Text` / `Span`. Else `base`. */
|
|
1787
|
+
family?: FontFamilyToken;
|
|
1788
|
+
/** Italic. Default off. */
|
|
1789
|
+
italic?: boolean;
|
|
1790
|
+
/** Underline at rest. Default off. */
|
|
1791
|
+
underlined?: boolean;
|
|
1792
|
+
/** `text-transform: uppercase`. Default off. */
|
|
1793
|
+
uppercase?: boolean;
|
|
1794
|
+
/** Extra CSS appended to this component’s styles. */
|
|
1795
|
+
css?: string;
|
|
1796
|
+
};
|
|
1797
|
+
/**
|
|
1798
|
+
* Inline link (`<a>`). Default chroma `primary`. Nested omit size/weight/`family` → inherit.
|
|
1799
|
+
* Not a layout shell.
|
|
1800
|
+
*
|
|
1801
|
+
* @example
|
|
1802
|
+
* ```tsx
|
|
1803
|
+
* <Text>
|
|
1804
|
+
* See <TextLink href='/docs'>docs</TextLink>
|
|
1805
|
+
* </Text>
|
|
1806
|
+
* ```
|
|
1807
|
+
*/
|
|
1808
|
+
export declare function TextLink(props: TextLinkProps): import("react").JSX.Element;
|
|
1809
|
+
|
|
1810
|
+
export {
|
|
1811
|
+
Option$1 as Option,
|
|
1812
|
+
Text$1 as Text,
|
|
1813
|
+
};
|
|
1814
|
+
|
|
1815
|
+
export {};
|