@refraction-ui/react 0.4.1 → 0.5.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 (288) hide show
  1. package/README.md +9 -1
  2. package/dist/chunk-ZWRGVWUY.js +120 -0
  3. package/dist/chunk-ZWRGVWUY.js.map +1 -0
  4. package/dist/form.cjs +315 -0
  5. package/dist/form.cjs.map +1 -0
  6. package/dist/form.d.cts +1 -0
  7. package/dist/form.d.ts +1 -0
  8. package/dist/form.js +196 -0
  9. package/dist/form.js.map +1 -0
  10. package/dist/index.cjs +45 -258
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +74 -76
  13. package/dist/index.d.ts +74 -76
  14. package/dist/index.js +47 -334
  15. package/dist/index.js.map +1 -1
  16. package/dist/internal/animated-text/index.d.cts +47 -0
  17. package/dist/internal/animated-text/index.d.ts +47 -0
  18. package/dist/internal/app-shell/index.d.cts +128 -0
  19. package/dist/internal/app-shell/index.d.ts +128 -0
  20. package/dist/internal/auth/index.d.cts +74 -0
  21. package/dist/internal/auth/index.d.ts +74 -0
  22. package/dist/internal/avatar/index.d.cts +53 -0
  23. package/dist/internal/avatar/index.d.ts +53 -0
  24. package/dist/internal/avatar-group/index.d.cts +70 -0
  25. package/dist/internal/avatar-group/index.d.ts +70 -0
  26. package/dist/internal/badge/index.d.cts +26 -0
  27. package/dist/internal/badge/index.d.ts +26 -0
  28. package/dist/internal/bottom-nav/index.d.cts +29 -0
  29. package/dist/internal/bottom-nav/index.d.ts +29 -0
  30. package/dist/internal/breadcrumbs/index.d.cts +38 -0
  31. package/dist/internal/breadcrumbs/index.d.ts +38 -0
  32. package/dist/internal/button/index.d.cts +34 -0
  33. package/dist/internal/button/index.d.ts +34 -0
  34. package/dist/internal/calendar/index.d.cts +73 -0
  35. package/dist/internal/calendar/index.d.ts +73 -0
  36. package/dist/internal/card/index.d.cts +62 -0
  37. package/dist/internal/card/index.d.ts +62 -0
  38. package/dist/internal/card-grid/index.d.cts +10 -0
  39. package/dist/internal/card-grid/index.d.ts +10 -0
  40. package/dist/internal/checkbox/index.d.cts +40 -0
  41. package/dist/internal/checkbox/index.d.ts +40 -0
  42. package/dist/internal/code-editor/index.d.cts +47 -0
  43. package/dist/internal/code-editor/index.d.ts +47 -0
  44. package/dist/internal/collapsible/index.d.cts +43 -0
  45. package/dist/internal/collapsible/index.d.ts +43 -0
  46. package/dist/internal/command/index.d.cts +80 -0
  47. package/dist/internal/command/index.d.ts +80 -0
  48. package/dist/internal/content-protection/index.d.cts +47 -0
  49. package/dist/internal/content-protection/index.d.ts +47 -0
  50. package/dist/internal/data-table/index.d.cts +73 -0
  51. package/dist/internal/data-table/index.d.ts +73 -0
  52. package/dist/internal/date-picker/index.d.cts +98 -0
  53. package/dist/internal/date-picker/index.d.ts +98 -0
  54. package/dist/internal/device-frame/index.d.cts +40 -0
  55. package/dist/internal/device-frame/index.d.ts +40 -0
  56. package/dist/internal/dialog/index.d.cts +54 -0
  57. package/dist/internal/dialog/index.d.ts +54 -0
  58. package/dist/internal/dropdown-menu/index.d.cts +55 -0
  59. package/dist/internal/dropdown-menu/index.d.ts +55 -0
  60. package/dist/internal/emoji-picker/index.d.cts +77 -0
  61. package/dist/internal/emoji-picker/index.d.ts +77 -0
  62. package/dist/internal/feedback-dialog/index.d.cts +55 -0
  63. package/dist/internal/feedback-dialog/index.d.ts +55 -0
  64. package/dist/internal/file-upload/index.d.cts +91 -0
  65. package/dist/internal/file-upload/index.d.ts +91 -0
  66. package/dist/internal/footer/index.d.cts +30 -0
  67. package/dist/internal/footer/index.d.ts +30 -0
  68. package/dist/internal/inline-editor/index.d.cts +52 -0
  69. package/dist/internal/inline-editor/index.d.ts +52 -0
  70. package/dist/internal/input/index.d.cts +38 -0
  71. package/dist/internal/input/index.d.ts +38 -0
  72. package/dist/internal/input-group/index.d.cts +35 -0
  73. package/dist/internal/input-group/index.d.ts +35 -0
  74. package/dist/internal/install-prompt/index.d.cts +36 -0
  75. package/dist/internal/install-prompt/index.d.ts +36 -0
  76. package/dist/internal/keyboard-shortcut/index.d.cts +49 -0
  77. package/dist/internal/keyboard-shortcut/index.d.ts +49 -0
  78. package/dist/internal/language-selector/index.d.cts +63 -0
  79. package/dist/internal/language-selector/index.d.ts +63 -0
  80. package/dist/internal/markdown-renderer/index.d.cts +40 -0
  81. package/dist/internal/markdown-renderer/index.d.ts +40 -0
  82. package/dist/internal/mobile-nav/index.d.cts +45 -0
  83. package/dist/internal/mobile-nav/index.d.ts +45 -0
  84. package/dist/internal/navbar/index.d.cts +30 -0
  85. package/dist/internal/navbar/index.d.ts +30 -0
  86. package/dist/internal/otp-input/index.d.cts +66 -0
  87. package/dist/internal/otp-input/index.d.ts +66 -0
  88. package/dist/internal/payment/index.d.cts +9 -0
  89. package/dist/internal/payment/index.d.ts +9 -0
  90. package/dist/internal/popover/index.d.cts +46 -0
  91. package/dist/internal/popover/index.d.ts +46 -0
  92. package/dist/internal/presence-indicator/index.d.cts +38 -0
  93. package/dist/internal/presence-indicator/index.d.ts +38 -0
  94. package/dist/internal/progress-display/index.d.cts +60 -0
  95. package/dist/internal/progress-display/index.d.ts +60 -0
  96. package/dist/internal/radio/index.d.ts +43 -0
  97. package/dist/internal/react-accordion/index.d.ts +22 -0
  98. package/dist/internal/react-animated-text/index.d.cts +12 -0
  99. package/dist/internal/react-animated-text/index.d.ts +12 -0
  100. package/dist/internal/react-app-shell/index.d.cts +169 -0
  101. package/dist/internal/react-app-shell/index.d.ts +169 -0
  102. package/dist/internal/react-auth/index.d.cts +59 -0
  103. package/dist/internal/react-auth/index.d.ts +59 -0
  104. package/dist/internal/react-avatar/index.d.cts +20 -0
  105. package/dist/internal/react-avatar/index.d.ts +20 -0
  106. package/dist/internal/react-avatar-group/index.d.cts +33 -0
  107. package/dist/internal/react-avatar-group/index.d.ts +33 -0
  108. package/dist/internal/react-badge/index.d.cts +17 -0
  109. package/dist/internal/react-badge/index.d.ts +17 -0
  110. package/dist/internal/react-bottom-nav/index.d.cts +19 -0
  111. package/dist/internal/react-bottom-nav/index.d.ts +19 -0
  112. package/dist/internal/react-breadcrumbs/index.d.cts +24 -0
  113. package/dist/internal/react-breadcrumbs/index.d.ts +24 -0
  114. package/dist/internal/react-button/index.d.cts +21 -0
  115. package/dist/internal/react-button/index.d.ts +21 -0
  116. package/dist/internal/react-calendar/index.d.cts +44 -0
  117. package/dist/internal/react-calendar/index.d.ts +44 -0
  118. package/dist/internal/react-callout/index.d.cts +12 -0
  119. package/dist/internal/react-callout/index.d.ts +12 -0
  120. package/dist/internal/react-card/index.d.cts +29 -0
  121. package/dist/internal/react-card/index.d.ts +29 -0
  122. package/dist/internal/react-card-grid/index.d.cts +8 -0
  123. package/dist/internal/react-card-grid/index.d.ts +8 -0
  124. package/dist/internal/react-carousel/index.d.ts +22 -0
  125. package/dist/internal/react-checkbox/index.d.cts +18 -0
  126. package/dist/internal/react-checkbox/index.d.ts +18 -0
  127. package/dist/internal/react-code-block/index.d.cts +7 -0
  128. package/dist/internal/react-code-block/index.d.ts +7 -0
  129. package/dist/internal/react-code-editor/index.d.cts +28 -0
  130. package/dist/internal/react-code-editor/index.d.ts +28 -0
  131. package/dist/internal/react-collapsible/index.d.cts +29 -0
  132. package/dist/internal/react-collapsible/index.d.ts +29 -0
  133. package/dist/internal/react-combobox/index.d.cts +94 -0
  134. package/dist/internal/react-combobox/index.d.ts +94 -0
  135. package/dist/internal/react-command/index.d.cts +51 -0
  136. package/dist/internal/react-command/index.d.ts +51 -0
  137. package/dist/internal/react-content-protection/index.d.cts +22 -0
  138. package/dist/internal/react-content-protection/index.d.ts +22 -0
  139. package/dist/internal/react-data-table/index.d.cts +22 -0
  140. package/dist/internal/react-data-table/index.d.ts +22 -0
  141. package/dist/internal/react-date-picker/index.d.cts +23 -0
  142. package/dist/internal/react-date-picker/index.d.ts +23 -0
  143. package/dist/internal/react-device-frame/index.d.cts +37 -0
  144. package/dist/internal/react-device-frame/index.d.ts +37 -0
  145. package/dist/internal/react-dialog/index.d.cts +49 -0
  146. package/dist/internal/react-dialog/index.d.ts +49 -0
  147. package/dist/internal/react-dropdown-menu/index.d.cts +37 -0
  148. package/dist/internal/react-dropdown-menu/index.d.ts +37 -0
  149. package/dist/internal/react-emoji-picker/index.d.cts +32 -0
  150. package/dist/internal/react-emoji-picker/index.d.ts +32 -0
  151. package/dist/internal/react-feedback-dialog/index.d.cts +40 -0
  152. package/dist/internal/react-feedback-dialog/index.d.ts +40 -0
  153. package/dist/internal/react-file-tree/index.d.cts +5 -0
  154. package/dist/internal/react-file-tree/index.d.ts +5 -0
  155. package/dist/internal/react-file-upload/index.d.cts +22 -0
  156. package/dist/internal/react-file-upload/index.d.ts +22 -0
  157. package/dist/internal/react-footer/index.d.cts +20 -0
  158. package/dist/internal/react-footer/index.d.ts +20 -0
  159. package/dist/internal/react-form/index.d.cts +85 -0
  160. package/dist/internal/react-form/index.d.ts +85 -0
  161. package/dist/internal/react-icon-system/index.d.cts +5 -0
  162. package/dist/internal/react-icon-system/index.d.ts +5 -0
  163. package/dist/internal/react-inline-editor/index.d.cts +17 -0
  164. package/dist/internal/react-inline-editor/index.d.ts +17 -0
  165. package/dist/internal/react-input/index.d.cts +31 -0
  166. package/dist/internal/react-input/index.d.ts +31 -0
  167. package/dist/internal/react-input-group/index.d.cts +34 -0
  168. package/dist/internal/react-input-group/index.d.ts +34 -0
  169. package/dist/internal/react-install-prompt/index.d.cts +24 -0
  170. package/dist/internal/react-install-prompt/index.d.ts +24 -0
  171. package/dist/internal/react-keyboard-shortcut/index.d.cts +57 -0
  172. package/dist/internal/react-keyboard-shortcut/index.d.ts +57 -0
  173. package/dist/internal/react-language-selector/index.d.cts +26 -0
  174. package/dist/internal/react-language-selector/index.d.ts +26 -0
  175. package/dist/internal/react-link-card/index.d.cts +5 -0
  176. package/dist/internal/react-link-card/index.d.ts +5 -0
  177. package/dist/internal/react-markdown-renderer/index.d.cts +20 -0
  178. package/dist/internal/react-markdown-renderer/index.d.ts +20 -0
  179. package/dist/internal/react-mobile-nav/index.d.cts +33 -0
  180. package/dist/internal/react-mobile-nav/index.d.ts +33 -0
  181. package/dist/internal/react-navbar/index.d.cts +25 -0
  182. package/dist/internal/react-navbar/index.d.ts +25 -0
  183. package/dist/internal/react-otp-input/index.d.cts +21 -0
  184. package/dist/internal/react-otp-input/index.d.ts +21 -0
  185. package/dist/internal/react-pagination/index.d.ts +7 -0
  186. package/dist/internal/react-payment/index.d.cts +9 -0
  187. package/dist/internal/react-payment/index.d.ts +9 -0
  188. package/dist/internal/react-popover/index.d.cts +33 -0
  189. package/dist/internal/react-popover/index.d.ts +33 -0
  190. package/dist/internal/react-presence-indicator/index.d.cts +34 -0
  191. package/dist/internal/react-presence-indicator/index.d.ts +34 -0
  192. package/dist/internal/react-progress-display/index.d.cts +21 -0
  193. package/dist/internal/react-progress-display/index.d.ts +21 -0
  194. package/dist/internal/react-radio/index.d.ts +33 -0
  195. package/dist/internal/react-reaction-bar/index.d.cts +34 -0
  196. package/dist/internal/react-reaction-bar/index.d.ts +34 -0
  197. package/dist/internal/react-resizable-layout/index.d.cts +36 -0
  198. package/dist/internal/react-resizable-layout/index.d.ts +36 -0
  199. package/dist/internal/react-rich-editor/index.d.cts +2 -0
  200. package/dist/internal/react-rich-editor/index.d.ts +2 -0
  201. package/dist/internal/react-search-bar/index.d.cts +32 -0
  202. package/dist/internal/react-search-bar/index.d.ts +32 -0
  203. package/dist/internal/react-select/index.d.cts +30 -0
  204. package/dist/internal/react-select/index.d.ts +30 -0
  205. package/dist/internal/react-sheet/index.d.cts +67 -0
  206. package/dist/internal/react-sheet/index.d.ts +67 -0
  207. package/dist/internal/react-sidebar/index.d.cts +23 -0
  208. package/dist/internal/react-sidebar/index.d.ts +23 -0
  209. package/dist/internal/react-skeleton/index.d.cts +31 -0
  210. package/dist/internal/react-skeleton/index.d.ts +31 -0
  211. package/dist/internal/react-skip-to-content/index.d.cts +9 -0
  212. package/dist/internal/react-skip-to-content/index.d.ts +9 -0
  213. package/dist/internal/react-slide-viewer/index.d.cts +23 -0
  214. package/dist/internal/react-slide-viewer/index.d.ts +23 -0
  215. package/dist/internal/react-slider/index.d.cts +1 -0
  216. package/dist/internal/react-slider/index.d.ts +1 -0
  217. package/dist/internal/react-status-indicator/index.d.cts +34 -0
  218. package/dist/internal/react-status-indicator/index.d.ts +34 -0
  219. package/dist/internal/react-steps/index.d.cts +19 -0
  220. package/dist/internal/react-steps/index.d.ts +19 -0
  221. package/dist/internal/react-switch/index.d.cts +17 -0
  222. package/dist/internal/react-switch/index.d.ts +17 -0
  223. package/dist/internal/react-table-of-contents/index.d.ts +10 -0
  224. package/dist/internal/react-tabs/index.d.cts +31 -0
  225. package/dist/internal/react-tabs/index.d.ts +31 -0
  226. package/dist/internal/react-textarea/index.d.cts +16 -0
  227. package/dist/internal/react-textarea/index.d.ts +16 -0
  228. package/dist/internal/react-theme/index.d.cts +44 -0
  229. package/dist/internal/react-theme/index.d.ts +44 -0
  230. package/dist/internal/react-thread-view/index.d.cts +34 -0
  231. package/dist/internal/react-thread-view/index.d.ts +34 -0
  232. package/dist/internal/react-toast/index.d.cts +36 -0
  233. package/dist/internal/react-toast/index.d.ts +36 -0
  234. package/dist/internal/react-tooltip/index.d.cts +33 -0
  235. package/dist/internal/react-tooltip/index.d.ts +33 -0
  236. package/dist/internal/react-version-selector/index.d.cts +24 -0
  237. package/dist/internal/react-version-selector/index.d.ts +24 -0
  238. package/dist/internal/react-video-player/index.d.cts +9 -0
  239. package/dist/internal/react-video-player/index.d.ts +9 -0
  240. package/dist/internal/react-voice-pill/index.d.cts +10 -0
  241. package/dist/internal/react-voice-pill/index.d.ts +10 -0
  242. package/dist/internal/react-waveform/index.d.cts +9 -0
  243. package/dist/internal/react-waveform/index.d.ts +9 -0
  244. package/dist/internal/reaction-bar/index.d.cts +50 -0
  245. package/dist/internal/reaction-bar/index.d.ts +50 -0
  246. package/dist/internal/resizable-layout/index.d.cts +47 -0
  247. package/dist/internal/resizable-layout/index.d.ts +47 -0
  248. package/dist/internal/search-bar/index.d.cts +51 -0
  249. package/dist/internal/search-bar/index.d.ts +51 -0
  250. package/dist/internal/select/index.d.cts +69 -0
  251. package/dist/internal/select/index.d.ts +69 -0
  252. package/dist/internal/shared/index.d.cts +249 -0
  253. package/dist/internal/shared/index.d.ts +249 -0
  254. package/dist/internal/sidebar/index.d.cts +40 -0
  255. package/dist/internal/sidebar/index.d.ts +40 -0
  256. package/dist/internal/skeleton/index.d.cts +27 -0
  257. package/dist/internal/skeleton/index.d.ts +27 -0
  258. package/dist/internal/slide-viewer/index.d.cts +72 -0
  259. package/dist/internal/slide-viewer/index.d.ts +72 -0
  260. package/dist/internal/slider/index.d.cts +4 -0
  261. package/dist/internal/slider/index.d.ts +4 -0
  262. package/dist/internal/status-indicator/index.d.cts +42 -0
  263. package/dist/internal/status-indicator/index.d.ts +42 -0
  264. package/dist/internal/switch/index.d.cts +41 -0
  265. package/dist/internal/switch/index.d.ts +41 -0
  266. package/dist/internal/tabs/index.d.cts +45 -0
  267. package/dist/internal/tabs/index.d.ts +45 -0
  268. package/dist/internal/textarea/index.d.cts +28 -0
  269. package/dist/internal/textarea/index.d.ts +28 -0
  270. package/dist/internal/theme/index.d.cts +60 -0
  271. package/dist/internal/theme/index.d.ts +60 -0
  272. package/dist/internal/thread-view/index.d.cts +95 -0
  273. package/dist/internal/thread-view/index.d.ts +95 -0
  274. package/dist/internal/toast/index.d.cts +64 -0
  275. package/dist/internal/toast/index.d.ts +64 -0
  276. package/dist/internal/tooltip/index.d.cts +45 -0
  277. package/dist/internal/tooltip/index.d.ts +45 -0
  278. package/dist/internal/version-selector/index.d.cts +68 -0
  279. package/dist/internal/version-selector/index.d.ts +68 -0
  280. package/dist/internal/video-player/index.d.cts +50 -0
  281. package/dist/internal/video-player/index.d.ts +50 -0
  282. package/dist/internal/voice-pill/index.d.cts +86 -0
  283. package/dist/internal/voice-pill/index.d.ts +86 -0
  284. package/dist/internal/waveform/index.d.cts +83 -0
  285. package/dist/internal/waveform/index.d.ts +83 -0
  286. package/dist/theme.d.cts +1 -1
  287. package/dist/theme.d.ts +1 -1
  288. package/package.json +7 -6
