@photon-ai/pho-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 (281) hide show
  1. package/README.md +49 -0
  2. package/dist/chunks/button-9pp4g7en.js +334 -0
  3. package/dist/chunks/button-9pp4g7en.js.map +1 -0
  4. package/dist/chunks/close-button-CbQNfpxU.js +30 -0
  5. package/dist/chunks/close-button-CbQNfpxU.js.map +1 -0
  6. package/dist/chunks/cn-D6jQqeRj.js +1762 -0
  7. package/dist/chunks/cn-D6jQqeRj.js.map +1 -0
  8. package/dist/chunks/dialog-BSBF1Wyq.js +63 -0
  9. package/dist/chunks/dialog-BSBF1Wyq.js.map +1 -0
  10. package/dist/chunks/input-aZqjjV_m.js +75 -0
  11. package/dist/chunks/input-aZqjjV_m.js.map +1 -0
  12. package/dist/chunks/link-provider-9TFNyDqO.js +28 -0
  13. package/dist/chunks/link-provider-9TFNyDqO.js.map +1 -0
  14. package/dist/chunks/menu-BkzDbNuX.js +101 -0
  15. package/dist/chunks/menu-BkzDbNuX.js.map +1 -0
  16. package/dist/chunks/resolve-variant-CcD8iG5l.js +9 -0
  17. package/dist/chunks/resolve-variant-CcD8iG5l.js.map +1 -0
  18. package/dist/chunks/rolldown-runtime-wKSmTnsc.js +22 -0
  19. package/dist/components/accordion.js +42 -0
  20. package/dist/components/accordion.js.map +1 -0
  21. package/dist/components/alert-dialog.js +59 -0
  22. package/dist/components/alert-dialog.js.map +1 -0
  23. package/dist/components/autocomplete.js +82 -0
  24. package/dist/components/autocomplete.js.map +1 -0
  25. package/dist/components/avatar.js +49 -0
  26. package/dist/components/avatar.js.map +1 -0
  27. package/dist/components/badge.js +59 -0
  28. package/dist/components/badge.js.map +1 -0
  29. package/dist/components/button.js +17 -0
  30. package/dist/components/checkbox.js +51 -0
  31. package/dist/components/checkbox.js.map +1 -0
  32. package/dist/components/collapsible.js +28 -0
  33. package/dist/components/collapsible.js.map +1 -0
  34. package/dist/components/combobox.js +117 -0
  35. package/dist/components/combobox.js.map +1 -0
  36. package/dist/components/context-menu.js +63 -0
  37. package/dist/components/context-menu.js.map +1 -0
  38. package/dist/components/dialog.js +5 -0
  39. package/dist/components/drawer.js +59 -0
  40. package/dist/components/drawer.js.map +1 -0
  41. package/dist/components/field.js +49 -0
  42. package/dist/components/field.js.map +1 -0
  43. package/dist/components/fieldset.js +26 -0
  44. package/dist/components/fieldset.js.map +1 -0
  45. package/dist/components/form.js +17 -0
  46. package/dist/components/form.js.map +1 -0
  47. package/dist/components/input.js +5 -0
  48. package/dist/components/kbd.js +18 -0
  49. package/dist/components/kbd.js.map +1 -0
  50. package/dist/components/menu.js +7 -0
  51. package/dist/components/menubar.js +17 -0
  52. package/dist/components/menubar.js.map +1 -0
  53. package/dist/components/meter.js +47 -0
  54. package/dist/components/meter.js.map +1 -0
  55. package/dist/components/navigation-menu.js +74 -0
  56. package/dist/components/navigation-menu.js.map +1 -0
  57. package/dist/components/notification.js +91 -0
  58. package/dist/components/notification.js.map +1 -0
  59. package/dist/components/number-field.js +56 -0
  60. package/dist/components/number-field.js.map +1 -0
  61. package/dist/components/otp-field.js +19 -0
  62. package/dist/components/otp-field.js.map +1 -0
  63. package/dist/components/popover.js +46 -0
  64. package/dist/components/popover.js.map +1 -0
  65. package/dist/components/preview-card.js +31 -0
  66. package/dist/components/preview-card.js.map +1 -0
  67. package/dist/components/progress.js +47 -0
  68. package/dist/components/progress.js.map +1 -0
  69. package/dist/components/radio-group.js +34 -0
  70. package/dist/components/radio-group.js.map +1 -0
  71. package/dist/components/scroll-area.js +43 -0
  72. package/dist/components/scroll-area.js.map +1 -0
  73. package/dist/components/select.js +69 -0
  74. package/dist/components/select.js.map +1 -0
  75. package/dist/components/separator.js +17 -0
  76. package/dist/components/separator.js.map +1 -0
  77. package/dist/components/slider.js +61 -0
  78. package/dist/components/slider.js.map +1 -0
  79. package/dist/components/switch.js +28 -0
  80. package/dist/components/switch.js.map +1 -0
  81. package/dist/components/tabs.js +42 -0
  82. package/dist/components/tabs.js.map +1 -0
  83. package/dist/components/toast.js +60 -0
  84. package/dist/components/toast.js.map +1 -0
  85. package/dist/components/toggle-group.js +17 -0
  86. package/dist/components/toggle-group.js.map +1 -0
  87. package/dist/components/toggle.js +33 -0
  88. package/dist/components/toggle.js.map +1 -0
  89. package/dist/components/toolbar.js +55 -0
  90. package/dist/components/toolbar.js.map +1 -0
  91. package/dist/components/tooltip.js +32 -0
  92. package/dist/components/tooltip.js.map +1 -0
  93. package/dist/icons.js +192 -0
  94. package/dist/icons.js.map +1 -0
  95. package/dist/index.js +30 -0
  96. package/dist/primitives/accordion.js +3 -0
  97. package/dist/primitives/alert-dialog.js +3 -0
  98. package/dist/primitives/autocomplete.js +3 -0
  99. package/dist/primitives/avatar.js +3 -0
  100. package/dist/primitives/button.js +3 -0
  101. package/dist/primitives/checkbox-group.js +3 -0
  102. package/dist/primitives/checkbox.js +3 -0
  103. package/dist/primitives/collapsible.js +3 -0
  104. package/dist/primitives/combobox.js +3 -0
  105. package/dist/primitives/context-menu.js +3 -0
  106. package/dist/primitives/csp-provider.js +3 -0
  107. package/dist/primitives/dialog.js +3 -0
  108. package/dist/primitives/direction-provider.js +3 -0
  109. package/dist/primitives/drawer.js +3 -0
  110. package/dist/primitives/field.js +3 -0
  111. package/dist/primitives/fieldset.js +3 -0
  112. package/dist/primitives/form.js +3 -0
  113. package/dist/primitives/input.js +3 -0
  114. package/dist/primitives/menu.js +3 -0
  115. package/dist/primitives/menubar.js +3 -0
  116. package/dist/primitives/meter.js +3 -0
  117. package/dist/primitives/navigation-menu.js +3 -0
  118. package/dist/primitives/number-field.js +3 -0
  119. package/dist/primitives/otp-field.js +3 -0
  120. package/dist/primitives/popover.js +3 -0
  121. package/dist/primitives/preview-card.js +3 -0
  122. package/dist/primitives/progress.js +3 -0
  123. package/dist/primitives/radio-group.js +3 -0
  124. package/dist/primitives/radio.js +3 -0
  125. package/dist/primitives/scroll-area.js +3 -0
  126. package/dist/primitives/select.js +3 -0
  127. package/dist/primitives/separator.js +3 -0
  128. package/dist/primitives/slider.js +3 -0
  129. package/dist/primitives/switch.js +3 -0
  130. package/dist/primitives/tabs.js +3 -0
  131. package/dist/primitives/toast.js +3 -0
  132. package/dist/primitives/toggle-group.js +3 -0
  133. package/dist/primitives/toggle.js +3 -0
  134. package/dist/primitives/toolbar.js +3 -0
  135. package/dist/primitives/tooltip.js +3 -0
  136. package/dist/primitives.js +84 -0
  137. package/dist/primitives.js.map +1 -0
  138. package/dist/src/components/accordion/accordion.d.ts +24 -0
  139. package/dist/src/components/accordion/index.d.ts +1 -0
  140. package/dist/src/components/alert-dialog/alert-dialog.d.ts +41 -0
  141. package/dist/src/components/alert-dialog/index.d.ts +1 -0
  142. package/dist/src/components/autocomplete/autocomplete.d.ts +38 -0
  143. package/dist/src/components/autocomplete/index.d.ts +1 -0
  144. package/dist/src/components/avatar/avatar.d.ts +40 -0
  145. package/dist/src/components/avatar/index.d.ts +1 -0
  146. package/dist/src/components/badge/badge.d.ts +63 -0
  147. package/dist/src/components/badge/index.d.ts +1 -0
  148. package/dist/src/components/button/button.d.ts +196 -0
  149. package/dist/src/components/button/close-button.d.ts +28 -0
  150. package/dist/src/components/button/index.d.ts +2 -0
  151. package/dist/src/components/checkbox/checkbox-group.d.ts +15 -0
  152. package/dist/src/components/checkbox/checkbox.d.ts +20 -0
  153. package/dist/src/components/checkbox/index.d.ts +2 -0
  154. package/dist/src/components/collapsible/collapsible.d.ts +20 -0
  155. package/dist/src/components/collapsible/index.d.ts +1 -0
  156. package/dist/src/components/combobox/combobox.d.ts +49 -0
  157. package/dist/src/components/combobox/index.d.ts +1 -0
  158. package/dist/src/components/context-menu/context-menu.d.ts +34 -0
  159. package/dist/src/components/context-menu/index.d.ts +1 -0
  160. package/dist/src/components/dialog/dialog.d.ts +41 -0
  161. package/dist/src/components/dialog/index.d.ts +1 -0
  162. package/dist/src/components/drawer/drawer.d.ts +32 -0
  163. package/dist/src/components/drawer/index.d.ts +1 -0
  164. package/dist/src/components/field/field.d.ts +27 -0
  165. package/dist/src/components/field/index.d.ts +1 -0
  166. package/dist/src/components/fieldset/fieldset.d.ts +18 -0
  167. package/dist/src/components/fieldset/index.d.ts +1 -0
  168. package/dist/src/components/form/form.d.ts +14 -0
  169. package/dist/src/components/form/index.d.ts +1 -0
  170. package/dist/src/components/input/index.d.ts +1 -0
  171. package/dist/src/components/input/input.d.ts +30 -0
  172. package/dist/src/components/kbd/index.d.ts +1 -0
  173. package/dist/src/components/kbd/kbd.d.ts +18 -0
  174. package/dist/src/components/menu/index.d.ts +1 -0
  175. package/dist/src/components/menu/menu.d.ts +47 -0
  176. package/dist/src/components/menubar/index.d.ts +1 -0
  177. package/dist/src/components/menubar/menubar.d.ts +14 -0
  178. package/dist/src/components/meter/index.d.ts +1 -0
  179. package/dist/src/components/meter/meter.d.ts +24 -0
  180. package/dist/src/components/navigation-menu/index.d.ts +1 -0
  181. package/dist/src/components/navigation-menu/navigation-menu.d.ts +35 -0
  182. package/dist/src/components/notification/index.d.ts +1 -0
  183. package/dist/src/components/notification/notification.d.ts +73 -0
  184. package/dist/src/components/number-field/index.d.ts +1 -0
  185. package/dist/src/components/number-field/number-field.d.ts +28 -0
  186. package/dist/src/components/otp-field/index.d.ts +1 -0
  187. package/dist/src/components/otp-field/otp-field.d.ts +17 -0
  188. package/dist/src/components/popover/index.d.ts +1 -0
  189. package/dist/src/components/popover/popover.d.ts +27 -0
  190. package/dist/src/components/preview-card/index.d.ts +1 -0
  191. package/dist/src/components/preview-card/preview-card.d.ts +22 -0
  192. package/dist/src/components/progress/index.d.ts +1 -0
  193. package/dist/src/components/progress/progress.d.ts +24 -0
  194. package/dist/src/components/radio-group/index.d.ts +1 -0
  195. package/dist/src/components/radio-group/radio-group.d.ts +28 -0
  196. package/dist/src/components/scroll-area/index.d.ts +1 -0
  197. package/dist/src/components/scroll-area/scroll-area.d.ts +25 -0
  198. package/dist/src/components/select/index.d.ts +1 -0
  199. package/dist/src/components/select/select.d.ts +36 -0
  200. package/dist/src/components/separator/index.d.ts +1 -0
  201. package/dist/src/components/separator/separator.d.ts +14 -0
  202. package/dist/src/components/slider/index.d.ts +1 -0
  203. package/dist/src/components/slider/slider.d.ts +30 -0
  204. package/dist/src/components/switch/index.d.ts +1 -0
  205. package/dist/src/components/switch/switch.d.ts +18 -0
  206. package/dist/src/components/tabs/index.d.ts +1 -0
  207. package/dist/src/components/tabs/tabs.d.ts +24 -0
  208. package/dist/src/components/toast/index.d.ts +1 -0
  209. package/dist/src/components/toast/toast.d.ts +34 -0
  210. package/dist/src/components/toggle/index.d.ts +1 -0
  211. package/dist/src/components/toggle/toggle.d.ts +33 -0
  212. package/dist/src/components/toggle-group/index.d.ts +1 -0
  213. package/dist/src/components/toggle-group/toggle-group.d.ts +15 -0
  214. package/dist/src/components/toolbar/index.d.ts +1 -0
  215. package/dist/src/components/toolbar/toolbar.d.ts +28 -0
  216. package/dist/src/components/tooltip/index.d.ts +1 -0
  217. package/dist/src/components/tooltip/tooltip.d.ts +23 -0
  218. package/dist/src/icons/discord.d.ts +3 -0
  219. package/dist/src/icons/github.d.ts +3 -0
  220. package/dist/src/icons/google.d.ts +3 -0
  221. package/dist/src/icons/imessage.d.ts +3 -0
  222. package/dist/src/icons/index.d.ts +18 -0
  223. package/dist/src/icons/photon-mark.d.ts +3 -0
  224. package/dist/src/icons/reddit.d.ts +3 -0
  225. package/dist/src/icons/slack.d.ts +3 -0
  226. package/dist/src/icons/telegram.d.ts +3 -0
  227. package/dist/src/icons/whatsapp.d.ts +3 -0
  228. package/dist/src/icons/x.d.ts +3 -0
  229. package/dist/src/icons/youtube.d.ts +3 -0
  230. package/dist/src/index.d.ts +11 -0
  231. package/dist/src/primitives/accordion.d.ts +5 -0
  232. package/dist/src/primitives/alert-dialog.d.ts +5 -0
  233. package/dist/src/primitives/autocomplete.d.ts +5 -0
  234. package/dist/src/primitives/avatar.d.ts +5 -0
  235. package/dist/src/primitives/button.d.ts +5 -0
  236. package/dist/src/primitives/checkbox-group.d.ts +5 -0
  237. package/dist/src/primitives/checkbox.d.ts +5 -0
  238. package/dist/src/primitives/collapsible.d.ts +5 -0
  239. package/dist/src/primitives/combobox.d.ts +5 -0
  240. package/dist/src/primitives/context-menu.d.ts +5 -0
  241. package/dist/src/primitives/csp-provider.d.ts +5 -0
  242. package/dist/src/primitives/dialog.d.ts +5 -0
  243. package/dist/src/primitives/direction-provider.d.ts +5 -0
  244. package/dist/src/primitives/drawer.d.ts +5 -0
  245. package/dist/src/primitives/field.d.ts +5 -0
  246. package/dist/src/primitives/fieldset.d.ts +5 -0
  247. package/dist/src/primitives/form.d.ts +5 -0
  248. package/dist/src/primitives/index.d.ts +44 -0
  249. package/dist/src/primitives/input.d.ts +5 -0
  250. package/dist/src/primitives/menu.d.ts +5 -0
  251. package/dist/src/primitives/menubar.d.ts +5 -0
  252. package/dist/src/primitives/meter.d.ts +5 -0
  253. package/dist/src/primitives/navigation-menu.d.ts +5 -0
  254. package/dist/src/primitives/number-field.d.ts +5 -0
  255. package/dist/src/primitives/otp-field.d.ts +5 -0
  256. package/dist/src/primitives/popover.d.ts +5 -0
  257. package/dist/src/primitives/preview-card.d.ts +5 -0
  258. package/dist/src/primitives/progress.d.ts +5 -0
  259. package/dist/src/primitives/radio-group.d.ts +5 -0
  260. package/dist/src/primitives/radio.d.ts +5 -0
  261. package/dist/src/primitives/scroll-area.d.ts +5 -0
  262. package/dist/src/primitives/select.d.ts +5 -0
  263. package/dist/src/primitives/separator.d.ts +5 -0
  264. package/dist/src/primitives/slider.d.ts +5 -0
  265. package/dist/src/primitives/switch.d.ts +5 -0
  266. package/dist/src/primitives/tabs.d.ts +5 -0
  267. package/dist/src/primitives/toast.d.ts +5 -0
  268. package/dist/src/primitives/toggle-group.d.ts +5 -0
  269. package/dist/src/primitives/toggle.d.ts +5 -0
  270. package/dist/src/primitives/toolbar.d.ts +5 -0
  271. package/dist/src/primitives/tooltip.d.ts +5 -0
  272. package/dist/src/utils/cn.d.ts +3 -0
  273. package/dist/src/utils/index.d.ts +4 -0
  274. package/dist/src/utils/is-react-component.d.ts +9 -0
  275. package/dist/src/utils/link-provider.d.ts +17 -0
  276. package/dist/src/utils/resolve-variant.d.ts +19 -0
  277. package/dist/utils.js +11 -0
  278. package/package.json +406 -0
  279. package/src/styles/fonts.css +20 -0
  280. package/src/styles/pho.css +50 -0
  281. package/src/styles/theme.css +289 -0
