astralis-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/components/buttons/button/button.js +83 -0
  4. package/dist/components/buttons/button/button.styles.js +69 -0
  5. package/dist/components/buttons/button-group/button-group.context.js +10 -0
  6. package/dist/components/buttons/button-group/button-group.js +42 -0
  7. package/dist/components/buttons/button-group/button-group.styles.js +39 -0
  8. package/dist/components/buttons/theme-toggle/theme-toggle.js +53 -0
  9. package/dist/components/data-display/avatar/avatar.context.js +10 -0
  10. package/dist/components/data-display/avatar/avatar.styles.js +40 -0
  11. package/dist/components/data-display/avatar/components/avatar-badge.js +24 -0
  12. package/dist/components/data-display/avatar/components/avatar-group.js +30 -0
  13. package/dist/components/data-display/avatar/components/avatar-root.js +57 -0
  14. package/dist/components/data-display/avatar/index.js +13 -0
  15. package/dist/components/data-display/badge/badge.js +12 -0
  16. package/dist/components/data-display/badge/badge.styles.js +25 -0
  17. package/dist/components/data-display/calendar/calendar.context.js +13 -0
  18. package/dist/components/data-display/calendar/components/calendar-cell.js +60 -0
  19. package/dist/components/data-display/calendar/components/calendar-grid.js +106 -0
  20. package/dist/components/data-display/calendar/components/calendar-header.js +23 -0
  21. package/dist/components/data-display/calendar/components/calendar-next-trigger.js +34 -0
  22. package/dist/components/data-display/calendar/components/calendar-prev-trigger.js +34 -0
  23. package/dist/components/data-display/calendar/components/calendar-root.js +154 -0
  24. package/dist/components/data-display/calendar/components/calendar-view-trigger.js +28 -0
  25. package/dist/components/data-display/calendar/components/calendar-weekdays.js +43 -0
  26. package/dist/components/data-display/calendar/index.js +30 -0
  27. package/dist/components/data-display/card/card.context.js +10 -0
  28. package/dist/components/data-display/card/card.styles.js +30 -0
  29. package/dist/components/data-display/card/components/card-body.js +19 -0
  30. package/dist/components/data-display/card/components/card-description.js +25 -0
  31. package/dist/components/data-display/card/components/card-footer.js +32 -0
  32. package/dist/components/data-display/card/components/card-header.js +37 -0
  33. package/dist/components/data-display/card/components/card-root.js +30 -0
  34. package/dist/components/data-display/card/components/card-title.js +25 -0
  35. package/dist/components/data-display/card/index.js +24 -0
  36. package/dist/components/data-display/data-list/components/data-list-item.js +20 -0
  37. package/dist/components/data-display/data-list/components/data-list-label.js +23 -0
  38. package/dist/components/data-display/data-list/components/data-list-root.js +11 -0
  39. package/dist/components/data-display/data-list/components/data-list-value.js +12 -0
  40. package/dist/components/data-display/data-list/data-list.context.js +12 -0
  41. package/dist/components/data-display/data-list/index.js +16 -0
  42. package/dist/components/data-display/image/components/image-group.js +79 -0
  43. package/dist/components/data-display/image/components/image-lightbox.js +188 -0
  44. package/dist/components/data-display/image/components/image-root.js +98 -0
  45. package/dist/components/data-display/image/components/image.constants.js +28 -0
  46. package/dist/components/data-display/image/index.js +11 -0
  47. package/dist/components/data-display/marquee/components/marquee-item.js +27 -0
  48. package/dist/components/data-display/marquee/components/marquee-root.js +130 -0
  49. package/dist/components/data-display/marquee/index.js +11 -0
  50. package/dist/components/data-display/qr-code/index.js +7 -0
  51. package/dist/components/data-display/qr-code/qr-code.js +203 -0
  52. package/dist/components/data-display/stat/components/stat-help-text.js +9 -0
  53. package/dist/components/data-display/stat/components/stat-indicator.js +23 -0
  54. package/dist/components/data-display/stat/components/stat-label.js +9 -0
  55. package/dist/components/data-display/stat/components/stat-root.js +10 -0
  56. package/dist/components/data-display/stat/components/stat-value.js +9 -0
  57. package/dist/components/data-display/stat/index.js +19 -0
  58. package/dist/components/data-display/stat/stat.context.js +6 -0
  59. package/dist/components/data-display/table/components/table-body.js +9 -0
  60. package/dist/components/data-display/table/components/table-caption.js +26 -0
  61. package/dist/components/data-display/table/components/table-cell.js +12 -0
  62. package/dist/components/data-display/table/components/table-footer.js +9 -0
  63. package/dist/components/data-display/table/components/table-head.js +20 -0
  64. package/dist/components/data-display/table/components/table-header.js +22 -0
  65. package/dist/components/data-display/table/components/table-root.js +20 -0
  66. package/dist/components/data-display/table/components/table-row.js +23 -0
  67. package/dist/components/data-display/table/index.js +28 -0
  68. package/dist/components/data-display/table/table.context.js +12 -0
  69. package/dist/components/data-display/table/table.styles.js +9 -0
  70. package/dist/components/data-display/tag/components/checkable-tag-group.js +37 -0
  71. package/dist/components/data-display/tag/components/checkable-tag.js +45 -0
  72. package/dist/components/data-display/tag/components/tag-root.js +52 -0
  73. package/dist/components/data-display/tag/index.js +14 -0
  74. package/dist/components/data-display/tag/tag.styles.js +27 -0
  75. package/dist/components/data-display/timeline/components/timeline-content.js +23 -0
  76. package/dist/components/data-display/timeline/components/timeline-indicator.js +21 -0
  77. package/dist/components/data-display/timeline/components/timeline-item.js +23 -0
  78. package/dist/components/data-display/timeline/components/timeline-root.js +12 -0
  79. package/dist/components/data-display/timeline/index.js +20 -0
  80. package/dist/components/data-display/timeline/timeline.context.js +18 -0
  81. package/dist/components/data-display/timeline/timeline.styles.js +33 -0
  82. package/dist/components/data-entry/checkbox/checkbox.context.js +12 -0
  83. package/dist/components/data-entry/checkbox/checkbox.styles.js +14 -0
  84. package/dist/components/data-entry/checkbox/components/checkbox-group.js +38 -0
  85. package/dist/components/data-entry/checkbox/components/checkbox.js +86 -0
  86. package/dist/components/data-entry/checkbox/index.js +11 -0
  87. package/dist/components/data-entry/combobox/combobox.js +178 -0
  88. package/dist/components/data-entry/field/components/field-error-text.js +47 -0
  89. package/dist/components/data-entry/field/components/field-help-text.js +30 -0
  90. package/dist/components/data-entry/field/components/field-label.js +35 -0
  91. package/dist/components/data-entry/field/components/field-root.js +45 -0
  92. package/dist/components/data-entry/field/field.context.js +10 -0
  93. package/dist/components/data-entry/field/index.js +17 -0
  94. package/dist/components/data-entry/input/components/input-group.js +15 -0
  95. package/dist/components/data-entry/input/components/input-password.js +42 -0
  96. package/dist/components/data-entry/input/components/input-search.js +48 -0
  97. package/dist/components/data-entry/input/components/input-textarea.js +53 -0
  98. package/dist/components/data-entry/input/components/input.js +44 -0
  99. package/dist/components/data-entry/input/index.js +18 -0
  100. package/dist/components/data-entry/input/input.context.js +13 -0
  101. package/dist/components/data-entry/input/input.styles.js +48 -0
  102. package/dist/components/data-entry/multi-select/components/multi-select.js +301 -0
  103. package/dist/components/data-entry/multi-select/multi-select.styles.js +47 -0
  104. package/dist/components/data-entry/number-input/number-input.js +97 -0
  105. package/dist/components/data-entry/pin-input/components/pin-input.js +127 -0
  106. package/dist/components/data-entry/pin-input/pin-input.styles.js +35 -0
  107. package/dist/components/data-entry/radio/components/radio-group.js +38 -0
  108. package/dist/components/data-entry/radio/components/radio.js +80 -0
  109. package/dist/components/data-entry/radio/index.js +11 -0
  110. package/dist/components/data-entry/radio/radio.context.js +10 -0
  111. package/dist/components/data-entry/radio/radio.styles.js +14 -0
  112. package/dist/components/data-entry/select/components/select.js +208 -0
  113. package/dist/components/data-entry/select/select.styles.js +35 -0
  114. package/dist/components/data-entry/shared/options.js +49 -0
  115. package/dist/components/data-entry/slider/components/slider.js +395 -0
  116. package/dist/components/data-entry/slider/slider.styles.js +15 -0
  117. package/dist/components/data-entry/switch/components/switch.js +86 -0
  118. package/dist/components/data-entry/switch/switch.styles.js +14 -0
  119. package/dist/components/disclosure/accordion/accordion.context.js +20 -0
  120. package/dist/components/disclosure/accordion/accordion.styles.js +84 -0
  121. package/dist/components/disclosure/accordion/components/accordion-content.js +26 -0
  122. package/dist/components/disclosure/accordion/components/accordion-item.js +30 -0
  123. package/dist/components/disclosure/accordion/components/accordion-root.js +80 -0
  124. package/dist/components/disclosure/accordion/components/accordion-trigger.js +49 -0
  125. package/dist/components/disclosure/accordion/index.js +16 -0
  126. package/dist/components/disclosure/carousel/carousel.context.js +18 -0
  127. package/dist/components/disclosure/carousel/carousel.styles.js +77 -0
  128. package/dist/components/disclosure/carousel/components/carousel-autoplay-trigger.js +25 -0
  129. package/dist/components/disclosure/carousel/components/carousel-control.js +12 -0
  130. package/dist/components/disclosure/carousel/components/carousel-indicator.js +22 -0
  131. package/dist/components/disclosure/carousel/components/carousel-indicators.js +32 -0
  132. package/dist/components/disclosure/carousel/components/carousel-next.js +24 -0
  133. package/dist/components/disclosure/carousel/components/carousel-prev.js +24 -0
  134. package/dist/components/disclosure/carousel/components/carousel-progress-text.js +21 -0
  135. package/dist/components/disclosure/carousel/components/carousel-root.js +129 -0
  136. package/dist/components/disclosure/carousel/components/carousel-slide.js +49 -0
  137. package/dist/components/disclosure/carousel/components/carousel-track.js +74 -0
  138. package/dist/components/disclosure/carousel/index.js +34 -0
  139. package/dist/components/disclosure/pagination/components/pagination-controls.js +79 -0
  140. package/dist/components/disclosure/pagination/components/pagination-ellipsis.js +11 -0
  141. package/dist/components/disclosure/pagination/components/pagination-item.js +24 -0
  142. package/dist/components/disclosure/pagination/components/pagination-jumper.js +35 -0
  143. package/dist/components/disclosure/pagination/components/pagination-list.js +9 -0
  144. package/dist/components/disclosure/pagination/components/pagination-page-text.js +18 -0
  145. package/dist/components/disclosure/pagination/components/pagination-pages.js +24 -0
  146. package/dist/components/disclosure/pagination/components/pagination-root.js +44 -0
  147. package/dist/components/disclosure/pagination/index.js +34 -0
  148. package/dist/components/disclosure/pagination/pagination.context.js +12 -0
  149. package/dist/components/disclosure/pagination/pagination.styles.js +84 -0
  150. package/dist/components/feedback/alert/alert.js +55 -0
  151. package/dist/components/feedback/alert/alert.styles.js +23 -0
  152. package/dist/components/feedback/progress/progress.js +112 -0
  153. package/dist/components/feedback/progress/progress.styles.js +25 -0
  154. package/dist/components/feedback/skeleton/skeleton.js +27 -0
  155. package/dist/components/feedback/skeleton/skeleton.styles.js +20 -0
  156. package/dist/components/feedback/spinner/spinner.js +32 -0
  157. package/dist/components/feedback/spinner/spinner.styles.js +17 -0
  158. package/dist/components/feedback/status.js +18 -0
  159. package/dist/components/feedback/toast/toast-store.js +35 -0
  160. package/dist/components/feedback/toast/toast.styles.js +20 -0
  161. package/dist/components/feedback/toast/toaster.js +65 -0
  162. package/dist/components/icon/icon.js +47 -0
  163. package/dist/components/icon/icon.styles.js +20 -0
  164. package/dist/components/icon/internal-icons.js +143 -0
  165. package/dist/components/layout/aspect-ratio/aspect-ratio.js +32 -0
  166. package/dist/components/layout/aspect-ratio/aspect-ratio.styles.js +18 -0
  167. package/dist/components/layout/box/box.js +30 -0
  168. package/dist/components/layout/box/box.styles.js +76 -0
  169. package/dist/components/layout/center/center.js +31 -0
  170. package/dist/components/layout/container/container.js +40 -0
  171. package/dist/components/layout/flex/flex-item.js +35 -0
  172. package/dist/components/layout/flex/flex.js +32 -0
  173. package/dist/components/layout/flex/flex.style.js +42 -0
  174. package/dist/components/layout/flex/index.js +11 -0
  175. package/dist/components/layout/float/float.js +32 -0
  176. package/dist/components/layout/float/float.styles.js +29 -0
  177. package/dist/components/layout/grid/grid-item.js +36 -0
  178. package/dist/components/layout/grid/grid.js +47 -0
  179. package/dist/components/layout/grid/grid.styles.js +43 -0
  180. package/dist/components/layout/grid/index.js +10 -0
  181. package/dist/components/layout/separator/separator.js +33 -0
  182. package/dist/components/layout/separator/separator.styles.js +29 -0
  183. package/dist/components/layout/stack/stack.js +24 -0
  184. package/dist/components/menu/components/menu-content.js +62 -0
  185. package/dist/components/menu/components/menu-parts.js +81 -0
  186. package/dist/components/menu/components/menu-root.js +36 -0
  187. package/dist/components/menu/index.js +15 -0
  188. package/dist/components/menu/menu.context.js +12 -0
  189. package/dist/components/menu/menu.styles.js +12 -0
  190. package/dist/components/navigation/breadcrumb/breadcrumb.js +50 -0
  191. package/dist/components/navigation/steps/components/steps-completed.js +12 -0
  192. package/dist/components/navigation/steps/components/steps-content.js +12 -0
  193. package/dist/components/navigation/steps/components/steps-description.js +13 -0
  194. package/dist/components/navigation/steps/components/steps-indicator.js +34 -0
  195. package/dist/components/navigation/steps/components/steps-item.js +112 -0
  196. package/dist/components/navigation/steps/components/steps-list.js +21 -0
  197. package/dist/components/navigation/steps/components/steps-next.js +25 -0
  198. package/dist/components/navigation/steps/components/steps-prev.js +25 -0
  199. package/dist/components/navigation/steps/components/steps-root.js +61 -0
  200. package/dist/components/navigation/steps/components/steps-title.js +13 -0
  201. package/dist/components/navigation/steps/index.js +34 -0
  202. package/dist/components/navigation/steps/steps.context.js +20 -0
  203. package/dist/components/navigation/steps/steps.styles.js +97 -0
  204. package/dist/components/navigation/tabs/components/tabs-content.js +26 -0
  205. package/dist/components/navigation/tabs/components/tabs-list.js +45 -0
  206. package/dist/components/navigation/tabs/components/tabs-root.js +54 -0
  207. package/dist/components/navigation/tabs/components/tabs-trigger.js +54 -0
  208. package/dist/components/navigation/tabs/index.js +16 -0
  209. package/dist/components/navigation/tabs/tabs.context.js +12 -0
  210. package/dist/components/navigation/tabs/tabs.styles.js +80 -0
  211. package/dist/components/overlay/drawer/components/drawer-content.js +48 -0
  212. package/dist/components/overlay/drawer/components/drawer-parts.js +48 -0
  213. package/dist/components/overlay/drawer/components/drawer-root.js +58 -0
  214. package/dist/components/overlay/drawer/drawer.context.js +12 -0
  215. package/dist/components/overlay/drawer/drawer.styles.js +32 -0
  216. package/dist/components/overlay/drawer/index.js +27 -0
  217. package/dist/components/overlay/modal/components/modal-content.js +48 -0
  218. package/dist/components/overlay/modal/components/modal-parts.js +48 -0
  219. package/dist/components/overlay/modal/components/modal-root.js +58 -0
  220. package/dist/components/overlay/modal/index.js +27 -0
  221. package/dist/components/overlay/modal/modal.context.js +12 -0
  222. package/dist/components/overlay/modal/modal.styles.js +31 -0
  223. package/dist/components/overlay/popover/components/popover-content.js +76 -0
  224. package/dist/components/overlay/popover/components/popover-parts.js +17 -0
  225. package/dist/components/overlay/popover/components/popover-root.js +71 -0
  226. package/dist/components/overlay/popover/index.js +19 -0
  227. package/dist/components/overlay/popover/popover.context.js +12 -0
  228. package/dist/components/overlay/popover/popover.styles.js +6 -0
  229. package/dist/components/overlay/portal.js +10 -0
  230. package/dist/components/overlay/tooltip/components/tooltip-content.js +52 -0
  231. package/dist/components/overlay/tooltip/components/tooltip-root.js +53 -0
  232. package/dist/components/overlay/tooltip/index.js +12 -0
  233. package/dist/components/overlay/tooltip/tooltip.context.js +12 -0
  234. package/dist/components/overlay/tooltip/tooltip.styles.js +6 -0
  235. package/dist/components/typography/blockquote/blockquote.js +39 -0
  236. package/dist/components/typography/blockquote/blockquote.styles.js +21 -0
  237. package/dist/components/typography/code/code.js +35 -0
  238. package/dist/components/typography/code/code.styles.js +26 -0
  239. package/dist/components/typography/code-block/code-block.js +57 -0
  240. package/dist/components/typography/code-block/code-block.styles.js +36 -0
  241. package/dist/components/typography/heading/heading.js +21 -0
  242. package/dist/components/typography/highlight/highlight.js +30 -0
  243. package/dist/components/typography/highlight/highlight.styles.js +18 -0
  244. package/dist/components/typography/kbd/kbd.js +26 -0
  245. package/dist/components/typography/link/link.js +48 -0
  246. package/dist/components/typography/list/index.js +10 -0
  247. package/dist/components/typography/list/list-item.js +37 -0
  248. package/dist/components/typography/list/list.js +35 -0
  249. package/dist/components/typography/list/list.styles.js +35 -0
  250. package/dist/components/typography/text/text.js +80 -0
  251. package/dist/components/typography/text/text.styles.js +110 -0
  252. package/dist/const/color-mappings.js +541 -0
  253. package/dist/const/color-schemes.js +5 -0
  254. package/dist/const/common-mappings.js +127 -0
  255. package/dist/const/layout-mappings.js +446 -0
  256. package/dist/const/positioning-mappings.js +164 -0
  257. package/dist/const/rounded-mappings.js +121 -0
  258. package/dist/const/sizing-mappings.js +1113 -0
  259. package/dist/const/spacing-mappings.js +508 -0
  260. package/dist/hooks/use-anchor-position.js +39 -0
  261. package/dist/hooks/use-controllable-state.js +18 -0
  262. package/dist/hooks/use-dismiss.js +23 -0
  263. package/dist/hooks/use-overlay-behavior.js +42 -0
  264. package/dist/hooks/use-prefers-reduced-motion.js +15 -0
  265. package/dist/hooks/use-presence.js +18 -0
  266. package/dist/hooks/use-roving-focus.js +51 -0
  267. package/dist/index.d.ts +3533 -0
  268. package/dist/index.js +359 -0
  269. package/dist/styles.css +2 -0
  270. package/dist/theme/provider.js +130 -0
  271. package/dist/utils/astralis-merge.js +31 -0
  272. package/dist/utils/overlay-stack.js +27 -0
  273. package/dist/utils/responsive.js +32 -0
  274. package/dist/utils/split-variant-props.js +13 -0
  275. package/package.json +107 -0