@@ -0,0 +1,47 @@
1
+ interface AnimatedTextProps {
2
+ words: string[];
3
+ interval?: number;
4
+ transitionDuration?: number;
5
+ }
6
+ interface AnimatedTextState {
7
+ currentIndex: number;
8
+ }
9
+ interface AnimatedTextAPI {
10
+ /** Get the current word */
11
+ getCurrentWord: () => string;
12
+ /** Get the next index (wraps around) */
13
+ getNextIndex: () => number;
14
+ /** Current state */
15
+ state: AnimatedTextState;
16
+ }
17
+ interface TypewriterProps {
18
+ text: string;
19
+ speed?: number;
20
+ startDelay?: number;
21
+ }
22
+ interface TypewriterState {
23
+ currentIndex: number;
24
+ }
25
+ interface TypewriterAPI {
26
+ /** Get the currently visible portion of text */
27
+ getVisibleText: () => string;
28
+ /** Whether the typewriter has finished */
29
+ isComplete: () => boolean;
30
+ /** Current state */
31
+ state: TypewriterState;
32
+ }
33
+ declare function createAnimatedText(props: AnimatedTextProps): AnimatedTextAPI;
34
+ declare function createTypewriter(props: TypewriterProps): TypewriterAPI;
35
+
36
+ declare const animatedTextVariants: (props?: ({
37
+ state?: "entering" | "exiting" | "idle" | undefined;
38
+ } & {
39
+ className?: string;
40
+ }) | undefined) => string;
41
+ declare const typewriterVariants: (props?: ({
42
+ cursor?: "blinking" | "hidden" | undefined;
43
+ } & {
44
+ className?: string;
45
+ }) | undefined) => string;
46
+
47
+ export { type AnimatedTextAPI, type AnimatedTextProps, type AnimatedTextState, type TypewriterAPI, type TypewriterProps, type TypewriterState, animatedTextVariants, createAnimatedText, createTypewriter, typewriterVariants };
@@ -0,0 +1,47 @@
1
+ interface AnimatedTextProps {
2
+ words: string[];
3
+ interval?: number;
4
+ transitionDuration?: number;
5
+ }
6
+ interface AnimatedTextState {
7
+ currentIndex: number;
8
+ }
9
+ interface AnimatedTextAPI {
10
+ /** Get the current word */
11
+ getCurrentWord: () => string;
12
+ /** Get the next index (wraps around) */
13
+ getNextIndex: () => number;
14
+ /** Current state */
15
+ state: AnimatedTextState;
16
+ }
17
+ interface TypewriterProps {
18
+ text: string;
19
+ speed?: number;
20
+ startDelay?: number;
21
+ }
22
+ interface TypewriterState {
23
+ currentIndex: number;
24
+ }
25
+ interface TypewriterAPI {
26
+ /** Get the currently visible portion of text */
27
+ getVisibleText: () => string;
28
+ /** Whether the typewriter has finished */
29
+ isComplete: () => boolean;
30
+ /** Current state */
31
+ state: TypewriterState;
32
+ }
33
+ declare function createAnimatedText(props: AnimatedTextProps): AnimatedTextAPI;
34
+ declare function createTypewriter(props: TypewriterProps): TypewriterAPI;
35
+
36
+ declare const animatedTextVariants: (props?: ({
37
+ state?: "entering" | "exiting" | "idle" | undefined;
38
+ } & {
39
+ className?: string;
40
+ }) | undefined) => string;
41
+ declare const typewriterVariants: (props?: ({
42
+ cursor?: "blinking" | "hidden" | undefined;
43
+ } & {
44
+ className?: string;
45
+ }) | undefined) => string;
46
+
47
+ export { type AnimatedTextAPI, type AnimatedTextProps, type AnimatedTextState, type TypewriterAPI, type TypewriterProps, type TypewriterState, animatedTextVariants, createAnimatedText, createTypewriter, typewriterVariants };
@@ -0,0 +1,128 @@
1
+ type BreakpointName = 'mobile' | 'tablet' | 'desktop';
2
+ interface AppShellConfig {
3
+ /** Sidebar width when expanded (default '16rem') */
4
+ sidebarWidth?: string;
5
+ /** Sidebar width when collapsed to icon-only (default '4rem') */
6
+ sidebarCollapsedWidth?: string;
7
+ /** Header height (default '3.5rem') */
8
+ headerHeight?: string;
9
+ /** Breakpoint below which layout is mobile (default 768) */
10
+ mobileBreakpoint?: number;
11
+ /** Breakpoint below which layout is tablet (default 1024) */
12
+ tabletBreakpoint?: number;
13
+ /** Sidebar position (default 'left') */
14
+ sidebarPosition?: 'left' | 'right';
15
+ /** Whether sidebar can be collapsed on desktop (default true) */
16
+ sidebarCollapsible?: boolean;
17
+ /** Whether sidebar starts collapsed on desktop (default false) */
18
+ sidebarDefaultCollapsed?: boolean;
19
+ /** Mobile nav position (default 'bottom') */
20
+ mobileNavPosition?: 'bottom' | 'none';
21
+ }
22
+ interface AppShellState {
23
+ /** On mobile: drawer open/closed */
24
+ sidebarOpen: boolean;
25
+ /** On desktop: full/icon-only */
26
+ sidebarCollapsed: boolean;
27
+ /** Current responsive breakpoint */
28
+ breakpoint: BreakpointName;
29
+ /** Convenience: breakpoint === 'mobile' */
30
+ isMobile: boolean;
31
+ /** Convenience: breakpoint === 'tablet' */
32
+ isTablet: boolean;
33
+ /** Convenience: breakpoint === 'desktop' */
34
+ isDesktop: boolean;
35
+ }
36
+ type AppShellSubscriber = (state: AppShellState) => void;
37
+ interface AppShellAPI {
38
+ /** Current state (snapshot — will not mutate) */
39
+ state: AppShellState;
40
+ /** Resolved config with all defaults applied */
41
+ config: Required<AppShellConfig>;
42
+ /** Mobile: open/close drawer. Desktop: collapse/expand sidebar. */
43
+ toggleSidebar(): void;
44
+ /** Open sidebar (mobile drawer) */
45
+ openSidebar(): void;
46
+ /** Close sidebar (mobile drawer) */
47
+ closeSidebar(): void;
48
+ /** Collapse sidebar to icon-only (desktop) */
49
+ collapseSidebar(): void;
50
+ /** Expand sidebar from icon-only (desktop) */
51
+ expandSidebar(): void;
52
+ /** Update the current breakpoint */
53
+ setBreakpoint(bp: BreakpointName): void;
54
+ /** CSS custom property map for layout dimensions */
55
+ getCSSVariables(): Record<string, string>;
56
+ /** ARIA attributes for sidebar region */
57
+ sidebarAriaProps: Record<string, string>;
58
+ /** ARIA attributes for main region */
59
+ mainAriaProps: Record<string, string>;
60
+ /** ARIA attributes for header region */
61
+ headerAriaProps: Record<string, string>;
62
+ /** ARIA attributes for mobile bottom nav */
63
+ mobileNavAriaProps: Record<string, string>;
64
+ /** ARIA attributes for mobile sidebar overlay/backdrop */
65
+ overlayAriaProps: Record<string, string>;
66
+ /** Subscribe to state changes. Returns unsubscribe function. */
67
+ subscribe(fn: AppShellSubscriber): () => void;
68
+ }
69
+ declare function resolveBreakpoint(width: number, mobileBp: number, tabletBp: number): BreakpointName;
70
+ declare function createAppShell(config?: AppShellConfig): AppShellAPI;
71
+
72
+ interface PageShellConfig {
73
+ /** Max width for contained sections (default '80rem') */
74
+ maxWidth?: string;
75
+ /** Navigation bar height (default '4rem') */
76
+ navHeight?: string;
77
+ /** Whether nav is transparent (for hero sections, default false) */
78
+ navTransparent?: boolean;
79
+ /** Whether nav is sticky (default true) */
80
+ navSticky?: boolean;
81
+ /** Number of footer columns (default 4) */
82
+ footerColumns?: number;
83
+ }
84
+ interface SectionConfig {
85
+ /** Whether section spans edge-to-edge (default false) */
86
+ fullWidth?: boolean;
87
+ /** Override max-width for this section */
88
+ maxWidth?: string;
89
+ /** Whether section has padding (default true) */
90
+ padding?: boolean;
91
+ /** Background variant */
92
+ background?: 'default' | 'muted' | 'primary' | 'none';
93
+ }
94
+ interface PageShellAPI {
95
+ /** Resolved config with all defaults applied */
96
+ config: Required<PageShellConfig>;
97
+ /** ARIA attributes for the nav region */
98
+ navAriaProps: Record<string, string>;
99
+ /** ARIA attributes for the footer region */
100
+ footerAriaProps: Record<string, string>;
101
+ /** Returns Tailwind utility classes for a section */
102
+ getSectionClasses(sectionConfig?: SectionConfig): string;
103
+ /** CSS custom property map */
104
+ getCSSVariables(): Record<string, string>;
105
+ }
106
+ declare function createPageShell(config?: PageShellConfig): PageShellAPI;
107
+
108
+ interface AuthShellConfig {
109
+ /** Card max-width preset (default 'sm') */
110
+ maxWidth?: 'xs' | 'sm' | 'md';
111
+ /** Card position (default 'center') */
112
+ position?: 'center' | 'left';
113
+ /** Show decorative background pattern (default true) */
114
+ showBackground?: boolean;
115
+ }
116
+ interface AuthShellAPI {
117
+ /** Resolved config with all defaults */
118
+ config: Required<AuthShellConfig>;
119
+ /** Tailwind classes for the outer container */
120
+ containerClasses: string;
121
+ /** Tailwind classes for the card */
122
+ cardClasses: string;
123
+ /** ARIA attributes for the auth region */
124
+ ariaProps: Record<string, string>;
125
+ }
126
+ declare function createAuthShell(config?: AuthShellConfig): AuthShellAPI;
127
+
128
+ export { type AppShellAPI, type AppShellConfig, type AppShellState, type AppShellSubscriber, type AuthShellAPI, type AuthShellConfig, type BreakpointName, type PageShellAPI, type PageShellConfig, type SectionConfig, createAppShell, createAuthShell, createPageShell, resolveBreakpoint };
@@ -0,0 +1,128 @@
1
+ type BreakpointName = 'mobile' | 'tablet' | 'desktop';
2
+ interface AppShellConfig {
3
+ /** Sidebar width when expanded (default '16rem') */
4
+ sidebarWidth?: string;
5
+ /** Sidebar width when collapsed to icon-only (default '4rem') */
6
+ sidebarCollapsedWidth?: string;
7
+ /** Header height (default '3.5rem') */
8
+ headerHeight?: string;
9
+ /** Breakpoint below which layout is mobile (default 768) */
10
+ mobileBreakpoint?: number;
11
+ /** Breakpoint below which layout is tablet (default 1024) */
12
+ tabletBreakpoint?: number;
13
+ /** Sidebar position (default 'left') */
14
+ sidebarPosition?: 'left' | 'right';
15
+ /** Whether sidebar can be collapsed on desktop (default true) */
16
+ sidebarCollapsible?: boolean;
17
+ /** Whether sidebar starts collapsed on desktop (default false) */
18
+ sidebarDefaultCollapsed?: boolean;
19
+ /** Mobile nav position (default 'bottom') */
20
+ mobileNavPosition?: 'bottom' | 'none';
21
+ }
22
+ interface AppShellState {
23
+ /** On mobile: drawer open/closed */
24
+ sidebarOpen: boolean;
25
+ /** On desktop: full/icon-only */
26
+ sidebarCollapsed: boolean;
27
+ /** Current responsive breakpoint */
28
+ breakpoint: BreakpointName;
29
+ /** Convenience: breakpoint === 'mobile' */
30
+ isMobile: boolean;
31
+ /** Convenience: breakpoint === 'tablet' */
32
+ isTablet: boolean;
33
+ /** Convenience: breakpoint === 'desktop' */
34
+ isDesktop: boolean;
35
+ }
36
+ type AppShellSubscriber = (state: AppShellState) => void;
37
+ interface AppShellAPI {
38
+ /** Current state (snapshot — will not mutate) */
39
+ state: AppShellState;
40
+ /** Resolved config with all defaults applied */
41
+ config: Required<AppShellConfig>;
42
+ /** Mobile: open/close drawer. Desktop: collapse/expand sidebar. */
43
+ toggleSidebar(): void;
44
+ /** Open sidebar (mobile drawer) */
45
+ openSidebar(): void;
46
+ /** Close sidebar (mobile drawer) */
47
+ closeSidebar(): void;
48
+ /** Collapse sidebar to icon-only (desktop) */
49
+ collapseSidebar(): void;
50
+ /** Expand sidebar from icon-only (desktop) */
51
+ expandSidebar(): void;
52
+ /** Update the current breakpoint */
53
+ setBreakpoint(bp: BreakpointName): void;
54
+ /** CSS custom property map for layout dimensions */
55
+ getCSSVariables(): Record<string, string>;
56
+ /** ARIA attributes for sidebar region */
57
+ sidebarAriaProps: Record<string, string>;
58
+ /** ARIA attributes for main region */
59
+ mainAriaProps: Record<string, string>;
60
+ /** ARIA attributes for header region */
61
+ headerAriaProps: Record<string, string>;
62
+ /** ARIA attributes for mobile bottom nav */
63
+ mobileNavAriaProps: Record<string, string>;
64
+ /** ARIA attributes for mobile sidebar overlay/backdrop */
65
+ overlayAriaProps: Record<string, string>;
66
+ /** Subscribe to state changes. Returns unsubscribe function. */
67
+ subscribe(fn: AppShellSubscriber): () => void;
68
+ }
69
+ declare function resolveBreakpoint(width: number, mobileBp: number, tabletBp: number): BreakpointName;
70
+ declare function createAppShell(config?: AppShellConfig): AppShellAPI;
71
+
72
+ interface PageShellConfig {
73
+ /** Max width for contained sections (default '80rem') */
74
+ maxWidth?: string;
75
+ /** Navigation bar height (default '4rem') */
76
+ navHeight?: string;
77
+ /** Whether nav is transparent (for hero sections, default false) */
78
+ navTransparent?: boolean;
79
+ /** Whether nav is sticky (default true) */
80
+ navSticky?: boolean;
81
+ /** Number of footer columns (default 4) */
82
+ footerColumns?: number;
83
+ }
84
+ interface SectionConfig {
85
+ /** Whether section spans edge-to-edge (default false) */
86
+ fullWidth?: boolean;
87
+ /** Override max-width for this section */
88
+ maxWidth?: string;
89
+ /** Whether section has padding (default true) */
90
+ padding?: boolean;
91
+ /** Background variant */
92
+ background?: 'default' | 'muted' | 'primary' | 'none';
93
+ }
94
+ interface PageShellAPI {
95
+ /** Resolved config with all defaults applied */
96
+ config: Required<PageShellConfig>;
97
+ /** ARIA attributes for the nav region */
98
+ navAriaProps: Record<string, string>;
99
+ /** ARIA attributes for the footer region */
100
+ footerAriaProps: Record<string, string>;
101
+ /** Returns Tailwind utility classes for a section */
102
+ getSectionClasses(sectionConfig?: SectionConfig): string;
103
+ /** CSS custom property map */
104
+ getCSSVariables(): Record<string, string>;
105
+ }
106
+ declare function createPageShell(config?: PageShellConfig): PageShellAPI;
107
+
108
+ interface AuthShellConfig {
109
+ /** Card max-width preset (default 'sm') */
110
+ maxWidth?: 'xs' | 'sm' | 'md';
111
+ /** Card position (default 'center') */
112
+ position?: 'center' | 'left';
113
+ /** Show decorative background pattern (default true) */
114
+ showBackground?: boolean;
115
+ }
116
+ interface AuthShellAPI {
117
+ /** Resolved config with all defaults */
118
+ config: Required<AuthShellConfig>;
119
+ /** Tailwind classes for the outer container */
120
+ containerClasses: string;
121
+ /** Tailwind classes for the card */
122
+ cardClasses: string;
123
+ /** ARIA attributes for the auth region */
124
+ ariaProps: Record<string, string>;
125
+ }
126
+ declare function createAuthShell(config?: AuthShellConfig): AuthShellAPI;
127
+
128
+ export { type AppShellAPI, type AppShellConfig, type AppShellState, type AppShellSubscriber, type AuthShellAPI, type AuthShellConfig, type BreakpointName, type PageShellAPI, type PageShellConfig, type SectionConfig, createAppShell, createAuthShell, createPageShell, resolveBreakpoint };
@@ -0,0 +1,74 @@
1
+ /** User object — framework-agnostic, provider-agnostic */
2
+ interface User {
3
+ uid: string;
4
+ email: string | null;
5
+ displayName: string | null;
6
+ photoURL: string | null;
7
+ roles: string[];
8
+ }
9
+ /** Auth state */
10
+ type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';
11
+ interface AuthState {
12
+ user: User | null;
13
+ status: AuthStatus;
14
+ }
15
+ /** OAuth providers */
16
+ type OAuthProvider = string;
17
+ /**
18
+ * AuthAdapter — interface implemented by provider adapters (e.g. Firebase, Supabase, Auth0).
19
+ * Consumers must provide an implementation of this adapter to the AuthProvider.
20
+ */
21
+ interface AuthAdapter {
22
+ signIn(email: string, password: string): Promise<User>;
23
+ signInWithOAuth(provider: OAuthProvider): Promise<User>;
24
+ signUp(email: string, password: string, displayName: string): Promise<User>;
25
+ signOut(): Promise<void>;
26
+ resetPassword(email: string): Promise<void>;
27
+ getToken(): Promise<string | null>;
28
+ onAuthStateChange(callback: (user: User | null) => void): () => void;
29
+ }
30
+ interface AuthConfig {
31
+ /** The adapter implementation for your specific auth provider (Supabase, Firebase, Auth0, Custom, etc.) */
32
+ adapter: AuthAdapter;
33
+ /** Token refresh interval in minutes. Default: 50 */
34
+ tokenRefreshInterval?: number;
35
+ /** Enable E2E test mode with mock user */
36
+ testMode?: boolean;
37
+ /** Mock user for test mode */
38
+ testUser?: User;
39
+ }
40
+
41
+ interface AuthAPI {
42
+ getState(): AuthState;
43
+ signIn(email: string, password: string): Promise<User>;
44
+ signInWithOAuth(provider: OAuthProvider): Promise<User>;
45
+ signUp(email: string, password: string, displayName: string): Promise<User>;
46
+ signOut(): Promise<void>;
47
+ resetPassword(email: string): Promise<void>;
48
+ getToken(): Promise<string | null>;
49
+ subscribe(fn: (state: AuthState) => void): () => void;
50
+ destroy(): void;
51
+ }
52
+ declare function createAuth(adapter: AuthAdapter, config?: Omit<AuthConfig, 'adapter'>): AuthAPI;
53
+
54
+ /** Check if user has a specific role */
55
+ declare function hasRole(user: User | null, role: string): boolean;
56
+ /** Check if user has any of the specified roles */
57
+ declare function hasAnyRole(user: User | null, roles: string[]): boolean;
58
+ /** Check if user has all of the specified roles */
59
+ declare function hasAllRoles(user: User | null, roles: string[]): boolean;
60
+ /** Convenience role checks */
61
+ declare function canAccessAdmin(user: User | null): boolean;
62
+ declare function canAccessReviewer(user: User | null): boolean;
63
+ /** Get the default portal URL based on highest-privilege role */
64
+ declare function getDefaultPortal(roles: string[]): string;
65
+ /** Get roles that the given user can assign to others */
66
+ declare function getAssignableRoles(user: User | null): string[];
67
+
68
+ /**
69
+ * Mock auth adapter for testing and development.
70
+ * No external dependencies. Stores state in memory.
71
+ */
72
+ declare function createMockAdapter(initialUser?: User): AuthAdapter;
73
+
74
+ export { type AuthAPI, type AuthAdapter, type AuthConfig, type AuthState, type AuthStatus, type OAuthProvider, type User, canAccessAdmin, canAccessReviewer, createAuth, createMockAdapter, getAssignableRoles, getDefaultPortal, hasAllRoles, hasAnyRole, hasRole };
@@ -0,0 +1,74 @@
1
+ /** User object — framework-agnostic, provider-agnostic */
2
+ interface User {
3
+ uid: string;
4
+ email: string | null;
5
+ displayName: string | null;
6
+ photoURL: string | null;
7
+ roles: string[];
8
+ }
9
+ /** Auth state */
10
+ type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';
11
+ interface AuthState {
12
+ user: User | null;
13
+ status: AuthStatus;
14
+ }
15
+ /** OAuth providers */
16
+ type OAuthProvider = string;
17
+ /**
18
+ * AuthAdapter — interface implemented by provider adapters (e.g. Firebase, Supabase, Auth0).
19
+ * Consumers must provide an implementation of this adapter to the AuthProvider.
20
+ */
21
+ interface AuthAdapter {
22
+ signIn(email: string, password: string): Promise<User>;
23
+ signInWithOAuth(provider: OAuthProvider): Promise<User>;
24
+ signUp(email: string, password: string, displayName: string): Promise<User>;
25
+ signOut(): Promise<void>;
26
+ resetPassword(email: string): Promise<void>;
27
+ getToken(): Promise<string | null>;
28
+ onAuthStateChange(callback: (user: User | null) => void): () => void;
29
+ }
30
+ interface AuthConfig {
31
+ /** The adapter implementation for your specific auth provider (Supabase, Firebase, Auth0, Custom, etc.) */
32
+ adapter: AuthAdapter;
33
+ /** Token refresh interval in minutes. Default: 50 */
34
+ tokenRefreshInterval?: number;
35
+ /** Enable E2E test mode with mock user */
36
+ testMode?: boolean;
37
+ /** Mock user for test mode */
38
+ testUser?: User;
39
+ }
40
+
41
+ interface AuthAPI {
42
+ getState(): AuthState;
43
+ signIn(email: string, password: string): Promise<User>;
44
+ signInWithOAuth(provider: OAuthProvider): Promise<User>;
45
+ signUp(email: string, password: string, displayName: string): Promise<User>;
46
+ signOut(): Promise<void>;
47
+ resetPassword(email: string): Promise<void>;
48
+ getToken(): Promise<string | null>;
49
+ subscribe(fn: (state: AuthState) => void): () => void;
50
+ destroy(): void;
51
+ }
52
+ declare function createAuth(adapter: AuthAdapter, config?: Omit<AuthConfig, 'adapter'>): AuthAPI;
53
+
54
+ /** Check if user has a specific role */
55
+ declare function hasRole(user: User | null, role: string): boolean;
56
+ /** Check if user has any of the specified roles */
57
+ declare function hasAnyRole(user: User | null, roles: string[]): boolean;
58
+ /** Check if user has all of the specified roles */
59
+ declare function hasAllRoles(user: User | null, roles: string[]): boolean;
60
+ /** Convenience role checks */
61
+ declare function canAccessAdmin(user: User | null): boolean;
62
+ declare function canAccessReviewer(user: User | null): boolean;
63
+ /** Get the default portal URL based on highest-privilege role */
64
+ declare function getDefaultPortal(roles: string[]): string;
65
+ /** Get roles that the given user can assign to others */
66
+ declare function getAssignableRoles(user: User | null): string[];
67
+
68
+ /**
69
+ * Mock auth adapter for testing and development.
70
+ * No external dependencies. Stores state in memory.
71
+ */
72
+ declare function createMockAdapter(initialUser?: User): AuthAdapter;
73
+
74
+ export { type AuthAPI, type AuthAdapter, type AuthConfig, type AuthState, type AuthStatus, type OAuthProvider, type User, canAccessAdmin, canAccessReviewer, createAuth, createMockAdapter, getAssignableRoles, getDefaultPortal, hasAllRoles, hasAnyRole, hasRole };
@@ -0,0 +1,53 @@
1
+ import { AccessibilityProps, TokenContract } from '../shared/index.cjs';
2
+
3
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
5
+ interface AvatarProps {
6
+ src?: string;
7
+ alt?: string;
8
+ fallback?: string;
9
+ size?: AvatarSize;
10
+ }
11
+ interface AvatarAPI {
12
+ /** ARIA attributes to spread on the root element */
13
+ ariaProps: Partial<AccessibilityProps>;
14
+ /** Data attributes for CSS styling hooks */
15
+ dataAttributes: Record<string, string>;
16
+ /** Image ARIA props */
17
+ imageProps: {
18
+ alt: string;
19
+ role: string;
20
+ };
21
+ /** Fallback text (initials) */
22
+ fallbackText: string;
23
+ /** Current state */
24
+ state: {
25
+ size: AvatarSize;
26
+ hasSrc: boolean;
27
+ };
28
+ }
29
+ /**
30
+ * Extract initials from a name or fallback string.
31
+ * Takes first letter of first two words, uppercased.
32
+ */
33
+ declare function getInitials(name: string): string;
34
+ declare function createAvatar(props?: AvatarProps): AvatarAPI;
35
+
36
+ declare const avatarTokens: TokenContract;
37
+ declare const avatarVariants: (props?: ({
38
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
39
+ } & {
40
+ className?: string;
41
+ }) | undefined) => string;
42
+ declare const avatarImageVariants: (props?: ({
43
+ [x: string]: string | undefined;
44
+ } & {
45
+ className?: string;
46
+ }) | undefined) => string;
47
+ declare const avatarFallbackVariants: (props?: ({
48
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
49
+ } & {
50
+ className?: string;
51
+ }) | undefined) => string;
52
+
53
+ export { type AvatarAPI, type AvatarLoadingStatus, type AvatarProps, type AvatarSize, avatarFallbackVariants, avatarImageVariants, avatarTokens, avatarVariants, createAvatar, getInitials };
@@ -0,0 +1,53 @@
1
+ import { AccessibilityProps, TokenContract } from '../shared/index.js';
2
+
3
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
5
+ interface AvatarProps {
6
+ src?: string;
7
+ alt?: string;
8
+ fallback?: string;
9
+ size?: AvatarSize;
10
+ }
11
+ interface AvatarAPI {
12
+ /** ARIA attributes to spread on the root element */
13
+ ariaProps: Partial<AccessibilityProps>;
14
+ /** Data attributes for CSS styling hooks */
15
+ dataAttributes: Record<string, string>;
16
+ /** Image ARIA props */
17
+ imageProps: {
18
+ alt: string;
19
+ role: string;
20
+ };
21
+ /** Fallback text (initials) */
22
+ fallbackText: string;
23
+ /** Current state */
24
+ state: {
25
+ size: AvatarSize;
26
+ hasSrc: boolean;
27
+ };
28
+ }
29
+ /**
30
+ * Extract initials from a name or fallback string.
31
+ * Takes first letter of first two words, uppercased.
32
+ */
33
+ declare function getInitials(name: string): string;
34
+ declare function createAvatar(props?: AvatarProps): AvatarAPI;
35
+
36
+ declare const avatarTokens: TokenContract;
37
+ declare const avatarVariants: (props?: ({
38
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
39
+ } & {
40
+ className?: string;
41
+ }) | undefined) => string;
42
+ declare const avatarImageVariants: (props?: ({
43
+ [x: string]: string | undefined;
44
+ } & {
45
+ className?: string;
46
+ }) | undefined) => string;
47
+ declare const avatarFallbackVariants: (props?: ({
48
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
49
+ } & {
50
+ className?: string;
51
+ }) | undefined) => string;
52
+
53
+ export { type AvatarAPI, type AvatarLoadingStatus, type AvatarProps, type AvatarSize, avatarFallbackVariants, avatarImageVariants, avatarTokens, avatarVariants, createAvatar, getInitials };
@@ -0,0 +1,70 @@
1
+ import { AccessibilityProps } from '../shared/index.cjs';
2
+
3
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd';
5
+ interface AvatarUser {
6
+ /** Unique identifier */
7
+ id: string;
8
+ /** Display name */
9
+ name: string;
10
+ /** Avatar image URL */
11
+ src?: string;
12
+ /** Online presence status */
13
+ status?: PresenceStatus;
14
+ }
15
+ interface AvatarGroupProps {
16
+ /** Array of users to display */
17
+ users: AvatarUser[];
18
+ /** Maximum number of visible avatars */
19
+ max?: number;
20
+ /** Avatar size */
21
+ size?: AvatarSize;
22
+ }
23
+ interface AvatarGroupAPI {
24
+ /** Users that are visible (within max limit) */
25
+ visibleUsers: AvatarUser[];
26
+ /** Number of overflow users */
27
+ overflowCount: number;
28
+ /** All overflow users (for tooltip/popup) */
29
+ overflowUsers: AvatarUser[];
30
+ /** ARIA props for the group container */
31
+ ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
32
+ /** Get ARIA props for an individual avatar */
33
+ getAvatarAriaProps(user: AvatarUser): Record<string, unknown>;
34
+ /** Get initials from a user's name */
35
+ getInitials(name: string): string;
36
+ /** Get the overflow badge ARIA props */
37
+ overflowBadgeProps: Record<string, unknown>;
38
+ /** Generated IDs */
39
+ ids: {
40
+ group: string;
41
+ label: string;
42
+ };
43
+ }
44
+ declare const AVATAR_SIZES: Record<AvatarSize, {
45
+ width: number;
46
+ fontSize: number;
47
+ }>;
48
+ declare function getInitials(name: string): string;
49
+ declare function createAvatarGroup(props: AvatarGroupProps): AvatarGroupAPI;
50
+
51
+ declare const avatarGroupStyles = "flex items-center -space-x-2";
52
+ declare const avatarVariants: (props?: ({
53
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
54
+ } & {
55
+ className?: string;
56
+ }) | undefined) => string;
57
+ declare const avatarOverflowBadgeVariants: (props?: ({
58
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
59
+ } & {
60
+ className?: string;
61
+ }) | undefined) => string;
62
+ declare const avatarImageStyles = "h-full w-full object-cover";
63
+ declare const avatarPresenceDotVariants: (props?: ({
64
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
65
+ status?: "online" | "offline" | "away" | "busy" | "dnd" | undefined;
66
+ } & {
67
+ className?: string;
68
+ }) | undefined) => string;
69
+
70
+ export { AVATAR_SIZES, type AvatarGroupAPI, type AvatarGroupProps, type AvatarSize, type AvatarUser, type PresenceStatus, avatarGroupStyles, avatarImageStyles, avatarOverflowBadgeVariants, avatarPresenceDotVariants, avatarVariants, createAvatarGroup, getInitials };