@raylang/react 0.0.0-stage → 0.4.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.
Files changed (75) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +13 -2
  4. package/components/accordion.js +15 -0
  5. package/components/alert.js +10 -0
  6. package/components/app-bar.js +10 -0
  7. package/components/app-shell.js +10 -0
  8. package/components/aspect-ratio.js +10 -0
  9. package/components/attachment.js +15 -0
  10. package/components/avatar.js +10 -0
  11. package/components/badge.js +10 -0
  12. package/components/blockquote.js +10 -0
  13. package/components/bottom-nav.js +15 -0
  14. package/components/breadcrumbs.js +15 -0
  15. package/components/button-group.js +10 -0
  16. package/components/button.js +10 -0
  17. package/components/card.js +10 -0
  18. package/components/carousel.js +10 -0
  19. package/components/center.js +10 -0
  20. package/components/checkbox-group.js +10 -0
  21. package/components/checkbox.js +10 -0
  22. package/components/code.js +10 -0
  23. package/components/color-picker.js +15 -0
  24. package/components/combobox.js +10 -0
  25. package/components/command-palette.js +10 -0
  26. package/components/container.js +10 -0
  27. package/components/date-picker.js +15 -0
  28. package/components/dialog.js +10 -0
  29. package/components/drawer.js +10 -0
  30. package/components/empty-state.js +10 -0
  31. package/components/file-upload.js +10 -0
  32. package/components/grid.js +10 -0
  33. package/components/group.js +10 -0
  34. package/components/icon-button.js +10 -0
  35. package/components/icon.js +10 -0
  36. package/components/indicator.js +10 -0
  37. package/components/input.js +10 -0
  38. package/components/kbd.js +10 -0
  39. package/components/menu.js +25 -0
  40. package/components/nav-link.js +10 -0
  41. package/components/notification.js +15 -0
  42. package/components/number-input.js +10 -0
  43. package/components/pagination.js +10 -0
  44. package/components/password-input.js +10 -0
  45. package/components/path-input.js +10 -0
  46. package/components/popover.js +10 -0
  47. package/components/progress.js +10 -0
  48. package/components/radio.js +15 -0
  49. package/components/scroll-area.js +10 -0
  50. package/components/search.js +10 -0
  51. package/components/segmented-control.js +10 -0
  52. package/components/select.js +10 -0
  53. package/components/separator.js +10 -0
  54. package/components/sidebar.js +15 -0
  55. package/components/skeleton.js +10 -0
  56. package/components/slider.js +10 -0
  57. package/components/spinner.js +10 -0
  58. package/components/split.js +10 -0
  59. package/components/stack.js +10 -0
  60. package/components/stat.js +10 -0
  61. package/components/statusbar.js +15 -0
  62. package/components/stepper.js +15 -0
  63. package/components/switch.js +10 -0
  64. package/components/table.js +10 -0
  65. package/components/tabs.js +20 -0
  66. package/components/textarea.js +10 -0
  67. package/components/theme-toggle.js +10 -0
  68. package/components/timeline.js +15 -0
  69. package/components/toggle-group.js +10 -0
  70. package/components/toggle.js +10 -0
  71. package/components/tooltip.js +10 -0
  72. package/create.js +64 -0
  73. package/index.d.ts +2180 -0
  74. package/index.js +74 -0
  75. package/package.json +32 -4