@@ -0,0 +1,196 @@
1
+ import { AnchorHTMLAttributes, ButtonHTMLAttributes, FC, ReactNode, Ref } from 'react';
2
+ /** Size axis — padding, text size, and icon-only (svgOnly) padding. */
3
+ export declare const BUTTON_SIZES: {
4
+ sm: {
5
+ classes: string;
6
+ description: string;
7
+ };
8
+ md: {
9
+ classes: string;
10
+ description: string;
11
+ };
12
+ lg: {
13
+ classes: string;
14
+ description: string;
15
+ };
16
+ };
17
+ /** Shape axis — corner treatment. `square` is the default text-button shape. */
18
+ export declare const BUTTON_SHAPES: {
19
+ square: {
20
+ classes: string;
21
+ description: string;
22
+ };
23
+ circle: {
24
+ classes: string;
25
+ description: string;
26
+ };
27
+ rounded: {
28
+ classes: string;
29
+ description: string;
30
+ };
31
+ };
32
+ /** Emphasis axis — a tight, semantic set. `primary` is the default. */
33
+ export declare const BUTTON_VARIANTS: {
34
+ primary: {
35
+ classes: string;
36
+ description: string;
37
+ };
38
+ secondary: {
39
+ classes: string;
40
+ description: string;
41
+ };
42
+ tertiary: {
43
+ classes: string;
44
+ description: string;
45
+ };
46
+ error: {
47
+ classes: string;
48
+ description: string;
49
+ };
50
+ };
51
+ export type ButtonSize = keyof typeof BUTTON_SIZES;
52
+ export type ButtonShape = keyof typeof BUTTON_SHAPES;
53
+ export type ButtonVariant = keyof typeof BUTTON_VARIANTS;
54
+ /** Compose the full class string for a button — exported for reuse/testing. */
55
+ export declare function buttonVariants(opts?: {
56
+ variant?: ButtonVariant;
57
+ size?: ButtonSize;
58
+ shape?: ButtonShape;
59
+ shadow?: boolean;
60
+ className?: string;
61
+ }): string;
62
+ /** An icon/element slot rendered before or after the label. */
63
+ type Slottable = ReactNode | FC<{
64
+ className?: string;
65
+ }>;
66
+ interface ButtonBaseProps {
67
+ /** Emphasis variant. @default "primary" */
68
+ variant?: ButtonVariant;
69
+ /** Size variant. @default "md" */
70
+ size?: ButtonSize;
71
+ /** Corner shape. @default "square" */
72
+ shape?: ButtonShape;
73
+ /** Add an elevation shadow (marketing / `rounded`). */
74
+ shadow?: boolean;
75
+ /** Slot before the label — a component (`Plus`) or element (`<Plus />`). */
76
+ prefix?: Slottable;
77
+ /** Slot after the label. */
78
+ suffix?: Slottable;
79
+ /** Render as an icon-only button. Requires an `aria-label`. */
80
+ svgOnly?: boolean;
81
+ /** Show a spinner and block interaction while staying readable. */
82
+ loading?: boolean;
83
+ children?: ReactNode;
84
+ className?: string;
85
+ }
86
+ export interface ButtonProps extends ButtonBaseProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonBaseProps> {
87
+ ref?: Ref<HTMLButtonElement>;
88
+ }
89
+ export interface ButtonLinkProps extends ButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonBaseProps> {
90
+ /** Navigate to this URL (rendered via the host's `LinkProvider`). */
91
+ href: string;
92
+ /** Visually and semantically disable the link. */
93
+ disabled?: boolean;
94
+ }
95
+ /**
96
+ * Button — triggers an action that mutates state (submit, save, delete).
97
+ * For navigation that changes the URL, use {@link ButtonLink}.
98
+ */
99
+ export declare function Button({ variant, size, shape, shadow, prefix, suffix, svgOnly, loading, children, className, ref, ...props }: ButtonProps): import("react").JSX.Element;
100
+ export declare namespace Button {
101
+ var displayName: string;
102
+ }
103
+ /**
104
+ * ButtonLink — a link styled as a button, for navigation that changes the URL.
105
+ * Shares every visual prop with {@link Button}; renders the host router's link
106
+ * via `LinkProvider`.
107
+ */
108
+ export declare function ButtonLink({ variant, size, shape, shadow, prefix, suffix, svgOnly, loading, disabled, href, children, className, ...props }: ButtonLinkProps): import("react").JSX.Element;
109
+ export declare namespace ButtonLink {
110
+ var displayName: string;
111
+ }
112
+ /** Size axis for {@link EffectButton} — padding + label size per source variant. */
113
+ export declare const EFFECT_BUTTON_SIZES: {
114
+ sm: {
115
+ classes: string;
116
+ description: string;
117
+ };
118
+ md: {
119
+ classes: string;
120
+ description: string;
121
+ };
122
+ };
123
+ /**
124
+ * Emphasis axis for {@link EffectButton} — the static fill + edge treatment.
125
+ * `secondary` reuses the white-card surface tokens of Button's `secondary`
126
+ * (white card, hairline ring, quiet hover) and skips the glossy sheen — that
127
+ * inset shine is the brand-fill treatment.
128
+ */
129
+ export declare const EFFECT_BUTTON_VARIANTS: {
130
+ primary: {
131
+ classes: string;
132
+ description: string;
133
+ };
134
+ secondary: {
135
+ classes: string;
136
+ description: string;
137
+ };
138
+ };
139
+ export type EffectButtonSize = keyof typeof EFFECT_BUTTON_SIZES;
140
+ export type EffectButtonVariant = keyof typeof EFFECT_BUTTON_VARIANTS;
141
+ /** Compose the static class string for an effect button — exported for reuse. */
142
+ export declare function effectButtonVariants(opts?: {
143
+ variant?: EffectButtonVariant;
144
+ size?: EffectButtonSize;
145
+ fullWidth?: boolean;
146
+ className?: string;
147
+ }): string;
148
+ type MotionConflicts = "onAnimationStart" | "onAnimationEnd" | "onAnimationIteration" | "onDrag" | "onDragStart" | "onDragEnd" | "onDragEnter" | "onDragExit" | "onDragLeave" | "onDragOver" | "onDrop" | "style";
149
+ interface EffectButtonBaseProps {
150
+ /** Emphasis variant. @default "primary" */
151
+ variant?: EffectButtonVariant;
152
+ /** Size variant. @default "md" */
153
+ size?: EffectButtonSize;
154
+ /** Stretch to the container's full width (stacked login / OAuth pills). */
155
+ fullWidth?: boolean;
156
+ /** Slot before the label — a component (`Plus`) or element (`<Plus />`). */
157
+ prefix?: Slottable;
158
+ /** Slot after the label. */
159
+ suffix?: Slottable;
160
+ /** Render as an icon-only button. Requires an `aria-label`. */
161
+ svgOnly?: boolean;
162
+ /** Show a spinner and block interaction while staying readable. */
163
+ loading?: boolean;
164
+ children?: ReactNode;
165
+ className?: string;
166
+ }
167
+ export interface EffectButtonProps extends EffectButtonBaseProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof EffectButtonBaseProps | MotionConflicts> {
168
+ ref?: Ref<HTMLButtonElement>;
169
+ }
170
+ export interface EffectButtonLinkProps extends EffectButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof EffectButtonBaseProps | MotionConflicts> {
171
+ /** Navigate to this URL (rendered via the host's `LinkProvider`). */
172
+ href: string;
173
+ /** Visually and semantically disable the link. */
174
+ disabled?: boolean;
175
+ }
176
+ /**
177
+ * EffectButton — the glossy, springy pill ported frame-for-frame from Photon's
178
+ * Framer "Button - Effect", driven by Motion. `variant="secondary"` swaps the
179
+ * brand fill for the neutral white-card surface without the sheen (the login /
180
+ * OAuth pill), and `fullWidth` stretches the pill across its container.
181
+ * Triggers an action; for navigation use {@link EffectButtonLink}.
182
+ */
183
+ export declare function EffectButton({ variant, size, fullWidth, prefix, suffix, svgOnly, loading, children, className, ref, ...props }: EffectButtonProps): import("react").JSX.Element;
184
+ export declare namespace EffectButton {
185
+ var displayName: string;
186
+ }
187
+ /**
188
+ * EffectButtonLink — {@link EffectButton} as a link, for navigation that changes
189
+ * the URL. Renders the host router's link (via `LinkProvider`) wrapped by Motion,
190
+ * so the pill animates identically to the button.
191
+ */
192
+ export declare function EffectButtonLink({ variant, size, fullWidth, prefix, suffix, svgOnly, loading, disabled, href, children, className, ...props }: EffectButtonLinkProps): import("react").JSX.Element;
193
+ export declare namespace EffectButtonLink {
194
+ var displayName: string;
195
+ }
196
+ export {};
@@ -0,0 +1,28 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ declare const CLOSE_SIZES: {
3
+ sm: {
4
+ classes: string;
5
+ };
6
+ md: {
7
+ classes: string;
8
+ };
9
+ lg: {
10
+ classes: string;
11
+ };
12
+ };
13
+ export interface CloseButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color"> {
14
+ /** Size variant. @default "sm" */
15
+ size?: keyof typeof CLOSE_SIZES;
16
+ /** Accessible label. @default "Close" */
17
+ label?: string;
18
+ }
19
+ /**
20
+ * Icon-only dismiss control — a squircle chip that fills on hover. Adapts to
21
+ * light/dark automatically via semantic tokens. Used by Dialog and dismissible
22
+ * surfaces.
23
+ */
24
+ export declare function CloseButton({ size, label, className, ...props }: CloseButtonProps): import("react").JSX.Element;
25
+ export declare namespace CloseButton {
26
+ var displayName: string;
27
+ }
28
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Button, ButtonLink, buttonVariants, BUTTON_SIZES, BUTTON_SHAPES, BUTTON_VARIANTS, EffectButton, EffectButtonLink, effectButtonVariants, EFFECT_BUTTON_SIZES, EFFECT_BUTTON_VARIANTS, type ButtonProps, type ButtonLinkProps, type ButtonSize, type ButtonShape, type ButtonVariant, type EffectButtonProps, type EffectButtonLinkProps, type EffectButtonSize, type EffectButtonVariant, } from './button';
2
+ export { CloseButton, type CloseButtonProps } from './close-button';
@@ -0,0 +1,15 @@
1
+ import { ComponentProps } from 'react';
2
+ import { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react/checkbox-group';
3
+ export interface CheckboxGroupProps extends Omit<ComponentProps<typeof BaseCheckboxGroup>, "className"> {
4
+ className?: string;
5
+ }
6
+ /**
7
+ * Groups related `Checkbox`es and tracks their values as one. Built on Base UI
8
+ * `CheckboxGroup` — supports a parent "select all" checkbox via `allValues`.
9
+ * Control with `value` / `onValueChange` or leave uncontrolled with
10
+ * `defaultValue`.
11
+ */
12
+ export declare function CheckboxGroup({ className, ...props }: CheckboxGroupProps): import("react").JSX.Element;
13
+ export declare namespace CheckboxGroup {
14
+ var displayName: string;
15
+ }
@@ -0,0 +1,20 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';
3
+ export type CheckboxSize = "sm" | "md";
4
+ export interface CheckboxProps extends Omit<ComponentProps<typeof BaseCheckbox.Root>, "className"> {
5
+ className?: string;
6
+ /** Text rendered beside the box; the whole row toggles the checkbox. */
7
+ label?: ReactNode;
8
+ /** Size variant. @default "md" */
9
+ size?: CheckboxSize;
10
+ }
11
+ /**
12
+ * Checkbox built on Base UI `Checkbox`. Supports checked, unchecked, and
13
+ * `indeterminate` states; pass `label` for a clickable text row, or omit it
14
+ * and provide an `aria-label`. For a set of related options that submit
15
+ * together, wrap them in `CheckboxGroup`.
16
+ */
17
+ export declare function Checkbox({ className, label, size, ...props }: CheckboxProps): import("react").JSX.Element;
18
+ export declare namespace Checkbox {
19
+ var displayName: string;
20
+ }
@@ -0,0 +1,2 @@
1
+ export { Checkbox, type CheckboxProps, type CheckboxSize } from './checkbox';
2
+ export { CheckboxGroup, type CheckboxGroupProps } from './checkbox-group';
@@ -0,0 +1,20 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function Trigger({ className, ...props }: StyledProps<typeof BaseCollapsible.Trigger>): import("react").JSX.Element;
8
+ declare function Panel({ className, ...props }: StyledProps<typeof BaseCollapsible.Panel>): import("react").JSX.Element;
9
+ /**
10
+ * Show/hide a region of content, built on Base UI `Collapsible` with a smooth
11
+ * height animation. Control with `open` / `onOpenChange` or leave uncontrolled
12
+ * via `defaultOpen`. For several sections where one expands at a time, use
13
+ * `Accordion`.
14
+ */
15
+ export declare const Collapsible: {
16
+ Root: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').CollapsibleRootProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
17
+ Trigger: typeof Trigger;
18
+ Panel: typeof Panel;
19
+ };
20
+ export {};
@@ -0,0 +1 @@
1
+ export { Collapsible } from './collapsible';
@@ -0,0 +1,49 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { Combobox as BaseCombobox } from '@base-ui/react/combobox';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function InputGroup({ className, ...props }: StyledProps<typeof BaseCombobox.InputGroup>): import("react").JSX.Element;
8
+ declare function Input({ className, ...props }: StyledProps<typeof BaseCombobox.Input>): import("react").JSX.Element;
9
+ declare function Clear({ className, ...props }: StyledProps<typeof BaseCombobox.Clear>): import("react").JSX.Element;
10
+ declare function Trigger({ className, ...props }: StyledProps<typeof BaseCombobox.Trigger>): import("react").JSX.Element;
11
+ declare function Positioner({ className, sideOffset, ...props }: StyledProps<typeof BaseCombobox.Positioner>): import("react").JSX.Element;
12
+ declare function Popup({ className, ...props }: StyledProps<typeof BaseCombobox.Popup>): import("react").JSX.Element;
13
+ declare function List({ className, ...props }: StyledProps<typeof BaseCombobox.List>): import("react").JSX.Element;
14
+ declare function Empty({ className, ...props }: StyledProps<typeof BaseCombobox.Empty>): import("react").JSX.Element;
15
+ declare function Item({ className, ...props }: StyledProps<typeof BaseCombobox.Item>): import("react").JSX.Element;
16
+ declare function ItemIndicator({ className, ...props }: StyledProps<typeof BaseCombobox.ItemIndicator>): import("react").JSX.Element;
17
+ declare function GroupLabel({ className, ...props }: StyledProps<typeof BaseCombobox.GroupLabel>): import("react").JSX.Element;
18
+ declare function Chips({ className, ...props }: StyledProps<typeof BaseCombobox.Chips>): import("react").JSX.Element;
19
+ declare function Chip({ className, ...props }: StyledProps<typeof BaseCombobox.Chip>): import("react").JSX.Element;
20
+ declare function ChipRemove({ className, ...props }: StyledProps<typeof BaseCombobox.ChipRemove>): import("react").JSX.Element;
21
+ /**
22
+ * Combobox built on Base UI `Combobox` — a text input that filters a list as
23
+ * you type and commits to a value from it. Pass `items` to `Combobox.Root`;
24
+ * `Combobox.List` takes a render function mapping each (filtered) item to a
25
+ * `Combobox.Item`. Add `Combobox.Chips` for multi-select. For free-form text
26
+ * with suggestions, use `Autocomplete`; for a small fixed set, use `Select`.
27
+ */
28
+ export declare const Combobox: {
29
+ Root: typeof BaseCombobox.Root;
30
+ Value: typeof BaseCombobox.Value;
31
+ InputGroup: typeof InputGroup;
32
+ Input: typeof Input;
33
+ Trigger: typeof Trigger;
34
+ Clear: typeof Clear;
35
+ Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AutocompletePortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
36
+ Positioner: typeof Positioner;
37
+ Popup: typeof Popup;
38
+ List: typeof List;
39
+ Collection: typeof BaseCombobox.Collection;
40
+ Empty: typeof Empty;
41
+ Item: typeof Item;
42
+ ItemIndicator: typeof ItemIndicator;
43
+ Group: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AutocompleteGroupProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
44
+ GroupLabel: typeof GroupLabel;
45
+ Chips: typeof Chips;
46
+ Chip: typeof Chip;
47
+ ChipRemove: typeof ChipRemove;
48
+ };
49
+ export {};
@@ -0,0 +1 @@
1
+ export { Combobox } from './combobox';
@@ -0,0 +1,34 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu';
3
+ import { Separator as BaseSeparator } from '@base-ui/react/separator';
4
+ /** Override Base UI's `string | (state) => string` className with plain string. */
5
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
6
+ className?: string;
7
+ };
8
+ declare function Positioner({ className, ...props }: StyledProps<typeof BaseContextMenu.Positioner>): import("react").JSX.Element;
9
+ declare function Popup({ className, ...props }: StyledProps<typeof BaseContextMenu.Popup>): import("react").JSX.Element;
10
+ declare function Item({ className, ...props }: StyledProps<typeof BaseContextMenu.Item>): import("react").JSX.Element;
11
+ declare function GroupLabel({ className, ...props }: StyledProps<typeof BaseContextMenu.GroupLabel>): import("react").JSX.Element;
12
+ declare function Separator({ className, ...props }: StyledProps<typeof BaseSeparator>): import("react").JSX.Element;
13
+ declare function SubmenuTrigger({ className, ...props }: StyledProps<typeof BaseContextMenu.SubmenuTrigger>): import("react").JSX.Element;
14
+ /**
15
+ * Right-click (context) menu built on Base UI `ContextMenu`. `ContextMenu.Trigger`
16
+ * wraps the area that opens the menu on right-click / long-press; the popup
17
+ * shares its look with `Menu`. Always mirror these actions somewhere visible —
18
+ * a context menu must not be the only way to reach them.
19
+ */
20
+ export declare const ContextMenu: {
21
+ Root: typeof BaseContextMenu.Root;
22
+ Trigger: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').ContextMenuTriggerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
23
+ Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').ContextMenuPortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
24
+ Positioner: typeof Positioner;
25
+ Popup: typeof Popup;
26
+ Item: typeof Item;
27
+ Group: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').ContextMenuGroupProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
28
+ GroupLabel: typeof GroupLabel;
29
+ Separator: typeof Separator;
30
+ SubmenuRoot: typeof BaseContextMenu.SubmenuRoot;
31
+ SubmenuTrigger: typeof SubmenuTrigger;
32
+ RadioGroup: import('react').NamedExoticComponent<Omit<import('@base-ui/react').ContextMenuRadioGroupProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
33
+ };
34
+ export {};
@@ -0,0 +1 @@
1
+ export { ContextMenu } from './context-menu';
@@ -0,0 +1,41 @@
1
+ import { ComponentProps, ElementType, ReactNode } from 'react';
2
+ import { Dialog as BaseDialog } from '@base-ui/react/dialog';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function Backdrop({ className, ...props }: StyledProps<typeof BaseDialog.Backdrop>): import("react").JSX.Element;
8
+ declare function Popup({ className, ...props }: StyledProps<typeof BaseDialog.Popup>): import("react").JSX.Element;
9
+ declare function Title({ className, ...props }: StyledProps<typeof BaseDialog.Title>): import("react").JSX.Element;
10
+ declare function Description({ className, ...props }: StyledProps<typeof BaseDialog.Description>): import("react").JSX.Element;
11
+ interface ContentProps extends Omit<StyledProps<typeof BaseDialog.Popup>, "title"> {
12
+ /** Heading rendered in the panel header. */
13
+ title?: ReactNode;
14
+ /** Supporting text under the title. */
15
+ description?: ReactNode;
16
+ /** Show the top-right close button. @default true */
17
+ showClose?: boolean;
18
+ children?: ReactNode;
19
+ }
20
+ /**
21
+ * Convenience panel: renders the portal, backdrop, and styled popup with an
22
+ * optional header (title/description + close). For full control, compose the
23
+ * parts directly (`Dialog.Portal` / `Dialog.Backdrop` / `Dialog.Popup`).
24
+ */
25
+ declare function Content({ title, description, showClose, children, className, ...props }: ContentProps): import("react").JSX.Element;
26
+ /**
27
+ * Modal dialog built on Base UI `Dialog`. Controlled or uncontrolled via
28
+ * `Dialog.Root` (`open` / `onOpenChange` / `defaultOpen`).
29
+ */
30
+ export declare const Dialog: {
31
+ Root: typeof BaseDialog.Root;
32
+ Trigger: BaseDialog.Trigger;
33
+ Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AlertDialogPortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
34
+ Backdrop: typeof Backdrop;
35
+ Popup: typeof Popup;
36
+ Title: typeof Title;
37
+ Description: typeof Description;
38
+ Close: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AlertDialogCloseProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
39
+ Content: typeof Content;
40
+ };
41
+ export {};
@@ -0,0 +1 @@
1
+ export { Dialog } from './dialog';
@@ -0,0 +1,32 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function Backdrop({ className, ...props }: StyledProps<typeof BaseDrawer.Backdrop>): import("react").JSX.Element;
8
+ declare function Viewport({ className, ...props }: StyledProps<typeof BaseDrawer.Viewport>): import("react").JSX.Element;
9
+ declare function Popup({ className, ...props }: StyledProps<typeof BaseDrawer.Popup>): import("react").JSX.Element;
10
+ declare function Content({ className, ...props }: StyledProps<typeof BaseDrawer.Content>): import("react").JSX.Element;
11
+ declare function Title({ className, ...props }: StyledProps<typeof BaseDrawer.Title>): import("react").JSX.Element;
12
+ declare function Description({ className, ...props }: StyledProps<typeof BaseDrawer.Description>): import("react").JSX.Element;
13
+ /**
14
+ * Drawer built on Base UI `Drawer` — a panel that slides in from the edge
15
+ * (here, the right) with swipe-to-dismiss. Use it for secondary tasks and
16
+ * navigation that should keep page context; for a forced decision use
17
+ * `AlertDialog`, and for a centered modal use `Dialog`. Compose `Drawer.Portal`
18
+ * → `Backdrop` → `Viewport` → `Popup` → `Content`.
19
+ */
20
+ export declare const Drawer: {
21
+ Root: typeof BaseDrawer.Root;
22
+ Trigger: BaseDrawer.Trigger;
23
+ Portal: BaseDrawer.Portal;
24
+ Backdrop: typeof Backdrop;
25
+ Viewport: typeof Viewport;
26
+ Popup: typeof Popup;
27
+ Content: typeof Content;
28
+ Title: typeof Title;
29
+ Description: typeof Description;
30
+ Close: BaseDrawer.Close;
31
+ };
32
+ export {};
@@ -0,0 +1 @@
1
+ export { Drawer } from './drawer';
@@ -0,0 +1,27 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { Field as BaseField } from '@base-ui/react/field';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function Root({ className, ...props }: StyledProps<typeof BaseField.Root>): import("react").JSX.Element;
8
+ declare function Label({ className, ...props }: StyledProps<typeof BaseField.Label>): import("react").JSX.Element;
9
+ declare function Control({ className, ...props }: StyledProps<typeof BaseField.Control>): import("react").JSX.Element;
10
+ declare function Description({ className, ...props }: StyledProps<typeof BaseField.Description>): import("react").JSX.Element;
11
+ declare function Error({ className, ...props }: StyledProps<typeof BaseField.Error>): import("react").JSX.Element;
12
+ /**
13
+ * Form field built on Base UI `Field`. Wires a label, description, and
14
+ * validation error to a control for you — compose it around `Field.Control`
15
+ * (or any control via `render`). `Field.Error` shows when the control is
16
+ * invalid; `Field.Validity` exposes raw validity for custom messages.
17
+ */
18
+ export declare const Field: {
19
+ Root: typeof Root;
20
+ Label: typeof Label;
21
+ Control: typeof Control;
22
+ Description: typeof Description;
23
+ Error: typeof Error;
24
+ Item: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').FieldItemProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
25
+ Validity: import('react').FC<import('@base-ui/react').FieldValidityProps>;
26
+ };
27
+ export {};
@@ -0,0 +1 @@
1
+ export { Field } from './field';
@@ -0,0 +1,18 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { Fieldset as BaseFieldset } from '@base-ui/react/fieldset';
3
+ /** Override Base UI's `string | (state) => string` className with plain string. */
4
+ type StyledProps<T extends ElementType> = Omit<ComponentProps<T>, "className"> & {
5
+ className?: string;
6
+ };
7
+ declare function Root({ className, ...props }: StyledProps<typeof BaseFieldset.Root>): import("react").JSX.Element;
8
+ declare function Legend({ className, ...props }: StyledProps<typeof BaseFieldset.Legend>): import("react").JSX.Element;
9
+ /**
10
+ * Groups related fields under a shared legend, built on Base UI `Fieldset`.
11
+ * Use it to title a cluster of inputs (e.g. "Billing address") so the grouping
12
+ * is announced to assistive tech.
13
+ */
14
+ export declare const Fieldset: {
15
+ Root: typeof Root;
16
+ Legend: typeof Legend;
17
+ };
18
+ export {};
@@ -0,0 +1 @@
1
+ export { Fieldset } from './fieldset';
@@ -0,0 +1,14 @@
1
+ import { ComponentProps } from 'react';
2
+ import { Form as BaseForm } from '@base-ui/react/form';
3
+ export interface FormProps extends Omit<ComponentProps<typeof BaseForm>, "className"> {
4
+ className?: string;
5
+ }
6
+ /**
7
+ * Form wrapper built on Base UI `Form`. Coordinates the contained `Field`s —
8
+ * pass server-side `errors` and they surface on the matching fields, and
9
+ * `onClearErrors` clears them as the user edits.
10
+ */
11
+ export declare function Form({ className, ...props }: FormProps): import("react").JSX.Element;
12
+ export declare namespace Form {
13
+ var displayName: string;
14
+ }
@@ -0,0 +1 @@
1
+ export { Form, type FormProps } from './form';
@@ -0,0 +1 @@
1
+ export { Input, type InputProps, type InputSize } from './input';
@@ -0,0 +1,30 @@
1
+ import { ComponentType, InputHTMLAttributes, ReactNode, Ref } from 'react';
2
+ export type InputSize = "sm" | "md" | "lg";
3
+ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"> {
4
+ /** Field label (associated for accessibility). */
5
+ label?: ReactNode;
6
+ /** Helper text below the field; rendered in the error color when `invalid`. */
7
+ hint?: ReactNode;
8
+ /** Size variant. @default "md" */
9
+ size?: InputSize;
10
+ /** Render the invalid state (ring + icon + error-colored hint). */
11
+ invalid?: boolean;
12
+ /** Leading icon component (e.g. a Phosphor icon). */
13
+ icon?: ComponentType<{
14
+ className?: string;
15
+ }>;
16
+ /** Node rendered at the right edge of the label row (e.g. "Forgot?"). */
17
+ labelTrailing?: ReactNode;
18
+ /** Class applied to the input wrapper. */
19
+ wrapperClassName?: string;
20
+ ref?: Ref<HTMLInputElement>;
21
+ }
22
+ /**
23
+ * Text input built on Base UI `Field` (label/description a11y wiring) with
24
+ * Pho's bordered surface, leading icon, invalid state, and a built-in password
25
+ * reveal toggle.
26
+ */
27
+ export declare function Input({ label, hint, size, invalid, icon: Icon, labelTrailing, disabled, required, type, className, wrapperClassName, id, ref, ...props }: InputProps): import("react").JSX.Element;
28
+ export declare namespace Input {
29
+ var displayName: string;
30
+ }
@@ -0,0 +1 @@
1
+ export { Kbd, type KbdProps } from './kbd';
@@ -0,0 +1,18 @@
1
+ import { ComponentProps } from 'react';
2
+ interface KbdBaseProps {
3
+ /** Convenience string for the key(s) to show, e.g. "⌘K". Ignored when `children` are provided. */
4
+ keys?: string;
5
+ }
6
+ export interface KbdProps extends KbdBaseProps, Omit<ComponentProps<"kbd">, keyof KbdBaseProps> {
7
+ }
8
+ /**
9
+ * Kbd — a keyboard keycap for documenting a shortcut (`⌘K`, `Esc`, `↵`). Supply
10
+ * the key via `children` or the `keys` string; for a chord, place several in a
11
+ * row (`Press ⌘ K`). It's purely presentational and carries no interaction — to
12
+ * actually trigger a shortcut, wire a key handler on the target control.
13
+ */
14
+ export declare function Kbd({ keys, className, children, ...props }: KbdProps): import("react").JSX.Element;
15
+ export declare namespace Kbd {
16
+ var displayName: string;
17
+ }
18
+ export {};
@@ -0,0 +1 @@
1
+ export { Menu, MENU_POPUP, MENU_ITEM } from './menu';