@@ -0,0 +1,3533 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ import { ClassProp } from 'class-variance-authority/types';
3
+ import { ComponentPropsWithoutRef } from 'react';
4
+ import { CSSProperties } from 'react';
5
+ import { ElementType } from 'react';
6
+ import { ForwardRefExoticComponent } from 'react';
7
+ import { HTMLAttributes } from 'react';
8
+ import { InputHTMLAttributes } from 'react';
9
+ import { JSX } from 'react/jsx-runtime';
10
+ import { JSXElementConstructor } from 'react';
11
+ import { LabelHTMLAttributes } from 'react';
12
+ import { ReactElement } from 'react';
13
+ import { ReactNode } from 'react';
14
+ import { ReactPortal } from 'react';
15
+ import { Ref } from 'react';
16
+ import { RefAttributes } from 'react';
17
+ import { TdHTMLAttributes } from 'react';
18
+ import { TextareaHTMLAttributes } from 'react';
19
+ import { ThHTMLAttributes } from 'react';
20
+ import { VariantProps } from 'class-variance-authority';
21
+
22
+ /** Compound API — `Accordion` is the root; parts hang off it. */
23
+ export declare const Accordion: typeof AccordionRoot & {
24
+ Item: typeof AccordionItem;
25
+ Trigger: typeof AccordionTrigger;
26
+ Content: typeof AccordionContent;
27
+ };
28
+
29
+ /**
30
+ * Smoothly collapsing region. The outer grid animates `grid-template-rows`
31
+ * from `0fr` → `1fr` (a JS-measurement-free height transition); the inner
32
+ * wrapper clips the overflow. Content mounts lazily on first open (unless
33
+ * `keepMounted`) and stays mounted afterwards so the collapse still animates.
34
+ */
35
+ export declare function AccordionContent({ children, className }: AccordionContentProps): JSX.Element;
36
+
37
+ export declare interface AccordionContentProps {
38
+ children?: ReactNode;
39
+ className?: string;
40
+ }
41
+
42
+ export declare type AccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
43
+
44
+ export declare type AccordionIndicatorPosition = "start" | "end";
45
+
46
+ export declare function AccordionItem({ children, value, disabled, className }: AccordionItemProps): JSX.Element;
47
+
48
+ export declare interface AccordionItemProps {
49
+ children?: ReactNode;
50
+ value: string;
51
+ disabled?: boolean;
52
+ className?: string;
53
+ }
54
+
55
+ export declare interface AccordionProps {
56
+ children?: ReactNode;
57
+ /** `single` keeps one item open; `multiple` allows many. */
58
+ type?: AccordionType;
59
+ variant?: AccordionVariant;
60
+ size?: AccordionSize;
61
+ /** Hue for the focus ring and the `subtle` variant's open fill. Defaults to `gray`. */
62
+ colorScheme?: ColorScheme;
63
+ /** Controlled open value(s) — string for `single`, string[] for `multiple`. */
64
+ value?: string | string[];
65
+ defaultValue?: string | string[];
66
+ /** `single` only: allow closing the open item (open nothing). */
67
+ collapsible?: boolean;
68
+ /** Disable the whole accordion. */
69
+ disabled?: boolean;
70
+ /** Render content even before its first open (otherwise it mounts lazily). */
71
+ keepMounted?: boolean;
72
+ /** Custom indicator node, replacing the default chevron for every trigger. */
73
+ indicator?: ReactNode;
74
+ indicatorPosition?: AccordionIndicatorPosition;
75
+ hideIndicator?: boolean;
76
+ /** Heading level the trigger is wrapped in, for document outline. Defaults to 3. */
77
+ headingLevel?: AccordionHeadingLevel;
78
+ onValueChange?: (value: string | string[]) => void;
79
+ className?: string;
80
+ }
81
+
82
+ declare function AccordionRoot({ children, type, variant, size, colorScheme, value, defaultValue, collapsible, disabled, keepMounted, indicator, indicatorPosition, hideIndicator, headingLevel, onValueChange, className, }: AccordionProps): JSX.Element;
83
+
84
+ export declare type AccordionSize = "sm" | "md" | "lg";
85
+
86
+ export declare function AccordionTrigger({ children, indicator: indicatorProp, hideIndicator: hideIndicatorProp, className, }: AccordionTriggerProps): JSX.Element;
87
+
88
+ export declare interface AccordionTriggerProps {
89
+ children?: ReactNode;
90
+ /** Per-trigger indicator override. */
91
+ indicator?: ReactNode;
92
+ hideIndicator?: boolean;
93
+ className?: string;
94
+ }
95
+
96
+ export declare type AccordionType = "single" | "multiple";
97
+
98
+ export declare type AccordionVariant = "enclosed" | "outline" | "separated" | "subtle" | "plain";
99
+
100
+ export declare const Alert: typeof AlertRoot & {
101
+ Title: typeof AlertTitle;
102
+ Description: typeof AlertDescription;
103
+ };
104
+
105
+ declare function AlertDescription({ className, children, ...rest }: AlertSectionProps): JSX.Element;
106
+
107
+ declare namespace AlertDescription {
108
+ var displayName: string;
109
+ }
110
+
111
+ export declare interface AlertProps extends ComponentPropsWithoutRef<"div"> {
112
+ /** Meaning of the alert — picks the icon, hue and ARIA role. @default "info" */
113
+ status?: AlertStatus;
114
+ /** Fill treatment. @default "subtle" */
115
+ variant?: AlertVariant;
116
+ /**
117
+ * Hue override (via the accent channel). Defaults to the hue mapped from
118
+ * `status` — info→blue, success→green, warning→orange, error→red.
119
+ */
120
+ colorScheme?: ColorScheme;
121
+ /** Replace the status icon, or pass `false` to hide it. */
122
+ icon?: ReactNode | false;
123
+ /** Renders a dismiss button that calls this handler. */
124
+ onClose?: () => void;
125
+ children: ReactNode;
126
+ }
127
+
128
+ declare function AlertRoot({ status, variant, colorScheme, icon, onClose, className, children, ref, ...rest }: AlertProps & {
129
+ ref?: Ref<HTMLDivElement>;
130
+ }): JSX.Element;
131
+
132
+ declare namespace AlertRoot {
133
+ var displayName: string;
134
+ }
135
+
136
+ export declare interface AlertSectionProps extends ComponentPropsWithoutRef<"div"> {
137
+ children: ReactNode;
138
+ }
139
+
140
+ export declare type AlertStatus = FeedbackStatus;
141
+
142
+ declare function AlertTitle({ className, children, ...rest }: AlertSectionProps): JSX.Element;
143
+
144
+ declare namespace AlertTitle {
145
+ var displayName: string;
146
+ }
147
+
148
+ export declare type AlertVariant = "subtle" | "solid" | "outline" | "left-accent";
149
+
150
+ declare type Align = "start" | "center" | "end";
151
+
152
+ export declare const AspectRatio: AspectRatioComponent;
153
+
154
+ declare type AspectRatioComponent = <T extends ElementType = "div">(props: AspectRatioProps<T> & {
155
+ ref?: Ref<any>;
156
+ }) => ReactNode;
157
+
158
+ /** `ratio` accepts a scalar aspect token or a responsive map. */
159
+ declare type AspectRatioCustomProps = Responsive<VariantProps<typeof aspectRatioVariants>>;
160
+
161
+ export declare type AspectRatioProps<T extends ElementType = "div"> = BoxProps<T> & AspectRatioCustomProps;
162
+
163
+ declare const aspectRatioVariants: (props?: ({
164
+ readonly ratio?: "auto" | "square" | "wide" | "landscape" | "portrait" | "ultrawide" | "golden" | null | undefined;
165
+ } & ClassProp) | undefined) => string;
166
+
167
+ export declare function AstralisProvider({ children, defaultTheme, storageKey, className, tokens, }: ThemeProviderProps): JSX.Element;
168
+
169
+ /** Compound API — `Avatar` is the root; parts hang off it. */
170
+ export declare const Avatar: typeof AvatarRoot & {
171
+ Group: typeof AvatarGroup;
172
+ Badge: typeof AvatarBadge;
173
+ };
174
+
175
+ /** A status dot pinned to the avatar's bottom-right corner. */
176
+ export declare function AvatarBadge({ status, color, size, className, style }: AvatarBadgeProps): JSX.Element;
177
+
178
+ export declare namespace AvatarBadge {
179
+ var displayName: string;
180
+ }
181
+
182
+ export declare interface AvatarBadgeProps {
183
+ status?: AvatarStatus;
184
+ /** Custom dot colour, overriding `status`. */
185
+ color?: string;
186
+ size?: AvatarSize;
187
+ className?: string;
188
+ style?: CSSProperties;
189
+ }
190
+
191
+ export declare function AvatarGroup({ children, max, spacing, size, className, style }: AvatarGroupProps): JSX.Element;
192
+
193
+ export declare namespace AvatarGroup {
194
+ var displayName: string;
195
+ }
196
+
197
+ export declare interface AvatarGroupProps {
198
+ children: ReactNode;
199
+ /** Cap the number shown; the rest collapse into a "+N" chip. */
200
+ max?: number;
201
+ size?: AvatarSize;
202
+ /** Overlap between avatars, px (negative overlaps). @default -8 */
203
+ spacing?: number;
204
+ className?: string;
205
+ style?: CSSProperties;
206
+ }
207
+
208
+ export declare interface AvatarProps {
209
+ src?: string;
210
+ alt?: string;
211
+ /** Name — used for initials and (unless `colorScheme` is set) a deterministic hue. */
212
+ name?: string;
213
+ /** Fallback node when there's no image or name. */
214
+ icon?: ReactNode;
215
+ size?: AvatarSize;
216
+ shape?: AvatarShape;
217
+ /** Override the auto hue derived from `name`. */
218
+ colorScheme?: ColorScheme;
219
+ /** Ring separating overlapping avatars (auto-on inside `Avatar.Group`). */
220
+ ring?: boolean;
221
+ /** e.g. an `Avatar.Badge`. */
222
+ children?: ReactNode;
223
+ className?: string;
224
+ style?: CSSProperties;
225
+ }
226
+
227
+ declare function AvatarRoot({ src, alt, name, icon, size, shape, colorScheme, ring, children, className, style, }: AvatarProps): JSX.Element;
228
+
229
+ declare namespace AvatarRoot {
230
+ var displayName: string;
231
+ }
232
+
233
+ export declare type AvatarShape = "circle" | "rounded" | "square";
234
+
235
+ export declare type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
236
+
237
+ export declare type AvatarStatus = "online" | "away" | "busy" | "offline";
238
+
239
+ /**
240
+ * A small label chip for statuses, counts, and categories. `variant` picks the
241
+ * fill treatment and `colorScheme` the hue (via the accent channel).
242
+ */
243
+ export declare function Badge({ children, variant, colorScheme, size, className, ...rest }: BadgeProps): JSX.Element;
244
+
245
+ export declare namespace Badge {
246
+ var displayName: string;
247
+ }
248
+
249
+ export declare interface BadgeProps extends Omit<ComponentPropsWithoutRef<"span">, "color"> {
250
+ children?: ReactNode;
251
+ variant?: BadgeVariant;
252
+ /** Hue the badge paints with. @default "gray" */
253
+ colorScheme?: ColorScheme;
254
+ size?: BadgeSize;
255
+ className?: string;
256
+ }
257
+
258
+ export declare type BadgeSize = "xs" | "sm" | "md" | "lg";
259
+
260
+ export declare type BadgeVariant = "solid" | "subtle" | "surface" | "outline";
261
+
262
+ /** A quotation block with a leading accent rule and optional `<cite>` attribution. */
263
+ export declare const Blockquote: BlockquoteComponent;
264
+
265
+ declare type BlockquoteBaseProps = BlockquoteCustomProps & Responsive<VariantProps<typeof blockquoteVariants>>;
266
+
267
+ declare type BlockquoteComponent = <T extends ElementType = "blockquote">(props: BlockquoteProps<T> & {
268
+ ref?: Ref<any>;
269
+ }) => ReactNode;
270
+
271
+ declare interface BlockquoteCustomProps {
272
+ /** Visible attribution, rendered beneath the quote as a `<cite>` line. */
273
+ cite?: ReactNode;
274
+ /** URL of the source, set as the native `cite` attribute on the element. */
275
+ citeUrl?: string;
276
+ }
277
+
278
+ export declare type BlockquoteProps<T extends ElementType = "blockquote"> = Omit<BoxProps<T>, keyof BlockquoteBaseProps> & BlockquoteBaseProps;
279
+
280
+ declare const blockquoteVariants: (props?: ({
281
+ readonly variant?: "subtle" | "plain" | null | undefined;
282
+ } & ClassProp) | undefined) => string;
283
+
284
+ export declare const Box: BoxComponent;
285
+
286
+ declare type BoxBaseProps<T extends ElementType = "div"> = BoxCustomProps<T> & BoxStyleProps;
287
+
288
+ declare type BoxComponent = <T extends ElementType = "div">(props: BoxProps<T> & {
289
+ ref?: Ref<any>;
290
+ }) => ReactNode;
291
+
292
+ declare interface BoxCustomProps<T extends ElementType = "div"> {
293
+ as?: T;
294
+ children?: ReactNode;
295
+ className?: string;
296
+ }
297
+
298
+ export declare type BoxProps<T extends ElementType = "div"> = BoxBaseProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof BoxBaseProps<T>>;
299
+
300
+ /** Every Box style prop accepts a scalar token or a responsive map. */
301
+ declare type BoxStyleProps = Responsive<VariantProps<typeof boxVariants>>;
302
+
303
+ declare const boxVariants: (props?: ({
304
+ readonly p?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
305
+ readonly py?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
306
+ readonly px?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
307
+ readonly pt?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
308
+ readonly pb?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
309
+ readonly pl?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
310
+ readonly pr?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
311
+ readonly m?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
312
+ readonly my?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
313
+ readonly mx?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
314
+ readonly mt?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
315
+ readonly mb?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
316
+ readonly ml?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
317
+ readonly mr?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
318
+ readonly h?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
319
+ readonly minH?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
320
+ readonly maxH?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
321
+ readonly w?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
322
+ readonly minW?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
323
+ readonly maxW?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
324
+ readonly inline?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
325
+ readonly minInline?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
326
+ readonly maxInline?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvw" | "svw" | "lvw" | "vw" | "prose" | null | undefined;
327
+ readonly block?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
328
+ readonly minBlock?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
329
+ readonly maxBlock?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "screen" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "vh" | null | undefined;
330
+ readonly size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | "dvh" | "svh" | "lvh" | "dvw" | "svw" | "lvw" | null | undefined;
331
+ readonly display?: "table" | "flex" | "hidden" | "grid" | "inline" | "block" | "flow-root" | "table-caption" | "table-cell" | "table-column" | "table-column-group" | "table-footer-group" | "table-header-group" | "table-row" | "table-row-group" | "inline-block" | "inline-flex" | "inline-grid" | "inline-table" | "contents" | "list-item" | null | undefined;
332
+ readonly opacity?: "moderate" | "high" | "low" | "max" | "lowest" | "lower" | "higher" | "highest" | null | undefined;
333
+ readonly zIndex?: "moderate" | "high" | "low" | "max" | "lowest" | "lower" | "higher" | "highest" | null | undefined;
334
+ readonly position?: "fixed" | "absolute" | "relative" | "static" | "sticky" | null | undefined;
335
+ readonly inset?: "full" | "0" | "1" | "2" | "3" | "4" | "px" | "5" | "6" | "auto" | "12" | "10" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "16" | "20" | "24" | "32" | "40" | "48" | "56" | "64" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | null | undefined;
336
+ readonly top?: "full" | "0" | "1" | "2" | "3" | "4" | "px" | "5" | "6" | "auto" | "12" | "10" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "16" | "20" | "24" | "32" | "40" | "48" | "56" | "64" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | null | undefined;
337
+ readonly right?: "full" | "0" | "1" | "2" | "3" | "4" | "px" | "5" | "6" | "auto" | "12" | "10" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "16" | "20" | "24" | "32" | "40" | "48" | "56" | "64" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | null | undefined;
338
+ readonly bottom?: "full" | "0" | "1" | "2" | "3" | "4" | "px" | "5" | "6" | "auto" | "12" | "10" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "16" | "20" | "24" | "32" | "40" | "48" | "56" | "64" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | null | undefined;
339
+ readonly left?: "full" | "0" | "1" | "2" | "3" | "4" | "px" | "5" | "6" | "auto" | "12" | "10" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "16" | "20" | "24" | "32" | "40" | "48" | "56" | "64" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | null | undefined;
340
+ readonly overflow?: "hidden" | "auto" | "scroll" | "visible" | "clip" | null | undefined;
341
+ readonly overflowX?: "hidden" | "auto" | "scroll" | "visible" | "clip" | null | undefined;
342
+ readonly overflowY?: "hidden" | "auto" | "scroll" | "visible" | "clip" | null | undefined;
343
+ readonly cursor?: "text" | "none" | "progress" | "auto" | "default" | "move" | "grab" | "grabbing" | "help" | "not-allowed" | "pointer" | "wait" | null | undefined;
344
+ readonly pointerEvents?: "none" | "auto" | null | undefined;
345
+ readonly aspectRatio?: "auto" | "square" | "wide" | "landscape" | "portrait" | "ultrawide" | "golden" | null | undefined;
346
+ readonly shadow?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "inner" | null | undefined;
347
+ readonly border?: "normal" | "moderate" | "thick" | "thicker" | "thickest" | null | undefined;
348
+ readonly borderStyle?: "solid" | "none" | "hidden" | "dashed" | "dotted" | "double" | null | undefined;
349
+ readonly rounded?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
350
+ readonly roundedT?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
351
+ readonly roundedR?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
352
+ readonly roundedB?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
353
+ readonly roundedL?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
354
+ readonly roundedTl?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
355
+ readonly roundedTr?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
356
+ readonly roundedBr?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
357
+ readonly roundedBl?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | "3xl" | "4xl" | "2xs" | null | undefined;
358
+ readonly bg?: "subtle" | "base" | "inherit" | "current" | "error" | "muted" | "emphasized" | "black" | "white" | "transparent" | "inverted" | "warning" | "success" | "info" | "gray-50" | "gray-100" | "gray-200" | "gray-300" | "gray-400" | "gray-500" | "gray-600" | "gray-700" | "gray-800" | "gray-900" | "gray-950" | "red-50" | "red-100" | "red-200" | "red-300" | "red-400" | "red-500" | "red-600" | "red-700" | "red-800" | "red-900" | "red-950" | "orange-50" | "orange-100" | "orange-200" | "orange-300" | "orange-400" | "orange-500" | "orange-600" | "orange-700" | "orange-800" | "orange-900" | "orange-950" | "yellow-50" | "yellow-100" | "yellow-200" | "yellow-300" | "yellow-400" | "yellow-500" | "yellow-600" | "yellow-700" | "yellow-800" | "yellow-900" | "yellow-950" | "green-50" | "green-100" | "green-200" | "green-300" | "green-400" | "green-500" | "green-600" | "green-700" | "green-800" | "green-900" | "green-950" | "teal-50" | "teal-100" | "teal-200" | "teal-300" | "teal-400" | "teal-500" | "teal-600" | "teal-700" | "teal-800" | "teal-900" | "teal-950" | "blue-50" | "blue-100" | "blue-200" | "blue-300" | "blue-400" | "blue-500" | "blue-600" | "blue-700" | "blue-800" | "blue-900" | "blue-950" | "cyan-50" | "cyan-100" | "cyan-200" | "cyan-300" | "cyan-400" | "cyan-500" | "cyan-600" | "cyan-700" | "cyan-800" | "cyan-900" | "cyan-950" | "purple-50" | "purple-100" | "purple-200" | "purple-300" | "purple-400" | "purple-500" | "purple-600" | "purple-700" | "purple-800" | "purple-900" | "purple-950" | "pink-50" | "pink-100" | "pink-200" | "pink-300" | "pink-400" | "pink-500" | "pink-600" | "pink-700" | "pink-800" | "pink-900" | "pink-950" | "brand-50" | "brand-100" | "brand-200" | "brand-300" | "brand-400" | "brand-500" | "brand-600" | "brand-700" | "brand-800" | "brand-900" | "gray-solid" | "red-solid" | "orange-solid" | "yellow-solid" | "green-solid" | "teal-solid" | "blue-solid" | "cyan-solid" | "purple-solid" | "pink-solid" | "brand-solid" | "panel" | "gray-subtle" | "gray-muted" | "gray-emphasized" | "red-subtle" | "red-muted" | "red-emphasized" | "orange-subtle" | "orange-muted" | "orange-emphasized" | "yellow-subtle" | "yellow-muted" | "yellow-emphasized" | "green-subtle" | "green-muted" | "green-emphasized" | "teal-subtle" | "teal-muted" | "teal-emphasized" | "blue-subtle" | "blue-muted" | "blue-emphasized" | "cyan-subtle" | "cyan-muted" | "cyan-emphasized" | "purple-subtle" | "purple-muted" | "purple-emphasized" | "pink-subtle" | "pink-muted" | "pink-emphasized" | "brand-subtle" | "brand-muted" | "brand-emphasized" | null | undefined;
359
+ readonly color?: "subtle" | "base" | "inherit" | "current" | "error" | "muted" | "black" | "white" | "transparent" | "inverted" | "warning" | "success" | "info" | "gray-50" | "gray-100" | "gray-200" | "gray-300" | "gray-400" | "gray-500" | "gray-600" | "gray-700" | "gray-800" | "gray-900" | "gray-950" | "red-50" | "red-100" | "red-200" | "red-300" | "red-400" | "red-500" | "red-600" | "red-700" | "red-800" | "red-900" | "red-950" | "orange-50" | "orange-100" | "orange-200" | "orange-300" | "orange-400" | "orange-500" | "orange-600" | "orange-700" | "orange-800" | "orange-900" | "orange-950" | "yellow-50" | "yellow-100" | "yellow-200" | "yellow-300" | "yellow-400" | "yellow-500" | "yellow-600" | "yellow-700" | "yellow-800" | "yellow-900" | "yellow-950" | "green-50" | "green-100" | "green-200" | "green-300" | "green-400" | "green-500" | "green-600" | "green-700" | "green-800" | "green-900" | "green-950" | "teal-50" | "teal-100" | "teal-200" | "teal-300" | "teal-400" | "teal-500" | "teal-600" | "teal-700" | "teal-800" | "teal-900" | "teal-950" | "blue-50" | "blue-100" | "blue-200" | "blue-300" | "blue-400" | "blue-500" | "blue-600" | "blue-700" | "blue-800" | "blue-900" | "blue-950" | "cyan-50" | "cyan-100" | "cyan-200" | "cyan-300" | "cyan-400" | "cyan-500" | "cyan-600" | "cyan-700" | "cyan-800" | "cyan-900" | "cyan-950" | "purple-50" | "purple-100" | "purple-200" | "purple-300" | "purple-400" | "purple-500" | "purple-600" | "purple-700" | "purple-800" | "purple-900" | "purple-950" | "pink-50" | "pink-100" | "pink-200" | "pink-300" | "pink-400" | "pink-500" | "pink-600" | "pink-700" | "pink-800" | "pink-900" | "pink-950" | "brand-50" | "brand-100" | "brand-200" | "brand-300" | "brand-400" | "brand-500" | "brand-600" | "brand-700" | "brand-800" | "brand-900" | "gray-solid" | "gray-contrast" | "gray-label" | "red-solid" | "red-contrast" | "red-label" | "orange-solid" | "orange-contrast" | "orange-label" | "yellow-solid" | "yellow-contrast" | "yellow-label" | "green-solid" | "green-contrast" | "green-label" | "teal-solid" | "teal-contrast" | "teal-label" | "blue-solid" | "blue-contrast" | "blue-label" | "cyan-solid" | "cyan-contrast" | "cyan-label" | "purple-solid" | "purple-contrast" | "purple-label" | "pink-solid" | "pink-contrast" | "pink-label" | "brand-solid" | "brand-contrast" | "brand-label" | null | undefined;
360
+ readonly borderColor?: "subtle" | "base" | "inherit" | "current" | "error" | "muted" | "emphasized" | "black" | "white" | "transparent" | "inverted" | "warning" | "success" | "info" | "gray-50" | "gray-100" | "gray-200" | "gray-300" | "gray-400" | "gray-500" | "gray-600" | "gray-700" | "gray-800" | "gray-900" | "gray-950" | "red-50" | "red-100" | "red-200" | "red-300" | "red-400" | "red-500" | "red-600" | "red-700" | "red-800" | "red-900" | "red-950" | "orange-50" | "orange-100" | "orange-200" | "orange-300" | "orange-400" | "orange-500" | "orange-600" | "orange-700" | "orange-800" | "orange-900" | "orange-950" | "yellow-50" | "yellow-100" | "yellow-200" | "yellow-300" | "yellow-400" | "yellow-500" | "yellow-600" | "yellow-700" | "yellow-800" | "yellow-900" | "yellow-950" | "green-50" | "green-100" | "green-200" | "green-300" | "green-400" | "green-500" | "green-600" | "green-700" | "green-800" | "green-900" | "green-950" | "teal-50" | "teal-100" | "teal-200" | "teal-300" | "teal-400" | "teal-500" | "teal-600" | "teal-700" | "teal-800" | "teal-900" | "teal-950" | "blue-50" | "blue-100" | "blue-200" | "blue-300" | "blue-400" | "blue-500" | "blue-600" | "blue-700" | "blue-800" | "blue-900" | "blue-950" | "cyan-50" | "cyan-100" | "cyan-200" | "cyan-300" | "cyan-400" | "cyan-500" | "cyan-600" | "cyan-700" | "cyan-800" | "cyan-900" | "cyan-950" | "purple-50" | "purple-100" | "purple-200" | "purple-300" | "purple-400" | "purple-500" | "purple-600" | "purple-700" | "purple-800" | "purple-900" | "purple-950" | "pink-50" | "pink-100" | "pink-200" | "pink-300" | "pink-400" | "pink-500" | "pink-600" | "pink-700" | "pink-800" | "pink-900" | "pink-950" | "brand-50" | "brand-100" | "brand-200" | "brand-300" | "brand-400" | "brand-500" | "brand-600" | "brand-700" | "brand-800" | "brand-900" | "gray-stroke" | "red-stroke" | "orange-stroke" | "yellow-stroke" | "green-stroke" | "teal-stroke" | "blue-stroke" | "cyan-stroke" | "purple-stroke" | "pink-stroke" | "brand-stroke" | null | undefined;
361
+ } & ClassProp) | undefined) => string;
362
+
363
+ export declare const Breadcrumb: typeof BreadcrumbRoot & {
364
+ Item: typeof BreadcrumbItem;
365
+ Link: typeof BreadcrumbLink;
366
+ };
367
+
368
+ declare function BreadcrumbItem({ className, children, ...rest }: BreadcrumbItemProps): JSX.Element;
369
+
370
+ declare namespace BreadcrumbItem {
371
+ var displayName: string;
372
+ }
373
+
374
+ export declare interface BreadcrumbItemProps extends ComponentPropsWithoutRef<"li"> {
375
+ children: ReactNode;
376
+ }
377
+
378
+ declare function BreadcrumbLink<T extends ElementType = "a">({ as, isCurrent, className, children, ...rest }: BreadcrumbLinkProps<T>): JSX.Element;
379
+
380
+ declare namespace BreadcrumbLink {
381
+ var displayName: string;
382
+ }
383
+
384
+ export declare type BreadcrumbLinkProps<T extends ElementType = "a"> = {
385
+ /** Render as a router link component (e.g. Next's `Link`). */
386
+ as?: T;
387
+ /** Marks the current page: renders non-interactive with `aria-current="page"`. */
388
+ isCurrent?: boolean;
389
+ className?: string;
390
+ children: ReactNode;
391
+ } & Omit<ComponentPropsWithoutRef<T>, "as" | "children" | "className">;
392
+
393
+ export declare interface BreadcrumbProps extends ComponentPropsWithoutRef<"nav"> {
394
+ /** Glyph between items. @default chevron */
395
+ separator?: ReactNode;
396
+ children: ReactNode;
397
+ }
398
+
399
+ declare function BreadcrumbRoot({ separator, className, children, ref, ...rest }: BreadcrumbProps & {
400
+ ref?: Ref<HTMLElement>;
401
+ }): JSX.Element;
402
+
403
+ declare namespace BreadcrumbRoot {
404
+ var displayName: string;
405
+ }
406
+
407
+ declare type Breakpoint = (typeof BREAKPOINTS)[number];
408
+
409
+ /** Ordered breakpoints. `base` is the unprefixed/mobile-first value. */
410
+ declare const BREAKPOINTS: readonly ["sm", "md", "lg", "xl"];
411
+
412
+ export declare const Button: ButtonComponent & {
413
+ displayName?: string;
414
+ };
415
+
416
+ declare const BUTTON_VARIANTS: readonly ["solid", "subtle", "surface", "outline", "text", "link"];
417
+
418
+ export declare type ButtonColorScheme = ColorScheme;
419
+
420
+ declare type ButtonComponent = <T extends ElementType = "button">(props: ButtonProps<T> & {
421
+ ref?: Ref<any>;
422
+ }) => ReactNode;
423
+
424
+ /**
425
+ * Groups related buttons and shares `size`/`variant`/`colorScheme`/`disabled`
426
+ * down to them via context. With `attached`, the buttons render as one segmented
427
+ * control (collapsed inner radii, merged borders).
428
+ */
429
+ export declare function ButtonGroup({ children, orientation, attached, spacing, size, variant, colorScheme, disabled, className, role, ref, ...props }: ButtonGroupProps & {
430
+ ref?: Ref<HTMLDivElement>;
431
+ }): JSX.Element;
432
+
433
+ export declare namespace ButtonGroup {
434
+ var displayName: string;
435
+ }
436
+
437
+ export declare interface ButtonGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, VariantProps<typeof buttonGroupVariants> {
438
+ children?: ReactNode;
439
+ /** Shared size applied to every child Button (each can still override). */
440
+ size?: ButtonSize;
441
+ /** Shared visual style applied to every child Button. */
442
+ variant?: ButtonVariant;
443
+ /** Shared hue applied to every child Button. */
444
+ colorScheme?: ButtonColorScheme;
445
+ /** Disable every child Button at once. */
446
+ disabled?: boolean;
447
+ }
448
+
449
+ /**
450
+ * Layout for a row/column of related buttons.
451
+ *
452
+ * - `attached` welds them into a single segmented control: zero gap, inner radii
453
+ * collapsed, and adjacent borders merged (negative margin) so shared edges don't
454
+ * double up. The child-targeting utilities are safelisted in tailwind-entry.css.
455
+ * - Otherwise the buttons are spaced by `spacing`.
456
+ */
457
+ declare const buttonGroupVariants: (props?: ({
458
+ orientation?: "horizontal" | "vertical" | null | undefined;
459
+ attached?: boolean | null | undefined;
460
+ spacing?: "sm" | "md" | "lg" | "none" | null | undefined;
461
+ } & ClassProp) | undefined) => string;
462
+
463
+ export declare type ButtonLoaderPlacement = "start" | "end";
464
+
465
+ /**
466
+ * Props owned by Button. Everything else is forwarded to the rendered element,
467
+ * whose attribute set is derived from `as` (defaults to `"button"`).
468
+ */
469
+ declare interface ButtonOwnProps extends Omit<VariantProps<typeof buttonVariants>, "isDisabledOrLoading" | "isIconOnly"> {
470
+ /** Visual style. `surface` is the bordered sibling of `subtle`; `text` is the ghost style. */
471
+ variant?: ButtonVariant;
472
+ /** Hue the variant paints with. Defaults to `brand`; use `gray` for a neutral button. */
473
+ colorScheme?: ButtonColorScheme;
474
+ children?: ReactNode;
475
+ disabled?: boolean;
476
+ loading?: boolean;
477
+ /** Replaces the label while `loading` (e.g. "Saving…"); the spinner still shows. */
478
+ loadingText?: ReactNode;
479
+ loaderPlacement?: ButtonLoaderPlacement;
480
+ loader?: ReactNode;
481
+ leftIcon?: ReactNode;
482
+ rightIcon?: ReactNode;
483
+ className?: string;
484
+ }
485
+
486
+ /**
487
+ * Polymorphic Button. `as` swaps the underlying element (e.g. `"a"`, a router
488
+ * `Link`); the forwarded HTML props follow that element automatically. Defaults
489
+ * to a native `<button>`.
490
+ */
491
+ export declare type ButtonProps<T extends ElementType = "button"> = {
492
+ as?: T;
493
+ } & ButtonOwnProps & Omit<ComponentPropsWithoutRef<T>, keyof ButtonOwnProps | "as">;
494
+
495
+ declare type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>["size"]>;
496
+
497
+ export declare type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
498
+
499
+ declare const buttonVariants: (props?: ({
500
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
501
+ rounded?: "sm" | "md" | "lg" | "xl" | "none" | "2xl" | "full" | null | undefined;
502
+ fullWidth?: boolean | null | undefined;
503
+ isDisabledOrLoading?: boolean | null | undefined;
504
+ isIconOnly?: boolean | null | undefined;
505
+ } & ClassProp) | undefined) => string;
506
+
507
+ export declare const Calendar: typeof CalendarRoot & {
508
+ Root: typeof CalendarRoot;
509
+ Header: typeof CalendarHeader;
510
+ PrevTrigger: typeof CalendarPrevTrigger;
511
+ ViewTrigger: typeof CalendarViewTrigger;
512
+ NextTrigger: typeof CalendarNextTrigger;
513
+ Weekdays: typeof CalendarWeekdays;
514
+ Grid: typeof CalendarGrid;
515
+ Cell: typeof CalendarCell;
516
+ };
517
+
518
+ export declare function CalendarCell({ date, className, children, onClick, ref, ...props }: CalendarCellProps & {
519
+ ref?: Ref<HTMLButtonElement>;
520
+ }): JSX.Element;
521
+
522
+ export declare namespace CalendarCell {
523
+ var displayName: string;
524
+ }
525
+
526
+ export declare interface CalendarCellProps extends ButtonHTMLAttributes<HTMLButtonElement> {
527
+ date: Date;
528
+ }
529
+
530
+ export declare function CalendarGrid({ className, ref, ...props }: CalendarGridProps & {
531
+ ref?: Ref<HTMLDivElement>;
532
+ }): JSX.Element;
533
+
534
+ export declare namespace CalendarGrid {
535
+ var displayName: string;
536
+ }
537
+
538
+ export declare interface CalendarGridProps extends HTMLAttributes<HTMLDivElement> {
539
+ }
540
+
541
+ export declare function CalendarHeader({ className, ref, ...props }: CalendarHeaderProps & {
542
+ ref?: Ref<HTMLDivElement>;
543
+ }): JSX.Element;
544
+
545
+ export declare namespace CalendarHeader {
546
+ var displayName: string;
547
+ }
548
+
549
+ export declare interface CalendarHeaderProps extends HTMLAttributes<HTMLDivElement> {
550
+ }
551
+
552
+ export declare function CalendarNextTrigger({ className, onClick, children, ref, ...props }: CalendarTriggerProps & {
553
+ ref?: Ref<HTMLButtonElement>;
554
+ }): JSX.Element;
555
+
556
+ export declare namespace CalendarNextTrigger {
557
+ var displayName: string;
558
+ }
559
+
560
+ export declare function CalendarPrevTrigger({ className, onClick, children, ref, ...props }: CalendarTriggerProps & {
561
+ ref?: Ref<HTMLButtonElement>;
562
+ }): JSX.Element;
563
+
564
+ export declare namespace CalendarPrevTrigger {
565
+ var displayName: string;
566
+ }
567
+
568
+ export declare type CalendarRangeValue = {
569
+ start: Date | null;
570
+ end: Date | null;
571
+ };
572
+
573
+ export declare function CalendarRoot({ selectionMode, value, defaultValue, onValueChange, defaultMonth, locale, firstDayOfWeek, showOutsideDays, minDate, maxDate, isDateUnavailable, size, className, style, children, ref, ...props }: CalendarRootProps & {
574
+ ref?: Ref<HTMLDivElement>;
575
+ }): JSX.Element;
576
+
577
+ export declare namespace CalendarRoot {
578
+ var displayName: string;
579
+ }
580
+
581
+ export declare interface CalendarRootProps extends Omit<HTMLAttributes<HTMLDivElement>, "defaultValue"> {
582
+ selectionMode?: CalendarSelectionMode;
583
+ value?: CalendarValue;
584
+ defaultValue?: CalendarValue;
585
+ onValueChange?: (value: CalendarValue) => void;
586
+ defaultMonth?: Date;
587
+ locale?: string;
588
+ firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
589
+ showOutsideDays?: boolean;
590
+ minDate?: Date;
591
+ maxDate?: Date;
592
+ isDateUnavailable?: (date: Date) => boolean;
593
+ size?: CalendarSize;
594
+ className?: string;
595
+ style?: CSSProperties;
596
+ children?: ReactNode;
597
+ }
598
+
599
+ export declare type CalendarSelectionMode = "single" | "multiple" | "range";
600
+
601
+ export declare type CalendarSize = "sm" | "md" | "lg";
602
+
603
+ export declare interface CalendarTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
604
+ }
605
+
606
+ export declare type CalendarValue = Date | Date[] | CalendarRangeValue | null;
607
+
608
+ export declare function CalendarViewTrigger({ className, children, ref, ...props }: CalendarTriggerProps & {
609
+ ref?: Ref<HTMLButtonElement>;
610
+ }): JSX.Element;
611
+
612
+ export declare namespace CalendarViewTrigger {
613
+ var displayName: string;
614
+ }
615
+
616
+ export declare function CalendarWeekdays({ className, ref, ...props }: CalendarWeekdaysProps & {
617
+ ref?: Ref<HTMLDivElement>;
618
+ }): JSX.Element;
619
+
620
+ export declare namespace CalendarWeekdays {
621
+ var displayName: string;
622
+ }
623
+
624
+ export declare interface CalendarWeekdaysProps extends HTMLAttributes<HTMLDivElement> {
625
+ }
626
+
627
+ export declare const Card: typeof CardRoot & {
628
+ Root: typeof CardRoot;
629
+ Header: typeof CardHeader;
630
+ Title: typeof CardTitle;
631
+ Description: typeof CardDescription;
632
+ Body: typeof CardBody;
633
+ Footer: typeof CardFooter;
634
+ };
635
+
636
+ export declare function CardBody({ className, style, children, ref, ...rest }: CardBodyProps & {
637
+ ref?: Ref<HTMLDivElement>;
638
+ }): JSX.Element;
639
+
640
+ export declare namespace CardBody {
641
+ var displayName: string;
642
+ }
643
+
644
+ export declare interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
645
+ className?: string;
646
+ style?: CSSProperties;
647
+ children?: ReactNode;
648
+ }
649
+
650
+ export declare function CardDescription({ className, style, children, ref, ...rest }: CardDescriptionProps & {
651
+ ref?: Ref<HTMLParagraphElement>;
652
+ }): JSX.Element;
653
+
654
+ export declare namespace CardDescription {
655
+ var displayName: string;
656
+ }
657
+
658
+ export declare interface CardDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {
659
+ className?: string;
660
+ style?: CSSProperties;
661
+ children?: ReactNode;
662
+ }
663
+
664
+ export declare function CardFooter({ className, style, children, ref, ...rest }: CardFooterProps & {
665
+ ref?: Ref<HTMLDivElement>;
666
+ }): JSX.Element;
667
+
668
+ export declare namespace CardFooter {
669
+ var displayName: string;
670
+ }
671
+
672
+ export declare interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
673
+ className?: string;
674
+ style?: CSSProperties;
675
+ children?: ReactNode;
676
+ }
677
+
678
+ export declare function CardHeader({ extra, className, style, children, ref, ...rest }: CardHeaderProps & {
679
+ ref?: Ref<HTMLDivElement>;
680
+ }): JSX.Element;
681
+
682
+ export declare namespace CardHeader {
683
+ var displayName: string;
684
+ }
685
+
686
+ export declare interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
687
+ /** Content rendered in the trailing slot (e.g. a button or link) */
688
+ extra?: ReactNode;
689
+ className?: string;
690
+ style?: CSSProperties;
691
+ children?: ReactNode;
692
+ }
693
+
694
+ export declare function CardRoot({ variant, size, hoverable, className, style, children, ref, ...rest }: CardRootProps & {
695
+ ref?: Ref<HTMLDivElement>;
696
+ }): JSX.Element;
697
+
698
+ export declare namespace CardRoot {
699
+ var displayName: string;
700
+ }
701
+
702
+ export declare interface CardRootProps extends HTMLAttributes<HTMLDivElement> {
703
+ /** Visual style of the card */
704
+ variant?: CardVariant;
705
+ /** Controls padding and border-radius */
706
+ size?: CardSize;
707
+ /** Lift card on hover */
708
+ hoverable?: boolean;
709
+ className?: string;
710
+ style?: CSSProperties;
711
+ children?: ReactNode;
712
+ }
713
+
714
+ export declare type CardSize = "sm" | "md" | "lg";
715
+
716
+ export declare function CardTitle({ className, style, children, ref, ...rest }: CardTitleProps & {
717
+ ref?: Ref<HTMLHeadingElement>;
718
+ }): JSX.Element;
719
+
720
+ export declare namespace CardTitle {
721
+ var displayName: string;
722
+ }
723
+
724
+ export declare interface CardTitleProps extends HTMLAttributes<HTMLHeadingElement> {
725
+ className?: string;
726
+ style?: CSSProperties;
727
+ children?: ReactNode;
728
+ }
729
+
730
+ export declare type CardVariant = "elevated" | "outline" | "filled" | "unstyled";
731
+
732
+ /** Compound API — `Carousel` is the root; parts hang off it. */
733
+ export declare const Carousel: typeof CarouselRoot & {
734
+ Track: typeof CarouselTrack;
735
+ Slide: typeof CarouselSlide;
736
+ Control: typeof CarouselControl;
737
+ Prev: typeof CarouselPrev;
738
+ Next: typeof CarouselNext;
739
+ Indicator: typeof CarouselIndicator;
740
+ Indicators: typeof CarouselIndicators;
741
+ ProgressText: typeof CarouselProgressText;
742
+ AutoPlayTrigger: typeof CarouselAutoPlayTrigger;
743
+ };
744
+
745
+ export declare type CarouselAnimation = "slide" | "fade";
746
+
747
+ export declare function CarouselAutoPlayTrigger({ className, children }: CarouselAutoPlayTriggerProps): JSX.Element;
748
+
749
+ export declare interface CarouselAutoPlayTriggerProps {
750
+ className?: string;
751
+ children?: (isPlaying: boolean) => ReactNode;
752
+ }
753
+
754
+ /**
755
+ * Lays out the carousel's navigation controls so consumers never hand-roll the
756
+ * arrangement. Reads orientation from context: a centered bar under the slides
757
+ * when horizontal, a full-height column beside them when vertical.
758
+ */
759
+ export declare function CarouselControl({ children, className }: CarouselControlGroupProps): JSX.Element;
760
+
761
+ /** Lays out the navigation controls (Prev/Next/Indicators/etc.); orientation-aware. */
762
+ export declare interface CarouselControlGroupProps {
763
+ children: ReactNode;
764
+ className?: string;
765
+ }
766
+
767
+ export declare interface CarouselControlProps {
768
+ /** Override the default chevron icon. */
769
+ icon?: ReactNode;
770
+ className?: string;
771
+ }
772
+
773
+ /** A single dot bound to one slide index — for hand-composed indicator rows. */
774
+ export declare function CarouselIndicator({ index, className }: CarouselIndicatorProps): JSX.Element;
775
+
776
+ export declare interface CarouselIndicatorProps {
777
+ index: number;
778
+ className?: string;
779
+ }
780
+
781
+ export declare function CarouselIndicators({ className, variant }: CarouselIndicatorsProps): JSX.Element | null;
782
+
783
+ export declare interface CarouselIndicatorsProps {
784
+ className?: string;
785
+ /** @default "dot" */
786
+ variant?: CarouselIndicatorVariant;
787
+ }
788
+
789
+ export declare type CarouselIndicatorVariant = "dot" | "line" | "number";
790
+
791
+ export declare function CarouselNext({ icon, className }: CarouselControlProps): JSX.Element;
792
+
793
+ export declare type CarouselOrientation = "horizontal" | "vertical";
794
+
795
+ export declare function CarouselPrev({ icon, className }: CarouselControlProps): JSX.Element;
796
+
797
+ export declare function CarouselProgressText({ className, format }: CarouselProgressTextProps): JSX.Element;
798
+
799
+ export declare interface CarouselProgressTextProps {
800
+ className?: string;
801
+ format?: (index: number, total: number) => ReactNode;
802
+ }
803
+
804
+ export declare interface CarouselProps {
805
+ /** Active leading-slide index (controlled). */
806
+ index?: number;
807
+ /** Initial index when uncontrolled. @default 0 */
808
+ defaultIndex?: number;
809
+ onIndexChange?: (index: number) => void;
810
+ beforeChange?: (from: number, to: number) => void;
811
+ afterChange?: (current: number) => void;
812
+ /** Slides visible at once. Fractional values (e.g. 1.2) peek the next slide. @default 1 */
813
+ slidesPerView?: number;
814
+ /** Slides advanced per Prev/Next/swipe step. @default 1 */
815
+ slidesToScroll?: number;
816
+ /** Gap between slides, in pixels. @default 0 */
817
+ slideGap?: number;
818
+ /** Wrap from last step to first (and back). @default false */
819
+ loop?: boolean;
820
+ autoPlay?: boolean;
821
+ autoPlayInterval?: number;
822
+ pauseOnHover?: boolean;
823
+ /** `slide` translates the track; `fade` cross-fades stacked slides (single view). @default "slide" */
824
+ animation?: CarouselAnimation;
825
+ orientation?: CarouselOrientation;
826
+ /** Transition duration in ms. @default 300 */
827
+ speed?: number;
828
+ easing?: string;
829
+ disabled?: boolean;
830
+ swipeable?: boolean;
831
+ draggable?: boolean;
832
+ /** Sizing of the built-in controls and indicators. @default "md" */
833
+ size?: CarouselSize;
834
+ /** Hue for active indicators and focus rings. @default "brand" */
835
+ colorScheme?: ColorScheme;
836
+ className?: string;
837
+ style?: CSSProperties;
838
+ children: ReactNode;
839
+ }
840
+
841
+ declare function CarouselRoot({ index: controlledIndex, defaultIndex, onIndexChange, beforeChange, afterChange, slidesPerView, slidesToScroll, slideGap, loop, autoPlay, autoPlayInterval, pauseOnHover, animation, orientation, speed, easing, disabled, swipeable, draggable, size, colorScheme, className, style, children, }: CarouselProps): JSX.Element;
842
+
843
+ export declare type CarouselSize = "sm" | "md" | "lg";
844
+
845
+ export declare function CarouselSlide({ children, className }: CarouselSlideProps): JSX.Element;
846
+
847
+ export declare interface CarouselSlideProps {
848
+ children: ReactNode;
849
+ className?: string;
850
+ }
851
+
852
+ export declare function CarouselTrack({ children, className }: CarouselTrackProps): JSX.Element;
853
+
854
+ export declare interface CarouselTrackProps {
855
+ children: ReactNode;
856
+ className?: string;
857
+ }
858
+
859
+ /** Centers its children on both axes (flex + items/justify center). Carries all Box props. */
860
+ export declare const Center: CenterComponent;
861
+
862
+ declare type CenterComponent = <T extends ElementType = "div">(props: CenterProps<T> & {
863
+ ref?: Ref<any>;
864
+ }) => ReactNode;
865
+
866
+ /** Center adds no custom props — it's a Box that centers its children on both axes. */
867
+ export declare type CenterProps<T extends ElementType = "div"> = BoxProps<T>;
868
+
869
+ /** A selectable tag — solid/brand when checked, subtle/gray when not. */
870
+ export declare function CheckableTag({ children, checked, onChange, colorScheme, size, startElement, endElement, className, ref, ...rest }: CheckableTagProps & {
871
+ ref?: Ref<HTMLSpanElement>;
872
+ }): JSX.Element;
873
+
874
+ export declare namespace CheckableTag {
875
+ var displayName: string;
876
+ }
877
+
878
+ /** Renders a set of CheckableTags with single- or multi-select behaviour. */
879
+ export declare function CheckableTagGroup({ value, onChange, options, multiple, size, colorScheme, className, style, ...rest }: CheckableTagGroupProps): JSX.Element;
880
+
881
+ export declare namespace CheckableTagGroup {
882
+ var displayName: string;
883
+ }
884
+
885
+ export declare interface CheckableTagGroupProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue"> {
886
+ value?: (string | number)[];
887
+ onChange?: (value: (string | number)[]) => void;
888
+ options: TagOption[] | (string | number)[];
889
+ multiple?: boolean;
890
+ size?: TagSize;
891
+ colorScheme?: ColorScheme;
892
+ className?: string;
893
+ style?: CSSProperties;
894
+ }
895
+
896
+ export declare interface CheckableTagProps extends Omit<TagProps, "variant" | "colorScheme" | "closable" | "onClose" | "onChange"> {
897
+ /** Selected state. */
898
+ checked?: boolean;
899
+ onChange?: (checked: boolean) => void;
900
+ /** Hue used when checked. @default "brand" */
901
+ colorScheme?: ColorScheme;
902
+ }
903
+
904
+ export declare const Checkbox: typeof CheckboxBase & {
905
+ Group: typeof CheckboxGroup;
906
+ };
907
+
908
+ export declare function CheckboxBase({ children, size, colorScheme, indeterminate, invalid: invalidProp, disabled: disabledProp, checked: checkedProp, defaultChecked, onChange: onChangeProp, readOnly: readOnlyProp, value, className, id, ref, ...props }: CheckboxProps & {
909
+ ref?: Ref<HTMLInputElement>;
910
+ }): JSX.Element;
911
+
912
+ export declare namespace CheckboxBase {
913
+ var displayName: string;
914
+ }
915
+
916
+ export declare function CheckboxGroup({ value, defaultValue, onChange, disabled, colorScheme, orientation, children, className, ...rest }: CheckboxGroupProps): JSX.Element;
917
+
918
+ export declare namespace CheckboxGroup {
919
+ var displayName: string;
920
+ }
921
+
922
+ export declare interface CheckboxGroupContextValue {
923
+ groupValue: string[];
924
+ toggleValue: (val: string) => void;
925
+ disabled?: boolean;
926
+ colorScheme?: ColorScheme;
927
+ }
928
+
929
+ export declare interface CheckboxGroupProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue"> {
930
+ /** Controlled selected values */
931
+ value?: string[];
932
+ /** Default selected values (uncontrolled) */
933
+ defaultValue?: string[];
934
+ /** Callback fired when selection changes */
935
+ onChange?: (value: string[]) => void;
936
+ /** Disables all checkboxes in the group */
937
+ disabled?: boolean;
938
+ /** Hue applied to every checkbox in the group (each can still override). */
939
+ colorScheme?: ColorScheme;
940
+ /** Layout direction */
941
+ orientation?: "horizontal" | "vertical";
942
+ children: ReactNode;
943
+ }
944
+
945
+ export declare interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
946
+ /** Whether the checkbox is checked (controlled) */
947
+ checked?: boolean;
948
+ /** Default checked state (uncontrolled) */
949
+ defaultChecked?: boolean;
950
+ /** Visual size */
951
+ size?: CheckboxSize;
952
+ /** Hue the checked box paints with (via the accent channel). @default "brand" */
953
+ colorScheme?: ColorScheme;
954
+ /** Indeterminate state — visually shows a dash instead of check */
955
+ indeterminate?: boolean;
956
+ /** Label content rendered next to the checkbox */
957
+ children?: ReactNode;
958
+ /** Invalid/error state */
959
+ invalid?: boolean;
960
+ /** Read-only state */
961
+ readOnly?: boolean;
962
+ }
963
+
964
+ export declare type CheckboxSize = "sm" | "md" | "lg";
965
+
966
+ /** Inline code — a monospace `<code>` chip for snippets inside prose. */
967
+ export declare const Code: CodeComponent;
968
+
969
+ export declare const CodeBlock: CodeBlockComponent;
970
+
971
+ declare type CodeBlockBaseProps = CodeBlockCustomProps & Responsive<VariantProps<typeof codeBlockVariants>> & Responsive<VariantProps<typeof codeBlockBodyVariants>>;
972
+
973
+ declare const codeBlockBodyVariants: (props?: ({
974
+ readonly size?: "sm" | "md" | "lg" | null | undefined;
975
+ } & ClassProp) | undefined) => string;
976
+
977
+ declare type CodeBlockComponent = <T extends ElementType = "div">(props: CodeBlockProps<T> & {
978
+ ref?: Ref<any>;
979
+ }) => ReactNode;
980
+
981
+ declare interface CodeBlockCustomProps {
982
+ /** Optional language tag rendered as a small header above the code. */
983
+ language?: ReactNode;
984
+ /** Show macOS-style window dots in the header (works with any variant). */
985
+ windowControls?: boolean;
986
+ /**
987
+ * Opt-in syntax-highlighting slot. Pass pre-tokenized HTML (e.g. the output of
988
+ * Shiki/Prism in the consumer app) and it renders raw inside `<code>`, bypassing
989
+ * `children`. The library stays dependency-free; highlighting is the consumer's call.
990
+ */
991
+ highlightedHtml?: string;
992
+ }
993
+
994
+ export declare type CodeBlockProps<T extends ElementType = "div"> = Omit<BoxProps<T>, keyof CodeBlockBaseProps> & CodeBlockBaseProps;
995
+
996
+ declare const codeBlockVariants: (props?: ({
997
+ readonly variant?: "solid" | "subtle" | "outline" | null | undefined;
998
+ } & ClassProp) | undefined) => string;
999
+
1000
+ declare type CodeComponent = <T extends ElementType = "code">(props: CodeProps<T> & {
1001
+ ref?: Ref<any>;
1002
+ }) => ReactNode;
1003
+
1004
+ /** `variant` and `size` each accept a scalar token or a responsive map. */
1005
+ declare type CodeCustomProps = Responsive<VariantProps<typeof codeVariants>>;
1006
+
1007
+ export declare type CodeProps<T extends ElementType = "code"> = BoxProps<T> & CodeCustomProps;
1008
+
1009
+ declare const codeVariants: (props?: ({
1010
+ readonly variant?: "solid" | "subtle" | "outline" | null | undefined;
1011
+ readonly size?: "sm" | "md" | "lg" | null | undefined;
1012
+ } & ClassProp) | undefined) => string;
1013
+
1014
+ /**
1015
+ * The library-wide `colorScheme` palette. Any component that paints with the
1016
+ * `accent-*` utilities can expose `colorScheme` by applying `accentClass(scheme)` —
1017
+ * the scope class that rebinds the accent channel to a real hue (see accent.css).
1018
+ *
1019
+ * Add a hue here AND a matching `.astralis-accent-{hue}` block in accent.css to
1020
+ * make it available everywhere at once.
1021
+ */
1022
+ declare const COLOR_SCHEMES: readonly ["brand", "gray", "red", "orange", "yellow", "green", "teal", "blue", "cyan", "purple", "pink"];
1023
+
1024
+ declare type ColorScheme = (typeof COLOR_SCHEMES)[number];
1025
+
1026
+ /**
1027
+ * A filterable single-value picker on the ARIA combobox pattern: type to
1028
+ * filter, arrows to move the active option, Enter to commit, Escape to
1029
+ * revert. Built from the same shared option machinery as Select/MultiSelect.
1030
+ */
1031
+ export declare const Combobox: ForwardRefExoticComponent<ComboboxProps & RefAttributes<HTMLInputElement>>;
1032
+
1033
+ export declare interface ComboboxOptionGroup {
1034
+ group: string;
1035
+ options: ComboboxOptionItem[];
1036
+ }
1037
+
1038
+ export declare interface ComboboxOptionItem {
1039
+ label: string;
1040
+ value: string | number;
1041
+ disabled?: boolean;
1042
+ }
1043
+
1044
+ export declare type ComboboxOptionOrGroup = ComboboxOptionItem | ComboboxOptionGroup;
1045
+
1046
+ export declare interface ComboboxProps {
1047
+ options?: ComboboxOptionOrGroup[];
1048
+ /** Controlled selected value; `null` = nothing selected. */
1049
+ value?: string | number | null;
1050
+ defaultValue?: string | number | null;
1051
+ /** Fires when a selection commits (pick or clear). */
1052
+ onChange?: (value: string | number | null) => void;
1053
+ /** Fires on every keystroke in the filter text. */
1054
+ onInputChange?: (text: string) => void;
1055
+ placeholder?: string;
1056
+ size?: InputSize;
1057
+ variant?: InputVariant;
1058
+ /** Hue for focus ring and active option (via the accent channel). @default "brand" */
1059
+ colorScheme?: ColorScheme;
1060
+ disabled?: boolean;
1061
+ invalid?: boolean;
1062
+ readOnly?: boolean;
1063
+ /** Show a clear button when a value is selected. */
1064
+ clearable?: boolean;
1065
+ loading?: boolean;
1066
+ /** Text shown when nothing matches the filter. */
1067
+ emptyText?: string;
1068
+ /** Form field name — renders a hidden input for native submission. */
1069
+ name?: string;
1070
+ className?: string;
1071
+ id?: string;
1072
+ }
1073
+
1074
+ /**
1075
+ * Container centers its content horizontally (`margin-inline: auto`) up to a max
1076
+ * width, with default horizontal padding. `maxW` and `px` are Box props with sane
1077
+ * defaults — override them like any style prop. `centerContent` stacks children
1078
+ * in a centered column.
1079
+ */
1080
+ export declare const Container: ContainerComponent;
1081
+
1082
+ declare type ContainerComponent = <T extends ElementType = "div">(props: ContainerProps<T> & {
1083
+ ref?: Ref<any>;
1084
+ }) => ReactNode;
1085
+
1086
+ declare interface ContainerCustomProps {
1087
+ /** When true, lays children out in a centered column. */
1088
+ centerContent?: boolean;
1089
+ }
1090
+
1091
+ export declare type ContainerProps<T extends ElementType = "div"> = BoxProps<T> & ContainerCustomProps;
1092
+
1093
+ export declare const DataList: typeof DataListRoot & {
1094
+ Item: typeof DataListItem;
1095
+ Label: typeof DataListLabel;
1096
+ Value: typeof DataListValue;
1097
+ };
1098
+
1099
+ export declare function DataListItem({ children, className }: DataListItemProps): JSX.Element;
1100
+
1101
+ export declare interface DataListItemProps {
1102
+ children: ReactNode;
1103
+ className?: string;
1104
+ }
1105
+
1106
+ export declare function DataListLabel({ children, className }: DataListLabelProps): JSX.Element;
1107
+
1108
+ export declare interface DataListLabelProps {
1109
+ children: ReactNode;
1110
+ className?: string;
1111
+ }
1112
+
1113
+ declare type DataListOrientation = "horizontal" | "vertical";
1114
+
1115
+ export declare interface DataListProps {
1116
+ children: ReactNode;
1117
+ /** `horizontal` lays label + value side by side; `vertical` stacks them. @default "horizontal" */
1118
+ orientation?: DataListOrientation;
1119
+ size?: DataListSize;
1120
+ className?: string;
1121
+ }
1122
+
1123
+ declare function DataListRoot({ children, orientation, size, className }: DataListProps): JSX.Element;
1124
+
1125
+ declare type DataListSize = "sm" | "md" | "lg";
1126
+
1127
+ export declare function DataListValue({ children, className }: DataListValueProps): JSX.Element;
1128
+
1129
+ export declare interface DataListValueProps {
1130
+ children: ReactNode;
1131
+ className?: string;
1132
+ }
1133
+
1134
+ /** Flips `open` so the exit transition plays; the Toaster removes it after. */
1135
+ declare function dismissToast(id?: string): void;
1136
+
1137
+ /** Compound API — `Drawer` is the root; parts hang off it. */
1138
+ export declare const Drawer: typeof DrawerRoot & {
1139
+ Trigger: typeof DrawerTrigger;
1140
+ Content: typeof DrawerContent;
1141
+ Header: typeof DrawerHeader;
1142
+ Body: typeof DrawerBody;
1143
+ Footer: typeof DrawerFooter;
1144
+ Title: typeof DrawerTitle;
1145
+ Description: typeof DrawerDescription;
1146
+ Close: typeof DrawerClose;
1147
+ CloseButton: typeof DrawerCloseButton;
1148
+ };
1149
+
1150
+ export declare function DrawerBody({ children, className }: DrawerSectionProps): JSX.Element;
1151
+
1152
+ export declare function DrawerClose({ children }: DrawerSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
1153
+
1154
+ export declare function DrawerCloseButton({ className }: {
1155
+ className?: string;
1156
+ }): JSX.Element;
1157
+
1158
+ export declare function DrawerContent({ children, className, ...rest }: DrawerContentProps): JSX.Element | null;
1159
+
1160
+ export declare interface DrawerContentProps extends ComponentPropsWithoutRef<"div"> {
1161
+ children: ReactNode;
1162
+ className?: string;
1163
+ }
1164
+
1165
+ export declare function DrawerDescription({ children, className }: DrawerSectionProps): JSX.Element;
1166
+
1167
+ export declare function DrawerFooter({ children, className }: DrawerSectionProps): JSX.Element;
1168
+
1169
+ export declare function DrawerHeader({ children, className }: DrawerSectionProps): JSX.Element;
1170
+
1171
+ export declare type DrawerPlacement = "left" | "right" | "top" | "bottom";
1172
+
1173
+ export declare interface DrawerProps {
1174
+ children: ReactNode;
1175
+ open?: boolean;
1176
+ defaultOpen?: boolean;
1177
+ onOpenChange?: (open: boolean) => void;
1178
+ /** Edge the drawer slides in from. @default "right" */
1179
+ placement?: DrawerPlacement;
1180
+ size?: DrawerSize;
1181
+ closeOnOverlayClick?: boolean;
1182
+ closeOnEsc?: boolean;
1183
+ }
1184
+
1185
+ declare function DrawerRoot({ children, open: openProp, defaultOpen, onOpenChange, placement, size, closeOnOverlayClick, closeOnEsc, }: DrawerProps): JSX.Element;
1186
+
1187
+ export declare interface DrawerSectionProps {
1188
+ children: ReactNode;
1189
+ className?: string;
1190
+ }
1191
+
1192
+ export declare type DrawerSize = "sm" | "md" | "lg" | "xl" | "full";
1193
+
1194
+ export declare interface DrawerSlotProps {
1195
+ children: ReactElement<any>;
1196
+ }
1197
+
1198
+ export declare function DrawerTitle({ children, className }: DrawerSectionProps): JSX.Element;
1199
+
1200
+ export declare function DrawerTrigger({ children }: DrawerSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
1201
+
1202
+ /** The shared status vocabulary for feedback components (Alert, Toast). */
1203
+ declare type FeedbackStatus = "info" | "success" | "warning" | "error";
1204
+
1205
+ export declare const Field: typeof FieldRoot & {
1206
+ Label: typeof FieldLabel;
1207
+ HelpText: typeof FieldHelpText;
1208
+ ErrorText: typeof FieldErrorText;
1209
+ };
1210
+
1211
+ export declare interface FieldContextValue {
1212
+ /** Auto-generated or user-provided id wired to the input */
1213
+ id: string;
1214
+ /** Whether the field is in an invalid/error state */
1215
+ invalid?: boolean;
1216
+ /** Whether the field is disabled */
1217
+ disabled?: boolean;
1218
+ /** Whether the field is required */
1219
+ required?: boolean;
1220
+ /** Whether the field is read-only */
1221
+ readOnly?: boolean;
1222
+ /** Stable id Field.HelpText renders with (`{id}-help`) */
1223
+ helpTextId: string;
1224
+ /** Stable id Field.ErrorText renders with (`{id}-error`) */
1225
+ errorTextId: string;
1226
+ /**
1227
+ * Space-separated ids of the help/error text currently rendered — inputs
1228
+ * pass this straight to aria-describedby so screen readers announce the
1229
+ * descriptions together with the control. Undefined when neither part is
1230
+ * mounted.
1231
+ */
1232
+ describedBy?: string;
1233
+ /** Registration hooks called by HelpText/ErrorText on mount/unmount. */
1234
+ setHasHelpText: (present: boolean) => void;
1235
+ setHasErrorText: (present: boolean) => void;
1236
+ }
1237
+
1238
+ export declare function FieldErrorText({ children, className, ref, ...props }: FieldErrorTextProps & {
1239
+ ref?: Ref<HTMLParagraphElement>;
1240
+ }): JSX.Element;
1241
+
1242
+ export declare namespace FieldErrorText {
1243
+ var displayName: string;
1244
+ }
1245
+
1246
+ export declare interface FieldErrorTextProps extends HTMLAttributes<HTMLParagraphElement> {
1247
+ }
1248
+
1249
+ export declare function FieldHelpText({ children, className, ref, ...props }: FieldHelpTextProps & {
1250
+ ref?: Ref<HTMLParagraphElement>;
1251
+ }): JSX.Element;
1252
+
1253
+ export declare namespace FieldHelpText {
1254
+ var displayName: string;
1255
+ }
1256
+
1257
+ export declare interface FieldHelpTextProps extends HTMLAttributes<HTMLParagraphElement> {
1258
+ }
1259
+
1260
+ export declare function FieldLabel({ children, className, ref, ...props }: FieldLabelProps & {
1261
+ ref?: Ref<HTMLLabelElement>;
1262
+ }): JSX.Element;
1263
+
1264
+ export declare namespace FieldLabel {
1265
+ var displayName: string;
1266
+ }
1267
+
1268
+ export declare interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
1269
+ }
1270
+
1271
+ /**
1272
+ * Groups a control with its label, help text, and error text — sharing state
1273
+ * (id, invalid, disabled, required, readOnly) with descendants via context.
1274
+ */
1275
+ export declare function FieldRoot({ children, invalid, disabled, required, readOnly, id: userProvidedId, className, ...props }: FieldRootProps): JSX.Element;
1276
+
1277
+ export declare namespace FieldRoot {
1278
+ var displayName: string;
1279
+ }
1280
+
1281
+ export declare interface FieldRootProps extends HTMLAttributes<HTMLDivElement> {
1282
+ /** Marks the field as invalid — turns border red, shows error text */
1283
+ invalid?: boolean;
1284
+ /** Disables the entire field and its children */
1285
+ disabled?: boolean;
1286
+ /** Marks the field as required — shows * in label */
1287
+ required?: boolean;
1288
+ /** Marks the field as read-only */
1289
+ readOnly?: boolean;
1290
+ /** Explicit id for the input; auto-generated if not provided */
1291
+ id?: string;
1292
+ }
1293
+
1294
+ export declare const Flex: (<T extends ElementType = "div">(props: FlexProps<T> & {
1295
+ ref?: Ref<any>;
1296
+ }) => ReactNode) & {
1297
+ Item: <T extends ElementType = "div">(props: FlexItemProps<T> & {
1298
+ ref?: Ref<any>;
1299
+ }) => ReactNode;
1300
+ };
1301
+
1302
+ /** Flex container layout props — each accepts a scalar token or a responsive map. */
1303
+ declare type FlexCustomProps = Responsive<VariantProps<typeof flexVariants>>;
1304
+
1305
+ export declare const FlexItem: FlexItemComponent;
1306
+
1307
+ declare type FlexItemComponent = <T extends ElementType = "div">(props: FlexItemProps<T> & {
1308
+ ref?: Ref<any>;
1309
+ }) => ReactNode;
1310
+
1311
+ /** Flex item self-alignment/sizing props — each responsive. */
1312
+ declare type FlexItemCustomProps = Responsive<VariantProps<typeof flexItemVariants>>;
1313
+
1314
+ export declare type FlexItemProps<T extends ElementType = "div"> = BoxProps<T> & FlexItemCustomProps;
1315
+
1316
+ declare const flexItemVariants: (props?: ({
1317
+ readonly basis?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "max" | "min" | "11" | "8" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "3xs" | "2xs" | "1/2" | "1/3" | "2/3" | "1/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12" | "fit" | null | undefined;
1318
+ readonly flex?: "none" | "1" | "auto" | "initial" | null | undefined;
1319
+ readonly grow?: boolean | "0" | "1" | null | undefined;
1320
+ readonly shrink?: boolean | "0" | "1" | null | undefined;
1321
+ readonly order?: "none" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "first" | "last" | "11" | "8" | "9" | null | undefined;
1322
+ readonly alignSelf?: "start" | "end" | "center" | "auto" | "baseline" | "stretch" | null | undefined;
1323
+ } & ClassProp) | undefined) => string;
1324
+
1325
+ export declare type FlexProps<T extends ElementType = "div"> = BoxProps<T> & FlexCustomProps;
1326
+
1327
+ declare const flexVariants: (props?: ({
1328
+ readonly direction?: "row" | "column" | "column-reverse" | "row-reverse" | null | undefined;
1329
+ readonly justifyContent?: "start" | "end" | "center" | "between" | "around" | "evenly" | null | undefined;
1330
+ readonly alignItems?: "start" | "end" | "center" | "baseline" | "stretch" | null | undefined;
1331
+ readonly alignContent?: "start" | "end" | "center" | "stretch" | "between" | "around" | "evenly" | null | undefined;
1332
+ readonly placeContent?: "start" | "end" | "center" | "stretch" | "between" | "around" | "evenly" | null | undefined;
1333
+ readonly wrap?: "wrap" | "nowrap" | "wrap-reverse" | null | undefined;
1334
+ readonly gap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1335
+ readonly rowGap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1336
+ readonly columnGap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1337
+ } & ClassProp) | undefined) => string;
1338
+
1339
+ /**
1340
+ * Float positions its content at the edge/corner of the nearest positioned
1341
+ * ancestor — wrap it in a `position="relative"` Box. Ideal for badges, dots,
1342
+ * and close buttons overlaid on a container.
1343
+ */
1344
+ export declare const Float: FloatComponent;
1345
+
1346
+ declare type FloatComponent = <T extends ElementType = "div">(props: FloatProps<T> & {
1347
+ ref?: Ref<any>;
1348
+ }) => ReactNode;
1349
+
1350
+ /** `placement` accepts a scalar token or a responsive map. */
1351
+ declare type FloatCustomProps = Responsive<VariantProps<typeof floatVariants>>;
1352
+
1353
+ export declare type FloatProps<T extends ElementType = "div"> = BoxProps<T> & FloatCustomProps;
1354
+
1355
+ declare const floatVariants: (props?: ({
1356
+ readonly placement?: "top-start" | "top-center" | "top-end" | "bottom-start" | "bottom-center" | "bottom-end" | "middle-start" | "middle-center" | "middle-end" | null | undefined;
1357
+ } & ClassProp) | undefined) => string;
1358
+
1359
+ /**
1360
+ * Runtime CSS variables for the 10 brand shades, injected as inline styles on
1361
+ * the provider div, overriding the CSS defaults in semantic.css.
1362
+ *
1363
+ * NOTE: keys must match the primitive layer the semantic tokens read from
1364
+ * (--astralis-color-brand-*), which @theme maps to --color-brand-*.
1365
+ */
1366
+ export declare function generateBrandShades(brandColor: string | undefined): CSSProperties;
1367
+
1368
+ /**
1369
+ * Shades PLUS the brand/accent ROLE tokens, per theme.
1370
+ *
1371
+ * Overriding only the primitive shades is not enough: role tokens like
1372
+ * --astralis-color-brand-solid are declared at :root, where their var()
1373
+ * references are substituted ONCE against the default palette — descendants
1374
+ * inherit that already-resolved value, so a subtree shade override never
1375
+ * reaches components that paint with roles (i.e. nearly all of them). The
1376
+ * roles must be re-declared alongside the shades, with the same per-theme
1377
+ * formulas as semantic.css. The accent channel defaults to brand at :root
1378
+ * and is baked the same way, so it gets re-declared too.
1379
+ */
1380
+ export declare function generateBrandTokens(brandColor: string | undefined, mode: "light" | "dark"): CSSProperties;
1381
+
1382
+ export declare const Grid: (<T extends ElementType = "div">(props: GridProps<T> & {
1383
+ ref?: Ref<any>;
1384
+ }) => ReactNode) & {
1385
+ Item: <T extends ElementType = "div">(props: GridItemProps<T> & {
1386
+ ref?: Ref<any>;
1387
+ }) => ReactNode;
1388
+ };
1389
+
1390
+ /** Grid container layout props — each accepts a scalar token or a responsive map. */
1391
+ declare type GridCustomProps = Responsive<VariantProps<typeof gridVariants>> & {
1392
+ /** Raw `grid-template-columns` escape hatch for arbitrary tracks, e.g. "200px 1fr". */
1393
+ templateColumns?: string;
1394
+ /** Raw `grid-template-rows` escape hatch for arbitrary tracks. */
1395
+ templateRows?: string;
1396
+ /** Raw `grid-template-areas` string, e.g. `'"head head" "nav main"'`. */
1397
+ templateAreas?: string;
1398
+ };
1399
+
1400
+ export declare const GridItem: GridItemComponent;
1401
+
1402
+ declare type GridItemComponent = <T extends ElementType = "div">(props: GridItemProps<T> & {
1403
+ ref?: Ref<any>;
1404
+ }) => ReactNode;
1405
+
1406
+ /** Grid item placement props — each responsive. */
1407
+ declare type GridItemCustomProps = Responsive<VariantProps<typeof gridItemVariants>> & {
1408
+ /** Named grid area (`grid-area`) matching a Grid `templateAreas` cell. */
1409
+ area?: string;
1410
+ };
1411
+
1412
+ export declare type GridItemProps<T extends ElementType = "div"> = BoxProps<T> & GridItemCustomProps;
1413
+
1414
+ declare const gridItemVariants: (props?: ({
1415
+ readonly colSpan?: "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "9" | null | undefined;
1416
+ readonly colStart?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "11" | "8" | "9" | "13" | null | undefined;
1417
+ readonly colEnd?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "11" | "8" | "9" | "13" | null | undefined;
1418
+ readonly rowSpan?: "full" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "9" | null | undefined;
1419
+ readonly rowStart?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "11" | "8" | "9" | "13" | null | undefined;
1420
+ readonly rowEnd?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "auto" | "12" | "10" | "11" | "8" | "9" | "13" | null | undefined;
1421
+ readonly order?: "none" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "first" | "last" | "11" | "8" | "9" | null | undefined;
1422
+ readonly alignSelf?: "start" | "end" | "center" | "auto" | "baseline" | "stretch" | null | undefined;
1423
+ readonly justifySelf?: "start" | "end" | "center" | "auto" | "stretch" | null | undefined;
1424
+ readonly placeSelf?: "start" | "end" | "center" | "auto" | "stretch" | null | undefined;
1425
+ } & ClassProp) | undefined) => string;
1426
+
1427
+ export declare type GridProps<T extends ElementType = "div"> = BoxProps<T> & GridCustomProps;
1428
+
1429
+ declare const gridVariants: (props?: ({
1430
+ readonly columns?: "none" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "9" | null | undefined;
1431
+ readonly rows?: "none" | "1" | "2" | "3" | "4" | "5" | "6" | null | undefined;
1432
+ readonly flow?: "col" | "row" | "dense" | "col-dense" | null | undefined;
1433
+ readonly autoColumns?: "auto" | "max" | "min" | "fr" | null | undefined;
1434
+ readonly autoRows?: "auto" | "max" | "min" | "fr" | null | undefined;
1435
+ readonly justifyItems?: "start" | "end" | "center" | "stretch" | null | undefined;
1436
+ readonly alignItems?: "start" | "end" | "center" | "baseline" | "stretch" | null | undefined;
1437
+ readonly justifyContent?: "start" | "end" | "center" | "between" | "around" | "evenly" | null | undefined;
1438
+ readonly alignContent?: "start" | "end" | "center" | "stretch" | "between" | "around" | "evenly" | null | undefined;
1439
+ readonly placeContent?: "start" | "end" | "center" | "stretch" | "between" | "around" | "evenly" | null | undefined;
1440
+ readonly placeItems?: "start" | "end" | "center" | "stretch" | null | undefined;
1441
+ readonly gap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1442
+ readonly rowGap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1443
+ readonly columnGap?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "12" | "10" | "11" | "8" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "9" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | null | undefined;
1444
+ } & ClassProp) | undefined) => string;
1445
+
1446
+ export declare const Heading: HeadingComponent;
1447
+
1448
+ declare type HeadingComponent = <T extends HeadingElement = "h2">(props: HeadingProps<T> & {
1449
+ ref?: Ref<any>;
1450
+ }) => ReactNode;
1451
+
1452
+ declare type HeadingElement = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
1453
+
1454
+ export declare type HeadingProps<T extends HeadingElement = "h2"> = Omit<TextProps<T>, "as" | "paragraph"> & {
1455
+ as?: T;
1456
+ };
1457
+
1458
+ /**
1459
+ * Highlight wraps every occurrence of `query` within its text in a styled `<mark>`.
1460
+ * It renders inline, so it can live inside a `<Text>` or any prose.
1461
+ */
1462
+ declare function Highlight_2({ children, query, ignoreCase, variant, markClassName, className, ref, ...props }: HighlightProps & {
1463
+ ref?: Ref<HTMLSpanElement>;
1464
+ }): JSX.Element;
1465
+
1466
+ declare namespace Highlight_2 {
1467
+ var displayName: string;
1468
+ }
1469
+ export { Highlight_2 as Highlight }
1470
+
1471
+ declare interface HighlightCustomProps {
1472
+ /** The full text to scan. Highlight operates on a plain string. */
1473
+ children: string;
1474
+ /** One or more substrings to wrap in `<mark>`. */
1475
+ query: string | string[];
1476
+ /** Match case-insensitively (default `true`). */
1477
+ ignoreCase?: boolean;
1478
+ /** Extra className applied to each matched `<mark>`. */
1479
+ markClassName?: string;
1480
+ }
1481
+
1482
+ declare const highlightMarkVariants: (props?: ({
1483
+ readonly variant?: "solid" | "subtle" | null | undefined;
1484
+ } & ClassProp) | undefined) => string;
1485
+
1486
+ export declare type HighlightProps = HighlightCustomProps & VariantProps<typeof highlightMarkVariants> & Omit<ComponentPropsWithoutRef<"span">, keyof HighlightCustomProps>;
1487
+
1488
+ export declare const HStack: StackPresetComponent;
1489
+
1490
+ /**
1491
+ * Icon — a bring-your-own-icon wrapper. It standardizes size (our sizing tokens),
1492
+ * colour (semantic tokens, inherited via `currentColor`), and stroke width, then
1493
+ * renders the icon you supply via `as` (an icon component) or `children` (a raw
1494
+ * `<svg>`). The library bundles NO icon set, so consumers ship only what they use.
1495
+ *
1496
+ * Decorative by default (`aria-hidden`); pass `aria-label` to expose it to AT.
1497
+ */
1498
+ export declare function Icon({ as: As, children, size, color, strokeWidth, className, style, ref, ...rest }: IconProps & {
1499
+ ref?: Ref<SVGSVGElement>;
1500
+ }): JSX.Element | null;
1501
+
1502
+ export declare namespace Icon {
1503
+ var displayName: string;
1504
+ }
1505
+
1506
+ /** Any semantic text-colour token (icons inherit colour via `currentColor`). */
1507
+ export declare type IconColor = keyof typeof textColors;
1508
+
1509
+ export declare interface IconProps extends Omit<ComponentPropsWithoutRef<"svg">, "color"> {
1510
+ /** Render this icon component (e.g. a Lucide / Heroicons component, or your own). */
1511
+ as?: ElementType;
1512
+ /** …or pass a raw `<svg>` as children. */
1513
+ children?: ReactNode;
1514
+ /** Token (`xs`–`xl`) or an explicit pixel number. */
1515
+ size?: IconSize;
1516
+ /** A semantic text-colour token; omit to inherit the surrounding text colour. */
1517
+ color?: IconColor;
1518
+ strokeWidth?: number;
1519
+ }
1520
+
1521
+ export declare type IconSize = "xs" | "sm" | "md" | "lg" | "xl" | number;
1522
+
1523
+ declare const Image_2: typeof ImageRoot & {
1524
+ Group: typeof ImageGroup;
1525
+ };
1526
+ export { Image_2 as Image }
1527
+
1528
+ export declare type ImageAspectRatio = "square" | "video" | "portrait" | "wide" | (string & {});
1529
+
1530
+ export declare function ImageGroup({ items, columns, gap, rounded, objectFit, className, style, }: ImageGroupProps): JSX.Element;
1531
+
1532
+ export declare namespace ImageGroup {
1533
+ var displayName: string;
1534
+ }
1535
+
1536
+ export declare interface ImageGroupItem {
1537
+ src: string;
1538
+ alt: string;
1539
+ caption?: ReactNode;
1540
+ }
1541
+
1542
+ export declare interface ImageGroupProps {
1543
+ items: ImageGroupItem[];
1544
+ columns?: 2 | 3 | 4;
1545
+ gap?: "sm" | "md" | "lg";
1546
+ rounded?: ImageRounded;
1547
+ objectFit?: ImageObjectFit;
1548
+ className?: string;
1549
+ style?: CSSProperties;
1550
+ }
1551
+
1552
+ export declare type ImageObjectFit = "contain" | "cover" | "fill" | "none" | "scale-down";
1553
+
1554
+ export declare interface ImageProps {
1555
+ src: string;
1556
+ alt: string;
1557
+ className?: string;
1558
+ style?: CSSProperties;
1559
+ width?: number | string;
1560
+ height?: number | string;
1561
+ objectFit?: ImageObjectFit;
1562
+ loading?: "eager" | "lazy";
1563
+ srcset?: string;
1564
+ sizes?: string;
1565
+ /** A blurred low-res URL shown while loading, or "blur" for the default shimmer */
1566
+ placeholder?: "blur" | "empty" | string;
1567
+ rounded?: ImageRounded;
1568
+ /** Fixed aspect-ratio wrapper: "square"=1/1, "video"=16/9, "portrait"=3/4, "wide"=21/9, or any CSS ratio e.g. "4/3" */
1569
+ aspectRatio?: ImageAspectRatio;
1570
+ /** Fallback element shown when the image fails to load */
1571
+ fallback?: ReactNode;
1572
+ /** Short text shown below the image in a <figcaption> */
1573
+ caption?: ReactNode;
1574
+ /** Enables click-to-preview lightbox */
1575
+ preview?: boolean;
1576
+ onLoad?: () => void;
1577
+ onError?: () => void;
1578
+ ariaLabel?: string;
1579
+ }
1580
+
1581
+ export declare function ImageRoot({ src, alt, className, style, width, height, objectFit, loading, srcset, sizes, placeholder, rounded, aspectRatio, fallback, caption, preview, onLoad, onError, ariaLabel, ref, }: ImageProps & {
1582
+ ref?: Ref<HTMLImageElement>;
1583
+ }): JSX.Element;
1584
+
1585
+ export declare namespace ImageRoot {
1586
+ var displayName: string;
1587
+ }
1588
+
1589
+ export declare type ImageRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
1590
+
1591
+ export declare const Input: typeof InputBase & {
1592
+ Password: typeof InputPassword;
1593
+ Search: typeof InputSearch;
1594
+ TextArea: typeof InputTextarea;
1595
+ };
1596
+
1597
+ export declare function InputBase({ size, variant, invalid: invalidProp, disabled: disabledProp, readOnly: readOnlyProp, className, id: idProp, ref, ...props }: InputProps & {
1598
+ ref?: Ref<HTMLInputElement>;
1599
+ }): JSX.Element;
1600
+
1601
+ export declare namespace InputBase {
1602
+ var displayName: string;
1603
+ }
1604
+
1605
+ /**
1606
+ * Wraps an Input with prefix/suffix slots. Uses context so the child Input can
1607
+ * self-apply the correct start/end padding.
1608
+ */
1609
+ export declare function InputGroup({ prefix, suffix, children, className }: InputGroupProps): JSX.Element;
1610
+
1611
+ export declare namespace InputGroup {
1612
+ var displayName: string;
1613
+ }
1614
+
1615
+ export declare interface InputGroupProps {
1616
+ /** Icon or element rendered at the start of the input */
1617
+ prefix?: ReactNode;
1618
+ /** Icon or element rendered at the end of the input */
1619
+ suffix?: ReactNode;
1620
+ children: ReactNode;
1621
+ className?: string;
1622
+ }
1623
+
1624
+ export declare function InputPassword({ className, disabled, ref, ...props }: InputPasswordProps & {
1625
+ ref?: Ref<HTMLInputElement>;
1626
+ }): JSX.Element;
1627
+
1628
+ export declare namespace InputPassword {
1629
+ var displayName: string;
1630
+ }
1631
+
1632
+ export declare interface InputPasswordProps extends Omit<InputProps, "type"> {
1633
+ }
1634
+
1635
+ export declare interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"> {
1636
+ /** Visual size of the input */
1637
+ size?: InputSize;
1638
+ /** Visual variant */
1639
+ variant?: InputVariant;
1640
+ /** Marks the input as invalid. Can also be inherited from Field context */
1641
+ invalid?: boolean;
1642
+ /** Extra class names */
1643
+ className?: string;
1644
+ }
1645
+
1646
+ export declare function InputSearch({ onSearch, showSearchButton, className, onKeyDown, ref, ...props }: InputSearchProps & {
1647
+ ref?: Ref<HTMLInputElement>;
1648
+ }): JSX.Element;
1649
+
1650
+ export declare namespace InputSearch {
1651
+ var displayName: string;
1652
+ }
1653
+
1654
+ export declare interface InputSearchProps extends Omit<InputProps, "type"> {
1655
+ /** Callback fired when the search is submitted (Enter key or button click) */
1656
+ onSearch?: (value: string) => void;
1657
+ /** Whether to show the search button */
1658
+ showSearchButton?: boolean;
1659
+ }
1660
+
1661
+ export declare type InputSize = "sm" | "md" | "lg";
1662
+
1663
+ declare function InputTextarea({ size, variant, invalid: invalidProp, disabled: disabledProp, readOnly: readOnlyProp, showCount, maxLength, value, defaultValue, className, id: idProp, rows, ref, ...props }: InputTextareaProps & {
1664
+ ref?: Ref<HTMLTextAreaElement>;
1665
+ }): JSX.Element;
1666
+
1667
+ declare namespace InputTextarea {
1668
+ var displayName: string;
1669
+ }
1670
+ export { InputTextarea }
1671
+ export { InputTextarea as Textarea }
1672
+
1673
+ declare interface InputTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> {
1674
+ /** Visual size */
1675
+ size?: InputSize;
1676
+ /** Visual variant */
1677
+ variant?: InputVariant;
1678
+ /** Marks the textarea as invalid */
1679
+ invalid?: boolean;
1680
+ /** Shows a character counter below the textarea */
1681
+ showCount?: boolean;
1682
+ /** Extra class names */
1683
+ className?: string;
1684
+ }
1685
+ export { InputTextareaProps }
1686
+ export { InputTextareaProps as TextareaProps }
1687
+
1688
+ export declare type InputVariant = "outline" | "filled" | "underline" | "unstyled";
1689
+
1690
+ /** A keyboard-key cap: `<Kbd>⌘</Kbd> <Kbd>K</Kbd>`. Renders a semantic `<kbd>`. */
1691
+ export declare function Kbd({ size, className, children, ref, ...rest }: KbdProps & {
1692
+ ref?: Ref<HTMLElement>;
1693
+ }): JSX.Element;
1694
+
1695
+ export declare namespace Kbd {
1696
+ var displayName: string;
1697
+ }
1698
+
1699
+ export declare interface KbdProps extends ComponentPropsWithoutRef<"kbd">, VariantProps<typeof kbdVariants> {
1700
+ }
1701
+
1702
+ export declare const kbdVariants: (props?: ({
1703
+ size?: "sm" | "md" | "lg" | null | undefined;
1704
+ } & ClassProp) | undefined) => string;
1705
+
1706
+ /** An inline text link with accent-channel coloring and external-link handling. */
1707
+ export declare function Link<T extends ElementType = "a">({ as, variant, colorScheme, external, className, ref, children, ...rest }: LinkProps<T>): JSX.Element;
1708
+
1709
+ export declare namespace Link {
1710
+ var displayName: string;
1711
+ }
1712
+
1713
+ export declare type LinkProps<T extends ElementType = "a"> = {
1714
+ /** Render as a router link component (e.g. Next's `Link`). */
1715
+ as?: T;
1716
+ /** Hue (via the accent channel). @default "brand" */
1717
+ colorScheme?: ColorScheme;
1718
+ /** Opens in a new tab with `rel="noopener noreferrer"` and an ↗ marker. */
1719
+ external?: boolean;
1720
+ className?: string;
1721
+ /** React 19: ref is a regular prop — no forwardRef, no polymorphic cast. */
1722
+ ref?: Ref<HTMLElement>;
1723
+ children: ReactNode;
1724
+ } & VariantProps<typeof linkVariants> & Omit<ComponentPropsWithoutRef<T>, "as" | "children" | "className" | "ref">;
1725
+
1726
+ export declare const linkVariants: (props?: ({
1727
+ variant?: "underline" | "plain" | "hover" | null | undefined;
1728
+ } & ClassProp) | undefined) => string;
1729
+
1730
+ export declare const List: (<T extends ElementType = "ul">(props: ListProps<T> & {
1731
+ ref?: Ref<any>;
1732
+ }) => ReactNode) & {
1733
+ Item: <T extends ElementType = "li">(props: ListItemProps<T> & {
1734
+ ref?: Ref<any>;
1735
+ }) => ReactNode;
1736
+ };
1737
+
1738
+ /** `styleType` and `spacing` each accept a scalar token or a responsive map. */
1739
+ declare type ListCustomProps = Responsive<VariantProps<typeof listVariants>>;
1740
+
1741
+ /** A single `<li>`. With `icon`, it suppresses the native marker and renders the icon inline. */
1742
+ export declare const ListItem: ListItemComponent;
1743
+
1744
+ declare type ListItemComponent = <T extends ElementType = "li">(props: ListItemProps<T> & {
1745
+ ref?: Ref<any>;
1746
+ }) => ReactNode;
1747
+
1748
+ declare interface ListItemCustomProps {
1749
+ /** Optional leading icon; suppresses the native marker and aligns content beside it. */
1750
+ icon?: ReactNode;
1751
+ }
1752
+
1753
+ export declare type ListItemProps<T extends ElementType = "li"> = Omit<BoxProps<T>, keyof ListItemCustomProps> & ListItemCustomProps;
1754
+
1755
+ export declare type ListProps<T extends ElementType = "ul"> = BoxProps<T> & ListCustomProps;
1756
+
1757
+ declare const listVariants: (props?: ({
1758
+ readonly styleType?: "none" | "circle" | "square" | "decimal" | "disc" | "lower-alpha" | "upper-roman" | null | undefined;
1759
+ readonly spacing?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "8" | "1.5" | "2.5" | null | undefined;
1760
+ } & ClassProp) | undefined) => string;
1761
+
1762
+ export declare const Marquee: typeof MarqueeRoot & {
1763
+ Item: typeof MarqueeItem;
1764
+ };
1765
+
1766
+ export declare type MarqueeDirection = "left" | "right" | "up" | "down";
1767
+
1768
+ export declare function MarqueeItem({ className, style, children, ref, ...rest }: MarqueeItemProps & {
1769
+ ref?: Ref<HTMLDivElement>;
1770
+ }): JSX.Element;
1771
+
1772
+ export declare namespace MarqueeItem {
1773
+ var displayName: string;
1774
+ }
1775
+
1776
+ export declare interface MarqueeItemProps extends HTMLAttributes<HTMLDivElement> {
1777
+ className?: string;
1778
+ style?: CSSProperties;
1779
+ children?: ReactNode;
1780
+ }
1781
+
1782
+ export declare function MarqueeRoot({ direction, speed, gap, pauseOnHover, pauseOnFocus, reverse, gradient, gradientColor, gradientWidth, loopCount, className, style, children, ref, ...rest }: MarqueeRootProps & {
1783
+ ref?: Ref<HTMLDivElement>;
1784
+ }): JSX.Element;
1785
+
1786
+ export declare namespace MarqueeRoot {
1787
+ var displayName: string;
1788
+ }
1789
+
1790
+ export declare interface MarqueeRootProps extends HTMLAttributes<HTMLDivElement> {
1791
+ /** Scroll direction */
1792
+ direction?: MarqueeDirection;
1793
+ /** Scroll speed in pixels per second */
1794
+ speed?: number;
1795
+ /** Gap between repeated items */
1796
+ gap?: string;
1797
+ /** Pause scrolling when the user hovers over the element */
1798
+ pauseOnHover?: boolean;
1799
+ /** Pause scrolling when the user focuses an element within */
1800
+ pauseOnFocus?: boolean;
1801
+ /** Reverse the scroll direction */
1802
+ reverse?: boolean;
1803
+ /** Show fade-out gradient at both edges */
1804
+ gradient?: boolean;
1805
+ /** The colour used for the gradient overlay (defaults to bg colour) */
1806
+ gradientColor?: string;
1807
+ /** Width of the gradient overlay (default: 10%) */
1808
+ gradientWidth?: string;
1809
+ /** Number of loops before stopping (0 = infinite) */
1810
+ loopCount?: number;
1811
+ className?: string;
1812
+ style?: CSSProperties;
1813
+ children?: ReactNode;
1814
+ }
1815
+
1816
+ /**
1817
+ * An action menu (dropdown) on the APG menu-button pattern: roving focus,
1818
+ * typeahead, hover-follows-focus, Escape/outside dismissal via the shared
1819
+ * overlay stack, and anchor positioning.
1820
+ */
1821
+ export declare const Menu: typeof MenuRoot & {
1822
+ Trigger: typeof MenuTrigger;
1823
+ Content: typeof MenuContent;
1824
+ Item: typeof MenuItem;
1825
+ Label: typeof MenuLabel;
1826
+ Separator: typeof MenuSeparator;
1827
+ Group: typeof MenuGroup;
1828
+ };
1829
+
1830
+ declare function MenuContent({ className, children, onKeyDown, ...rest }: MenuContentProps): JSX.Element | null;
1831
+
1832
+ declare namespace MenuContent {
1833
+ var displayName: string;
1834
+ }
1835
+
1836
+ export declare interface MenuContentProps extends ComponentPropsWithoutRef<"div"> {
1837
+ children: ReactNode;
1838
+ }
1839
+
1840
+ declare function MenuGroup({ className, children, ...rest }: MenuSectionProps): JSX.Element;
1841
+
1842
+ declare namespace MenuGroup {
1843
+ var displayName: string;
1844
+ }
1845
+
1846
+ declare function MenuItem({ onSelect, disabled, danger, icon, shortcut, closeOnSelect, className, children, ...rest }: MenuItemProps): JSX.Element;
1847
+
1848
+ declare namespace MenuItem {
1849
+ var displayName: string;
1850
+ }
1851
+
1852
+ export declare interface MenuItemProps extends Omit<ComponentPropsWithoutRef<"div">, "onSelect"> {
1853
+ /** Runs on activation (click / Enter / Space). */
1854
+ onSelect?: () => void;
1855
+ disabled?: boolean;
1856
+ /** Destructive styling (delete, remove, …). */
1857
+ danger?: boolean;
1858
+ /** Leading glyph slot. */
1859
+ icon?: ReactNode;
1860
+ /** Trailing hint slot (e.g. a Kbd shortcut). */
1861
+ shortcut?: ReactNode;
1862
+ /** Override the menu-level closeOnSelect for this item. */
1863
+ closeOnSelect?: boolean;
1864
+ children: ReactNode;
1865
+ }
1866
+
1867
+ declare function MenuLabel({ className, children, ...rest }: MenuSectionProps): JSX.Element;
1868
+
1869
+ declare namespace MenuLabel {
1870
+ var displayName: string;
1871
+ }
1872
+
1873
+ export declare interface MenuProps {
1874
+ children: ReactNode;
1875
+ /** Controlled open state. */
1876
+ open?: boolean;
1877
+ defaultOpen?: boolean;
1878
+ onOpenChange?: (open: boolean) => void;
1879
+ /** Preferred side of the trigger. @default "bottom" */
1880
+ side?: Side;
1881
+ /** Alignment along the trigger. @default "start" */
1882
+ align?: Align;
1883
+ /** Gap between trigger and menu, px. @default 6 */
1884
+ sideOffset?: number;
1885
+ /** Close the menu after an item is selected. @default true */
1886
+ closeOnSelect?: boolean;
1887
+ }
1888
+
1889
+ declare function MenuRoot({ children, open: openProp, defaultOpen, onOpenChange, side, align, sideOffset, closeOnSelect, }: MenuProps): JSX.Element;
1890
+
1891
+ export declare interface MenuSectionProps extends ComponentPropsWithoutRef<"div"> {
1892
+ children?: ReactNode;
1893
+ }
1894
+
1895
+ declare function MenuSeparator({ className, ...rest }: MenuSectionProps): JSX.Element;
1896
+
1897
+ declare namespace MenuSeparator {
1898
+ var displayName: string;
1899
+ }
1900
+
1901
+ declare function MenuTrigger({ children }: MenuTriggerProps): ReactElement<Record<string, unknown>, string | JSXElementConstructor<any>>;
1902
+
1903
+ declare namespace MenuTrigger {
1904
+ var displayName: string;
1905
+ }
1906
+
1907
+ export declare interface MenuTriggerProps {
1908
+ /** A single focusable element (e.g. a Button); the menu wires it up via props. */
1909
+ children: ReactElement<Record<string, unknown>>;
1910
+ }
1911
+
1912
+ /** Compound API — `Modal` is the root; parts hang off it. */
1913
+ export declare const Modal: typeof ModalRoot & {
1914
+ Trigger: typeof ModalTrigger;
1915
+ Content: typeof ModalContent;
1916
+ Header: typeof ModalHeader;
1917
+ Body: typeof ModalBody;
1918
+ Footer: typeof ModalFooter;
1919
+ Title: typeof ModalTitle;
1920
+ Description: typeof ModalDescription;
1921
+ Close: typeof ModalClose;
1922
+ CloseButton: typeof ModalCloseButton;
1923
+ };
1924
+
1925
+ export declare function ModalBody({ children, className }: ModalSectionProps): JSX.Element;
1926
+
1927
+ /** Wraps a single element and closes the modal on click. */
1928
+ export declare function ModalClose({ children }: ModalSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
1929
+
1930
+ /** The corner ✕ button — place inside a Header. */
1931
+ export declare function ModalCloseButton({ className }: {
1932
+ className?: string;
1933
+ }): JSX.Element;
1934
+
1935
+ export declare function ModalContent({ children, className, ...rest }: ModalContentProps): JSX.Element | null;
1936
+
1937
+ export declare interface ModalContentProps extends ComponentPropsWithoutRef<"div"> {
1938
+ children: ReactNode;
1939
+ className?: string;
1940
+ }
1941
+
1942
+ export declare function ModalDescription({ children, className }: ModalSectionProps): JSX.Element;
1943
+
1944
+ export declare function ModalFooter({ children, className }: ModalSectionProps): JSX.Element;
1945
+
1946
+ export declare function ModalHeader({ children, className }: ModalSectionProps): JSX.Element;
1947
+
1948
+ export declare interface ModalProps {
1949
+ children: ReactNode;
1950
+ /** Controlled open state. */
1951
+ open?: boolean;
1952
+ defaultOpen?: boolean;
1953
+ onOpenChange?: (open: boolean) => void;
1954
+ size?: ModalSize;
1955
+ /** Vertically centre the panel (otherwise it sits toward the top). @default true */
1956
+ centered?: boolean;
1957
+ closeOnOverlayClick?: boolean;
1958
+ closeOnEsc?: boolean;
1959
+ }
1960
+
1961
+ declare function ModalRoot({ children, open: openProp, defaultOpen, onOpenChange, size, centered, closeOnOverlayClick, closeOnEsc, }: ModalProps): JSX.Element;
1962
+
1963
+ export declare interface ModalSectionProps {
1964
+ children: ReactNode;
1965
+ className?: string;
1966
+ }
1967
+
1968
+ export declare type ModalSize = "sm" | "md" | "lg" | "xl" | "full";
1969
+
1970
+ /** Trigger/Close wrap a single element and augment it (asChild-style). */
1971
+ export declare interface ModalSlotProps {
1972
+ children: ReactElement<any>;
1973
+ }
1974
+
1975
+ export declare function ModalTitle({ children, className }: ModalSectionProps): JSX.Element;
1976
+
1977
+ /** Wraps a single element and opens the modal on click (asChild-style). */
1978
+ export declare function ModalTrigger({ children }: ModalSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
1979
+
1980
+ export declare const MultiSelect: ForwardRefExoticComponent<MultiSelectProps & RefAttributes<HTMLDivElement>>;
1981
+
1982
+ export declare interface MultiSelectOptionGroup {
1983
+ group: string;
1984
+ options: MultiSelectOptionItem[];
1985
+ }
1986
+
1987
+ export declare interface MultiSelectOptionItem {
1988
+ value: string | number;
1989
+ label: ReactNode;
1990
+ /** Label used for search filtering (plain string fallback when label is JSX) */
1991
+ searchLabel?: string;
1992
+ disabled?: boolean;
1993
+ }
1994
+
1995
+ export declare type MultiSelectOptionOrGroup = MultiSelectOptionItem | MultiSelectOptionGroup;
1996
+
1997
+ export declare interface MultiSelectProps {
1998
+ options?: MultiSelectOptionOrGroup[];
1999
+ /** Controlled array of selected values */
2000
+ value?: Array<string | number>;
2001
+ /** Default selected values for uncontrolled usage */
2002
+ defaultValue?: Array<string | number>;
2003
+ /** Fires whenever the selection changes */
2004
+ onChange?: (values: Array<string | number>) => void;
2005
+ placeholder?: string;
2006
+ size?: MultiSelectSize;
2007
+ variant?: MultiSelectVariant;
2008
+ /** Hue for focus ring, selected tags, and highlighted options (via the accent channel). @default "brand" */
2009
+ colorScheme?: ColorScheme;
2010
+ disabled?: boolean;
2011
+ invalid?: boolean;
2012
+ /** Marks the multi-select as read-only */
2013
+ readOnly?: boolean;
2014
+ /** Show a button to clear all selections */
2015
+ clearable?: boolean;
2016
+ /** Maximum number of items that can be selected */
2017
+ max?: number;
2018
+ /** Text shown when no options match the search */
2019
+ emptyText?: string;
2020
+ /** Shows a loading state */
2021
+ loading?: boolean;
2022
+ /**
2023
+ * Form field name. When set, one hidden input per selected value is
2024
+ * rendered (repeated name, the standard multi-value convention) so the
2025
+ * MultiSelect participates in native <form> submission.
2026
+ */
2027
+ name?: string;
2028
+ className?: string;
2029
+ id?: string;
2030
+ }
2031
+
2032
+ export declare type MultiSelectSize = "sm" | "md" | "lg";
2033
+
2034
+ export declare type MultiSelectVariant = "outline" | "filled";
2035
+
2036
+ /**
2037
+ * A numeric field with steppers and full spinbutton keyboard support.
2038
+ * Typing is free-form; the value parses, clamps and rounds on commit
2039
+ * (blur / Enter / steppers).
2040
+ */
2041
+ export declare function NumberInput({ value: valueProp, defaultValue, onChange, min, max, step, precision, size, variant, invalid: invalidProp, disabled: disabledProp, readOnly: readOnlyProp, hideSteppers, className, id: idProp, onKeyDown, onBlur, ref, ...rest }: NumberInputProps & {
2042
+ ref?: Ref<HTMLInputElement>;
2043
+ }): JSX.Element;
2044
+
2045
+ export declare namespace NumberInput {
2046
+ var displayName: string;
2047
+ }
2048
+
2049
+ export declare interface NumberInputProps extends Omit<ComponentPropsWithoutRef<"input">, "size" | "value" | "defaultValue" | "onChange" | "min" | "max" | "step"> {
2050
+ /** Controlled numeric value; `null` = empty. */
2051
+ value?: number | null;
2052
+ defaultValue?: number | null;
2053
+ /** Fires with the parsed (and clamped) number, or `null` when cleared. */
2054
+ onChange?: (value: number | null) => void;
2055
+ min?: number;
2056
+ max?: number;
2057
+ /** Increment applied by the steppers and arrow keys. @default 1 */
2058
+ step?: number;
2059
+ /** Round committed values to this many decimal places. */
2060
+ precision?: number;
2061
+ size?: InputSize;
2062
+ variant?: InputVariant;
2063
+ invalid?: boolean;
2064
+ /** Hide the increment/decrement buttons. */
2065
+ hideSteppers?: boolean;
2066
+ }
2067
+
2068
+ /** Compound API — `Pagination` is the root; parts hang off it. */
2069
+ export declare const Pagination: typeof PaginationRoot & {
2070
+ List: typeof PaginationList;
2071
+ Item: typeof PaginationItem;
2072
+ Pages: typeof PaginationPages;
2073
+ Ellipsis: typeof PaginationEllipsis;
2074
+ Prev: typeof PaginationPrev;
2075
+ Next: typeof PaginationNext;
2076
+ First: typeof PaginationFirst;
2077
+ Last: typeof PaginationLast;
2078
+ PageText: typeof PaginationPageText;
2079
+ Jumper: typeof PaginationJumper;
2080
+ };
2081
+
2082
+ export declare interface PaginationControlProps {
2083
+ /** Override the default chevron with any node. */
2084
+ icon?: ReactNode;
2085
+ className?: string;
2086
+ }
2087
+
2088
+ export declare function PaginationEllipsis(): JSX.Element;
2089
+
2090
+ export declare function PaginationFirst(props: PaginationControlProps): JSX.Element;
2091
+
2092
+ export declare function PaginationItem({ page, children, className }: PaginationItemProps): JSX.Element;
2093
+
2094
+ export declare interface PaginationItemProps {
2095
+ page: number;
2096
+ children: ReactNode;
2097
+ className?: string;
2098
+ }
2099
+
2100
+ /** A quick-jump input (Ant's showQuickJumper). Press Enter to jump. */
2101
+ export declare function PaginationJumper({ className, label }: PaginationJumperProps): JSX.Element;
2102
+
2103
+ export declare interface PaginationJumperProps {
2104
+ className?: string;
2105
+ /** Label before the input. @default "Go to" */
2106
+ label?: ReactNode;
2107
+ }
2108
+
2109
+ export declare function PaginationLast(props: PaginationControlProps): JSX.Element;
2110
+
2111
+ export declare function PaginationList({ children, className }: PaginationListProps): JSX.Element;
2112
+
2113
+ export declare interface PaginationListProps {
2114
+ children: ReactNode;
2115
+ className?: string;
2116
+ }
2117
+
2118
+ export declare function PaginationNext(props: PaginationControlProps): JSX.Element;
2119
+
2120
+ /**
2121
+ * Renders the page-number buttons with ellipses — `boundaryCount` pages pinned
2122
+ * at each end and `siblings` pages on each side of the current page (the MUI model).
2123
+ */
2124
+ export declare function PaginationPages({ siblings, boundaryCount }: PaginationPagesProps): JSX.Element;
2125
+
2126
+ export declare interface PaginationPagesProps {
2127
+ /** Pages shown on each side of the current page. @default 1 */
2128
+ siblings?: number;
2129
+ /** Pages pinned at the start and end. @default 1 */
2130
+ boundaryCount?: number;
2131
+ }
2132
+
2133
+ /** A live text readout of the current page (Chakra's PageText / Ant's showTotal). */
2134
+ export declare function PaginationPageText({ className, format }: PaginationPageTextProps): JSX.Element;
2135
+
2136
+ export declare interface PaginationPageTextProps {
2137
+ className?: string;
2138
+ /** Custom text; receives the pagination state. Defaults to "Page X of Y". */
2139
+ format?: (state: {
2140
+ page: number;
2141
+ totalPages: number;
2142
+ count?: number;
2143
+ pageSize?: number;
2144
+ }) => ReactNode;
2145
+ }
2146
+
2147
+ export declare function PaginationPrev(props: PaginationControlProps): JSX.Element;
2148
+
2149
+ export declare interface PaginationProps {
2150
+ /** Current page (controlled). */
2151
+ page?: number;
2152
+ /** Initial page when uncontrolled. @default 1 */
2153
+ defaultPage?: number;
2154
+ /** Total number of pages. Provide this OR `count` + `pageSize`. */
2155
+ totalPages?: number;
2156
+ /** Total item count — with `pageSize`, pages are derived as `ceil(count / pageSize)`. */
2157
+ count?: number;
2158
+ /** Items per page, used with `count`. @default 10 */
2159
+ pageSize?: number;
2160
+ onPageChange?: (page: number) => void;
2161
+ /** Visual style of page items. @default "solid" */
2162
+ variant?: PaginationVariant;
2163
+ size?: PaginationSize;
2164
+ rounded?: PaginationRounded;
2165
+ /** Hue of the active page and focus rings. @default "brand" */
2166
+ colorScheme?: ColorScheme;
2167
+ disabled?: boolean;
2168
+ className?: string;
2169
+ children: ReactNode;
2170
+ }
2171
+
2172
+ declare function PaginationRoot({ page: controlledPage, defaultPage, totalPages, count, pageSize, onPageChange, variant, size, rounded, colorScheme, disabled, className, children, }: PaginationProps): JSX.Element;
2173
+
2174
+ export declare type PaginationRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
2175
+
2176
+ export declare type PaginationSize = "xs" | "sm" | "md" | "lg";
2177
+
2178
+ export declare type PaginationVariant = "solid" | "outline" | "subtle" | "plain";
2179
+
2180
+ export declare function PinInput({ length, value, defaultValue, onChange, onComplete, type, mask, size, variant, disabled: disabledProp, invalid: invalidProp, readOnly: readOnlyProp, placeholder, autoFocus, className, id: idProp, }: PinInputProps): JSX.Element;
2181
+
2182
+ export declare namespace PinInput {
2183
+ var displayName: string;
2184
+ }
2185
+
2186
+ export declare interface PinInputProps {
2187
+ /** Number of individual boxes (default 4) */
2188
+ length?: number;
2189
+ /** Controlled value — the full combined string */
2190
+ value?: string;
2191
+ /** Default value for uncontrolled usage */
2192
+ defaultValue?: string;
2193
+ /** Fires whenever any box changes; receives the full combined string */
2194
+ onChange?: (value: string) => void;
2195
+ /** Fires when every box has been filled */
2196
+ onComplete?: (value: string) => void;
2197
+ /** Character type validation */
2198
+ type?: PinInputType;
2199
+ /** Masks characters like a password field */
2200
+ mask?: boolean;
2201
+ size?: PinInputSize;
2202
+ variant?: PinInputVariant;
2203
+ disabled?: boolean;
2204
+ invalid?: boolean;
2205
+ /** Marks the pin input as read-only */
2206
+ readOnly?: boolean;
2207
+ /** Placeholder character shown in empty boxes */
2208
+ placeholder?: string;
2209
+ /** Auto-focus the first box on mount */
2210
+ autoFocus?: boolean;
2211
+ className?: string;
2212
+ id?: string;
2213
+ }
2214
+
2215
+ export declare type PinInputSize = "sm" | "md" | "lg";
2216
+
2217
+ export declare type PinInputType = "numeric" | "alphanumeric" | "alpha";
2218
+
2219
+ export declare type PinInputVariant = "outline" | "filled";
2220
+
2221
+ /** Compound API — `Popover` is the root; parts hang off it. */
2222
+ export declare const Popover: typeof PopoverRoot & {
2223
+ Trigger: typeof PopoverTrigger;
2224
+ Content: typeof PopoverContent;
2225
+ Title: typeof PopoverTitle;
2226
+ Description: typeof PopoverDescription;
2227
+ Close: typeof PopoverClose;
2228
+ };
2229
+
2230
+ export declare function PopoverClose({ children }: PopoverSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
2231
+
2232
+ export declare function PopoverContent({ children, className, withArrow, ...rest }: PopoverContentProps): JSX.Element | null;
2233
+
2234
+ export declare interface PopoverContentProps extends ComponentPropsWithoutRef<"div"> {
2235
+ children: ReactNode;
2236
+ className?: string;
2237
+ /** Render the arrow pointing at the trigger. @default false */
2238
+ withArrow?: boolean;
2239
+ }
2240
+
2241
+ export declare function PopoverDescription({ children, className }: PopoverSectionProps): JSX.Element;
2242
+
2243
+ export declare interface PopoverProps {
2244
+ children: ReactNode;
2245
+ open?: boolean;
2246
+ defaultOpen?: boolean;
2247
+ onOpenChange?: (open: boolean) => void;
2248
+ /** Preferred side of the trigger. @default "bottom" */
2249
+ side?: Side;
2250
+ /** Alignment along that side. @default "center" */
2251
+ align?: Align;
2252
+ sideOffset?: number;
2253
+ alignOffset?: number;
2254
+ /** Flip/shift to stay in view. @default true */
2255
+ avoidCollisions?: boolean;
2256
+ closeOnEsc?: boolean;
2257
+ closeOnOutsidePointer?: boolean;
2258
+ }
2259
+
2260
+ declare function PopoverRoot({ children, open: openProp, defaultOpen, onOpenChange, side, align, sideOffset, alignOffset, avoidCollisions, closeOnEsc, closeOnOutsidePointer, }: PopoverProps): JSX.Element;
2261
+
2262
+ export declare interface PopoverSectionProps {
2263
+ children: ReactNode;
2264
+ className?: string;
2265
+ }
2266
+
2267
+ export declare interface PopoverSlotProps {
2268
+ children: ReactElement<any>;
2269
+ }
2270
+
2271
+ export declare function PopoverTitle({ children, className }: PopoverSectionProps): JSX.Element;
2272
+
2273
+ export declare function PopoverTrigger({ children }: PopoverSlotProps): ReactElement<any, string | JSXElementConstructor<any>>;
2274
+
2275
+ /** Renders children into `document.body` (after mount, so it's SSR-safe). */
2276
+ export declare function Portal({ children, container }: {
2277
+ children: ReactNode;
2278
+ container?: HTMLElement;
2279
+ }): ReactPortal | null;
2280
+
2281
+ /**
2282
+ * Determinate or indeterminate progress, as a linear bar or a circular ring.
2283
+ * Omitting `value` switches to the indeterminate animation.
2284
+ */
2285
+ export declare function Progress({ value, max, shape, size, colorScheme, showValueLabel, className, ref, ...rest }: ProgressProps & {
2286
+ ref?: Ref<HTMLDivElement>;
2287
+ }): JSX.Element;
2288
+
2289
+ export declare namespace Progress {
2290
+ var displayName: string;
2291
+ }
2292
+
2293
+ export declare interface ProgressProps extends ComponentPropsWithoutRef<"div"> {
2294
+ /**
2295
+ * Current progress. Omit it entirely for an indeterminate animation
2296
+ * (unknown duration).
2297
+ */
2298
+ value?: number;
2299
+ /** The value that counts as 100%. @default 100 */
2300
+ max?: number;
2301
+ /** Linear bar or circular ring. @default "line" */
2302
+ shape?: ProgressShape;
2303
+ size?: ProgressSize;
2304
+ /** Hue of the filled portion (via the accent channel). @default "brand" */
2305
+ colorScheme?: ColorScheme;
2306
+ /** Render the percentage as text (beside the bar / inside the ring). */
2307
+ showValueLabel?: boolean;
2308
+ }
2309
+
2310
+ export declare type ProgressShape = "line" | "circle";
2311
+
2312
+ export declare type ProgressSize = "sm" | "md" | "lg";
2313
+
2314
+ export declare const QrCode: typeof QrCodeRoot;
2315
+
2316
+ export declare type QrCodeErrorLevel = "L" | "M" | "Q" | "H";
2317
+
2318
+ export declare function QrCodeRoot({ value, size, pixelSize, errorLevel, color, bgColor, overlay, overlaySize, status, onRefresh, downloadable, downloadFileName, className, style, }: QrCodeRootProps): JSX.Element;
2319
+
2320
+ export declare namespace QrCodeRoot {
2321
+ var displayName: string;
2322
+ }
2323
+
2324
+ export declare interface QrCodeRootProps {
2325
+ /** The string value to encode in the QR code */
2326
+ value: string;
2327
+ /** Preset size */
2328
+ size?: QrCodeSize;
2329
+ /** Explicit pixel size (overrides `size`) */
2330
+ pixelSize?: number;
2331
+ /** Error correction level */
2332
+ errorLevel?: QrCodeErrorLevel;
2333
+ /** Foreground / dot colour */
2334
+ color?: string;
2335
+ /** Background colour */
2336
+ bgColor?: string;
2337
+ /** A node to render as an overlay in the centre (e.g. a logo) */
2338
+ overlay?: ReactNode;
2339
+ /** Size of the overlay as a percentage of the QR code total size (default 20) */
2340
+ overlaySize?: number;
2341
+ /** Status overlay to display over the QR code */
2342
+ status?: QrCodeStatus;
2343
+ /** Called when the user clicks "Refresh" on an expired code */
2344
+ onRefresh?: () => void;
2345
+ /** Render a download button below the QR code */
2346
+ downloadable?: boolean;
2347
+ /** File name for the downloaded SVG (without extension) */
2348
+ downloadFileName?: string;
2349
+ className?: string;
2350
+ style?: CSSProperties;
2351
+ }
2352
+
2353
+ export declare type QrCodeSize = "sm" | "md" | "lg" | "xl";
2354
+
2355
+ export declare type QrCodeStatus = "active" | "loading" | "expired" | "scanned";
2356
+
2357
+ export declare const Radio: typeof RadioBase & {
2358
+ Group: typeof RadioGroup;
2359
+ };
2360
+
2361
+ export declare function RadioBase({ children, size, colorScheme, invalid: invalidProp, disabled: disabledProp, checked: checkedProp, defaultChecked, onChange: onChangeProp, readOnly: readOnlyProp, value, name: nameProp, className, ref, ...props }: RadioProps & {
2362
+ ref?: Ref<HTMLInputElement>;
2363
+ }): JSX.Element;
2364
+
2365
+ export declare namespace RadioBase {
2366
+ var displayName: string;
2367
+ }
2368
+
2369
+ export declare function RadioGroup({ value, defaultValue, onChange, name: nameProp, disabled, colorScheme, orientation, children, className, ...rest }: RadioGroupProps): JSX.Element;
2370
+
2371
+ export declare namespace RadioGroup {
2372
+ var displayName: string;
2373
+ }
2374
+
2375
+ export declare interface RadioGroupContextValue {
2376
+ groupValue: string;
2377
+ selectValue: (val: string) => void;
2378
+ name: string;
2379
+ disabled?: boolean;
2380
+ colorScheme?: ColorScheme;
2381
+ }
2382
+
2383
+ export declare interface RadioGroupProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue"> {
2384
+ /** Controlled selected value */
2385
+ value?: string;
2386
+ /** Default value (uncontrolled) */
2387
+ defaultValue?: string;
2388
+ /** Callback when selection changes */
2389
+ onChange?: (value: string) => void;
2390
+ /** Name attribute applied to all radio inputs in the group */
2391
+ name?: string;
2392
+ /** Disables all radios in the group */
2393
+ disabled?: boolean;
2394
+ /** Hue applied to every radio in the group (each can still override). */
2395
+ colorScheme?: ColorScheme;
2396
+ /** Layout direction */
2397
+ orientation?: "horizontal" | "vertical";
2398
+ children: ReactNode;
2399
+ }
2400
+
2401
+ export declare interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
2402
+ /** Visual size */
2403
+ size?: RadioSize;
2404
+ /** Hue the selected radio paints with (via the accent channel). @default "brand" */
2405
+ colorScheme?: ColorScheme;
2406
+ /** Label content */
2407
+ children?: ReactNode;
2408
+ /** Invalid/error state */
2409
+ invalid?: boolean;
2410
+ /** Read-only state */
2411
+ readOnly?: boolean;
2412
+ }
2413
+
2414
+ export declare type RadioSize = "sm" | "md" | "lg";
2415
+
2416
+ export declare function RangeSlider({ min, max, step, value: valueProp, defaultValue, onChange, size, colorScheme, showTooltip, marks, disabled: disabledProp, invalid: invalidProp, readOnly: readOnlyProp, className, ref, }: RangeSliderProps & {
2417
+ ref?: Ref<HTMLDivElement>;
2418
+ }): JSX.Element;
2419
+
2420
+ export declare namespace RangeSlider {
2421
+ var displayName: string;
2422
+ }
2423
+
2424
+ export declare interface RangeSliderProps {
2425
+ min?: number;
2426
+ max?: number;
2427
+ step?: number;
2428
+ /** Controlled value as [start, end] */
2429
+ value?: [number, number];
2430
+ defaultValue?: [number, number];
2431
+ onChange?: (value: [number, number]) => void;
2432
+ size?: SliderSize;
2433
+ /** Hue for the filled track and thumbs (via the accent channel). @default "brand" */
2434
+ colorScheme?: ColorScheme;
2435
+ showTooltip?: boolean;
2436
+ marks?: boolean | SliderMark[];
2437
+ disabled?: boolean;
2438
+ invalid?: boolean;
2439
+ /** Marks the range slider as read-only */
2440
+ readOnly?: boolean;
2441
+ className?: string;
2442
+ }
2443
+
2444
+ /** Wraps every key of a CVA variant-props object so each accepts responsive input. */
2445
+ declare type Responsive<T> = {
2446
+ [K in keyof T]: ResponsiveProp<NonNullable<T[K]>>;
2447
+ };
2448
+
2449
+ declare type ResponsiveKey = "base" | Breakpoint;
2450
+
2451
+ /** A prop value: either a raw token, or a per-breakpoint map of tokens. */
2452
+ declare type ResponsiveProp<Value> = Value | Partial<Record<ResponsiveKey, Value>>;
2453
+
2454
+ export declare const Select: ForwardRefExoticComponent<SelectProps & RefAttributes<HTMLButtonElement>>;
2455
+
2456
+ export declare interface SelectOptionGroup {
2457
+ group: string;
2458
+ options: SelectOptionItem[];
2459
+ }
2460
+
2461
+ export declare interface SelectOptionItem {
2462
+ value: string | number;
2463
+ label: ReactNode;
2464
+ disabled?: boolean;
2465
+ }
2466
+
2467
+ export declare type SelectOptionOrGroup = SelectOptionItem | SelectOptionGroup;
2468
+
2469
+ export declare interface SelectProps {
2470
+ /** List of options or option groups */
2471
+ options?: SelectOptionOrGroup[];
2472
+ /** Controlled selected value */
2473
+ value?: string | number | null;
2474
+ /** Uncontrolled default value */
2475
+ defaultValue?: string | number | null;
2476
+ /** Called when selection changes; receives `null` when cleared */
2477
+ onChange?: (value: string | number | null) => void;
2478
+ /** Called when selection is explicitly cleared */
2479
+ onClear?: () => void;
2480
+ placeholder?: string;
2481
+ size?: SelectSize;
2482
+ variant?: SelectVariant;
2483
+ /** Hue for focus ring and selected-option highlight (via the accent channel). @default "brand" */
2484
+ colorScheme?: ColorScheme;
2485
+ disabled?: boolean;
2486
+ invalid?: boolean;
2487
+ /** Marks the select as read-only */
2488
+ readOnly?: boolean;
2489
+ /** Show a clear button when a value is selected */
2490
+ clearable?: boolean;
2491
+ /** Show search input inside the dropdown */
2492
+ searchable?: boolean;
2493
+ /** Shows a loading spinner instead of the chevron */
2494
+ loading?: boolean;
2495
+ /** Text shown when no options match */
2496
+ emptyText?: string;
2497
+ /**
2498
+ * Form field name. When set, a hidden input carrying the selected value is
2499
+ * rendered so the Select participates in native <form> submission.
2500
+ */
2501
+ name?: string;
2502
+ className?: string;
2503
+ id?: string;
2504
+ }
2505
+
2506
+ export declare type SelectSize = "sm" | "md" | "lg";
2507
+
2508
+ export declare type SelectVariant = "outline" | "filled";
2509
+
2510
+ export declare const Separator: SeparatorComponent;
2511
+
2512
+ declare type SeparatorComponent = <T extends ElementType = "div">(props: SeparatorProps<T> & {
2513
+ ref?: Ref<any>;
2514
+ }) => ReactNode;
2515
+
2516
+ /** `orientation` and `variant` each accept a scalar token or a responsive map. */
2517
+ declare type SeparatorCustomProps = Responsive<VariantProps<typeof separatorVariants>>;
2518
+
2519
+ export declare type SeparatorProps<T extends ElementType = "div"> = BoxProps<T> & SeparatorCustomProps;
2520
+
2521
+ declare const separatorVariants: (props?: ({
2522
+ readonly orientation?: "horizontal" | "vertical" | null | undefined;
2523
+ readonly variant?: "solid" | "dashed" | "dotted" | null | undefined;
2524
+ } & ClassProp) | undefined) => string;
2525
+
2526
+ declare type Side = "top" | "right" | "bottom" | "left";
2527
+
2528
+ /**
2529
+ * A pulsing placeholder that holds space while content loads. Hidden from
2530
+ * assistive tech (`aria-hidden`) — pair the surrounding region with
2531
+ * `aria-busy` or a Spinner if the loading state itself must be announced.
2532
+ */
2533
+ export declare function Skeleton({ variant, animated, loaded, className, children, ref, ...rest }: SkeletonProps & {
2534
+ ref?: Ref<HTMLDivElement>;
2535
+ }): JSX.Element;
2536
+
2537
+ export declare namespace Skeleton {
2538
+ var displayName: string;
2539
+ }
2540
+
2541
+ export declare interface SkeletonProps extends ComponentPropsWithoutRef<"div"> {
2542
+ /**
2543
+ * Placeholder shape: `text` is a line the height of body text, `circle`
2544
+ * suits avatars (size it square via className/style), `rect` is a generic
2545
+ * rounded block.
2546
+ * @default "text"
2547
+ */
2548
+ variant?: SkeletonVariant;
2549
+ /** Disable the pulse (it also pauses automatically under prefers-reduced-motion). */
2550
+ animated?: boolean;
2551
+ /**
2552
+ * Render children instead of the placeholder once loading is done —
2553
+ * `<Skeleton loaded={!!data}>…</Skeleton>` keeps layout stable.
2554
+ */
2555
+ loaded?: boolean;
2556
+ }
2557
+
2558
+ export declare type SkeletonVariant = "text" | "circle" | "rect";
2559
+
2560
+ export declare function Slider({ min, max, step, value: valueProp, defaultValue, onChange, size, colorScheme, showTooltip, marks, disabled: disabledProp, invalid: invalidProp, readOnly: readOnlyProp, className, id: idProp, ref, }: SliderProps & {
2561
+ ref?: Ref<HTMLDivElement>;
2562
+ }): JSX.Element;
2563
+
2564
+ export declare namespace Slider {
2565
+ var displayName: string;
2566
+ }
2567
+
2568
+ export declare interface SliderMark {
2569
+ value: number;
2570
+ label?: string;
2571
+ }
2572
+
2573
+ export declare interface SliderProps {
2574
+ min?: number;
2575
+ max?: number;
2576
+ step?: number;
2577
+ /** Controlled value */
2578
+ value?: number;
2579
+ defaultValue?: number;
2580
+ onChange?: (value: number) => void;
2581
+ size?: SliderSize;
2582
+ /** Hue for the filled track and thumb (via the accent channel). @default "brand" */
2583
+ colorScheme?: ColorScheme;
2584
+ /** Show value tooltip on the thumb. Default true */
2585
+ showTooltip?: boolean;
2586
+ /** true = auto-marks at each step; array = custom marks */
2587
+ marks?: boolean | SliderMark[];
2588
+ disabled?: boolean;
2589
+ invalid?: boolean;
2590
+ /** Marks the slider as read-only */
2591
+ readOnly?: boolean;
2592
+ className?: string;
2593
+ id?: string;
2594
+ }
2595
+
2596
+ export declare type SliderSize = "sm" | "md" | "lg";
2597
+
2598
+ /**
2599
+ * An indeterminate loading indicator. Announces itself as a live status
2600
+ * region with a visually-hidden label; the arc stays animated under
2601
+ * prefers-reduced-motion because it conveys state, not decoration.
2602
+ */
2603
+ export declare function Spinner({ size, colorScheme, label, className, ref, ...rest }: SpinnerProps & {
2604
+ ref?: Ref<HTMLSpanElement>;
2605
+ }): JSX.Element;
2606
+
2607
+ export declare namespace Spinner {
2608
+ var displayName: string;
2609
+ }
2610
+
2611
+ export declare interface SpinnerProps extends ComponentPropsWithoutRef<"span"> {
2612
+ size?: SpinnerSize;
2613
+ /** Hue of the spinning arc (via the accent channel). @default "brand" */
2614
+ colorScheme?: ColorScheme;
2615
+ /**
2616
+ * Accessible loading text announced to screen readers (visually hidden).
2617
+ * @default "Loading…"
2618
+ */
2619
+ label?: string;
2620
+ }
2621
+
2622
+ export declare type SpinnerSize = "xs" | "sm" | "md" | "lg" | "xl";
2623
+
2624
+ export declare const Stack: StackComponent;
2625
+
2626
+ declare type StackComponent = <T extends ElementType = "div">(props: StackProps<T> & {
2627
+ ref?: Ref<any>;
2628
+ }) => ReactNode;
2629
+
2630
+ declare interface StackCustomProps {
2631
+ direction?: "horizontal" | "vertical";
2632
+ }
2633
+
2634
+ /** HStack/VStack are presets — `direction` is fixed, so it's omitted from their props. */
2635
+ declare type StackPresetComponent = <T extends ElementType = "div">(props: Omit<StackProps<T>, "direction"> & {
2636
+ ref?: Ref<any>;
2637
+ }) => ReactNode;
2638
+
2639
+ export declare type StackProps<T extends ElementType = "div"> = StackCustomProps & Omit<FlexProps<T>, "direction">;
2640
+
2641
+ export declare const Stat: typeof StatRoot & {
2642
+ Label: typeof StatLabel;
2643
+ Value: typeof StatValue;
2644
+ HelpText: typeof StatHelpText;
2645
+ Indicator: typeof StatIndicator;
2646
+ };
2647
+
2648
+ export declare function StatHelpText({ children, className }: StatHelpTextProps): JSX.Element;
2649
+
2650
+ export declare interface StatHelpTextProps {
2651
+ children: ReactNode;
2652
+ className?: string;
2653
+ }
2654
+
2655
+ export declare function StatIndicator({ type, children, className }: StatIndicatorProps): JSX.Element;
2656
+
2657
+ export declare interface StatIndicatorProps {
2658
+ type?: "increase" | "decrease";
2659
+ children?: ReactNode;
2660
+ className?: string;
2661
+ }
2662
+
2663
+ export declare function StatLabel({ children, className }: StatLabelProps): JSX.Element;
2664
+
2665
+ export declare interface StatLabelProps {
2666
+ children: ReactNode;
2667
+ className?: string;
2668
+ }
2669
+
2670
+ export declare interface StatProps {
2671
+ children: ReactNode;
2672
+ className?: string;
2673
+ }
2674
+
2675
+ declare function StatRoot({ children, className }: StatProps): JSX.Element;
2676
+
2677
+ declare type StatusShorthand = (title: ToastOptions["title"], options?: Omit<ToastOptions, "title" | "status">) => string;
2678
+
2679
+ export declare function StatValue({ children, className }: StatValueProps): JSX.Element;
2680
+
2681
+ export declare interface StatValueProps {
2682
+ children: ReactNode;
2683
+ className?: string;
2684
+ }
2685
+
2686
+ export declare const Steps: typeof StepsRoot & {
2687
+ List: typeof StepsList;
2688
+ Item: typeof StepsItem;
2689
+ Indicator: typeof StepsIndicator;
2690
+ Title: typeof StepsTitle;
2691
+ Description: typeof StepsDescription;
2692
+ Content: typeof StepsContent;
2693
+ Completed: typeof StepsCompleted;
2694
+ Prev: typeof StepsPrev;
2695
+ Next: typeof StepsNext;
2696
+ };
2697
+
2698
+ /** Steps.Completed — renders once every step is done (`step === count`). */
2699
+ export declare function StepsCompleted({ children, className, ...rest }: StepsCompletedProps): JSX.Element | null;
2700
+
2701
+ export declare namespace StepsCompleted {
2702
+ var displayName: string;
2703
+ }
2704
+
2705
+ export declare interface StepsCompletedProps extends ComponentPropsWithoutRef<"div"> {
2706
+ children: ReactNode;
2707
+ }
2708
+
2709
+ /** Steps.Content — renders only when its `index` matches the active step. */
2710
+ export declare function StepsContent({ index, children, className, ...rest }: StepsContentProps): JSX.Element | null;
2711
+
2712
+ export declare namespace StepsContent {
2713
+ var displayName: string;
2714
+ }
2715
+
2716
+ export declare interface StepsContentProps extends ComponentPropsWithoutRef<"div"> {
2717
+ /** Show this content only when it is the active step. */
2718
+ index: number;
2719
+ children: ReactNode;
2720
+ }
2721
+
2722
+ /** Steps.Description — secondary text beneath the title. Always muted. */
2723
+ export declare function StepsDescription({ children, className }: StepsDescriptionProps): JSX.Element;
2724
+
2725
+ export declare namespace StepsDescription {
2726
+ var displayName: string;
2727
+ }
2728
+
2729
+ export declare interface StepsDescriptionProps {
2730
+ children: ReactNode;
2731
+ className?: string;
2732
+ }
2733
+
2734
+ /**
2735
+ * Steps.Indicator — the circle (solid/subtle) or dot. Defaults to the step number,
2736
+ * a check when completed, or "!" on error; override by passing children.
2737
+ */
2738
+ export declare function StepsIndicator({ children, className, ...rest }: StepsIndicatorProps): JSX.Element;
2739
+
2740
+ export declare namespace StepsIndicator {
2741
+ var displayName: string;
2742
+ }
2743
+
2744
+ export declare interface StepsIndicatorProps extends ComponentPropsWithoutRef<"span"> {
2745
+ /** Override the default content (number / check / "!"). */
2746
+ children?: ReactNode;
2747
+ }
2748
+
2749
+ /**
2750
+ * Steps.Item — derives this step's status from the active step, exposes it via
2751
+ * the item context, and lays out the indicator + label + connector for all three
2752
+ * modes (horizontal inline, labelPlacement="bottom", vertical).
2753
+ */
2754
+ export declare function StepsItem({ children, index, disabled: disabledProp, error, className, ...rest }: StepsItemProps): JSX.Element;
2755
+
2756
+ export declare namespace StepsItem {
2757
+ var displayName: string;
2758
+ }
2759
+
2760
+ export declare interface StepsItemProps extends Omit<ComponentPropsWithoutRef<"li">, "title"> {
2761
+ /** Injected by Steps.List — its position in the list. */
2762
+ index?: number;
2763
+ /** Prevent navigation to this step. */
2764
+ disabled?: boolean;
2765
+ /** Force the error status on this step. */
2766
+ error?: boolean;
2767
+ children: ReactNode;
2768
+ }
2769
+
2770
+ /** Where the title/description sit relative to the indicator (horizontal only). */
2771
+ export declare type StepsLabelPlacement = "inline" | "bottom";
2772
+
2773
+ /**
2774
+ * Steps.List — the ordered list of steps. It counts its Item children (feeding
2775
+ * `count` back to the context) and injects each item's `index`. Connectors are
2776
+ * drawn by each Item itself, so the list stays a simple flex container.
2777
+ */
2778
+ export declare function StepsList({ children, className, ...rest }: StepsListProps): JSX.Element;
2779
+
2780
+ export declare namespace StepsList {
2781
+ var displayName: string;
2782
+ }
2783
+
2784
+ export declare interface StepsListProps extends ComponentPropsWithoutRef<"ol"> {
2785
+ children: ReactNode;
2786
+ }
2787
+
2788
+ export declare interface StepsNavProps extends ComponentPropsWithoutRef<"button"> {
2789
+ children?: ReactNode;
2790
+ }
2791
+
2792
+ /** Steps.Next — steps forward (up to `count`, which marks completion). */
2793
+ export declare function StepsNext({ children, className, disabled, onClick, ...rest }: StepsNavProps): JSX.Element;
2794
+
2795
+ export declare namespace StepsNext {
2796
+ var displayName: string;
2797
+ }
2798
+
2799
+ export declare type StepsOrientation = "horizontal" | "vertical";
2800
+
2801
+ /** Steps.Prev — steps backward. Auto-disabled at the first step. */
2802
+ export declare function StepsPrev({ children, className, disabled, onClick, ...rest }: StepsNavProps): JSX.Element;
2803
+
2804
+ export declare namespace StepsPrev {
2805
+ var displayName: string;
2806
+ }
2807
+
2808
+ export declare interface StepsProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
2809
+ /** Controlled active step index (0-based). */
2810
+ step?: number;
2811
+ /** Uncontrolled initial step index. */
2812
+ defaultStep?: number;
2813
+ /** Fires with the next step index whenever navigation occurs. */
2814
+ onStepChange?: (step: number) => void;
2815
+ /** Total steps. Optional — Steps.List counts its children automatically. */
2816
+ count?: number;
2817
+ orientation?: StepsOrientation;
2818
+ variant?: StepsVariant;
2819
+ size?: StepsSize;
2820
+ /** Restrict navigation to the next step only (no skipping ahead). */
2821
+ linear?: boolean;
2822
+ /** Horizontal only — `"bottom"` centers titles beneath the indicators (default `"inline"`). */
2823
+ labelPlacement?: StepsLabelPlacement;
2824
+ /** Make each indicator a button that jumps to its step. */
2825
+ clickable?: boolean;
2826
+ children: ReactNode;
2827
+ }
2828
+
2829
+ /**
2830
+ * Steps.Root — owns the step state machine and shares it via context so the
2831
+ * sub-parts never prop-drill. Supports controlled (`step`) and uncontrolled
2832
+ * (`defaultStep`) usage. The context value is memoized so static parts (titles,
2833
+ * descriptions) don't re-render unless something they read actually changes.
2834
+ */
2835
+ declare function StepsRoot({ step: stepProp, defaultStep, onStepChange, count: countProp, orientation, variant, size, linear, labelPlacement, clickable, className, children, ...rest }: StepsProps): JSX.Element;
2836
+
2837
+ declare namespace StepsRoot {
2838
+ var displayName: string;
2839
+ }
2840
+
2841
+ export declare type StepsSize = "sm" | "md" | "lg";
2842
+
2843
+ /** The resolved status of a single step. */
2844
+ export declare type StepStatus = "upcoming" | "active" | "completed" | "error";
2845
+
2846
+ /** Steps.Title — the step's heading. Composes our Text primitive; colour tracks status. */
2847
+ export declare function StepsTitle({ children, className }: StepsTitleProps): JSX.Element;
2848
+
2849
+ export declare namespace StepsTitle {
2850
+ var displayName: string;
2851
+ }
2852
+
2853
+ export declare interface StepsTitleProps {
2854
+ children: ReactNode;
2855
+ className?: string;
2856
+ }
2857
+
2858
+ export declare type StepsVariant = "solid" | "subtle" | "dot";
2859
+
2860
+ export declare function Switch({ size, children, colorScheme, invalid: invalidProp, disabled: disabledProp, checked: checkedProp, defaultChecked, onChange: onChangeProp, readOnly: readOnlyProp, className, id: idProp, ref, ...props }: SwitchProps & {
2861
+ ref?: Ref<HTMLInputElement>;
2862
+ }): JSX.Element;
2863
+
2864
+ export declare namespace Switch {
2865
+ var displayName: string;
2866
+ }
2867
+
2868
+ export declare interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
2869
+ /** Visual size of the toggle */
2870
+ size?: SwitchSize;
2871
+ /** Hue the "on" track paints with (via the accent channel). @default "brand" */
2872
+ colorScheme?: ColorScheme;
2873
+ /** Label rendered beside the switch */
2874
+ children?: ReactNode;
2875
+ /** Marks the switch as invalid */
2876
+ invalid?: boolean;
2877
+ /** Read-only state */
2878
+ readOnly?: boolean;
2879
+ }
2880
+
2881
+ export declare type SwitchSize = "sm" | "md" | "lg";
2882
+
2883
+ /** Compound API — `Table` is the root; parts hang off it. */
2884
+ export declare const Table: typeof TableRoot & {
2885
+ Header: typeof TableHeader;
2886
+ Body: typeof TableBody;
2887
+ Footer: typeof TableFooter;
2888
+ Row: typeof TableRow;
2889
+ Head: typeof TableHead;
2890
+ Cell: typeof TableCell;
2891
+ Caption: typeof TableCaption;
2892
+ };
2893
+
2894
+ export declare function TableBody({ children, className, ...rest }: TableSectionProps): JSX.Element;
2895
+
2896
+ export declare function TableCaption({ className, placement, ref, ...rest }: TableCaptionProps & {
2897
+ ref?: Ref<HTMLTableCaptionElement>;
2898
+ }): JSX.Element;
2899
+
2900
+ export declare namespace TableCaption {
2901
+ var displayName: string;
2902
+ }
2903
+
2904
+ export declare interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {
2905
+ placement?: "top" | "bottom";
2906
+ className?: string;
2907
+ }
2908
+
2909
+ export declare function TableCell({ children, className, ...rest }: TableCellProps): JSX.Element;
2910
+
2911
+ export declare interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {
2912
+ children?: ReactNode;
2913
+ className?: string;
2914
+ }
2915
+
2916
+ export declare function TableFooter({ children, className, ...rest }: TableSectionProps): JSX.Element;
2917
+
2918
+ export declare function TableHead({ children, className, scope, ...rest }: TableHeadProps): JSX.Element;
2919
+
2920
+ export declare function TableHeader({ children, className, ...rest }: TableSectionProps): JSX.Element;
2921
+
2922
+ export declare interface TableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {
2923
+ children?: ReactNode;
2924
+ className?: string;
2925
+ }
2926
+
2927
+ export declare interface TableProps extends HTMLAttributes<HTMLTableElement> {
2928
+ children: ReactNode;
2929
+ variant?: TableVariant;
2930
+ size?: TableSize;
2931
+ /** Zebra-stripe the body rows. */
2932
+ striped?: boolean;
2933
+ /** Highlight rows on hover. */
2934
+ interactive?: boolean;
2935
+ /** Pin the header while the body scrolls. */
2936
+ stickyHeader?: boolean;
2937
+ className?: string;
2938
+ }
2939
+
2940
+ declare function TableRoot({ children, variant, size, striped, interactive, stickyHeader, className, ...rest }: TableProps): JSX.Element;
2941
+
2942
+ export declare function TableRow({ children, className, ...rest }: TableRowProps): JSX.Element;
2943
+
2944
+ export declare interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
2945
+ children: ReactNode;
2946
+ className?: string;
2947
+ }
2948
+
2949
+ export declare interface TableSectionProps extends HTMLAttributes<HTMLTableSectionElement> {
2950
+ children: ReactNode;
2951
+ className?: string;
2952
+ }
2953
+
2954
+ export declare type TableSize = "sm" | "md" | "lg";
2955
+
2956
+ export declare type TableVariant = "line" | "outline";
2957
+
2958
+ export declare const Tabs: typeof TabsRoot & {
2959
+ List: typeof TabsList;
2960
+ Trigger: typeof TabsTrigger;
2961
+ Content: typeof TabsContent;
2962
+ };
2963
+
2964
+ /** automatic = arrow keys select on focus; manual = arrow moves focus, Enter/Space selects. */
2965
+ export declare type TabsActivationMode = "automatic" | "manual";
2966
+
2967
+ /**
2968
+ * Tabs.Content — the panel for one tab. Unmounted when inactive, unless the Root
2969
+ * sets `keepMounted` (then it stays mounted but `hidden`, preserving its state).
2970
+ */
2971
+ export declare function TabsContent({ value, className, children, ...rest }: TabsContentProps): JSX.Element | null;
2972
+
2973
+ export declare namespace TabsContent {
2974
+ var displayName: string;
2975
+ }
2976
+
2977
+ export declare interface TabsContentProps extends ComponentPropsWithoutRef<"div"> {
2978
+ /** Matches the trigger's `value`. */
2979
+ value: string;
2980
+ children: ReactNode;
2981
+ }
2982
+
2983
+ /**
2984
+ * Tabs.List — the tablist. For the `line` variant it renders a single indicator
2985
+ * that slides to the active trigger (measured from the DOM, recomputed on value
2986
+ * change and on resize), giving the animated ink-bar effect.
2987
+ */
2988
+ export declare function TabsList({ children, className, ...rest }: TabsListProps): JSX.Element;
2989
+
2990
+ export declare namespace TabsList {
2991
+ var displayName: string;
2992
+ }
2993
+
2994
+ export declare interface TabsListProps extends ComponentPropsWithoutRef<"div"> {
2995
+ children: ReactNode;
2996
+ }
2997
+
2998
+ export declare type TabsOrientation = "horizontal" | "vertical";
2999
+
3000
+ export declare interface TabsProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
3001
+ /** Controlled active value. */
3002
+ value?: string;
3003
+ /** Uncontrolled initial value. */
3004
+ defaultValue?: string;
3005
+ onValueChange?: (value: string) => void;
3006
+ orientation?: TabsOrientation;
3007
+ variant?: TabsVariant;
3008
+ /** Hue for the active tab, indicator and focus rings (via the accent channel). @default "brand" */
3009
+ colorScheme?: ColorScheme;
3010
+ size?: TabsSize;
3011
+ /** Stretch triggers to fill the list width. */
3012
+ fitted?: boolean;
3013
+ /** Apply pill/rounded radii to applicable variants (subtle/segmented/outline). */
3014
+ rounded?: boolean;
3015
+ /** `"automatic"` (default) selects on focus; `"manual"` selects on Enter/Space. */
3016
+ activationMode?: TabsActivationMode;
3017
+ /** Keep inactive panels mounted (hidden) rather than unmounting them. */
3018
+ keepMounted?: boolean;
3019
+ /** Wrap focus around the ends during arrow-key navigation (default true). */
3020
+ loop?: boolean;
3021
+ children: ReactNode;
3022
+ }
3023
+
3024
+ /**
3025
+ * Tabs.Root — owns the active-value state (controlled or uncontrolled) and shares
3026
+ * it + config via a memoized context. Renders a flex container that stacks the
3027
+ * list and panels (column for horizontal tabs, row for vertical).
3028
+ */
3029
+ declare function TabsRoot({ value: valueProp, defaultValue, onValueChange, orientation, variant, colorScheme, size, fitted, rounded, activationMode, keepMounted, loop, className, children, ...rest }: TabsProps): JSX.Element;
3030
+
3031
+ declare namespace TabsRoot {
3032
+ var displayName: string;
3033
+ }
3034
+
3035
+ export declare type TabsSize = "sm" | "md" | "lg";
3036
+
3037
+ /**
3038
+ * Tabs.Trigger — a single tab button. Implements the ARIA tabs keyboard pattern:
3039
+ * roving tabindex (only the selected tab is in the tab order), arrow keys move
3040
+ * focus along the orientation, Home/End jump to ends, and `activationMode`
3041
+ * decides whether arrowing also selects (automatic) or just moves focus (manual).
3042
+ */
3043
+ export declare function TabsTrigger({ value, disabled, className, children, onClick, onKeyDown, ...rest }: TabsTriggerProps): JSX.Element;
3044
+
3045
+ export declare namespace TabsTrigger {
3046
+ var displayName: string;
3047
+ }
3048
+
3049
+ export declare interface TabsTriggerProps extends Omit<ComponentPropsWithoutRef<"button">, "value"> {
3050
+ /** Unique value linking this trigger to its Content. */
3051
+ value: string;
3052
+ disabled?: boolean;
3053
+ children: ReactNode;
3054
+ }
3055
+
3056
+ export declare type TabsVariant = "line" | "subtle" | "segmented" | "outline" | "plain";
3057
+
3058
+ export declare const Tag: typeof TagRoot & {
3059
+ Checkable: typeof CheckableTag;
3060
+ Group: typeof CheckableTagGroup;
3061
+ };
3062
+
3063
+ export declare type TagColorScheme = ColorScheme;
3064
+
3065
+ export declare interface TagOption {
3066
+ label: ReactNode;
3067
+ value: string | number;
3068
+ }
3069
+
3070
+ export declare interface TagProps extends Omit<HTMLAttributes<HTMLSpanElement>, "color"> {
3071
+ children?: ReactNode;
3072
+ size?: TagSize;
3073
+ variant?: TagVariant;
3074
+ /** Hue the tag paints with. @default "gray" */
3075
+ colorScheme?: TagColorScheme;
3076
+ /** Element before the label (icon, avatar…). */
3077
+ startElement?: ReactNode;
3078
+ /** Element after the label (icon…). */
3079
+ endElement?: ReactNode;
3080
+ /** Show a remove button that calls `onClose`. */
3081
+ closable?: boolean;
3082
+ onClose?: () => void;
3083
+ className?: string;
3084
+ style?: CSSProperties;
3085
+ }
3086
+
3087
+ export declare function TagRoot({ children, size, variant, colorScheme, startElement, endElement, closable, onClose, className, style, ref, ...rest }: TagProps & {
3088
+ ref?: Ref<HTMLSpanElement>;
3089
+ }): JSX.Element;
3090
+
3091
+ export declare namespace TagRoot {
3092
+ var displayName: string;
3093
+ }
3094
+
3095
+ export declare type TagSize = "xs" | "sm" | "md" | "lg";
3096
+
3097
+ export declare type TagVariant = "solid" | "subtle" | "surface" | "outline";
3098
+
3099
+ declare const Text_2: TextComponent;
3100
+ export { Text_2 as Text }
3101
+
3102
+ declare type TextBaseProps<C extends ElementType = "p"> = TextCustomProps<C> & Responsive<Omit<VariantProps<typeof textVariants>, "lineClamp">>;
3103
+
3104
+ declare const textColors: {
3105
+ base: string;
3106
+ muted: string;
3107
+ subtle: string;
3108
+ inverted: string;
3109
+ warning: string;
3110
+ error: string;
3111
+ success: string;
3112
+ info: string;
3113
+ transparent: string;
3114
+ current: string;
3115
+ inherit: string;
3116
+ black: string;
3117
+ white: string;
3118
+ "gray-50": string;
3119
+ "gray-100": string;
3120
+ "gray-200": string;
3121
+ "gray-300": string;
3122
+ "gray-400": string;
3123
+ "gray-500": string;
3124
+ "gray-600": string;
3125
+ "gray-700": string;
3126
+ "gray-800": string;
3127
+ "gray-900": string;
3128
+ "gray-950": string;
3129
+ "red-50": string;
3130
+ "red-100": string;
3131
+ "red-200": string;
3132
+ "red-300": string;
3133
+ "red-400": string;
3134
+ "red-500": string;
3135
+ "red-600": string;
3136
+ "red-700": string;
3137
+ "red-800": string;
3138
+ "red-900": string;
3139
+ "red-950": string;
3140
+ "orange-50": string;
3141
+ "orange-100": string;
3142
+ "orange-200": string;
3143
+ "orange-300": string;
3144
+ "orange-400": string;
3145
+ "orange-500": string;
3146
+ "orange-600": string;
3147
+ "orange-700": string;
3148
+ "orange-800": string;
3149
+ "orange-900": string;
3150
+ "orange-950": string;
3151
+ "yellow-50": string;
3152
+ "yellow-100": string;
3153
+ "yellow-200": string;
3154
+ "yellow-300": string;
3155
+ "yellow-400": string;
3156
+ "yellow-500": string;
3157
+ "yellow-600": string;
3158
+ "yellow-700": string;
3159
+ "yellow-800": string;
3160
+ "yellow-900": string;
3161
+ "yellow-950": string;
3162
+ "green-50": string;
3163
+ "green-100": string;
3164
+ "green-200": string;
3165
+ "green-300": string;
3166
+ "green-400": string;
3167
+ "green-500": string;
3168
+ "green-600": string;
3169
+ "green-700": string;
3170
+ "green-800": string;
3171
+ "green-900": string;
3172
+ "green-950": string;
3173
+ "teal-50": string;
3174
+ "teal-100": string;
3175
+ "teal-200": string;
3176
+ "teal-300": string;
3177
+ "teal-400": string;
3178
+ "teal-500": string;
3179
+ "teal-600": string;
3180
+ "teal-700": string;
3181
+ "teal-800": string;
3182
+ "teal-900": string;
3183
+ "teal-950": string;
3184
+ "blue-50": string;
3185
+ "blue-100": string;
3186
+ "blue-200": string;
3187
+ "blue-300": string;
3188
+ "blue-400": string;
3189
+ "blue-500": string;
3190
+ "blue-600": string;
3191
+ "blue-700": string;
3192
+ "blue-800": string;
3193
+ "blue-900": string;
3194
+ "blue-950": string;
3195
+ "cyan-50": string;
3196
+ "cyan-100": string;
3197
+ "cyan-200": string;
3198
+ "cyan-300": string;
3199
+ "cyan-400": string;
3200
+ "cyan-500": string;
3201
+ "cyan-600": string;
3202
+ "cyan-700": string;
3203
+ "cyan-800": string;
3204
+ "cyan-900": string;
3205
+ "cyan-950": string;
3206
+ "purple-50": string;
3207
+ "purple-100": string;
3208
+ "purple-200": string;
3209
+ "purple-300": string;
3210
+ "purple-400": string;
3211
+ "purple-500": string;
3212
+ "purple-600": string;
3213
+ "purple-700": string;
3214
+ "purple-800": string;
3215
+ "purple-900": string;
3216
+ "purple-950": string;
3217
+ "pink-50": string;
3218
+ "pink-100": string;
3219
+ "pink-200": string;
3220
+ "pink-300": string;
3221
+ "pink-400": string;
3222
+ "pink-500": string;
3223
+ "pink-600": string;
3224
+ "pink-700": string;
3225
+ "pink-800": string;
3226
+ "pink-900": string;
3227
+ "pink-950": string;
3228
+ "brand-50": string;
3229
+ "brand-100": string;
3230
+ "brand-200": string;
3231
+ "brand-300": string;
3232
+ "brand-400": string;
3233
+ "brand-500": string;
3234
+ "brand-600": string;
3235
+ "brand-700": string;
3236
+ "brand-800": string;
3237
+ "brand-900": string;
3238
+ "gray-solid": string;
3239
+ "gray-contrast": string;
3240
+ "gray-label": string;
3241
+ "red-solid": string;
3242
+ "red-contrast": string;
3243
+ "red-label": string;
3244
+ "orange-solid": string;
3245
+ "orange-contrast": string;
3246
+ "orange-label": string;
3247
+ "yellow-solid": string;
3248
+ "yellow-contrast": string;
3249
+ "yellow-label": string;
3250
+ "green-solid": string;
3251
+ "green-contrast": string;
3252
+ "green-label": string;
3253
+ "teal-solid": string;
3254
+ "teal-contrast": string;
3255
+ "teal-label": string;
3256
+ "blue-solid": string;
3257
+ "blue-contrast": string;
3258
+ "blue-label": string;
3259
+ "cyan-solid": string;
3260
+ "cyan-contrast": string;
3261
+ "cyan-label": string;
3262
+ "purple-solid": string;
3263
+ "purple-contrast": string;
3264
+ "purple-label": string;
3265
+ "pink-solid": string;
3266
+ "pink-contrast": string;
3267
+ "pink-label": string;
3268
+ "brand-solid": string;
3269
+ "brand-contrast": string;
3270
+ "brand-label": string;
3271
+ };
3272
+
3273
+ declare type TextComponent = <C extends ElementType = "p">(props: TextProps<C> & {
3274
+ ref?: Ref<any>;
3275
+ }) => ReactNode;
3276
+
3277
+ declare interface TextCustomProps<C extends ElementType = "p"> {
3278
+ children?: ReactNode;
3279
+ as?: C;
3280
+ className?: string;
3281
+ lineClamp?: ResponsiveProp<TextLineClamp>;
3282
+ }
3283
+
3284
+ export declare type TextLineClamp = "1" | "2" | "3" | "4" | "5" | "6";
3285
+
3286
+ export declare type TextProps<C extends ElementType = "p"> = TextBaseProps<C> & Omit<ComponentPropsWithoutRef<C>, keyof TextBaseProps<C>>;
3287
+
3288
+ export declare type TextSize = NonNullable<VariantProps<typeof textVariants>["size"]>;
3289
+
3290
+ declare const textVariants: (props?: ({
3291
+ readonly size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | null | undefined;
3292
+ readonly weight?: "bold" | "normal" | "light" | "black" | "medium" | "thin" | "extralight" | "semibold" | "extrabold" | null | undefined;
3293
+ readonly align?: "center" | "left" | "right" | "justify" | null | undefined;
3294
+ readonly color?: "subtle" | "base" | "inherit" | "current" | "error" | "muted" | "black" | "white" | "transparent" | "inverted" | "warning" | "success" | "info" | "gray-50" | "gray-100" | "gray-200" | "gray-300" | "gray-400" | "gray-500" | "gray-600" | "gray-700" | "gray-800" | "gray-900" | "gray-950" | "red-50" | "red-100" | "red-200" | "red-300" | "red-400" | "red-500" | "red-600" | "red-700" | "red-800" | "red-900" | "red-950" | "orange-50" | "orange-100" | "orange-200" | "orange-300" | "orange-400" | "orange-500" | "orange-600" | "orange-700" | "orange-800" | "orange-900" | "orange-950" | "yellow-50" | "yellow-100" | "yellow-200" | "yellow-300" | "yellow-400" | "yellow-500" | "yellow-600" | "yellow-700" | "yellow-800" | "yellow-900" | "yellow-950" | "green-50" | "green-100" | "green-200" | "green-300" | "green-400" | "green-500" | "green-600" | "green-700" | "green-800" | "green-900" | "green-950" | "teal-50" | "teal-100" | "teal-200" | "teal-300" | "teal-400" | "teal-500" | "teal-600" | "teal-700" | "teal-800" | "teal-900" | "teal-950" | "blue-50" | "blue-100" | "blue-200" | "blue-300" | "blue-400" | "blue-500" | "blue-600" | "blue-700" | "blue-800" | "blue-900" | "blue-950" | "cyan-50" | "cyan-100" | "cyan-200" | "cyan-300" | "cyan-400" | "cyan-500" | "cyan-600" | "cyan-700" | "cyan-800" | "cyan-900" | "cyan-950" | "purple-50" | "purple-100" | "purple-200" | "purple-300" | "purple-400" | "purple-500" | "purple-600" | "purple-700" | "purple-800" | "purple-900" | "purple-950" | "pink-50" | "pink-100" | "pink-200" | "pink-300" | "pink-400" | "pink-500" | "pink-600" | "pink-700" | "pink-800" | "pink-900" | "pink-950" | "brand-50" | "brand-100" | "brand-200" | "brand-300" | "brand-400" | "brand-500" | "brand-600" | "brand-700" | "brand-800" | "brand-900" | "gray-solid" | "gray-contrast" | "gray-label" | "red-solid" | "red-contrast" | "red-label" | "orange-solid" | "orange-contrast" | "orange-label" | "yellow-solid" | "yellow-contrast" | "yellow-label" | "green-solid" | "green-contrast" | "green-label" | "teal-solid" | "teal-contrast" | "teal-label" | "blue-solid" | "blue-contrast" | "blue-label" | "cyan-solid" | "cyan-contrast" | "cyan-label" | "purple-solid" | "purple-contrast" | "purple-label" | "pink-solid" | "pink-contrast" | "pink-label" | "brand-solid" | "brand-contrast" | "brand-label" | null | undefined;
3295
+ readonly casing?: "normal" | "capitalize" | "lowercase" | "uppercase" | null | undefined;
3296
+ readonly fontFamily?: "body" | "heading" | "serif" | "sans" | "mono" | null | undefined;
3297
+ readonly fontStyle?: "normal" | "italic" | null | undefined;
3298
+ readonly textDecoration?: "none" | "line-through" | "overline" | "underline" | null | undefined;
3299
+ readonly lineHeight?: "none" | "normal" | "loose" | "tight" | "snug" | "relaxed" | null | undefined;
3300
+ readonly letterSpacing?: "normal" | "tight" | "tighter" | "wide" | "wider" | "widest" | null | undefined;
3301
+ readonly lineClamp?: "1" | "2" | "3" | "4" | "5" | "6" | null | undefined;
3302
+ readonly gutterBottom?: boolean | null | undefined;
3303
+ readonly paragraph?: boolean | null | undefined;
3304
+ readonly truncate?: boolean | null | undefined;
3305
+ } & ClassProp) | undefined) => string;
3306
+
3307
+ export declare type TextWeight = NonNullable<VariantProps<typeof textVariants>["weight"]>;
3308
+
3309
+ export declare type Theme = "light" | "dark" | "system";
3310
+
3311
+ declare interface ThemeProviderProps {
3312
+ children: ReactNode;
3313
+ defaultTheme?: Theme;
3314
+ storageKey?: string;
3315
+ className?: string;
3316
+ tokens?: ThemeTokens;
3317
+ }
3318
+
3319
+ declare interface ThemeProviderState {
3320
+ theme: Theme;
3321
+ setTheme: (theme: Theme) => void;
3322
+ resolvedTheme: "light" | "dark";
3323
+ tokens?: ThemeTokens;
3324
+ }
3325
+
3326
+ /**
3327
+ * ThemeToggle — a ready-made light/dark switch built on Button, so it inherits
3328
+ * every variant, size, and `colorScheme`. The sun and moon are stacked and
3329
+ * cross-fade with a quarter-turn rotation as the resolved theme changes.
3330
+ */
3331
+ export declare function ThemeToggle({ variant, size, showLabel, className, ref, ...props }: ThemeToggleProps & {
3332
+ ref?: Ref<HTMLButtonElement>;
3333
+ }): JSX.Element;
3334
+
3335
+ export declare namespace ThemeToggle {
3336
+ var displayName: string;
3337
+ }
3338
+
3339
+ export declare interface ThemeToggleProps extends Omit<ButtonProps, "children" | "onClick"> {
3340
+ /**
3341
+ * If true, displays the text label next to the icon (e.g., "Light Mode" or "Dark Mode").
3342
+ * @default false
3343
+ */
3344
+ showLabel?: boolean;
3345
+ }
3346
+
3347
+ declare type ThemeTokens = {
3348
+ brandColor?: string;
3349
+ };
3350
+
3351
+ /** Compound API — `Timeline` is the root; parts hang off it. */
3352
+ export declare const Timeline: typeof TimelineRoot & {
3353
+ Item: typeof TimelineItem;
3354
+ Indicator: typeof TimelineIndicator;
3355
+ Content: typeof TimelineContent;
3356
+ Title: typeof TimelineTitle;
3357
+ Description: typeof TimelineDescription;
3358
+ };
3359
+
3360
+ export declare function TimelineContent({ children, className }: TimelineContentProps): JSX.Element;
3361
+
3362
+ export declare namespace TimelineContent {
3363
+ var displayName: string;
3364
+ }
3365
+
3366
+ export declare interface TimelineContentProps {
3367
+ children: ReactNode;
3368
+ className?: string;
3369
+ }
3370
+
3371
+ export declare function TimelineDescription({ children, className }: TimelineTextProps): JSX.Element;
3372
+
3373
+ export declare namespace TimelineDescription {
3374
+ var displayName: string;
3375
+ }
3376
+
3377
+ export declare function TimelineIndicator({ children, colorScheme, className }: TimelineIndicatorProps): JSX.Element;
3378
+
3379
+ export declare namespace TimelineIndicator {
3380
+ var displayName: string;
3381
+ }
3382
+
3383
+ export declare interface TimelineIndicatorProps {
3384
+ children?: ReactNode;
3385
+ /** Override the item's hue (e.g. green for done, red for error). */
3386
+ colorScheme?: ColorScheme;
3387
+ className?: string;
3388
+ }
3389
+
3390
+ /**
3391
+ * Lays out one entry: an indicator column with the connecting line drawn beneath
3392
+ * it (hidden on the last item), and the content beside it. Splits its children
3393
+ * into the Indicator and everything else by displayName.
3394
+ */
3395
+ export declare function TimelineItem({ children, className }: TimelineItemProps): JSX.Element;
3396
+
3397
+ export declare interface TimelineItemProps {
3398
+ children: ReactNode;
3399
+ className?: string;
3400
+ }
3401
+
3402
+ export declare interface TimelineProps {
3403
+ children: ReactNode;
3404
+ size?: TimelineSize;
3405
+ variant?: TimelineVariant;
3406
+ /** Default hue for indicators. @default "brand" */
3407
+ colorScheme?: ColorScheme;
3408
+ className?: string;
3409
+ }
3410
+
3411
+ declare function TimelineRoot({ children, size, variant, colorScheme, className }: TimelineProps): JSX.Element;
3412
+
3413
+ export declare type TimelineSize = "sm" | "md" | "lg";
3414
+
3415
+ export declare interface TimelineTextProps {
3416
+ children: ReactNode;
3417
+ className?: string;
3418
+ }
3419
+
3420
+ export declare function TimelineTitle({ children, className }: TimelineTextProps): JSX.Element;
3421
+
3422
+ export declare namespace TimelineTitle {
3423
+ var displayName: string;
3424
+ }
3425
+
3426
+ export declare type TimelineVariant = "solid" | "subtle" | "outline";
3427
+
3428
+ /**
3429
+ * Fire a toast imperatively: `toast({ title })`, or via the status
3430
+ * shorthands `toast.success("Saved")`. Requires a `<Toaster />` mounted
3431
+ * once near the app root. Returns the toast id; `toast.dismiss(id)` closes
3432
+ * one, `toast.dismiss()` closes all.
3433
+ */
3434
+ export declare const toast: ((options: ToastOptions) => string) & {
3435
+ info: StatusShorthand;
3436
+ success: StatusShorthand;
3437
+ warning: StatusShorthand;
3438
+ error: StatusShorthand;
3439
+ dismiss: typeof dismissToast;
3440
+ };
3441
+
3442
+ export declare interface ToastData extends ToastOptions {
3443
+ id: string;
3444
+ /** false while the exit transition plays, then the toast is removed. */
3445
+ open: boolean;
3446
+ }
3447
+
3448
+ /**
3449
+ * The toast outlet — mount ONE near the app root (inside AstralisProvider),
3450
+ * then fire notifications from anywhere with `toast(...)`.
3451
+ */
3452
+ export declare function Toaster({ placement, max }: ToasterProps): JSX.Element;
3453
+
3454
+ export declare type ToasterPlacement = "top-start" | "top-center" | "top-end" | "bottom-start" | "bottom-center" | "bottom-end";
3455
+
3456
+ export declare interface ToasterProps {
3457
+ /** Screen corner/edge the stack grows from. @default "bottom-end" */
3458
+ placement?: ToasterPlacement;
3459
+ /** Newest-first cap on simultaneously shown toasts. @default 5 */
3460
+ max?: number;
3461
+ }
3462
+
3463
+ export declare interface ToastOptions {
3464
+ title: ReactNode;
3465
+ description?: ReactNode;
3466
+ /** Picks the icon, hue and ARIA role. @default "info" */
3467
+ status?: ToastStatus;
3468
+ /** Hue override (via the accent channel); defaults from `status`. */
3469
+ colorScheme?: ColorScheme;
3470
+ /**
3471
+ * Auto-dismiss delay in ms; pass `null` to keep the toast until dismissed.
3472
+ * @default 5000
3473
+ */
3474
+ duration?: number | null;
3475
+ /** Hide the ✕ button. */
3476
+ closable?: boolean;
3477
+ /** Optional action button rendered after the text. */
3478
+ action?: {
3479
+ label: string;
3480
+ onClick: () => void;
3481
+ };
3482
+ }
3483
+
3484
+ export declare type ToastStatus = FeedbackStatus;
3485
+
3486
+ /** Compound API — `Tooltip` is the root; parts hang off it. */
3487
+ export declare const Tooltip: typeof TooltipRoot & {
3488
+ Trigger: typeof TooltipTrigger;
3489
+ Content: typeof TooltipContent;
3490
+ };
3491
+
3492
+ export declare function TooltipContent({ children, className, withArrow }: TooltipContentProps): JSX.Element | null;
3493
+
3494
+ export declare interface TooltipContentProps {
3495
+ children: ReactNode;
3496
+ className?: string;
3497
+ /** Render an arrow pointing at the trigger. @default false */
3498
+ withArrow?: boolean;
3499
+ }
3500
+
3501
+ export declare interface TooltipProps {
3502
+ children: ReactNode;
3503
+ open?: boolean;
3504
+ defaultOpen?: boolean;
3505
+ onOpenChange?: (open: boolean) => void;
3506
+ /** Preferred side of the trigger. @default "top" */
3507
+ side?: Side;
3508
+ align?: Align;
3509
+ sideOffset?: number;
3510
+ /** Delay before showing on hover, ms. @default 300 */
3511
+ delay?: number;
3512
+ avoidCollisions?: boolean;
3513
+ }
3514
+
3515
+ declare function TooltipRoot({ children, open: openProp, defaultOpen, onOpenChange, side, align, sideOffset, delay, avoidCollisions, }: TooltipProps): JSX.Element;
3516
+
3517
+ export declare function TooltipTrigger({ children }: TooltipTriggerProps): ReactElement<any, string | JSXElementConstructor<any>>;
3518
+
3519
+ export declare interface TooltipTriggerProps {
3520
+ children: ReactElement<any>;
3521
+ }
3522
+
3523
+ /**
3524
+ * Returns Field context. Returns null instead of throwing
3525
+ * so inputs can be used standalone (outside a Field).
3526
+ */
3527
+ export declare function useFieldContext(): FieldContextValue | null;
3528
+
3529
+ export declare const useTheme: () => ThemeProviderState;
3530
+
3531
+ export declare const VStack: StackPresetComponent;
3532
+
3533
+ export { }