package/index.d.ts ADDED
@@ -0,0 +1,2180 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import type * as React from "react";
4
+ import type * as Ray from "@raylang/elements";
5
+
6
+ /** Wraps any custom element as a React component (props set as DOM properties, events by name). */
7
+ export declare function createComponent<E extends HTMLElement = HTMLElement, P = {}>(
8
+ tagName: string,
9
+ options?: { properties?: string[]; events?: Record<string, string>; displayName?: string },
10
+ ): React.ForwardRefExoticComponent<P & Omit<React.HTMLAttributes<E>, keyof P> & { children?: React.ReactNode } & React.RefAttributes<E>>;
11
+
12
+ export interface RayButtonOwnProps {
13
+ /** Visual style. raised: a physical key on a darker edge that sinks when pressed (mouse, touch or keyboard). */
14
+ variant?: "filled" | "light" | "outline" | "subtle" | "default" | "transparent" | "gradient" | "raised";
15
+ /** With variant=gradient: "from to [deg]", palette colors or CSS colors ("teal blue 90"). Default: the --ray-gradient-* tokens. */
16
+ gradient?: string;
17
+ /** A palette color (blue, red…) or any CSS color. Default: the primary color. */
18
+ color?: string;
19
+ /** Height, padding and font size. */
20
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
21
+ /** Corner radius. Default: --ray-radius-default. */
22
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
23
+ /** submit/reset act on the enclosing form. */
24
+ type?: "button" | "submit" | "reset";
25
+ /** Not interactive (also when inside a disabled fieldset). */
26
+ disabled?: boolean;
27
+ /** Shows a spinner over the content and blocks clicks. */
28
+ loading?: boolean;
29
+ /** Takes the whole width of its container. */
30
+ fullWidth?: boolean;
31
+ /** Renders a link instead of a button. */
32
+ href?: string;
33
+ /** Link target, with href. */
34
+ target?: string;
35
+ /** With type=submit: submitted as name=value. */
36
+ name?: string;
37
+ /** With type=submit: the submitted value. */
38
+ value?: string;
39
+ }
40
+ export type RayButtonProps = RayButtonOwnProps & Omit<React.HTMLAttributes<Ray.RayButton>, keyof RayButtonOwnProps> & { children?: React.ReactNode };
41
+ /** <ray-button> as a React component. */
42
+ export declare const RayButton: React.ForwardRefExoticComponent<RayButtonProps & React.RefAttributes<Ray.RayButton>>;
43
+
44
+ export interface RayButtonGroupOwnProps {
45
+ /** Direction of the group. */
46
+ orientation?: "horizontal" | "vertical";
47
+ /** Fills its container; the children share the width. */
48
+ fullWidth?: boolean;
49
+ /** Accessible name (aria-label). */
50
+ label?: string;
51
+ }
52
+ export type RayButtonGroupProps = RayButtonGroupOwnProps & Omit<React.HTMLAttributes<Ray.RayButtonGroup>, keyof RayButtonGroupOwnProps> & { children?: React.ReactNode };
53
+ /** <ray-button-group> as a React component. */
54
+ export declare const RayButtonGroup: React.ForwardRefExoticComponent<RayButtonGroupProps & React.RefAttributes<Ray.RayButtonGroup>>;
55
+
56
+ export interface RayIconButtonOwnProps {
57
+ /** Accessible name and tooltip (required: the button has no text). */
58
+ label?: string;
59
+ /** Visual style. */
60
+ variant?: "filled" | "light" | "outline" | "subtle" | "default" | "transparent" | "gradient" | "raised";
61
+ /** With variant=gradient: "from to [deg]", palette colors or CSS colors ("teal blue 90"). Default: the --ray-gradient-* tokens. */
62
+ gradient?: string;
63
+ /** A palette color or any CSS color. */
64
+ color?: string;
65
+ /** Width and height. */
66
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
67
+ /** Not interactive. */
68
+ disabled?: boolean;
69
+ /** Shows a spinner instead of the icon. */
70
+ loading?: boolean;
71
+ /** Corner radius. Default: --ray-radius-default. */
72
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
73
+ /** submit/reset act on the enclosing form. */
74
+ type?: "button" | "submit" | "reset";
75
+ /** Takes the whole width of its container. */
76
+ fullWidth?: boolean;
77
+ /** Renders a link instead of a button. */
78
+ href?: string;
79
+ /** Link target, with href. */
80
+ target?: string;
81
+ /** With type=submit: submitted as name=value. */
82
+ name?: string;
83
+ /** With type=submit: the submitted value. */
84
+ value?: string;
85
+ }
86
+ export type RayIconButtonProps = RayIconButtonOwnProps & Omit<React.HTMLAttributes<Ray.RayIconButton>, keyof RayIconButtonOwnProps> & { children?: React.ReactNode };
87
+ /** <ray-icon-button> as a React component. */
88
+ export declare const RayIconButton: React.ForwardRefExoticComponent<RayIconButtonProps & React.RefAttributes<Ray.RayIconButton>>;
89
+
90
+ export interface RayToggleOwnProps {
91
+ /** On. */
92
+ pressed?: boolean;
93
+ /** Look of "on": subtle (tint), outline (colored border + tint), light (muted → tint), filled (surface → solid color), raised (a key that latches down, lit). ray-button's default, transparent and gradient are left out: no distinct on state, or only a color change. */
94
+ variant?: "subtle" | "outline" | "light" | "filled" | "raised";
95
+ /** Square, for an icon alone (give it a label). */
96
+ square?: boolean;
97
+ /** Accessible name and tooltip, for icon-only toggles. */
98
+ label?: string;
99
+ /** With variant=gradient: "from to [deg]", palette colors or CSS colors ("teal blue 90"). Default: the --ray-gradient-* tokens. */
100
+ gradient?: string;
101
+ /** A palette color (blue, red…) or any CSS color. Default: the primary color. */
102
+ color?: string;
103
+ /** Height, padding and font size. */
104
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
105
+ /** Corner radius. Default: --ray-radius-default. */
106
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
107
+ /** submit/reset act on the enclosing form. */
108
+ type?: "button" | "submit" | "reset";
109
+ /** Not interactive (also when inside a disabled fieldset). */
110
+ disabled?: boolean;
111
+ /** Shows a spinner over the content and blocks clicks. */
112
+ loading?: boolean;
113
+ /** Takes the whole width of its container. */
114
+ fullWidth?: boolean;
115
+ /** Renders a link instead of a button. */
116
+ href?: string;
117
+ /** Link target, with href. */
118
+ target?: string;
119
+ /** With type=submit: submitted as name=value. */
120
+ name?: string;
121
+ /** With type=submit: the submitted value. */
122
+ value?: string;
123
+ /** The user flipped it (read `pressed`). */
124
+ onChange?: (event: Event) => void;
125
+ }
126
+ export type RayToggleProps = RayToggleOwnProps & Omit<React.HTMLAttributes<Ray.RayToggle>, keyof RayToggleOwnProps> & { children?: React.ReactNode };
127
+ /** <ray-toggle> as a React component. */
128
+ export declare const RayToggle: React.ForwardRefExoticComponent<RayToggleProps & React.RefAttributes<Ray.RayToggle>>;
129
+
130
+ export interface RayToggleGroupOwnProps {
131
+ /** single: choosing one turns the others off; multiple: each toggle is independent. */
132
+ type?: "single" | "multiple";
133
+ /** The selected key (single) or keys (multiple: an array, or a comma-separated attribute). */
134
+ value?: string | string[] | undefined;
135
+ /** Form field name: the value (multiple: one entry per key). */
136
+ name?: string;
137
+ /** Needs a value; with single the selected toggle cannot be turned off. */
138
+ required?: boolean;
139
+ /** Disables every toggle. */
140
+ disabled?: boolean;
141
+ /** Toggles apart, each with its own corners (default: joined). */
142
+ spaced?: boolean;
143
+ /** Variant of the toggles. */
144
+ variant?: "subtle" | "outline" | "light" | "filled" | "raised";
145
+ /** Color of the toggles' on state. */
146
+ color?: string;
147
+ /** Size of the toggles. */
148
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
149
+ /** Corner radius of the toggles. */
150
+ radius?: string;
151
+ /** Square toggles, for icons. */
152
+ square?: boolean;
153
+ /** Direction of the group. */
154
+ orientation?: "horizontal" | "vertical";
155
+ /** Fills its container; the children share the width. */
156
+ fullWidth?: boolean;
157
+ /** Accessible name (aria-label). */
158
+ label?: string;
159
+ /** The user changed the selection (read `value` or `values`; the toggles' own change events stop at the group). */
160
+ onChange?: (event: Event) => void;
161
+ }
162
+ export type RayToggleGroupProps = RayToggleGroupOwnProps & Omit<React.HTMLAttributes<Ray.RayToggleGroup>, keyof RayToggleGroupOwnProps> & { children?: React.ReactNode };
163
+ /** <ray-toggle-group> as a React component. */
164
+ export declare const RayToggleGroup: React.ForwardRefExoticComponent<RayToggleGroupProps & React.RefAttributes<Ray.RayToggleGroup>>;
165
+
166
+ export interface RayCheckboxOwnProps {
167
+ /** Current state. The checked attribute is the initial state (restored on reset). */
168
+ checked?: boolean;
169
+ /** Mixed state; cleared on the next user change. */
170
+ indeterminate?: boolean;
171
+ /** Submitted value when checked. */
172
+ value?: string;
173
+ /** Form field name. */
174
+ name?: string;
175
+ /** Label text (or put the label in the content). */
176
+ label?: string;
177
+ /** Help text. */
178
+ description?: string;
179
+ /** Error text. */
180
+ error?: string;
181
+ /** Must be checked to submit. */
182
+ required?: boolean;
183
+ /** Not interactive nor submitted. */
184
+ disabled?: boolean;
185
+ /** Checked look: filled box, or colored border and mark. */
186
+ variant?: "filled" | "outline";
187
+ /** A palette color or any CSS color for the checked state. */
188
+ color?: string;
189
+ /** Box and font size. */
190
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
191
+ /** Side of the label. */
192
+ labelPosition?: "right" | "left";
193
+ /** Corner radius. */
194
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
195
+ /** Description before or after the control. */
196
+ descriptionPosition?: "above" | "below";
197
+ /** When the user toggles it. */
198
+ onChange?: (event: Event) => void;
199
+ }
200
+ export type RayCheckboxProps = RayCheckboxOwnProps & Omit<React.HTMLAttributes<Ray.RayCheckbox>, keyof RayCheckboxOwnProps> & { children?: React.ReactNode };
201
+ /** <ray-checkbox> as a React component. */
202
+ export declare const RayCheckbox: React.ForwardRefExoticComponent<RayCheckboxProps & React.RefAttributes<Ray.RayCheckbox>>;
203
+
204
+ export interface RayCheckboxGroupOwnProps {
205
+ /** The checked values. The value attribute: "a,b". */
206
+ value?: string[];
207
+ /** Form field name. */
208
+ name?: string;
209
+ /** Group label (also its accessible name). */
210
+ label?: string;
211
+ /** Help text. */
212
+ description?: string;
213
+ /** Error text. */
214
+ error?: string;
215
+ /** At least one must be checked. */
216
+ required?: boolean;
217
+ /** Disables every checkbox. */
218
+ disabled?: boolean;
219
+ /** At most this many: the others are disabled once reached; the label shows the count. */
220
+ max?: number;
221
+ /** Layout of the checkboxes. */
222
+ orientation?: "vertical" | "horizontal";
223
+ /** Size of the checkboxes that set none. */
224
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
225
+ /** Color of the checkboxes that set none. */
226
+ color?: string;
227
+ /** The description before the checkboxes or after them. */
228
+ descriptionPosition?: "above" | "below";
229
+ /** The user checked or unchecked one (read value). */
230
+ onChange?: (event: Event) => void;
231
+ /** Same moment as change. */
232
+ onInput?: (event: Event) => void;
233
+ }
234
+ export type RayCheckboxGroupProps = RayCheckboxGroupOwnProps & Omit<React.HTMLAttributes<Ray.RayCheckboxGroup>, keyof RayCheckboxGroupOwnProps> & { children?: React.ReactNode };
235
+ /** <ray-checkbox-group> as a React component. */
236
+ export declare const RayCheckboxGroup: React.ForwardRefExoticComponent<RayCheckboxGroupProps & React.RefAttributes<Ray.RayCheckboxGroup>>;
237
+
238
+ export interface RayColorPickerOwnProps {
239
+ /** The color, written in format. Any color is accepted and rewritten in format. The value attribute is the initial value (restored on form reset). */
240
+ value?: string;
241
+ /** How value is written: hex, hexa, rgb, rgba, hsl or hsla. Formats ending in a show the opacity slider. */
242
+ format?: Ray.ColorFormat;
243
+ /** Preset colors below the picker: an array, or a comma-separated list in the attribute (commas inside rgb()/hsl() are kept). */
244
+ swatches?: string | string[];
245
+ /** Swatches in each row. */
246
+ swatchesPerRow?: number;
247
+ /** Only the swatches: no area nor sliders. */
248
+ swatchesOnly?: boolean;
249
+ /** Width of the picker and size of its thumbs. */
250
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
251
+ /** Takes the width of its container. */
252
+ fullWidth?: boolean;
253
+ /** Form field name. */
254
+ name?: string;
255
+ /** Not interactive. */
256
+ disabled?: boolean;
257
+ /** Accessible name of the whole picker. */
258
+ label?: string;
259
+ /** The color moved (every step of a drag). */
260
+ onInput?: (event: Event) => void;
261
+ /** The color settled: pointer released, a key pressed or a swatch chosen (read value). */
262
+ onChange?: (event: Event) => void;
263
+ }
264
+ export type RayColorPickerProps = RayColorPickerOwnProps & Omit<React.HTMLAttributes<Ray.RayColorPicker>, keyof RayColorPickerOwnProps> & { children?: React.ReactNode };
265
+ /** <ray-color-picker> as a React component. */
266
+ export declare const RayColorPicker: React.ForwardRefExoticComponent<RayColorPickerProps & React.RefAttributes<Ray.RayColorPicker>>;
267
+
268
+ export interface RayColorInputOwnProps {
269
+ /** The color, written in format. The value attribute is the initial value (restored on form reset). */
270
+ value?: string;
271
+ /** How value is written: hex, hexa, rgb, rgba, hsl or hsla. */
272
+ format?: Ray.ColorFormat;
273
+ /** Preset colors in the dropdown (an array, or a comma-separated list). */
274
+ swatches?: string | string[];
275
+ /** Swatches in each row. */
276
+ swatchesPerRow?: number;
277
+ /** Shown while empty. */
278
+ placeholder?: string;
279
+ /** Hides the eyedropper button. */
280
+ hideEyedropper?: boolean;
281
+ /** The dropdown is shown. */
282
+ open?: boolean;
283
+ /** Form field name. */
284
+ name?: string;
285
+ /** Label above the field. */
286
+ label?: string;
287
+ /** Help text. */
288
+ description?: string;
289
+ /** Error message; marks the field invalid. */
290
+ error?: string;
291
+ /** Must have a color. */
292
+ required?: boolean;
293
+ /** Not interactive. */
294
+ disabled?: boolean;
295
+ /** Field height and font size. */
296
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
297
+ /** Corner radius: xs…xl or a CSS length. */
298
+ radius?: string;
299
+ /** Visual style of the field. */
300
+ variant?: "default" | "filled" | "unstyled";
301
+ /** Where the description goes. */
302
+ descriptionPosition?: "above" | "below";
303
+ /** The color changed (typing a valid color, or moving the picker). */
304
+ onInput?: (event: Event) => void;
305
+ /** The color settled (picker released, a swatch, the eyedropper, or the field left with a new color). */
306
+ onChange?: (event: Event) => void;
307
+ /** The dropdown opened. */
308
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
309
+ /** The dropdown closed. */
310
+ onRayClose?: (event: CustomEvent<unknown>) => void;
311
+ }
312
+ export type RayColorInputProps = RayColorInputOwnProps & Omit<React.HTMLAttributes<Ray.RayColorInput>, keyof RayColorInputOwnProps> & { children?: React.ReactNode };
313
+ /** <ray-color-input> as a React component. */
314
+ export declare const RayColorInput: React.ForwardRefExoticComponent<RayColorInputProps & React.RefAttributes<Ray.RayColorInput>>;
315
+
316
+ export interface RayComboboxOwnProps {
317
+ /** The chosen value; an array with multiple. The value attribute: "a,b" with multiple. */
318
+ value?: string | string[];
319
+ /** Options instead of child <option>/<optgroup> elements. */
320
+ data?: Array<string | { value: string; label?: string; disabled?: boolean; group?: string }>;
321
+ /** Several values, shown as chips. */
322
+ multiple?: boolean;
323
+ /** Shown while empty. */
324
+ placeholder?: string;
325
+ /** What was typed can be added when no option matches it ("+ Create …"); fires ray-create. */
326
+ creatable?: boolean;
327
+ /** A button that clears the value. */
328
+ clearable?: boolean;
329
+ /** With multiple: at most this many. */
330
+ maxValues?: number;
331
+ /** At most this many options shown (large lists: keep typing). */
332
+ limit?: number;
333
+ /** Shown when nothing matches. */
334
+ nothingFound?: string;
335
+ /** The dropdown is shown. */
336
+ open?: boolean;
337
+ /** Form field name. */
338
+ name?: string;
339
+ /** Visible label (also the accessible name). */
340
+ label?: string;
341
+ /** Help text. */
342
+ description?: string;
343
+ /** Error text; marks the field invalid. */
344
+ error?: string;
345
+ /** Required for form submission. */
346
+ required?: boolean;
347
+ /** Not interactive nor submitted. */
348
+ disabled?: boolean;
349
+ /** Size. */
350
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
351
+ /** Corner radius. */
352
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
353
+ /** Box style. */
354
+ variant?: "default" | "filled" | "unstyled";
355
+ /** Description before or after the control. */
356
+ descriptionPosition?: "above" | "below";
357
+ /** The value changed (read value). */
358
+ onChange?: (event: Event) => void;
359
+ /** Same moment as change. */
360
+ onInput?: (event: Event) => void;
361
+ /** A new value was created from the typed text. */
362
+ onRayCreate?: (event: CustomEvent<{ value: string }>) => void;
363
+ /** The dropdown opened. */
364
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
365
+ /** The dropdown closed. */
366
+ onRayClose?: (event: CustomEvent<unknown>) => void;
367
+ }
368
+ export type RayComboboxProps = RayComboboxOwnProps & Omit<React.HTMLAttributes<Ray.RayCombobox>, keyof RayComboboxOwnProps> & { children?: React.ReactNode };
369
+ /** <ray-combobox> as a React component. */
370
+ export declare const RayCombobox: React.ForwardRefExoticComponent<RayComboboxProps & React.RefAttributes<Ray.RayCombobox>>;
371
+
372
+ export interface RayDatePickerOwnProps {
373
+ /** The chosen date, ISO "YYYY-MM-DD" ("" for none). The value attribute is the initial value (restored on form reset). */
374
+ value?: string;
375
+ /** Earliest selectable date (ISO). Earlier days are disabled; an earlier value is invalid (rangeUnderflow). */
376
+ min?: string;
377
+ /** Latest selectable date (ISO). */
378
+ max?: string;
379
+ /** Shown while no date is chosen. */
380
+ placeholder?: string;
381
+ /** How the date is displayed (Intl dateStyle). */
382
+ format?: "short" | "medium" | "long" | "full";
383
+ /** Locale for names and formats. Default: the nearest lang attribute, else the browser's. */
384
+ locale?: string;
385
+ /** First day of the week, 0 (Sunday) to 6. Default: the locale's. */
386
+ firstDay?: number;
387
+ /** Shows a button that clears the date. */
388
+ clearable?: boolean;
389
+ /** The calendar dropdown is shown. */
390
+ open?: boolean;
391
+ /** Form field name. */
392
+ name?: string;
393
+ /** Visible label (also the accessible name). */
394
+ label?: string;
395
+ /** Help text. */
396
+ description?: string;
397
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
398
+ descriptionPosition?: "above" | "below";
399
+ /** Error text. */
400
+ error?: string;
401
+ /** Required for form submission. */
402
+ required?: boolean;
403
+ /** Not interactive nor submitted. */
404
+ disabled?: boolean;
405
+ /** Height and font size. */
406
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
407
+ /** Corner radius. */
408
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
409
+ /** Box style. */
410
+ variant?: "default" | "filled" | "unstyled";
411
+ /** When the date changes (picked or cleared). */
412
+ onInput?: (event: Event) => void;
413
+ /** When the date changes (picked or cleared). */
414
+ onChange?: (event: Event) => void;
415
+ /** The calendar opened. */
416
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
417
+ /** The calendar closed. */
418
+ onRayClose?: (event: CustomEvent<unknown>) => void;
419
+ }
420
+ export type RayDatePickerProps = RayDatePickerOwnProps & Omit<React.HTMLAttributes<Ray.RayDatePicker>, keyof RayDatePickerOwnProps> & { children?: React.ReactNode };
421
+ /** <ray-date-picker> as a React component. */
422
+ export declare const RayDatePicker: React.ForwardRefExoticComponent<RayDatePickerProps & React.RefAttributes<Ray.RayDatePicker>>;
423
+
424
+ export interface RayCalendarOwnProps {
425
+ /** The selected date, ISO "YYYY-MM-DD". */
426
+ value?: string;
427
+ /** Earliest selectable date (ISO). */
428
+ min?: string;
429
+ /** Latest selectable date (ISO). */
430
+ max?: string;
431
+ /** Locale for month and weekday names. Default: the nearest lang attribute, else the browser's. */
432
+ locale?: string;
433
+ /** First day of the week, 0 (Sunday) to 6. Default: the locale's. */
434
+ firstDay?: number;
435
+ /** Day cell size and font size. */
436
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
437
+ /** A day was selected (read `value`). */
438
+ onChange?: (event: Event) => void;
439
+ }
440
+ export type RayCalendarProps = RayCalendarOwnProps & Omit<React.HTMLAttributes<Ray.RayCalendar>, keyof RayCalendarOwnProps> & { children?: React.ReactNode };
441
+ /** <ray-calendar> as a React component. */
442
+ export declare const RayCalendar: React.ForwardRefExoticComponent<RayCalendarProps & React.RefAttributes<Ray.RayCalendar>>;
443
+
444
+ export interface RayFileUploadOwnProps {
445
+ /** Form field name: every file is submitted under it. */
446
+ name?: string;
447
+ /** Label above the zone. */
448
+ label?: string;
449
+ /** Help text under the label. */
450
+ description?: string;
451
+ /** Error text (replaces the explanation of refused files). */
452
+ error?: string;
453
+ /** The form needs at least one file. */
454
+ required?: boolean;
455
+ /** No picking, dropping or removing. */
456
+ disabled?: boolean;
457
+ /** Accepted types, as in <input type=file>: ".pdf,.png", "image/*", "application/json". */
458
+ accept?: string;
459
+ /** Several files (else one, replaced by the next). */
460
+ multiple?: boolean;
461
+ /** Largest file: bytes or a size like "10 MB", "512 KB". */
462
+ maxSize?: string | number;
463
+ /** With multiple: the most files kept. */
464
+ maxFiles?: number;
465
+ /** Small text in the zone. Default: from accept, max-size and max-files ("PNG or PDF · up to 10 MB each · max. 5 files"). */
466
+ hint?: string;
467
+ /** Title of the zone, before "or browse". */
468
+ dropLabel?: string;
469
+ /** The link-styled word (the button text in compact). */
470
+ browseLabel?: string;
471
+ /** Title while files are dragged over it. */
472
+ activeLabel?: string;
473
+ /** Title on touch screens (no hover), where dragging files is rare. */
474
+ tapLabel?: string;
475
+ /** default: a tall centered zone; compact: one row with a Browse button. */
476
+ variant?: "default" | "compact";
477
+ /** How chosen files show: full-width rows, thumbnail cards, or not at all (render your own on change). */
478
+ list?: "rows" | "cards" | "none";
479
+ /** With a native host (ray-elements/core/raylang.js in a std/ui window), browsing opens the system dialog and gives paths (see `paths`); drop and paste still give Files. */
480
+ native?: boolean;
481
+ /** Accent of hover, drag and the browse link (default: primary). */
482
+ color?: string;
483
+ /** Files were added or removed (read `files`, and `lastChange` for which). */
484
+ onChange?: (event: Event) => void;
485
+ /** Some files were refused (type, size or count). */
486
+ onRayReject?: (event: CustomEvent<{ rejected: Ray.FileRejection[] }>) => void;
487
+ /** The native dialog failed (with `native`). */
488
+ onRayError?: (event: CustomEvent<{ error: Error }>) => void;
489
+ }
490
+ export type RayFileUploadProps = RayFileUploadOwnProps & Omit<React.HTMLAttributes<Ray.RayFileUpload>, keyof RayFileUploadOwnProps> & { children?: React.ReactNode };
491
+ /** <ray-file-upload> as a React component. */
492
+ export declare const RayFileUpload: React.ForwardRefExoticComponent<RayFileUploadProps & React.RefAttributes<Ray.RayFileUpload>>;
493
+
494
+ export interface RayInputOwnProps {
495
+ /** Current value. The value attribute is the initial value (restored on form reset). */
496
+ value?: string;
497
+ /** Input type. */
498
+ type?: "text" | "email" | "password" | "search" | "number" | "url" | "tel";
499
+ /** Form field name. */
500
+ name?: string;
501
+ /** Visible label (also the accessible name). */
502
+ label?: string;
503
+ /** Help text under the label. */
504
+ description?: string;
505
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
506
+ descriptionPosition?: "above" | "below";
507
+ /** Error text; marks the field invalid (display only — does not block submit). */
508
+ error?: string;
509
+ /** Placeholder text. */
510
+ placeholder?: string;
511
+ /** Required for form submission; shows an asterisk. */
512
+ required?: boolean;
513
+ /** Not editable nor submitted. */
514
+ disabled?: boolean;
515
+ /** Not editable, still submitted. */
516
+ readonly?: boolean;
517
+ /** Height and font size. */
518
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
519
+ /** Corner radius. */
520
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
521
+ /** Box style. */
522
+ variant?: "default" | "filled" | "unstyled";
523
+ /** Forwarded to the inner input. */
524
+ autocomplete?: string;
525
+ /** Virtual keyboard hint. */
526
+ inputmode?: string;
527
+ /** Validation pattern (regular expression). */
528
+ pattern?: string;
529
+ /** Minimum (number/date types). */
530
+ min?: string;
531
+ /** Maximum (number/date types). */
532
+ max?: string;
533
+ /** Step (number types). */
534
+ step?: string;
535
+ /** Minimum length. */
536
+ minlength?: string;
537
+ /** Maximum length. */
538
+ maxlength?: string;
539
+ /** Mobile auto-capitalization. */
540
+ autocapitalize?: string;
541
+ /** Label of the Enter key on virtual keyboards. */
542
+ enterkeyhint?: string;
543
+ /** Id of a <datalist> with suggestions. */
544
+ list?: string;
545
+ /** On every edit (value already updated). */
546
+ onInput?: (event: Event) => void;
547
+ /** When an edit is committed (blur, Enter). */
548
+ onChange?: (event: Event) => void;
549
+ }
550
+ export type RayInputProps = RayInputOwnProps & Omit<React.HTMLAttributes<Ray.RayInput>, keyof RayInputOwnProps> & { children?: React.ReactNode };
551
+ /** <ray-input> as a React component. */
552
+ export declare const RayInput: React.ForwardRefExoticComponent<RayInputProps & React.RefAttributes<Ray.RayInput>>;
553
+
554
+ export interface RayNumberInputOwnProps {
555
+ /** The number (undefined when empty). */
556
+ value?: number;
557
+ /** Minimum. */
558
+ min?: number;
559
+ /** Maximum. */
560
+ max?: number;
561
+ /** What + and − add. */
562
+ step?: number;
563
+ /** Fixed decimals (2: 3 shows as 3.00). */
564
+ decimals?: number;
565
+ /** Shown before the number ("$"). */
566
+ prefix?: string | null;
567
+ /** Shown after the number (" kg", "%"). */
568
+ suffix?: string;
569
+ /** Groups thousands in the shown text (",", ".", " "). */
570
+ thousandsSeparator?: string;
571
+ /** The decimal mark shown and typed ("," in many locales). */
572
+ decimalSeparator?: string;
573
+ /** When out-of-range input is clamped: on blur, while typing, or never (then it is invalid). */
574
+ clamp?: "blur" | "strict" | "none";
575
+ /** No + and − buttons (the keys still step). */
576
+ hideControls?: boolean;
577
+ /** Shown while empty. */
578
+ placeholder?: string;
579
+ /** Not editable, still submitted. */
580
+ readonly?: boolean;
581
+ /** Form field name. */
582
+ name?: string;
583
+ /** Visible label (also the accessible name). */
584
+ label?: string;
585
+ /** Help text. */
586
+ description?: string;
587
+ /** Error text; marks the field invalid. */
588
+ error?: string;
589
+ /** Required for form submission. */
590
+ required?: boolean;
591
+ /** Not interactive nor submitted. */
592
+ disabled?: boolean;
593
+ /** Size. */
594
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
595
+ /** Corner radius. */
596
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
597
+ /** Box style. */
598
+ variant?: "default" | "filled" | "unstyled";
599
+ /** Description before or after the control. */
600
+ descriptionPosition?: "above" | "below";
601
+ /** On every change of the value (typing, keys, buttons). */
602
+ onInput?: (event: Event) => void;
603
+ /** When the value is committed (blur, a step). */
604
+ onChange?: (event: Event) => void;
605
+ }
606
+ export type RayNumberInputProps = RayNumberInputOwnProps & Omit<React.HTMLAttributes<Ray.RayNumberInput>, keyof RayNumberInputOwnProps> & { children?: React.ReactNode };
607
+ /** <ray-number-input> as a React component. */
608
+ export declare const RayNumberInput: React.ForwardRefExoticComponent<RayNumberInputProps & React.RefAttributes<Ray.RayNumberInput>>;
609
+
610
+ export interface RayPasswordInputOwnProps {
611
+ /** The password is shown as text. */
612
+ visible?: boolean;
613
+ /** Accessible name of the toggle while hidden. */
614
+ showLabel?: string;
615
+ /** Accessible name of the toggle while shown. */
616
+ hideLabel?: string;
617
+ /** Current value. The value attribute is the initial value (restored on form reset). */
618
+ value?: string;
619
+ /** Input type. */
620
+ type?: "text" | "email" | "password" | "search" | "number" | "url" | "tel";
621
+ /** Form field name. */
622
+ name?: string;
623
+ /** Visible label (also the accessible name). */
624
+ label?: string;
625
+ /** Help text under the label. */
626
+ description?: string;
627
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
628
+ descriptionPosition?: "above" | "below";
629
+ /** Error text; marks the field invalid (display only — does not block submit). */
630
+ error?: string;
631
+ /** Placeholder text. */
632
+ placeholder?: string;
633
+ /** Required for form submission; shows an asterisk. */
634
+ required?: boolean;
635
+ /** Not editable nor submitted. */
636
+ disabled?: boolean;
637
+ /** Not editable, still submitted. */
638
+ readonly?: boolean;
639
+ /** Height and font size. */
640
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
641
+ /** Corner radius. */
642
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
643
+ /** Box style. */
644
+ variant?: "default" | "filled" | "unstyled";
645
+ /** Forwarded to the inner input. */
646
+ autocomplete?: string;
647
+ /** Virtual keyboard hint. */
648
+ inputmode?: string;
649
+ /** Validation pattern (regular expression). */
650
+ pattern?: string;
651
+ /** Minimum (number/date types). */
652
+ min?: string;
653
+ /** Maximum (number/date types). */
654
+ max?: string;
655
+ /** Step (number types). */
656
+ step?: string;
657
+ /** Minimum length. */
658
+ minlength?: string;
659
+ /** Maximum length. */
660
+ maxlength?: string;
661
+ /** Mobile auto-capitalization. */
662
+ autocapitalize?: string;
663
+ /** Label of the Enter key on virtual keyboards. */
664
+ enterkeyhint?: string;
665
+ /** Id of a <datalist> with suggestions. */
666
+ list?: string;
667
+ /** The user showed or hid the password. */
668
+ onRayVisibilityChange?: (event: CustomEvent<{ visible: boolean }>) => void;
669
+ /** On every edit (value already updated). */
670
+ onInput?: (event: Event) => void;
671
+ /** When an edit is committed (blur, Enter). */
672
+ onChange?: (event: Event) => void;
673
+ }
674
+ export type RayPasswordInputProps = RayPasswordInputOwnProps & Omit<React.HTMLAttributes<Ray.RayPasswordInput>, keyof RayPasswordInputOwnProps> & { children?: React.ReactNode };
675
+ /** <ray-password-input> as a React component. */
676
+ export declare const RayPasswordInput: React.ForwardRefExoticComponent<RayPasswordInputProps & React.RefAttributes<Ray.RayPasswordInput>>;
677
+
678
+ export interface RayPathInputOwnProps {
679
+ /** What the dialog chooses: an existing file, a folder, or a file to save (the current name is suggested). */
680
+ mode?: "open" | "folder" | "save";
681
+ /** File types the dialog offers, as in <input type=file>: ".json,.toml", "image/*" (ignored for folders). */
682
+ accept?: string;
683
+ /** Text of the button. */
684
+ browseLabel?: string;
685
+ /** Title of the system dialog (default: the label). */
686
+ dialogTitle?: string;
687
+ /** Current value. The value attribute is the initial value (restored on form reset). */
688
+ value?: string;
689
+ /** Input type. */
690
+ type?: "text" | "email" | "password" | "search" | "number" | "url" | "tel";
691
+ /** Form field name. */
692
+ name?: string;
693
+ /** Visible label (also the accessible name). */
694
+ label?: string;
695
+ /** Help text under the label. */
696
+ description?: string;
697
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
698
+ descriptionPosition?: "above" | "below";
699
+ /** Error text; marks the field invalid (display only — does not block submit). */
700
+ error?: string;
701
+ /** Placeholder text. */
702
+ placeholder?: string;
703
+ /** Required for form submission; shows an asterisk. */
704
+ required?: boolean;
705
+ /** Not editable nor submitted. */
706
+ disabled?: boolean;
707
+ /** Not editable, still submitted. */
708
+ readonly?: boolean;
709
+ /** Height and font size. */
710
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
711
+ /** Corner radius. */
712
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
713
+ /** Box style. */
714
+ variant?: "default" | "filled" | "unstyled";
715
+ /** Forwarded to the inner input. */
716
+ autocomplete?: string;
717
+ /** Virtual keyboard hint. */
718
+ inputmode?: string;
719
+ /** Validation pattern (regular expression). */
720
+ pattern?: string;
721
+ /** Minimum (number/date types). */
722
+ min?: string;
723
+ /** Maximum (number/date types). */
724
+ max?: string;
725
+ /** Step (number types). */
726
+ step?: string;
727
+ /** Minimum length. */
728
+ minlength?: string;
729
+ /** Maximum length. */
730
+ maxlength?: string;
731
+ /** Mobile auto-capitalization. */
732
+ autocapitalize?: string;
733
+ /** Label of the Enter key on virtual keyboards. */
734
+ enterkeyhint?: string;
735
+ /** Id of a <datalist> with suggestions. */
736
+ list?: string;
737
+ /** The path changed: typed and committed, or chosen in the dialog. */
738
+ onChange?: (event: Event) => void;
739
+ /** The system dialog failed. */
740
+ onRayError?: (event: CustomEvent<{ error: Error }>) => void;
741
+ /** On every edit (value already updated). */
742
+ onInput?: (event: Event) => void;
743
+ }
744
+ export type RayPathInputProps = RayPathInputOwnProps & Omit<React.HTMLAttributes<Ray.RayPathInput>, keyof RayPathInputOwnProps> & { children?: React.ReactNode };
745
+ /** <ray-path-input> as a React component. */
746
+ export declare const RayPathInput: React.ForwardRefExoticComponent<RayPathInputProps & React.RefAttributes<Ray.RayPathInput>>;
747
+
748
+ export interface RayRadioGroupOwnProps {
749
+ /** Value of the checked radio. Initial: the value attribute, or a radio with the checked attribute. */
750
+ value?: string;
751
+ /** Form field name. */
752
+ name?: string;
753
+ /** Group label (also its accessible name). */
754
+ label?: string;
755
+ /** Help text. */
756
+ description?: string;
757
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
758
+ descriptionPosition?: "above" | "below";
759
+ /** Error text. */
760
+ error?: string;
761
+ /** A choice is needed to submit. */
762
+ required?: boolean;
763
+ /** Disables every radio. */
764
+ disabled?: boolean;
765
+ /** Layout of the radios. */
766
+ orientation?: "vertical" | "horizontal";
767
+ /** Size of every radio. */
768
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
769
+ /** Checked color of every radio. */
770
+ color?: string;
771
+ /** Checked look of every radio: filled circle, or colored ring and dot. */
772
+ variant?: "filled" | "outline";
773
+ /** When the user picks a radio. */
774
+ onInput?: (event: Event) => void;
775
+ /** When the user picks a radio. */
776
+ onChange?: (event: Event) => void;
777
+ }
778
+ export type RayRadioGroupProps = RayRadioGroupOwnProps & Omit<React.HTMLAttributes<Ray.RayRadioGroup>, keyof RayRadioGroupOwnProps> & { children?: React.ReactNode };
779
+ /** <ray-radio-group> as a React component. */
780
+ export declare const RayRadioGroup: React.ForwardRefExoticComponent<RayRadioGroupProps & React.RefAttributes<Ray.RayRadioGroup>>;
781
+
782
+ export interface RayRadioOwnProps {
783
+ /** Value given to the group when chosen. */
784
+ value?: string;
785
+ /** Label text (or the content). */
786
+ label?: string;
787
+ /** Help text under the label. */
788
+ description?: string;
789
+ /** Cannot be chosen. */
790
+ disabled?: boolean;
791
+ /** Overrides the group color. */
792
+ color?: string;
793
+ /** Overrides the group size. */
794
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
795
+ /** Overrides the group variant. */
796
+ variant?: "filled" | "outline";
797
+ }
798
+ export type RayRadioProps = RayRadioOwnProps & Omit<React.HTMLAttributes<Ray.RayRadio>, keyof RayRadioOwnProps> & { children?: React.ReactNode };
799
+ /** <ray-radio> as a React component. */
800
+ export declare const RayRadio: React.ForwardRefExoticComponent<RayRadioProps & React.RefAttributes<Ray.RayRadio>>;
801
+
802
+ export interface RaySearchOwnProps {
803
+ /** Current text. */
804
+ value?: string;
805
+ /** Placeholder text. */
806
+ placeholder?: string;
807
+ /** Keyboard shortcut that focuses it ("mod+k", "/"; mod = ⌘ on macOS, Ctrl elsewhere). Shown as a hint while empty. */
808
+ shortcut?: string;
809
+ /** Milliseconds of quiet typing before ray-search fires (0: on every keystroke). */
810
+ debounce?: number;
811
+ /** Form field name. */
812
+ name?: string;
813
+ /** Visible label (also the accessible name). Without it, use aria-label. */
814
+ label?: string;
815
+ /** Not editable nor submitted. */
816
+ disabled?: boolean;
817
+ /** Height and font size. */
818
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
819
+ /** Corner radius. */
820
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
821
+ /** Box style. */
822
+ variant?: "default" | "filled" | "unstyled";
823
+ /** Help text. */
824
+ description?: string;
825
+ /** Error text; marks the field invalid. */
826
+ error?: string;
827
+ /** Required for form submission. */
828
+ required?: boolean;
829
+ /** Description before or after the control. */
830
+ descriptionPosition?: "above" | "below";
831
+ /** On every edit (value already updated). */
832
+ onInput?: (event: Event) => void;
833
+ /** After `debounce` ms without typing, on Enter, and when cleared. */
834
+ onRaySearch?: (event: CustomEvent<{ value: string }>) => void;
835
+ }
836
+ export type RaySearchProps = RaySearchOwnProps & Omit<React.HTMLAttributes<Ray.RaySearch>, keyof RaySearchOwnProps> & { children?: React.ReactNode };
837
+ /** <ray-search> as a React component. */
838
+ export declare const RaySearch: React.ForwardRefExoticComponent<RaySearchProps & React.RefAttributes<Ray.RaySearch>>;
839
+
840
+ export interface RaySegmentedControlOwnProps {
841
+ /** Selected value (default: the first enabled option). */
842
+ value?: string;
843
+ /** Options as strings or { value, label, disabled }. */
844
+ data?: Array<string | { value: string; label?: string; disabled?: boolean }>;
845
+ /** Form field name. */
846
+ name?: string;
847
+ /** Indicator color (default: a raised neutral segment). */
848
+ color?: string;
849
+ /** Height and font size. */
850
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
851
+ /** Corner radius. */
852
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
853
+ /** Takes the whole width. */
854
+ fullWidth?: boolean;
855
+ /** Direction. */
856
+ orientation?: "horizontal" | "vertical";
857
+ /** Not interactive nor submitted. */
858
+ disabled?: boolean;
859
+ /** The user picked another option. */
860
+ onInput?: (event: Event) => void;
861
+ /** The user picked another option. */
862
+ onChange?: (event: Event) => void;
863
+ }
864
+ export type RaySegmentedControlProps = RaySegmentedControlOwnProps & Omit<React.HTMLAttributes<Ray.RaySegmentedControl>, keyof RaySegmentedControlOwnProps> & { children?: React.ReactNode };
865
+ /** <ray-segmented-control> as a React component. */
866
+ export declare const RaySegmentedControl: React.ForwardRefExoticComponent<RaySegmentedControlProps & React.RefAttributes<Ray.RaySegmentedControl>>;
867
+
868
+ export interface RaySelectOwnProps {
869
+ /** Selected value. */
870
+ value?: string;
871
+ /** Options as strings or { value, label, disabled } (instead of child options). */
872
+ data?: Array<string | { value: string; label?: string; disabled?: boolean }>;
873
+ /** Shown while nothing is selected (with required, blocks submit). */
874
+ placeholder?: string;
875
+ /** The dropdown is shown. */
876
+ open?: boolean;
877
+ /** Form field name. */
878
+ name?: string;
879
+ /** Visible label. */
880
+ label?: string;
881
+ /** Help text. */
882
+ description?: string;
883
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
884
+ descriptionPosition?: "above" | "below";
885
+ /** Error text. */
886
+ error?: string;
887
+ /** Required for form submission. */
888
+ required?: boolean;
889
+ /** Not interactive nor submitted. */
890
+ disabled?: boolean;
891
+ /** Height and font size. */
892
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
893
+ /** Box style. */
894
+ variant?: "default" | "filled" | "unstyled";
895
+ /** Corner radius. */
896
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
897
+ /** When the selection changes. */
898
+ onInput?: (event: Event) => void;
899
+ /** When the selection changes. */
900
+ onChange?: (event: Event) => void;
901
+ /** The dropdown opened. */
902
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
903
+ /** The dropdown closed. */
904
+ onRayClose?: (event: CustomEvent<unknown>) => void;
905
+ }
906
+ export type RaySelectProps = RaySelectOwnProps & Omit<React.HTMLAttributes<Ray.RaySelect>, keyof RaySelectOwnProps> & { children?: React.ReactNode };
907
+ /** <ray-select> as a React component. */
908
+ export declare const RaySelect: React.ForwardRefExoticComponent<RaySelectProps & React.RefAttributes<Ray.RaySelect>>;
909
+
910
+ export interface RaySliderOwnProps {
911
+ /** Current value. The value attribute is the initial one (restored on reset). */
912
+ value?: number;
913
+ /** Minimum. */
914
+ min?: number;
915
+ /** Maximum. */
916
+ max?: number;
917
+ /** Step. */
918
+ step?: number;
919
+ /** Form field name. */
920
+ name?: string;
921
+ /** Visible label. */
922
+ label?: string;
923
+ /** Help text. */
924
+ description?: string;
925
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
926
+ descriptionPosition?: "above" | "below";
927
+ /** Error text. */
928
+ error?: string;
929
+ /** Not interactive nor submitted. */
930
+ disabled?: boolean;
931
+ /** Track and thumb color. */
932
+ color?: string;
933
+ /** Track and thumb size. */
934
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
935
+ /** Shows the value next to the label. */
936
+ showValue?: boolean;
937
+ /** Appended to the shown value and its spoken text (%, px, ms…). */
938
+ unit?: string;
939
+ /** Labeled ticks under the track. */
940
+ marks?: Array<number | { value: number; label?: string }>;
941
+ /** Required for form submission. */
942
+ required?: boolean;
943
+ /** Corner radius. */
944
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
945
+ /** Box style. */
946
+ variant?: "default" | "filled" | "unstyled";
947
+ /** While dragging. */
948
+ onInput?: (event: Event) => void;
949
+ /** When released. */
950
+ onChange?: (event: Event) => void;
951
+ }
952
+ export type RaySliderProps = RaySliderOwnProps & Omit<React.HTMLAttributes<Ray.RaySlider>, keyof RaySliderOwnProps> & { children?: React.ReactNode };
953
+ /** <ray-slider> as a React component. */
954
+ export declare const RaySlider: React.ForwardRefExoticComponent<RaySliderProps & React.RefAttributes<Ray.RaySlider>>;
955
+
956
+ export interface RaySwitchOwnProps {
957
+ /** Current state. The checked attribute is the initial state. */
958
+ checked?: boolean;
959
+ /** Submitted value when on. */
960
+ value?: string;
961
+ /** Form field name. */
962
+ name?: string;
963
+ /** Label text (or the content). */
964
+ label?: string;
965
+ /** Help text. */
966
+ description?: string;
967
+ /** Error text. */
968
+ error?: string;
969
+ /** Side of the label. */
970
+ labelPosition?: "right" | "left";
971
+ /** Track color when on. */
972
+ color?: string;
973
+ /** Track size. */
974
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
975
+ /** Not interactive nor submitted. */
976
+ disabled?: boolean;
977
+ /** Mixed state; cleared on the next user change. */
978
+ indeterminate?: boolean;
979
+ /** Must be checked to submit. */
980
+ required?: boolean;
981
+ /** Checked look: filled box, or colored border and mark. */
982
+ variant?: "filled" | "outline";
983
+ /** Corner radius. */
984
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
985
+ /** Description before or after the control. */
986
+ descriptionPosition?: "above" | "below";
987
+ /** When the user toggles it. */
988
+ onChange?: (event: Event) => void;
989
+ }
990
+ export type RaySwitchProps = RaySwitchOwnProps & Omit<React.HTMLAttributes<Ray.RaySwitch>, keyof RaySwitchOwnProps> & { children?: React.ReactNode };
991
+ /** <ray-switch> as a React component. */
992
+ export declare const RaySwitch: React.ForwardRefExoticComponent<RaySwitchProps & React.RefAttributes<Ray.RaySwitch>>;
993
+
994
+ export interface RayTextareaOwnProps {
995
+ /** Current value. */
996
+ value?: string;
997
+ /** Visible rows (minimum when autosize). */
998
+ rows?: number;
999
+ /** Grows with the content. */
1000
+ autosize?: boolean;
1001
+ /** With autosize: stop growing and scroll after this many rows. */
1002
+ maxRows?: number;
1003
+ /** Form field name. */
1004
+ name?: string;
1005
+ /** Visible label. */
1006
+ label?: string;
1007
+ /** Help text. */
1008
+ description?: string;
1009
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
1010
+ descriptionPosition?: "above" | "below";
1011
+ /** Error text. */
1012
+ error?: string;
1013
+ /** Required for form submission. */
1014
+ required?: boolean;
1015
+ /** Not editable nor submitted. */
1016
+ disabled?: boolean;
1017
+ /** Not editable, still submitted. */
1018
+ readonly?: boolean;
1019
+ /** Font size. */
1020
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1021
+ /** Box style. */
1022
+ variant?: "default" | "filled" | "unstyled";
1023
+ /** Corner radius. */
1024
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1025
+ /** Placeholder text. */
1026
+ placeholder?: string;
1027
+ /** Forwarded to the inner textarea. */
1028
+ autocomplete?: string;
1029
+ /** Minimum length. */
1030
+ minlength?: string;
1031
+ /** Maximum length. */
1032
+ maxlength?: string;
1033
+ /** soft or hard. */
1034
+ wrap?: string;
1035
+ /** On every edit. */
1036
+ onInput?: (event: Event) => void;
1037
+ /** When an edit is committed. */
1038
+ onChange?: (event: Event) => void;
1039
+ }
1040
+ export type RayTextareaProps = RayTextareaOwnProps & Omit<React.HTMLAttributes<Ray.RayTextarea>, keyof RayTextareaOwnProps> & { children?: React.ReactNode };
1041
+ /** <ray-textarea> as a React component. */
1042
+ export declare const RayTextarea: React.ForwardRefExoticComponent<RayTextareaProps & React.RefAttributes<Ray.RayTextarea>>;
1043
+
1044
+ export interface RayBottomNavOwnProps {
1045
+ /** The current destination (an item's value, else its href, else its label). */
1046
+ value?: string;
1047
+ /** Accessible name of the navigation. */
1048
+ label?: string;
1049
+ /** Which labels show (the others stay for assistive technology). */
1050
+ labels?: "always" | "active" | "never";
1051
+ /** How the current destination is marked besides its color. */
1052
+ indicator?: "pill" | "line" | "none";
1053
+ /** A palette color or any CSS color for the current item and the action (default: primary). */
1054
+ color?: string;
1055
+ /** default: a bar across the bottom; floating: a rounded bar off the edges. */
1056
+ variant?: "default" | "floating";
1057
+ /** Slides away while the content scrolls down, back on the way up. */
1058
+ hideOnScroll?: boolean;
1059
+ /** Pinned to the bottom of the window (outside a shell). */
1060
+ fixed?: boolean;
1061
+ /** A selector of the element whose scrolling it follows (default: its shell's, else the window). */
1062
+ scrollTarget?: string;
1063
+ /** The user picked another destination (read value). */
1064
+ onChange?: (event: Event) => void;
1065
+ /** An action item was pressed. */
1066
+ onRaySelect?: (event: CustomEvent<{ value: string }>) => void;
1067
+ }
1068
+ export type RayBottomNavProps = RayBottomNavOwnProps & Omit<React.HTMLAttributes<Ray.RayBottomNav>, keyof RayBottomNavOwnProps> & { children?: React.ReactNode };
1069
+ /** <ray-bottom-nav> as a React component. */
1070
+ export declare const RayBottomNav: React.ForwardRefExoticComponent<RayBottomNavProps & React.RefAttributes<Ray.RayBottomNav>>;
1071
+
1072
+ export interface RayBottomNavItemOwnProps {
1073
+ /** Its value (default: its href, else its label). */
1074
+ value?: string;
1075
+ /** The label. */
1076
+ label?: string;
1077
+ /** An icon of the registry (or put one in the icon slot). */
1078
+ icon?: string;
1079
+ /** Makes it a link. */
1080
+ href?: string;
1081
+ /** A count or a short text on the icon. */
1082
+ badge?: string;
1083
+ /** A dot on the icon (something new). */
1084
+ dot?: boolean;
1085
+ /** Set by the bar: the current destination. */
1086
+ active?: boolean;
1087
+ /** Not interactive. */
1088
+ disabled?: boolean;
1089
+ /** A raised round button ("New"): it fires ray-select on the bar, it is not a destination. */
1090
+ action?: boolean;
1091
+ }
1092
+ export type RayBottomNavItemProps = RayBottomNavItemOwnProps & Omit<React.HTMLAttributes<Ray.RayBottomNavItem>, keyof RayBottomNavItemOwnProps> & { children?: React.ReactNode };
1093
+ /** <ray-bottom-nav-item> as a React component. */
1094
+ export declare const RayBottomNavItem: React.ForwardRefExoticComponent<RayBottomNavItemProps & React.RefAttributes<Ray.RayBottomNavItem>>;
1095
+
1096
+ export interface RayBreadcrumbsOwnProps {
1097
+ /** Text between crumbs ("/", "›", "·") or "chevron" (an icon). */
1098
+ separator?: string;
1099
+ /** Longer paths show the first crumb, "…" (a button that expands them) and the last max-items − 1. */
1100
+ maxItems?: number;
1101
+ /** Accessible name of the nav. */
1102
+ label?: string;
1103
+ /** Font size. */
1104
+ size?: "xs" | "sm" | "md" | "lg";
1105
+ }
1106
+ export type RayBreadcrumbsProps = RayBreadcrumbsOwnProps & Omit<React.HTMLAttributes<Ray.RayBreadcrumbs>, keyof RayBreadcrumbsOwnProps> & { children?: React.ReactNode };
1107
+ /** <ray-breadcrumbs> as a React component. */
1108
+ export declare const RayBreadcrumbs: React.ForwardRefExoticComponent<RayBreadcrumbsProps & React.RefAttributes<Ray.RayBreadcrumbs>>;
1109
+
1110
+ export interface RayBreadcrumbOwnProps {
1111
+ /** Where it leads. */
1112
+ href?: string;
1113
+ /** This crumb is the current page (default: the last). */
1114
+ current?: boolean;
1115
+ }
1116
+ export type RayBreadcrumbProps = RayBreadcrumbOwnProps & Omit<React.HTMLAttributes<Ray.RayBreadcrumb>, keyof RayBreadcrumbOwnProps> & { children?: React.ReactNode };
1117
+ /** <ray-breadcrumb> as a React component. */
1118
+ export declare const RayBreadcrumb: React.ForwardRefExoticComponent<RayBreadcrumbProps & React.RefAttributes<Ray.RayBreadcrumb>>;
1119
+
1120
+ export interface RayNavLinkOwnProps {
1121
+ /** Text. */
1122
+ label?: string;
1123
+ /** Second line. */
1124
+ description?: string;
1125
+ /** Makes it a link (ignored when it has nested links). */
1126
+ href?: string;
1127
+ /** The current page or section. */
1128
+ active?: boolean;
1129
+ /** Nested links are shown. */
1130
+ opened?: boolean;
1131
+ /** Not interactive. */
1132
+ disabled?: boolean;
1133
+ /** Style of the active state. */
1134
+ variant?: "light" | "filled" | "subtle";
1135
+ /** Active color. */
1136
+ color?: string;
1137
+ /** Only the icon (left section), centered; the label becomes its accessible name and tooltip. A collapsed ray-sidebar sets it. */
1138
+ iconOnly?: boolean;
1139
+ /** Nested links were shown or hidden. */
1140
+ onRayToggle?: (event: CustomEvent<{ opened: boolean }>) => void;
1141
+ }
1142
+ export type RayNavLinkProps = RayNavLinkOwnProps & Omit<React.HTMLAttributes<Ray.RayNavLink>, keyof RayNavLinkOwnProps> & { children?: React.ReactNode };
1143
+ /** <ray-nav-link> as a React component. */
1144
+ export declare const RayNavLink: React.ForwardRefExoticComponent<RayNavLinkProps & React.RefAttributes<Ray.RayNavLink>>;
1145
+
1146
+ export interface RayPaginationOwnProps {
1147
+ /** Number of pages. */
1148
+ total?: number;
1149
+ /** Current page (1-based). */
1150
+ value?: number;
1151
+ /** Pages shown on each side of the current one. */
1152
+ siblings?: number;
1153
+ /** Pages always shown at the start and the end. */
1154
+ boundaries?: number;
1155
+ /** Adds first/last page buttons. */
1156
+ withEdges?: boolean;
1157
+ /** Hides the previous/next (and first/last) buttons. */
1158
+ hideControls?: boolean;
1159
+ /** Color of the current page: a palette color or any CSS color. Default: the primary color. */
1160
+ color?: string;
1161
+ /** Item size. */
1162
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1163
+ /** Corner radius of the items. */
1164
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1165
+ /** Not interactive. */
1166
+ disabled?: boolean;
1167
+ /** Accessible name of the navigation landmark. */
1168
+ label?: string;
1169
+ /** The user went to another page (read `value`). */
1170
+ onChange?: (event: Event) => void;
1171
+ }
1172
+ export type RayPaginationProps = RayPaginationOwnProps & Omit<React.HTMLAttributes<Ray.RayPagination>, keyof RayPaginationOwnProps> & { children?: React.ReactNode };
1173
+ /** <ray-pagination> as a React component. */
1174
+ export declare const RayPagination: React.ForwardRefExoticComponent<RayPaginationProps & React.RefAttributes<Ray.RayPagination>>;
1175
+
1176
+ export interface RaySidebarOwnProps {
1177
+ /** Wide screens: an icon rail instead of the full panel. */
1178
+ collapsed?: boolean;
1179
+ /** Narrow screens: the drawer is shown (modal, focus trapped; Escape, backdrop click or a followed link close it). */
1180
+ open?: boolean;
1181
+ /** The edge it sits on. */
1182
+ side?: "left" | "right";
1183
+ /** A panel against the edge, or a floating card with a margin. */
1184
+ variant?: "sidebar" | "floating";
1185
+ /** Width when expanded (CSS length). Default 16rem. */
1186
+ width?: string;
1187
+ /** Width of the icon rail. Default 3.5rem. */
1188
+ collapsedWidth?: string;
1189
+ /** At this viewport width and below, it becomes a drawer. */
1190
+ breakpoint?: string;
1191
+ /** Accessible name of its navigation. */
1192
+ label?: string;
1193
+ /** After toggle(). */
1194
+ onRayToggle?: (event: CustomEvent<{ collapsed: boolean; open: boolean; mobile: boolean }>) => void;
1195
+ /** The drawer opened (narrow screens). */
1196
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1197
+ /** The drawer closed (narrow screens). */
1198
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1199
+ }
1200
+ export type RaySidebarProps = RaySidebarOwnProps & Omit<React.HTMLAttributes<Ray.RaySidebar>, keyof RaySidebarOwnProps> & { children?: React.ReactNode };
1201
+ /** <ray-sidebar> as a React component. */
1202
+ export declare const RaySidebar: React.ForwardRefExoticComponent<RaySidebarProps & React.RefAttributes<Ray.RaySidebar>>;
1203
+
1204
+ export interface RaySidebarGroupOwnProps {
1205
+ /** Section title. */
1206
+ label?: string;
1207
+ }
1208
+ export type RaySidebarGroupProps = RaySidebarGroupOwnProps & Omit<React.HTMLAttributes<Ray.RaySidebarGroup>, keyof RaySidebarGroupOwnProps> & { children?: React.ReactNode };
1209
+ /** <ray-sidebar-group> as a React component. */
1210
+ export declare const RaySidebarGroup: React.ForwardRefExoticComponent<RaySidebarGroupProps & React.RefAttributes<Ray.RaySidebarGroup>>;
1211
+
1212
+ export interface RayStepperOwnProps {
1213
+ /** Index of the active step (steps.length: completed). */
1214
+ active?: number;
1215
+ /** Steps in a row above the content, or in a column beside it. */
1216
+ orientation?: "horizontal" | "vertical";
1217
+ /** Label beside the number, or under it (narrow screens, many steps). */
1218
+ iconPosition?: "left" | "top";
1219
+ /** Completed steps are buttons that go back to them. */
1220
+ allowStepSelect?: boolean;
1221
+ /** With allow-step-select off, false lets the user jump to any step. */
1222
+ linear?: boolean;
1223
+ /** Size of the numbers. */
1224
+ size?: "sm" | "md" | "lg";
1225
+ /** A palette color or any CSS color for active and completed steps (default: primary). */
1226
+ color?: string;
1227
+ /** Accessible name of the list of steps. */
1228
+ label?: string;
1229
+ /** active changed by the user (a step clicked, next(), prev()). */
1230
+ onChange?: (event: Event) => void;
1231
+ }
1232
+ export type RayStepperProps = RayStepperOwnProps & Omit<React.HTMLAttributes<Ray.RayStepper>, keyof RayStepperOwnProps> & { children?: React.ReactNode };
1233
+ /** <ray-stepper> as a React component. */
1234
+ export declare const RayStepper: React.ForwardRefExoticComponent<RayStepperProps & React.RefAttributes<Ray.RayStepper>>;
1235
+
1236
+ export interface RayStepOwnProps {
1237
+ /** The label. */
1238
+ label?: string;
1239
+ /** A line under the label. */
1240
+ description?: string;
1241
+ /** An icon instead of the number. */
1242
+ icon?: string;
1243
+ /** The icon once done (default: check). */
1244
+ completedIcon?: string;
1245
+ /** A spinner instead of the number. */
1246
+ loading?: boolean;
1247
+ /** An error message: red step, the message as its description. */
1248
+ error?: string;
1249
+ /** Cannot be selected. */
1250
+ disabled?: boolean;
1251
+ }
1252
+ export type RayStepProps = RayStepOwnProps & Omit<React.HTMLAttributes<Ray.RayStep>, keyof RayStepOwnProps> & { children?: React.ReactNode };
1253
+ /** <ray-step> as a React component. */
1254
+ export declare const RayStep: React.ForwardRefExoticComponent<RayStepProps & React.RefAttributes<Ray.RayStep>>;
1255
+
1256
+ export interface RayTabsOwnProps {
1257
+ /** Value of the active tab (default: the first enabled one). */
1258
+ value?: string;
1259
+ /** Tab style. */
1260
+ variant?: "default" | "outline" | "pills";
1261
+ /** Tab list direction (and arrow keys). */
1262
+ orientation?: "horizontal" | "vertical";
1263
+ /** Active indicator color. */
1264
+ color?: string;
1265
+ /** manual: arrows move focus, Enter/Space activates. */
1266
+ activation?: "auto" | "manual";
1267
+ /** Tabs share the full width. */
1268
+ grow?: boolean;
1269
+ /** The user activated another tab. */
1270
+ onChange?: (event: Event) => void;
1271
+ }
1272
+ export type RayTabsProps = RayTabsOwnProps & Omit<React.HTMLAttributes<Ray.RayTabs>, keyof RayTabsOwnProps> & { children?: React.ReactNode };
1273
+ /** <ray-tabs> as a React component. */
1274
+ export declare const RayTabs: React.ForwardRefExoticComponent<RayTabsProps & React.RefAttributes<Ray.RayTabs>>;
1275
+
1276
+ export interface RayTabOwnProps {
1277
+ /** Matches a ray-tab-panel's value. */
1278
+ value?: string;
1279
+ /** Cannot be activated. */
1280
+ disabled?: boolean;
1281
+ }
1282
+ export type RayTabProps = RayTabOwnProps & Omit<React.HTMLAttributes<Ray.RayTab>, keyof RayTabOwnProps> & { children?: React.ReactNode };
1283
+ /** <ray-tab> as a React component. */
1284
+ export declare const RayTab: React.ForwardRefExoticComponent<RayTabProps & React.RefAttributes<Ray.RayTab>>;
1285
+
1286
+ export interface RayTabPanelOwnProps {
1287
+ /** Matches a ray-tab's value. */
1288
+ value?: string;
1289
+ }
1290
+ export type RayTabPanelProps = RayTabPanelOwnProps & Omit<React.HTMLAttributes<Ray.RayTabPanel>, keyof RayTabPanelOwnProps> & { children?: React.ReactNode };
1291
+ /** <ray-tab-panel> as a React component. */
1292
+ export declare const RayTabPanel: React.ForwardRefExoticComponent<RayTabPanelProps & React.RefAttributes<Ray.RayTabPanel>>;
1293
+
1294
+ export interface RayCommandPaletteOwnProps {
1295
+ /** Shown. */
1296
+ open?: boolean;
1297
+ /** The actions. */
1298
+ actions?: Ray.CommandAction[];
1299
+ /** The search text. */
1300
+ query?: string;
1301
+ /** Placeholder of the search field. */
1302
+ placeholder?: string;
1303
+ /** Toggle shortcut (mod = ⌘ on macOS, Ctrl elsewhere); empty to disable. */
1304
+ hotkey?: string;
1305
+ /** Maximum results. */
1306
+ limit?: number;
1307
+ /** Text without results. */
1308
+ emptyLabel?: string;
1309
+ /** Accessible name. */
1310
+ label?: string;
1311
+ /** No keyboard hint at the bottom. */
1312
+ hideHint?: boolean;
1313
+ /** With a native host (ray-elements/core/raylang.js in a std/ui window, menus declared with elements/bridge), also lists the app's menu bar, grouped by menu with its shortcuts; running one gives the program the menu's own event. */
1314
+ nativeMenus?: boolean;
1315
+ /** Blur of the page behind: px ("8"), a CSS length or "none". Default: --ray-overlay-blur ([overlay] blur in tokens.toml). */
1316
+ overlayBlur?: string;
1317
+ /** An action was run. */
1318
+ onRaySelect?: (event: CustomEvent<{ action: Ray.CommandAction }>) => void;
1319
+ /** After it opened. */
1320
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1321
+ /** After it closed. */
1322
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1323
+ }
1324
+ export type RayCommandPaletteProps = RayCommandPaletteOwnProps & Omit<React.HTMLAttributes<Ray.RayCommandPalette>, keyof RayCommandPaletteOwnProps> & { children?: React.ReactNode };
1325
+ /** <ray-command-palette> as a React component. */
1326
+ export declare const RayCommandPalette: React.ForwardRefExoticComponent<RayCommandPaletteProps & React.RefAttributes<Ray.RayCommandPalette>>;
1327
+
1328
+ export interface RayDialogOwnProps {
1329
+ /** Shown as a modal. */
1330
+ open?: boolean;
1331
+ /** Heading (also the dialog's accessible name). */
1332
+ label?: string;
1333
+ /** A line under the title (the dialog's accessible description). */
1334
+ description?: string;
1335
+ /** Width: xs…xl, full (the whole window), or any CSS length; a percentage is of the window (70% = 70vw, at least 40rem). Never wider than the window. */
1336
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "full" | (string & {});
1337
+ /** Fixed height (the body scrolls): any CSS length; a percentage is of the window (70% = 70dvh, at least 30rem). Never taller than the window. Default: as tall as the content, up to the window. */
1338
+ height?: string;
1339
+ /** Corner radius: xs…xl, none, or a CSS length. Default: lg. */
1340
+ radius?: string;
1341
+ /** Vertical placement. */
1342
+ position?: "center" | "top";
1343
+ /** Escape and backdrop clicks do not close it (the × still does; hide it with hide-close). To allow only one of them, cancel ray-request-close by its source. */
1344
+ persistent?: boolean;
1345
+ /** No close button in the header. */
1346
+ hideClose?: boolean;
1347
+ /** Blur of the page behind: px ("8"), a CSS length or "none". Default: --ray-overlay-blur ([overlay] blur in tokens.toml). */
1348
+ overlayBlur?: string;
1349
+ /** After it opened. */
1350
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1351
+ /** After it closed; detail: { returnValue }. */
1352
+ onRayClose?: (event: CustomEvent<{ returnValue: string }>) => void;
1353
+ /** Escape, backdrop or close button; cancelable (preventDefault keeps it open). detail: { source }. */
1354
+ onRayRequestClose?: (event: CustomEvent<{ source: "escape" | "backdrop" | "button" }>) => void;
1355
+ }
1356
+ export type RayDialogProps = RayDialogOwnProps & Omit<React.HTMLAttributes<Ray.RayDialog>, keyof RayDialogOwnProps> & { children?: React.ReactNode };
1357
+ /** <ray-dialog> as a React component. */
1358
+ export declare const RayDialog: React.ForwardRefExoticComponent<RayDialogProps & React.RefAttributes<Ray.RayDialog>>;
1359
+
1360
+ export interface RayDrawerOwnProps {
1361
+ /** Shown. */
1362
+ open?: boolean;
1363
+ /** Heading (also the accessible name). */
1364
+ label?: string;
1365
+ /** A line under the title (the drawer's accessible description). */
1366
+ description?: string;
1367
+ /** The edge it slides from. */
1368
+ position?: "right" | "left" | "top" | "bottom";
1369
+ /** Width (left/right) or height (top/bottom): xs…xl, full, or any CSS length. */
1370
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "full" | (string & {});
1371
+ /** No backdrop nor scroll lock: the page stays interactive (a side panel). */
1372
+ modeless?: boolean;
1373
+ /** Detached from the edge, with rounded corners. */
1374
+ floating?: boolean;
1375
+ /** Escape and backdrop clicks do not close it. */
1376
+ persistent?: boolean;
1377
+ /** No close button in the header. */
1378
+ hideClose?: boolean;
1379
+ /** Blur of the page behind: px ("8"), a CSS length or "none". Default: --ray-overlay-blur ([overlay] blur in tokens.toml). */
1380
+ overlayBlur?: string;
1381
+ /** After it opened. */
1382
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1383
+ /** After it closed; detail: { returnValue }. */
1384
+ onRayClose?: (event: CustomEvent<{ returnValue: string }>) => void;
1385
+ /** Escape, backdrop or close button; cancelable. */
1386
+ onRayRequestClose?: (event: CustomEvent<{ source: "escape" | "backdrop" | "button" }>) => void;
1387
+ }
1388
+ export type RayDrawerProps = RayDrawerOwnProps & Omit<React.HTMLAttributes<Ray.RayDrawer>, keyof RayDrawerOwnProps> & { children?: React.ReactNode };
1389
+ /** <ray-drawer> as a React component. */
1390
+ export declare const RayDrawer: React.ForwardRefExoticComponent<RayDrawerProps & React.RefAttributes<Ray.RayDrawer>>;
1391
+
1392
+ export interface RayMenuOwnProps {
1393
+ /** Shown. */
1394
+ open?: boolean;
1395
+ /** Preferred side and alignment. */
1396
+ placement?: "bottom-start" | "bottom" | "bottom-end" | "top-start" | "top" | "top-end" | "right-start" | "left-start";
1397
+ /** Opens on right click (contextmenu) over the trigger area, at the pointer. */
1398
+ context?: boolean;
1399
+ /** Choosing an item does not close the menu. */
1400
+ keepOpen?: boolean;
1401
+ /** With a native host (ray-elements/core/raylang.js in a std/ui window), opens as the system's context menu at the pointer: items and dividers, same ray-select. */
1402
+ native?: boolean;
1403
+ /** Gap to the anchor in px. */
1404
+ offset?: number;
1405
+ /** An item was chosen; detail: { value, item }. */
1406
+ onRaySelect?: (event: CustomEvent<{ value: string; item: Ray.RayMenuItem }>) => void;
1407
+ /** After it opened. */
1408
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1409
+ /** After it closed. */
1410
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1411
+ }
1412
+ export type RayMenuProps = RayMenuOwnProps & Omit<React.HTMLAttributes<Ray.RayMenu>, keyof RayMenuOwnProps> & { children?: React.ReactNode };
1413
+ /** <ray-menu> as a React component. */
1414
+ export declare const RayMenu: React.ForwardRefExoticComponent<RayMenuProps & React.RefAttributes<Ray.RayMenu>>;
1415
+
1416
+ export interface RayMenuItemOwnProps {
1417
+ /** Reported in ray-select (default: the text). */
1418
+ value?: string;
1419
+ /** Skipped by the keyboard, cannot be chosen. */
1420
+ disabled?: boolean;
1421
+ /** Text and hover color (e.g. red for destructive actions). */
1422
+ color?: string;
1423
+ }
1424
+ export type RayMenuItemProps = RayMenuItemOwnProps & Omit<React.HTMLAttributes<Ray.RayMenuItem>, keyof RayMenuItemOwnProps> & { children?: React.ReactNode };
1425
+ /** <ray-menu-item> as a React component. */
1426
+ export declare const RayMenuItem: React.ForwardRefExoticComponent<RayMenuItemProps & React.RefAttributes<Ray.RayMenuItem>>;
1427
+
1428
+ export interface RayMenuLabelOwnProps {
1429
+ }
1430
+ export type RayMenuLabelProps = RayMenuLabelOwnProps & Omit<React.HTMLAttributes<Ray.RayMenuLabel>, keyof RayMenuLabelOwnProps> & { children?: React.ReactNode };
1431
+ /** <ray-menu-label> as a React component. */
1432
+ export declare const RayMenuLabel: React.ForwardRefExoticComponent<RayMenuLabelProps & React.RefAttributes<Ray.RayMenuLabel>>;
1433
+
1434
+ export interface RayMenuDividerOwnProps {
1435
+ }
1436
+ export type RayMenuDividerProps = RayMenuDividerOwnProps & Omit<React.HTMLAttributes<Ray.RayMenuDivider>, keyof RayMenuDividerOwnProps> & { children?: React.ReactNode };
1437
+ /** <ray-menu-divider> as a React component. */
1438
+ export declare const RayMenuDivider: React.ForwardRefExoticComponent<RayMenuDividerProps & React.RefAttributes<Ray.RayMenuDivider>>;
1439
+
1440
+ export interface RayPopoverOwnProps {
1441
+ /** Shown. */
1442
+ open?: boolean;
1443
+ /** Preferred side and alignment. */
1444
+ placement?: "bottom" | "bottom-start" | "bottom-end" | "top" | "top-start" | "top-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
1445
+ /** Gap to the trigger in px. */
1446
+ offset?: number;
1447
+ /** Panel width (px number or CSS length). Default: its content. */
1448
+ width?: string;
1449
+ /** At least as wide as the trigger. */
1450
+ matchWidth?: boolean;
1451
+ /** Panel padding. */
1452
+ padding?: "0" | "xs" | "sm" | "md" | "lg";
1453
+ /** Moves focus into the panel when opened and keeps Tab inside it. */
1454
+ trapFocus?: boolean;
1455
+ /** After it opened. */
1456
+ onRayOpen?: (event: CustomEvent<unknown>) => void;
1457
+ /** After it closed (also by Escape or an outside click). */
1458
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1459
+ }
1460
+ export type RayPopoverProps = RayPopoverOwnProps & Omit<React.HTMLAttributes<Ray.RayPopover>, keyof RayPopoverOwnProps> & { children?: React.ReactNode };
1461
+ /** <ray-popover> as a React component. */
1462
+ export declare const RayPopover: React.ForwardRefExoticComponent<RayPopoverProps & React.RefAttributes<Ray.RayPopover>>;
1463
+
1464
+ export interface RayTooltipOwnProps {
1465
+ /** Tooltip text. */
1466
+ label?: string;
1467
+ /** Preferred side. */
1468
+ placement?: "top" | "bottom" | "left" | "right" | "top-start" | "top-end" | "bottom-start" | "bottom-end";
1469
+ /** ms before showing. */
1470
+ openDelay?: number;
1471
+ /** ms before hiding. */
1472
+ closeDelay?: number;
1473
+ /** A palette color or any CSS color. Default: inverted foreground/background. */
1474
+ color?: string;
1475
+ /** Never shows. */
1476
+ disabled?: boolean;
1477
+ /** Shown. */
1478
+ open?: boolean;
1479
+ /** Gap to the anchor in px. */
1480
+ offset?: number;
1481
+ }
1482
+ export type RayTooltipProps = RayTooltipOwnProps & Omit<React.HTMLAttributes<Ray.RayTooltip>, keyof RayTooltipOwnProps> & { children?: React.ReactNode };
1483
+ /** <ray-tooltip> as a React component. */
1484
+ export declare const RayTooltip: React.ForwardRefExoticComponent<RayTooltipProps & React.RefAttributes<Ray.RayTooltip>>;
1485
+
1486
+ export interface RayAccordionOwnProps {
1487
+ /** Open item's value; with multiple, an array (attribute: comma-separated). */
1488
+ value?: string | string[] | undefined;
1489
+ /** Several items may be open. */
1490
+ multiple?: boolean;
1491
+ /** Visual style. */
1492
+ variant?: "default" | "contained" | "separated" | "filled";
1493
+ /** Side of the chevron. */
1494
+ chevronPosition?: "right" | "left";
1495
+ /** The user opened or closed an item. */
1496
+ onChange?: (event: Event) => void;
1497
+ }
1498
+ export type RayAccordionProps = RayAccordionOwnProps & Omit<React.HTMLAttributes<Ray.RayAccordion>, keyof RayAccordionOwnProps> & { children?: React.ReactNode };
1499
+ /** <ray-accordion> as a React component. */
1500
+ export declare const RayAccordion: React.ForwardRefExoticComponent<RayAccordionProps & React.RefAttributes<Ray.RayAccordion>>;
1501
+
1502
+ export interface RayAccordionItemOwnProps {
1503
+ /** Identifies the item in the accordion's value. */
1504
+ value?: string;
1505
+ /** Header text (or slot=label). */
1506
+ label?: string;
1507
+ /** A secondary line under the label, in the header. */
1508
+ description?: string;
1509
+ /** Cannot be toggled. */
1510
+ disabled?: boolean;
1511
+ /** aria-level of the header. */
1512
+ headingLevel?: number;
1513
+ }
1514
+ export type RayAccordionItemProps = RayAccordionItemOwnProps & Omit<React.HTMLAttributes<Ray.RayAccordionItem>, keyof RayAccordionItemOwnProps> & { children?: React.ReactNode };
1515
+ /** <ray-accordion-item> as a React component. */
1516
+ export declare const RayAccordionItem: React.ForwardRefExoticComponent<RayAccordionItemProps & React.RefAttributes<Ray.RayAccordionItem>>;
1517
+
1518
+ export interface RayAttachmentOwnProps {
1519
+ /** File name (ellipsized; full name in the tooltip). */
1520
+ name?: string;
1521
+ /** Size in bytes, shown as "12 KB", "3.4 MB". */
1522
+ size?: number;
1523
+ /** MIME type: picks the icon (image or file) and, with the name, the extension badge. */
1524
+ type?: string;
1525
+ /** Thumbnail URL for images (falls back to the icon if it fails to load). */
1526
+ src?: string;
1527
+ /** Makes the name a download link. */
1528
+ href?: string;
1529
+ /** Upload progress 0–100: a thin bar and "Uploading… 45%". Unset: done. */
1530
+ progress?: number;
1531
+ /** Explicit state. Default: "uploading" while progress is set, else "done". */
1532
+ status?: "uploading" | "done" | "error";
1533
+ /** Error text shown with status="error" (default "Upload failed"). */
1534
+ error?: string;
1535
+ /** Shows a remove (×) button. */
1536
+ removable?: boolean;
1537
+ /** Accessible label of the remove button; {name} is replaced by the file name. */
1538
+ removeLabel?: string;
1539
+ /** row: a compact chip; card: the thumbnail on top. */
1540
+ variant?: "row" | "card";
1541
+ /** Dimmed, not removable, the name is not a link. */
1542
+ disabled?: boolean;
1543
+ /** The remove button was pressed; cancelable (preventDefault keeps the element). */
1544
+ onRayRemove?: (event: CustomEvent<{ name: string; file: File | null }>) => void;
1545
+ }
1546
+ export type RayAttachmentProps = RayAttachmentOwnProps & Omit<React.HTMLAttributes<Ray.RayAttachment>, keyof RayAttachmentOwnProps> & { children?: React.ReactNode };
1547
+ /** <ray-attachment> as a React component. */
1548
+ export declare const RayAttachment: React.ForwardRefExoticComponent<RayAttachmentProps & React.RefAttributes<Ray.RayAttachment>>;
1549
+
1550
+ export interface RayAttachmentsOwnProps {
1551
+ }
1552
+ export type RayAttachmentsProps = RayAttachmentsOwnProps & Omit<React.HTMLAttributes<Ray.RayAttachments>, keyof RayAttachmentsOwnProps> & { children?: React.ReactNode };
1553
+ /** <ray-attachments> as a React component. */
1554
+ export declare const RayAttachments: React.ForwardRefExoticComponent<RayAttachmentsProps & React.RefAttributes<Ray.RayAttachments>>;
1555
+
1556
+ export interface RayAvatarOwnProps {
1557
+ /** Image URL; falls back to initials if it fails to load. */
1558
+ src?: string;
1559
+ /** Accessible name (default: name). */
1560
+ alt?: string;
1561
+ /** Person or entity name; its initials are shown without an image. */
1562
+ name?: string;
1563
+ /** A palette color or any CSS color. */
1564
+ color?: string;
1565
+ /** Style of the initials/placeholder. */
1566
+ variant?: "light" | "filled" | "outline" | "default";
1567
+ /** Diameter. */
1568
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1569
+ /** Corner radius. Default: full. */
1570
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1571
+ }
1572
+ export type RayAvatarProps = RayAvatarOwnProps & Omit<React.HTMLAttributes<Ray.RayAvatar>, keyof RayAvatarOwnProps> & { children?: React.ReactNode };
1573
+ /** <ray-avatar> as a React component. */
1574
+ export declare const RayAvatar: React.ForwardRefExoticComponent<RayAvatarProps & React.RefAttributes<Ray.RayAvatar>>;
1575
+
1576
+ export interface RayBadgeOwnProps {
1577
+ /** Visual style. */
1578
+ variant?: "light" | "filled" | "outline" | "dot" | "default" | "gradient";
1579
+ /** With variant=gradient: "from to [deg]", palette colors or CSS colors ("teal blue 90"). Default: the --ray-gradient-* tokens. */
1580
+ gradient?: string;
1581
+ /** A palette color or any CSS color. */
1582
+ color?: string;
1583
+ /** Height and font size. */
1584
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1585
+ /** Corner radius. Default: full. */
1586
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1587
+ /** Keeps the text as written instead of uppercase. */
1588
+ normalCase?: boolean;
1589
+ }
1590
+ export type RayBadgeProps = RayBadgeOwnProps & Omit<React.HTMLAttributes<Ray.RayBadge>, keyof RayBadgeOwnProps> & { children?: React.ReactNode };
1591
+ /** <ray-badge> as a React component. */
1592
+ export declare const RayBadge: React.ForwardRefExoticComponent<RayBadgeProps & React.RefAttributes<Ray.RayBadge>>;
1593
+
1594
+ export interface RayBlockquoteOwnProps {
1595
+ /** Who said it, shown below the quote ("— Grace Hopper"). */
1596
+ cite?: string;
1597
+ /** URL of the source: the inner blockquote's cite attribute. */
1598
+ href?: string;
1599
+ /** A palette color or any CSS color, for the edge, the mark and the tint. Default: the primary. */
1600
+ color?: string;
1601
+ /** light: tinted background; outline: border and edge only; filled: solid color (a pull quote). */
1602
+ variant?: "light" | "outline" | "filled";
1603
+ /** Registry icon of the mark, or none. The icon slot replaces it. */
1604
+ icon?: string;
1605
+ /** Text size (lg for a pull quote). */
1606
+ size?: "sm" | "md" | "lg";
1607
+ /** Inner spacing: xs…xl (the spacing scale), px as a number, or a CSS length. Default: md. */
1608
+ padding?: string;
1609
+ /** No colored edge on the start side (the tint, border and mark stay). */
1610
+ hideEdge?: boolean;
1611
+ /** Corner radius: xs…xl, none, or a CSS length. Default: md. */
1612
+ radius?: string;
1613
+ }
1614
+ export type RayBlockquoteProps = RayBlockquoteOwnProps & Omit<React.HTMLAttributes<Ray.RayBlockquote>, keyof RayBlockquoteOwnProps> & { children?: React.ReactNode };
1615
+ /** <ray-blockquote> as a React component. */
1616
+ export declare const RayBlockquote: React.ForwardRefExoticComponent<RayBlockquoteProps & React.RefAttributes<Ray.RayBlockquote>>;
1617
+
1618
+ export interface RayCarouselOwnProps {
1619
+ /** Current position (0-based). Setting it scrolls there. */
1620
+ index?: number;
1621
+ /** Accessible name of the carousel region. */
1622
+ label?: string;
1623
+ /** Size of each slide along the scroll axis ("100%" by default; "50%", "18rem"…). */
1624
+ slideSize?: string;
1625
+ /** Space between slides (default var(--ray-space-4)). */
1626
+ slideGap?: string;
1627
+ /** Where a slide snaps in the viewport. */
1628
+ align?: "start" | "center";
1629
+ /** Scroll axis (vertical needs a height; 20rem by default). */
1630
+ orientation?: "horizontal" | "vertical";
1631
+ /** next() on the last position goes to the first, prev() on the first to the last. */
1632
+ loop?: boolean;
1633
+ /** Milliseconds between automatic moves (0: off). Pauses on hover, focus and when the page is hidden; starts paused with reduced motion. Shows a pause/play button. */
1634
+ autoplay?: number;
1635
+ /** No previous/next buttons. */
1636
+ hideControls?: boolean;
1637
+ /** No indicator dots. */
1638
+ hideIndicators?: boolean;
1639
+ /** The current position changed (read `index`) by the user or a method (controls, indicators, keyboard, swipe, scroll, next/prev/goTo, autoplay) — not when `index` is set by code. */
1640
+ onChange?: (event: Event) => void;
1641
+ }
1642
+ export type RayCarouselProps = RayCarouselOwnProps & Omit<React.HTMLAttributes<Ray.RayCarousel>, keyof RayCarouselOwnProps> & { children?: React.ReactNode };
1643
+ /** <ray-carousel> as a React component. */
1644
+ export declare const RayCarousel: React.ForwardRefExoticComponent<RayCarouselProps & React.RefAttributes<Ray.RayCarousel>>;
1645
+
1646
+ export interface RayCodeOwnProps {
1647
+ /** The code, from script (the most convenient in React and Vue). Wins over the content. */
1648
+ code?: string;
1649
+ /** The language: js, ts, jsx, tsx, json, html, xml, svg, vue, css, sh, ray, diff… (also shown in the header). Not lang: that is the human language of the text. */
1650
+ language?: string;
1651
+ /** A file name or title in the header; also the scroll region's accessible name. */
1652
+ filename?: string;
1653
+ /** Numbers each line (not copied, not selectable). */
1654
+ lineNumbers?: boolean;
1655
+ /** Lines to highlight: "3, 5-7". */
1656
+ highlight?: string;
1657
+ /** Wraps long lines instead of scrolling sideways. */
1658
+ wrap?: boolean;
1659
+ /** Height before it scrolls: px as a number, or a CSS length. A taller block gets a "Show all N lines" button. */
1660
+ maxHeight?: string;
1661
+ /** Shown whole, past max-height. */
1662
+ expanded?: boolean;
1663
+ /** No copy button. */
1664
+ hideCopy?: boolean;
1665
+ /** No header bar (the copy button floats in the corner). */
1666
+ hideHeader?: boolean;
1667
+ /** Font size. */
1668
+ size?: "xs" | "sm" | "md";
1669
+ /** Corner radius: xs…xl, none, or a CSS length. Default: md. */
1670
+ radius?: string;
1671
+ /** Accessible name of the copy button. */
1672
+ copyLabel?: string;
1673
+ /** Shown and announced after copying. */
1674
+ copiedLabel?: string;
1675
+ /** The code was copied. */
1676
+ onRayCopy?: (event: CustomEvent<{ code: string }>) => void;
1677
+ }
1678
+ export type RayCodeProps = RayCodeOwnProps & Omit<React.HTMLAttributes<Ray.RayCode>, keyof RayCodeOwnProps> & { children?: React.ReactNode };
1679
+ /** <ray-code> as a React component. */
1680
+ export declare const RayCode: React.ForwardRefExoticComponent<RayCodeProps & React.RefAttributes<Ray.RayCode>>;
1681
+
1682
+ export interface RayIconOwnProps {
1683
+ /** Registered icon name (iconNames()). */
1684
+ name?: string;
1685
+ /** xs…xl or any CSS length. Default: 1em. */
1686
+ size?: string;
1687
+ /** Accessible name; without it the icon is decorative (hidden from screen readers). */
1688
+ label?: string;
1689
+ /** A palette color or any CSS color. Default: the text color. */
1690
+ color?: string;
1691
+ /** Stroke width for stroke icons (default: --ray-icon-stroke, 2). */
1692
+ stroke?: number;
1693
+ }
1694
+ export type RayIconProps = RayIconOwnProps & Omit<React.HTMLAttributes<Ray.RayIcon>, keyof RayIconOwnProps> & { children?: React.ReactNode };
1695
+ /** <ray-icon> as a React component. */
1696
+ export declare const RayIcon: React.ForwardRefExoticComponent<RayIconProps & React.RefAttributes<Ray.RayIcon>>;
1697
+
1698
+ export interface RayIndicatorOwnProps {
1699
+ /** Text in the indicator (a word or a count). Empty: a dot. */
1700
+ label?: string;
1701
+ /** Which point of the content's box it sits on. */
1702
+ position?: "top-start" | "top-center" | "top-end" | "middle-start" | "middle-center" | "middle-end" | "bottom-start" | "bottom-center" | "bottom-end";
1703
+ /** Moves it inward from that point: px as a number, or a CSS length. Use it on round content (an avatar), so it sits on the curve. */
1704
+ offset?: string | number;
1705
+ /** A palette color or any CSS color. Default: the primary. */
1706
+ color?: string;
1707
+ /** Diameter of the dot (and minimum height of a label): px as a number, or a CSS length. Default: 10px. */
1708
+ size?: string | number;
1709
+ /** Corner radius: xs…xl, none, or a CSS length. Default: round. */
1710
+ radius?: string;
1711
+ /** A numeric label above it shows as max+ (99+). */
1712
+ max?: number;
1713
+ /** inline-block, to sit within a line of text. */
1714
+ inline?: boolean;
1715
+ /** A ring in the background color, to separate it from the content. */
1716
+ withBorder?: boolean;
1717
+ /** A pulse around it (live, recording, syncing). */
1718
+ processing?: boolean;
1719
+ /** Hides the indicator (the content stays). */
1720
+ disabled?: boolean;
1721
+ }
1722
+ export type RayIndicatorProps = RayIndicatorOwnProps & Omit<React.HTMLAttributes<Ray.RayIndicator>, keyof RayIndicatorOwnProps> & { children?: React.ReactNode };
1723
+ /** <ray-indicator> as a React component. */
1724
+ export declare const RayIndicator: React.ForwardRefExoticComponent<RayIndicatorProps & React.RefAttributes<Ray.RayIndicator>>;
1725
+
1726
+ export interface RayKbdOwnProps {
1727
+ /** Font size. */
1728
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1729
+ /** default: raised keycap; filled: flat muted chip; outline: flat with a border. */
1730
+ variant?: "default" | "filled" | "outline";
1731
+ }
1732
+ export type RayKbdProps = RayKbdOwnProps & Omit<React.HTMLAttributes<Ray.RayKbd>, keyof RayKbdOwnProps> & { children?: React.ReactNode };
1733
+ /** <ray-kbd> as a React component. */
1734
+ export declare const RayKbd: React.ForwardRefExoticComponent<RayKbdProps & React.RefAttributes<Ray.RayKbd>>;
1735
+
1736
+ export interface RayStatOwnProps {
1737
+ /** What is measured. */
1738
+ label?: string;
1739
+ /** The figure, already formatted. */
1740
+ value?: string;
1741
+ /** Change (positive is shown as good, in green; see inverse). */
1742
+ diff?: number;
1743
+ /** Unit of diff. */
1744
+ diffUnit?: string;
1745
+ /** A line under the value (compared to…). */
1746
+ note?: string;
1747
+ /** Lower is better (errors, latency): negative diffs are green. */
1748
+ inverse?: boolean;
1749
+ /** Without the card around. */
1750
+ plain?: boolean;
1751
+ }
1752
+ export type RayStatProps = RayStatOwnProps & Omit<React.HTMLAttributes<Ray.RayStat>, keyof RayStatOwnProps> & { children?: React.ReactNode };
1753
+ /** <ray-stat> as a React component. */
1754
+ export declare const RayStat: React.ForwardRefExoticComponent<RayStatProps & React.RefAttributes<Ray.RayStat>>;
1755
+
1756
+ export interface RayTableOwnProps {
1757
+ /** Columns: key, label, width, align, sortable, render(row, index), sort(a, b). */
1758
+ columns?: Ray.TableColumn[];
1759
+ /** Rows (objects). */
1760
+ data?: any[];
1761
+ /** Field that identifies a row (selection). */
1762
+ rowKey?: string;
1763
+ /** A checkbox per row and a select-all checkbox. */
1764
+ selectable?: boolean;
1765
+ /** Keys of the selected rows. */
1766
+ selection?: unknown[];
1767
+ /** Current sort; set it, or let header clicks change it. */
1768
+ sort?: Ray.TableSort | null;
1769
+ /** Do not sort here: listen to ray-sort and pass sorted data. */
1770
+ manualSort?: boolean;
1771
+ /** Rows are focusable and fire ray-row-click (Enter too; arrows move between rows). */
1772
+ clickableRows?: boolean;
1773
+ /** Alternate row background. */
1774
+ striped?: boolean;
1775
+ /** Border around the table. */
1776
+ withBorder?: boolean;
1777
+ /** Borders between columns. */
1778
+ withColumnBorders?: boolean;
1779
+ /** The header stays visible while scrolling (with --ray-table-max-height). */
1780
+ stickyHeader?: boolean;
1781
+ /** No row highlight on hover. */
1782
+ noHover?: boolean;
1783
+ /** Cell padding. */
1784
+ density?: "xs" | "sm" | "md" | "lg";
1785
+ /** Caption (also the table's accessible name). */
1786
+ label?: string;
1787
+ /** Text without rows (or put a ray-empty-state in slot=empty). */
1788
+ emptyLabel?: string;
1789
+ /** A header changed the sort. */
1790
+ onRaySort?: (event: CustomEvent<{ key: string; direction: "asc" | "desc" | null }>) => void;
1791
+ /** The selection changed. */
1792
+ onRaySelectionChange?: (event: CustomEvent<{ selection: unknown[] }>) => void;
1793
+ /** A row was clicked or activated with Enter (clickable-rows). */
1794
+ onRayRowClick?: (event: CustomEvent<{ row: any; index: number }>) => void;
1795
+ }
1796
+ export type RayTableProps = RayTableOwnProps & Omit<React.HTMLAttributes<Ray.RayTable>, keyof RayTableOwnProps> & { children?: React.ReactNode };
1797
+ /** <ray-table> as a React component. */
1798
+ export declare const RayTable: React.ForwardRefExoticComponent<RayTableProps & React.RefAttributes<Ray.RayTable>>;
1799
+
1800
+ export interface RayTimelineOwnProps {
1801
+ /** Index of the last reached item (-1: none). */
1802
+ active?: number;
1803
+ /** Side of the line. */
1804
+ align?: "left" | "right";
1805
+ /** Bullet size: px as a number or a CSS length (default 20px). */
1806
+ bulletSize?: string;
1807
+ /** Line width in px (default 2). */
1808
+ lineWidth?: number;
1809
+ /** A palette color or any CSS color for what is reached (default: primary). */
1810
+ color?: string;
1811
+ /** Counts active from the end (the latest event at the top). */
1812
+ reverseActive?: boolean;
1813
+ }
1814
+ export type RayTimelineProps = RayTimelineOwnProps & Omit<React.HTMLAttributes<Ray.RayTimeline>, keyof RayTimelineOwnProps> & { children?: React.ReactNode };
1815
+ /** <ray-timeline> as a React component. */
1816
+ export declare const RayTimeline: React.ForwardRefExoticComponent<RayTimelineProps & React.RefAttributes<Ray.RayTimeline>>;
1817
+
1818
+ export interface RayTimelineItemOwnProps {
1819
+ /** The title of the event. */
1820
+ label?: string;
1821
+ /** When ("2 h ago", a date). */
1822
+ time?: string;
1823
+ /** An icon of the registry in the bullet. */
1824
+ icon?: string;
1825
+ /** Its own color (a failed step in red). */
1826
+ color?: string;
1827
+ /** The line to the next item (dashed: not happened yet). */
1828
+ lineVariant?: "solid" | "dashed" | "dotted";
1829
+ }
1830
+ export type RayTimelineItemProps = RayTimelineItemOwnProps & Omit<React.HTMLAttributes<Ray.RayTimelineItem>, keyof RayTimelineItemOwnProps> & { children?: React.ReactNode };
1831
+ /** <ray-timeline-item> as a React component. */
1832
+ export declare const RayTimelineItem: React.ForwardRefExoticComponent<RayTimelineItemProps & React.RefAttributes<Ray.RayTimelineItem>>;
1833
+
1834
+ export interface RayAlertOwnProps {
1835
+ /** Title. */
1836
+ label?: string;
1837
+ /** A palette color or any CSS color. */
1838
+ color?: string;
1839
+ /** Visual style. */
1840
+ variant?: "light" | "filled" | "outline" | "default" | "transparent";
1841
+ /** Corner radius. */
1842
+ radius?: "xs" | "sm" | "md" | "lg" | "xl";
1843
+ /** A registered icon name, or none. */
1844
+ icon?: string;
1845
+ /** A close button; closing hides the alert (cancel ray-close to keep it). */
1846
+ closable?: boolean;
1847
+ /** Accessible name of the close button. */
1848
+ closeLabel?: string;
1849
+ /** The close button was pressed; cancelable. */
1850
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1851
+ }
1852
+ export type RayAlertProps = RayAlertOwnProps & Omit<React.HTMLAttributes<Ray.RayAlert>, keyof RayAlertOwnProps> & { children?: React.ReactNode };
1853
+ /** <ray-alert> as a React component. */
1854
+ export declare const RayAlert: React.ForwardRefExoticComponent<RayAlertProps & React.RefAttributes<Ray.RayAlert>>;
1855
+
1856
+ export interface RayEmptyStateOwnProps {
1857
+ /** Title. */
1858
+ label?: string;
1859
+ /** Less padding. */
1860
+ compact?: boolean;
1861
+ /** Dashed border. */
1862
+ withBorder?: boolean;
1863
+ }
1864
+ export type RayEmptyStateProps = RayEmptyStateOwnProps & Omit<React.HTMLAttributes<Ray.RayEmptyState>, keyof RayEmptyStateOwnProps> & { children?: React.ReactNode };
1865
+ /** <ray-empty-state> as a React component. */
1866
+ export declare const RayEmptyState: React.ForwardRefExoticComponent<RayEmptyStateProps & React.RefAttributes<Ray.RayEmptyState>>;
1867
+
1868
+ export interface RayNotificationOwnProps {
1869
+ /** Title. */
1870
+ label?: string;
1871
+ /** Status color: tints the status icon (and a slotted icon's circle). */
1872
+ color?: string;
1873
+ /** Status icon from the registry (default: from the color); "none" for no icon. */
1874
+ icon?: string;
1875
+ /** Shows a spinner (notify() does not auto-close it). */
1876
+ loading?: boolean;
1877
+ /** No close button. */
1878
+ hideClose?: boolean;
1879
+ /** Draws a border. */
1880
+ withBorder?: boolean;
1881
+ /** Text of an action button (e.g. "Undo"); pressing it fires ray-action. */
1882
+ actionLabel?: string;
1883
+ /** The close button was pressed. */
1884
+ onRayClose?: (event: CustomEvent<unknown>) => void;
1885
+ /** The action button was pressed (notify() runs action.onClick and closes it). */
1886
+ onRayAction?: (event: CustomEvent<unknown>) => void;
1887
+ }
1888
+ export type RayNotificationProps = RayNotificationOwnProps & Omit<React.HTMLAttributes<Ray.RayNotification>, keyof RayNotificationOwnProps> & { children?: React.ReactNode };
1889
+ /** <ray-notification> as a React component. */
1890
+ export declare const RayNotification: React.ForwardRefExoticComponent<RayNotificationProps & React.RefAttributes<Ray.RayNotification>>;
1891
+
1892
+ export interface RayToasterOwnProps {
1893
+ /** Corner of the stack. */
1894
+ position?: "bottom-right" | "bottom-left" | "bottom-center" | "top-right" | "top-left" | "top-center";
1895
+ /** Maximum kept; the oldest go first. */
1896
+ limit?: number;
1897
+ /** Toasts shown in the collapsed stack (the rest wait, hidden). */
1898
+ visible?: number;
1899
+ /** Always expanded: a list instead of a stack. */
1900
+ expand?: boolean;
1901
+ /** Pixels between toasts when expanded. */
1902
+ gap?: number;
1903
+ }
1904
+ export type RayToasterProps = RayToasterOwnProps & Omit<React.HTMLAttributes<Ray.RayToaster>, keyof RayToasterOwnProps> & { children?: React.ReactNode };
1905
+ /** <ray-toaster> as a React component. */
1906
+ export declare const RayToaster: React.ForwardRefExoticComponent<RayToasterProps & React.RefAttributes<Ray.RayToaster>>;
1907
+
1908
+ export interface RayProgressOwnProps {
1909
+ /** Progress, from 0 to max. Unset: indeterminate. */
1910
+ value?: number;
1911
+ /** The value of a full bar. */
1912
+ max?: number;
1913
+ /** A palette color or any CSS color. */
1914
+ color?: string;
1915
+ /** Bar height. */
1916
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1917
+ /** Corner radius. Default: full. */
1918
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1919
+ /** Diagonal stripes. */
1920
+ striped?: boolean;
1921
+ /** Moving stripes (with striped). */
1922
+ animated?: boolean;
1923
+ /** Shows the percentage: inside the bar on lg and xl, beside it on smaller sizes. */
1924
+ showValue?: boolean;
1925
+ /** Accessible name (default: Progress). */
1926
+ label?: string;
1927
+ }
1928
+ export type RayProgressProps = RayProgressOwnProps & Omit<React.HTMLAttributes<Ray.RayProgress>, keyof RayProgressOwnProps> & { children?: React.ReactNode };
1929
+ /** <ray-progress> as a React component. */
1930
+ export declare const RayProgress: React.ForwardRefExoticComponent<RayProgressProps & React.RefAttributes<Ray.RayProgress>>;
1931
+
1932
+ export interface RaySkeletonOwnProps {
1933
+ /** Width (CSS length, a number is px). Default: 100% (a circle: 2.5rem). */
1934
+ width?: string;
1935
+ /** Height of a block or of each line (CSS length, a number is px). Default: 1rem. */
1936
+ height?: string;
1937
+ /** A circle (avatar placeholder): its diameter is width, else height. */
1938
+ circle?: boolean;
1939
+ /** Number of text lines (the last one is shorter). */
1940
+ lines?: number;
1941
+ /** Corner radius: xs…xl, full or a CSS length. Default: sm. */
1942
+ radius?: string;
1943
+ /** The loading effect (always none with reduced motion). */
1944
+ animation?: "shimmer" | "pulse" | "none";
1945
+ /** Shows the slotted content instead of the placeholder. */
1946
+ loaded?: boolean;
1947
+ }
1948
+ export type RaySkeletonProps = RaySkeletonOwnProps & Omit<React.HTMLAttributes<Ray.RaySkeleton>, keyof RaySkeletonOwnProps> & { children?: React.ReactNode };
1949
+ /** <ray-skeleton> as a React component. */
1950
+ export declare const RaySkeleton: React.ForwardRefExoticComponent<RaySkeletonProps & React.RefAttributes<Ray.RaySkeleton>>;
1951
+
1952
+ export interface RaySpinnerOwnProps {
1953
+ /** A palette color or any CSS color. Default: the primary color. */
1954
+ color?: string;
1955
+ /** Diameter. */
1956
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1957
+ /** Text read by screen readers. */
1958
+ label?: string;
1959
+ }
1960
+ export type RaySpinnerProps = RaySpinnerOwnProps & Omit<React.HTMLAttributes<Ray.RaySpinner>, keyof RaySpinnerOwnProps> & { children?: React.ReactNode };
1961
+ /** <ray-spinner> as a React component. */
1962
+ export declare const RaySpinner: React.ForwardRefExoticComponent<RaySpinnerProps & React.RefAttributes<Ray.RaySpinner>>;
1963
+
1964
+ export interface RayAppBarOwnProps {
1965
+ /** The title. */
1966
+ label?: string;
1967
+ /** A line under the title. */
1968
+ description?: string;
1969
+ /** The title centered (iOS). */
1970
+ center?: boolean;
1971
+ /** default: the page background; filled: the primary color; transparent: until it elevates. */
1972
+ variant?: "default" | "filled" | "transparent";
1973
+ /** Height: 48, 56 or 64 px. */
1974
+ size?: "sm" | "md" | "lg";
1975
+ /** While the content scrolls: elevate (border and shadow), hide (also slides away going down, back going up), none. */
1976
+ scrollBehavior?: "elevate" | "hide" | "none";
1977
+ /** Sticks to the top of the window (outside a shell). */
1978
+ sticky?: boolean;
1979
+ /** A selector of the element whose scrolling it follows (default: its shell's, else the window). */
1980
+ scrollTarget?: string;
1981
+ }
1982
+ export type RayAppBarProps = RayAppBarOwnProps & Omit<React.HTMLAttributes<Ray.RayAppBar>, keyof RayAppBarOwnProps> & { children?: React.ReactNode };
1983
+ /** <ray-app-bar> as a React component. */
1984
+ export declare const RayAppBar: React.ForwardRefExoticComponent<RayAppBarProps & React.RefAttributes<Ray.RayAppBar>>;
1985
+
1986
+ export interface RayAppShellOwnProps {
1987
+ /** default: the header across the top; alt: the navbar full height, the header beside it. */
1988
+ layout?: "default" | "alt";
1989
+ /** Width (px, em or rem) below which it takes the phone layout. */
1990
+ breakpoint?: string;
1991
+ /** Padding of the main area: xs…xl, a number (px) or a CSS length. */
1992
+ padding?: string;
1993
+ /** It switched between the wide and the phone layout. */
1994
+ onRayBreakpoint?: (event: CustomEvent<{ mobile: boolean }>) => void;
1995
+ }
1996
+ export type RayAppShellProps = RayAppShellOwnProps & Omit<React.HTMLAttributes<Ray.RayAppShell>, keyof RayAppShellOwnProps> & { children?: React.ReactNode };
1997
+ /** <ray-app-shell> as a React component. */
1998
+ export declare const RayAppShell: React.ForwardRefExoticComponent<RayAppShellProps & React.RefAttributes<Ray.RayAppShell>>;
1999
+
2000
+ export interface RayAspectRatioOwnProps {
2001
+ /** Width/height: "16/9", "4:3", "1" or a number. */
2002
+ ratio?: string;
2003
+ /** How the media fills the box (object-fit). */
2004
+ fit?: "cover" | "contain";
2005
+ /** Corner radius: xs…xl, full or a CSS length. */
2006
+ radius?: string;
2007
+ }
2008
+ export type RayAspectRatioProps = RayAspectRatioOwnProps & Omit<React.HTMLAttributes<Ray.RayAspectRatio>, keyof RayAspectRatioOwnProps> & { children?: React.ReactNode };
2009
+ /** <ray-aspect-ratio> as a React component. */
2010
+ export declare const RayAspectRatio: React.ForwardRefExoticComponent<RayAspectRatioProps & React.RefAttributes<Ray.RayAspectRatio>>;
2011
+
2012
+ export interface RayCardOwnProps {
2013
+ /** Inner spacing (named space scale). */
2014
+ padding?: "0" | "xs" | "sm" | "md" | "lg" | "xl";
2015
+ /** Corner radius. Default: --ray-radius-default. */
2016
+ radius?: "xs" | "sm" | "md" | "lg" | "xl";
2017
+ /** Elevation. */
2018
+ shadow?: "xs" | "sm" | "md" | "lg" | "xl";
2019
+ /** Draws a border. */
2020
+ withBorder?: boolean;
2021
+ /** default: card surface; filled: muted surface; outline: border without fill. */
2022
+ variant?: "default" | "filled" | "outline";
2023
+ }
2024
+ export type RayCardProps = RayCardOwnProps & Omit<React.HTMLAttributes<Ray.RayCard>, keyof RayCardOwnProps> & { children?: React.ReactNode };
2025
+ /** <ray-card> as a React component. */
2026
+ export declare const RayCard: React.ForwardRefExoticComponent<RayCardProps & React.RefAttributes<Ray.RayCard>>;
2027
+
2028
+ export interface RayCenterOwnProps {
2029
+ /** As wide as its content (inline-flex): an icon beside text. */
2030
+ inline?: boolean;
2031
+ }
2032
+ export type RayCenterProps = RayCenterOwnProps & Omit<React.HTMLAttributes<Ray.RayCenter>, keyof RayCenterOwnProps> & { children?: React.ReactNode };
2033
+ /** <ray-center> as a React component. */
2034
+ export declare const RayCenter: React.ForwardRefExoticComponent<RayCenterProps & React.RefAttributes<Ray.RayCenter>>;
2035
+
2036
+ export interface RayContainerOwnProps {
2037
+ /** Maximum width: xs 540px, sm 720px, md 960px, lg 1140px, xl 1320px, or any CSS length. */
2038
+ size?: string;
2039
+ /** Side padding: xs…xl, a number (px) or a CSS length. */
2040
+ padding?: string;
2041
+ /** No maximum width: the whole width, still padded. */
2042
+ fluid?: boolean;
2043
+ }
2044
+ export type RayContainerProps = RayContainerOwnProps & Omit<React.HTMLAttributes<Ray.RayContainer>, keyof RayContainerOwnProps> & { children?: React.ReactNode };
2045
+ /** <ray-container> as a React component. */
2046
+ export declare const RayContainer: React.ForwardRefExoticComponent<RayContainerProps & React.RefAttributes<Ray.RayContainer>>;
2047
+
2048
+ export interface RayGridOwnProps {
2049
+ /** Columns: a count, then counts from a width up ("1 sm:2 lg:4"). */
2050
+ cols?: string;
2051
+ /** Instead of cols: as many columns of at least this width as fit ("14rem", 220). */
2052
+ minColWidth?: string;
2053
+ /** Space between cells: xs…xl, a number (px) or a CSS length. */
2054
+ gap?: string;
2055
+ /** Space between rows when it differs from gap. */
2056
+ rowGap?: string;
2057
+ /** Vertical alignment of the cells in a row. */
2058
+ align?: "stretch" | "start" | "center" | "end";
2059
+ }
2060
+ export type RayGridProps = RayGridOwnProps & Omit<React.HTMLAttributes<Ray.RayGrid>, keyof RayGridOwnProps> & { children?: React.ReactNode };
2061
+ /** <ray-grid> as a React component. */
2062
+ export declare const RayGrid: React.ForwardRefExoticComponent<RayGridProps & React.RefAttributes<Ray.RayGrid>>;
2063
+
2064
+ export interface RayGroupOwnProps {
2065
+ /** Space between children: xs…xl (the space scale), a number (px) or any CSS length. */
2066
+ gap?: string;
2067
+ /** Cross-axis alignment. */
2068
+ align?: "center" | "start" | "end" | "stretch" | "baseline";
2069
+ /** Main-axis distribution: space-between for a title on one side and actions on the other. */
2070
+ justify?: "start" | "center" | "end" | "space-between" | "space-around" | "space-evenly";
2071
+ /** Keeps the children on one line. */
2072
+ nowrap?: boolean;
2073
+ /** The children share the width equally. */
2074
+ grow?: boolean;
2075
+ }
2076
+ export type RayGroupProps = RayGroupOwnProps & Omit<React.HTMLAttributes<Ray.RayGroup>, keyof RayGroupOwnProps> & { children?: React.ReactNode };
2077
+ /** <ray-group> as a React component. */
2078
+ export declare const RayGroup: React.ForwardRefExoticComponent<RayGroupProps & React.RefAttributes<Ray.RayGroup>>;
2079
+
2080
+ export interface RayScrollAreaOwnProps {
2081
+ /** Height (CSS length). */
2082
+ height?: string;
2083
+ /** Maximum height: it grows with its content up to this, then scrolls. */
2084
+ maxHeight?: string;
2085
+ /** Which ways it scrolls. */
2086
+ orientation?: "vertical" | "horizontal" | "both";
2087
+ /** The scrollbar: auto (when it scrolls), hover (while hovered or scrolling), never (still scrolls). */
2088
+ type?: "auto" | "hover" | "never";
2089
+ /** No edge shadows. */
2090
+ noShadows?: boolean;
2091
+ /** Distance from the end (px) at which ray-reach-end fires. */
2092
+ threshold?: number;
2093
+ /** Accessible name: makes the scrolling box a named region. */
2094
+ label?: string;
2095
+ /** The end came within threshold (once per arrival). */
2096
+ onRayReachEnd?: (event: CustomEvent<{ edge: "bottom" | "right" }>) => void;
2097
+ }
2098
+ export type RayScrollAreaProps = RayScrollAreaOwnProps & Omit<React.HTMLAttributes<Ray.RayScrollArea>, keyof RayScrollAreaOwnProps> & { children?: React.ReactNode };
2099
+ /** <ray-scroll-area> as a React component. */
2100
+ export declare const RayScrollArea: React.ForwardRefExoticComponent<RayScrollAreaProps & React.RefAttributes<Ray.RayScrollArea>>;
2101
+
2102
+ export interface RaySeparatorOwnProps {
2103
+ /** Direction of the rule. */
2104
+ orientation?: "horizontal" | "vertical";
2105
+ /** Text in the middle of a horizontal rule. */
2106
+ label?: string;
2107
+ /** Where the label sits. */
2108
+ labelPosition?: "left" | "center" | "right";
2109
+ /** Thickness (1–5px). */
2110
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
2111
+ /** Line style. */
2112
+ variant?: "solid" | "dashed" | "dotted";
2113
+ }
2114
+ export type RaySeparatorProps = RaySeparatorOwnProps & Omit<React.HTMLAttributes<Ray.RaySeparator>, keyof RaySeparatorOwnProps> & { children?: React.ReactNode };
2115
+ /** <ray-separator> as a React component. */
2116
+ export declare const RaySeparator: React.ForwardRefExoticComponent<RaySeparatorProps & React.RefAttributes<Ray.RaySeparator>>;
2117
+
2118
+ export interface RaySplitOwnProps {
2119
+ /** horizontal: side by side; vertical: stacked. */
2120
+ orientation?: "horizontal" | "vertical";
2121
+ /** Initial size of the start pane: px (280) or any CSS length (30%, 20rem). */
2122
+ position?: string;
2123
+ /** Minimum size of the start pane in px. */
2124
+ min?: number;
2125
+ /** Maximum size of the start pane in px. */
2126
+ max?: number;
2127
+ /** The start pane is hidden. */
2128
+ collapsed?: boolean;
2129
+ /** The divider cannot be moved. */
2130
+ disabled?: boolean;
2131
+ /** A key: the size is saved in localStorage and restored. */
2132
+ autosave?: string;
2133
+ /** After a drag, a key or a collapse. */
2134
+ onRayResize?: (event: CustomEvent<{ size: number; collapsed: boolean }>) => void;
2135
+ }
2136
+ export type RaySplitProps = RaySplitOwnProps & Omit<React.HTMLAttributes<Ray.RaySplit>, keyof RaySplitOwnProps> & { children?: React.ReactNode };
2137
+ /** <ray-split> as a React component. */
2138
+ export declare const RaySplit: React.ForwardRefExoticComponent<RaySplitProps & React.RefAttributes<Ray.RaySplit>>;
2139
+
2140
+ export interface RayStackOwnProps {
2141
+ /** Space between children: xs…xl (the space scale), a number (px) or any CSS length. */
2142
+ gap?: string;
2143
+ /** Cross-axis alignment: stretch fills the width. */
2144
+ align?: "stretch" | "start" | "center" | "end" | "baseline";
2145
+ /** Main-axis distribution (with a height to distribute). */
2146
+ justify?: "start" | "center" | "end" | "space-between" | "space-around" | "space-evenly";
2147
+ }
2148
+ export type RayStackProps = RayStackOwnProps & Omit<React.HTMLAttributes<Ray.RayStack>, keyof RayStackOwnProps> & { children?: React.ReactNode };
2149
+ /** <ray-stack> as a React component. */
2150
+ export declare const RayStack: React.ForwardRefExoticComponent<RayStackProps & React.RefAttributes<Ray.RayStack>>;
2151
+
2152
+ export interface RayStatusbarOwnProps {
2153
+ /** accent: the primary color (e.g. while debugging). */
2154
+ variant?: "default" | "accent";
2155
+ }
2156
+ export type RayStatusbarProps = RayStatusbarOwnProps & Omit<React.HTMLAttributes<Ray.RayStatusbar>, keyof RayStatusbarOwnProps> & { children?: React.ReactNode };
2157
+ /** <ray-statusbar> as a React component. */
2158
+ export declare const RayStatusbar: React.ForwardRefExoticComponent<RayStatusbarProps & React.RefAttributes<Ray.RayStatusbar>>;
2159
+
2160
+ export interface RayStatusbarItemOwnProps {
2161
+ /** A button (listen to click). */
2162
+ action?: boolean;
2163
+ /** Text color (red for errors…). */
2164
+ color?: string;
2165
+ /** Accessible name and tooltip (for icon-only or terse items). */
2166
+ label?: string;
2167
+ }
2168
+ export type RayStatusbarItemProps = RayStatusbarItemOwnProps & Omit<React.HTMLAttributes<Ray.RayStatusbarItem>, keyof RayStatusbarItemOwnProps> & { children?: React.ReactNode };
2169
+ /** <ray-statusbar-item> as a React component. */
2170
+ export declare const RayStatusbarItem: React.ForwardRefExoticComponent<RayStatusbarItemProps & React.RefAttributes<Ray.RayStatusbarItem>>;
2171
+
2172
+ export interface RayThemeToggleOwnProps {
2173
+ /** Control height. */
2174
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
2175
+ /** Fired on the document root by setTheme(); detail: { theme, resolved, primary }. */
2176
+ onRayThemeChange?: (event: CustomEvent<{ theme: "light" | "dark" | "system"; resolved: "light" | "dark"; primary: string | null }>) => void;
2177
+ }
2178
+ export type RayThemeToggleProps = RayThemeToggleOwnProps & Omit<React.HTMLAttributes<Ray.RayThemeToggle>, keyof RayThemeToggleOwnProps> & { children?: React.ReactNode };
2179
+ /** <ray-theme-toggle> as a React component. */
2180
+ export declare const RayThemeToggle: React.ForwardRefExoticComponent<RayThemeToggleProps & React.RefAttributes<Ray.RayThemeToggle>>;