panelize 0.0.0-stage → 0.1.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.
@@ -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 {};