@refraction-ui/react 0.4.2 → 0.6.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.
- package/README.md +9 -1
- package/dist/chunk-O4453CBF.js +137 -0
- package/dist/chunk-O4453CBF.js.map +1 -0
- package/dist/chunk-XWP763SH.js +76 -0
- package/dist/chunk-XWP763SH.js.map +1 -0
- package/dist/faro-engine-47HGRAQH-JKINJPMH.js +3 -0
- package/dist/faro-engine-47HGRAQH-JKINJPMH.js.map +1 -0
- package/dist/form.cjs +340 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.d.cts +1 -0
- package/dist/form.d.ts +1 -0
- package/dist/form.js +204 -0
- package/dist/form.js.map +1 -0
- package/dist/index.cjs +1438 -237
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +76 -76
- package/dist/index.d.ts +76 -76
- package/dist/index.js +1317 -312
- package/dist/index.js.map +1 -1
- package/dist/internal/analytics/index.d.cts +448 -0
- package/dist/internal/analytics/index.d.ts +448 -0
- package/dist/internal/animated-text/index.d.cts +47 -0
- package/dist/internal/animated-text/index.d.ts +47 -0
- package/dist/internal/app-shell/index.d.cts +128 -0
- package/dist/internal/app-shell/index.d.ts +128 -0
- package/dist/internal/auth/index.d.cts +74 -0
- package/dist/internal/auth/index.d.ts +74 -0
- package/dist/internal/avatar/index.d.cts +53 -0
- package/dist/internal/avatar/index.d.ts +53 -0
- package/dist/internal/avatar-group/index.d.cts +70 -0
- package/dist/internal/avatar-group/index.d.ts +70 -0
- package/dist/internal/badge/index.d.cts +26 -0
- package/dist/internal/badge/index.d.ts +26 -0
- package/dist/internal/bottom-nav/index.d.cts +29 -0
- package/dist/internal/bottom-nav/index.d.ts +29 -0
- package/dist/internal/breadcrumbs/index.d.cts +38 -0
- package/dist/internal/breadcrumbs/index.d.ts +38 -0
- package/dist/internal/button/index.d.cts +34 -0
- package/dist/internal/button/index.d.ts +34 -0
- package/dist/internal/calendar/index.d.cts +73 -0
- package/dist/internal/calendar/index.d.ts +73 -0
- package/dist/internal/card/index.d.cts +62 -0
- package/dist/internal/card/index.d.ts +62 -0
- package/dist/internal/card-grid/index.d.cts +10 -0
- package/dist/internal/card-grid/index.d.ts +10 -0
- package/dist/internal/checkbox/index.d.cts +40 -0
- package/dist/internal/checkbox/index.d.ts +40 -0
- package/dist/internal/code-editor/index.d.cts +47 -0
- package/dist/internal/code-editor/index.d.ts +47 -0
- package/dist/internal/collapsible/index.d.cts +43 -0
- package/dist/internal/collapsible/index.d.ts +43 -0
- package/dist/internal/command/index.d.cts +80 -0
- package/dist/internal/command/index.d.ts +80 -0
- package/dist/internal/content-protection/index.d.cts +47 -0
- package/dist/internal/content-protection/index.d.ts +47 -0
- package/dist/internal/data-table/index.d.cts +73 -0
- package/dist/internal/data-table/index.d.ts +73 -0
- package/dist/internal/date-picker/index.d.cts +98 -0
- package/dist/internal/date-picker/index.d.ts +98 -0
- package/dist/internal/device-frame/index.d.cts +40 -0
- package/dist/internal/device-frame/index.d.ts +40 -0
- package/dist/internal/dialog/index.d.cts +54 -0
- package/dist/internal/dialog/index.d.ts +54 -0
- package/dist/internal/dropdown-menu/index.d.cts +55 -0
- package/dist/internal/dropdown-menu/index.d.ts +55 -0
- package/dist/internal/emoji-picker/index.d.cts +77 -0
- package/dist/internal/emoji-picker/index.d.ts +77 -0
- package/dist/internal/feedback-dialog/index.d.cts +55 -0
- package/dist/internal/feedback-dialog/index.d.ts +55 -0
- package/dist/internal/file-upload/index.d.cts +91 -0
- package/dist/internal/file-upload/index.d.ts +91 -0
- package/dist/internal/footer/index.d.cts +30 -0
- package/dist/internal/footer/index.d.ts +30 -0
- package/dist/internal/inline-editor/index.d.cts +52 -0
- package/dist/internal/inline-editor/index.d.ts +52 -0
- package/dist/internal/input/index.d.cts +38 -0
- package/dist/internal/input/index.d.ts +38 -0
- package/dist/internal/input-group/index.d.cts +35 -0
- package/dist/internal/input-group/index.d.ts +35 -0
- package/dist/internal/install-prompt/index.d.cts +36 -0
- package/dist/internal/install-prompt/index.d.ts +36 -0
- package/dist/internal/keyboard-shortcut/index.d.cts +49 -0
- package/dist/internal/keyboard-shortcut/index.d.ts +49 -0
- package/dist/internal/language-selector/index.d.cts +63 -0
- package/dist/internal/language-selector/index.d.ts +63 -0
- package/dist/internal/logger/index.d.cts +229 -0
- package/dist/internal/logger/index.d.ts +229 -0
- package/dist/internal/markdown-renderer/index.d.cts +40 -0
- package/dist/internal/markdown-renderer/index.d.ts +40 -0
- package/dist/internal/mobile-nav/index.d.cts +45 -0
- package/dist/internal/mobile-nav/index.d.ts +45 -0
- package/dist/internal/navbar/index.d.cts +30 -0
- package/dist/internal/navbar/index.d.ts +30 -0
- package/dist/internal/otp-input/index.d.cts +66 -0
- package/dist/internal/otp-input/index.d.ts +66 -0
- package/dist/internal/payment/index.d.cts +9 -0
- package/dist/internal/payment/index.d.ts +9 -0
- package/dist/internal/popover/index.d.cts +46 -0
- package/dist/internal/popover/index.d.ts +46 -0
- package/dist/internal/presence-indicator/index.d.cts +38 -0
- package/dist/internal/presence-indicator/index.d.ts +38 -0
- package/dist/internal/progress-display/index.d.cts +60 -0
- package/dist/internal/progress-display/index.d.ts +60 -0
- package/dist/internal/radio/index.d.ts +43 -0
- package/dist/internal/react-accordion/index.d.ts +22 -0
- package/dist/internal/react-analytics/index.d.cts +44 -0
- package/dist/internal/react-analytics/index.d.ts +44 -0
- package/dist/internal/react-animated-text/index.d.cts +12 -0
- package/dist/internal/react-animated-text/index.d.ts +12 -0
- package/dist/internal/react-app-shell/index.d.cts +169 -0
- package/dist/internal/react-app-shell/index.d.ts +169 -0
- package/dist/internal/react-auth/index.d.cts +59 -0
- package/dist/internal/react-auth/index.d.ts +59 -0
- package/dist/internal/react-avatar/index.d.cts +20 -0
- package/dist/internal/react-avatar/index.d.ts +20 -0
- package/dist/internal/react-avatar-group/index.d.cts +33 -0
- package/dist/internal/react-avatar-group/index.d.ts +33 -0
- package/dist/internal/react-badge/index.d.cts +17 -0
- package/dist/internal/react-badge/index.d.ts +17 -0
- package/dist/internal/react-bottom-nav/index.d.cts +19 -0
- package/dist/internal/react-bottom-nav/index.d.ts +19 -0
- package/dist/internal/react-breadcrumbs/index.d.cts +24 -0
- package/dist/internal/react-breadcrumbs/index.d.ts +24 -0
- package/dist/internal/react-button/index.d.cts +21 -0
- package/dist/internal/react-button/index.d.ts +21 -0
- package/dist/internal/react-calendar/index.d.cts +44 -0
- package/dist/internal/react-calendar/index.d.ts +44 -0
- package/dist/internal/react-callout/index.d.cts +12 -0
- package/dist/internal/react-callout/index.d.ts +12 -0
- package/dist/internal/react-card/index.d.cts +29 -0
- package/dist/internal/react-card/index.d.ts +29 -0
- package/dist/internal/react-card-grid/index.d.cts +8 -0
- package/dist/internal/react-card-grid/index.d.ts +8 -0
- package/dist/internal/react-carousel/index.d.ts +22 -0
- package/dist/internal/react-checkbox/index.d.cts +18 -0
- package/dist/internal/react-checkbox/index.d.ts +18 -0
- package/dist/internal/react-code-block/index.d.cts +7 -0
- package/dist/internal/react-code-block/index.d.ts +7 -0
- package/dist/internal/react-code-editor/index.d.cts +28 -0
- package/dist/internal/react-code-editor/index.d.ts +28 -0
- package/dist/internal/react-collapsible/index.d.cts +29 -0
- package/dist/internal/react-collapsible/index.d.ts +29 -0
- package/dist/internal/react-combobox/index.d.cts +94 -0
- package/dist/internal/react-combobox/index.d.ts +94 -0
- package/dist/internal/react-command/index.d.cts +51 -0
- package/dist/internal/react-command/index.d.ts +51 -0
- package/dist/internal/react-content-protection/index.d.cts +22 -0
- package/dist/internal/react-content-protection/index.d.ts +22 -0
- package/dist/internal/react-data-table/index.d.cts +22 -0
- package/dist/internal/react-data-table/index.d.ts +22 -0
- package/dist/internal/react-date-picker/index.d.cts +23 -0
- package/dist/internal/react-date-picker/index.d.ts +23 -0
- package/dist/internal/react-device-frame/index.d.cts +37 -0
- package/dist/internal/react-device-frame/index.d.ts +37 -0
- package/dist/internal/react-dialog/index.d.cts +49 -0
- package/dist/internal/react-dialog/index.d.ts +49 -0
- package/dist/internal/react-dropdown-menu/index.d.cts +37 -0
- package/dist/internal/react-dropdown-menu/index.d.ts +37 -0
- package/dist/internal/react-emoji-picker/index.d.cts +32 -0
- package/dist/internal/react-emoji-picker/index.d.ts +32 -0
- package/dist/internal/react-feedback-dialog/index.d.cts +40 -0
- package/dist/internal/react-feedback-dialog/index.d.ts +40 -0
- package/dist/internal/react-file-tree/index.d.cts +5 -0
- package/dist/internal/react-file-tree/index.d.ts +5 -0
- package/dist/internal/react-file-upload/index.d.cts +22 -0
- package/dist/internal/react-file-upload/index.d.ts +22 -0
- package/dist/internal/react-footer/index.d.cts +20 -0
- package/dist/internal/react-footer/index.d.ts +20 -0
- package/dist/internal/react-form/index.d.cts +85 -0
- package/dist/internal/react-form/index.d.ts +85 -0
- package/dist/internal/react-icon-system/index.d.cts +5 -0
- package/dist/internal/react-icon-system/index.d.ts +5 -0
- package/dist/internal/react-inline-editor/index.d.cts +17 -0
- package/dist/internal/react-inline-editor/index.d.ts +17 -0
- package/dist/internal/react-input/index.d.cts +31 -0
- package/dist/internal/react-input/index.d.ts +31 -0
- package/dist/internal/react-input-group/index.d.cts +34 -0
- package/dist/internal/react-input-group/index.d.ts +34 -0
- package/dist/internal/react-install-prompt/index.d.cts +24 -0
- package/dist/internal/react-install-prompt/index.d.ts +24 -0
- package/dist/internal/react-keyboard-shortcut/index.d.cts +57 -0
- package/dist/internal/react-keyboard-shortcut/index.d.ts +57 -0
- package/dist/internal/react-language-selector/index.d.cts +26 -0
- package/dist/internal/react-language-selector/index.d.ts +26 -0
- package/dist/internal/react-link-card/index.d.cts +5 -0
- package/dist/internal/react-link-card/index.d.ts +5 -0
- package/dist/internal/react-logger/index.d.cts +107 -0
- package/dist/internal/react-logger/index.d.ts +107 -0
- package/dist/internal/react-markdown-renderer/index.d.cts +20 -0
- package/dist/internal/react-markdown-renderer/index.d.ts +20 -0
- package/dist/internal/react-mobile-nav/index.d.cts +33 -0
- package/dist/internal/react-mobile-nav/index.d.ts +33 -0
- package/dist/internal/react-navbar/index.d.cts +25 -0
- package/dist/internal/react-navbar/index.d.ts +25 -0
- package/dist/internal/react-otp-input/index.d.cts +21 -0
- package/dist/internal/react-otp-input/index.d.ts +21 -0
- package/dist/internal/react-pagination/index.d.ts +7 -0
- package/dist/internal/react-payment/index.d.cts +9 -0
- package/dist/internal/react-payment/index.d.ts +9 -0
- package/dist/internal/react-popover/index.d.cts +33 -0
- package/dist/internal/react-popover/index.d.ts +33 -0
- package/dist/internal/react-presence-indicator/index.d.cts +34 -0
- package/dist/internal/react-presence-indicator/index.d.ts +34 -0
- package/dist/internal/react-progress-display/index.d.cts +21 -0
- package/dist/internal/react-progress-display/index.d.ts +21 -0
- package/dist/internal/react-radio/index.d.ts +33 -0
- package/dist/internal/react-reaction-bar/index.d.cts +34 -0
- package/dist/internal/react-reaction-bar/index.d.ts +34 -0
- package/dist/internal/react-resizable-layout/index.d.cts +36 -0
- package/dist/internal/react-resizable-layout/index.d.ts +36 -0
- package/dist/internal/react-rich-editor/index.d.cts +2 -0
- package/dist/internal/react-rich-editor/index.d.ts +2 -0
- package/dist/internal/react-search-bar/index.d.cts +32 -0
- package/dist/internal/react-search-bar/index.d.ts +32 -0
- package/dist/internal/react-select/index.d.cts +30 -0
- package/dist/internal/react-select/index.d.ts +30 -0
- package/dist/internal/react-sheet/index.d.cts +67 -0
- package/dist/internal/react-sheet/index.d.ts +67 -0
- package/dist/internal/react-sidebar/index.d.cts +23 -0
- package/dist/internal/react-sidebar/index.d.ts +23 -0
- package/dist/internal/react-skeleton/index.d.cts +31 -0
- package/dist/internal/react-skeleton/index.d.ts +31 -0
- package/dist/internal/react-skip-to-content/index.d.cts +9 -0
- package/dist/internal/react-skip-to-content/index.d.ts +9 -0
- package/dist/internal/react-slide-viewer/index.d.cts +23 -0
- package/dist/internal/react-slide-viewer/index.d.ts +23 -0
- package/dist/internal/react-slider/index.d.cts +1 -0
- package/dist/internal/react-slider/index.d.ts +1 -0
- package/dist/internal/react-status-indicator/index.d.cts +34 -0
- package/dist/internal/react-status-indicator/index.d.ts +34 -0
- package/dist/internal/react-steps/index.d.cts +19 -0
- package/dist/internal/react-steps/index.d.ts +19 -0
- package/dist/internal/react-switch/index.d.cts +17 -0
- package/dist/internal/react-switch/index.d.ts +17 -0
- package/dist/internal/react-table-of-contents/index.d.ts +10 -0
- package/dist/internal/react-tabs/index.d.cts +31 -0
- package/dist/internal/react-tabs/index.d.ts +31 -0
- package/dist/internal/react-textarea/index.d.cts +16 -0
- package/dist/internal/react-textarea/index.d.ts +16 -0
- package/dist/internal/react-theme/index.d.cts +44 -0
- package/dist/internal/react-theme/index.d.ts +44 -0
- package/dist/internal/react-thread-view/index.d.cts +34 -0
- package/dist/internal/react-thread-view/index.d.ts +34 -0
- package/dist/internal/react-toast/index.d.cts +36 -0
- package/dist/internal/react-toast/index.d.ts +36 -0
- package/dist/internal/react-tooltip/index.d.cts +33 -0
- package/dist/internal/react-tooltip/index.d.ts +33 -0
- package/dist/internal/react-version-selector/index.d.cts +24 -0
- package/dist/internal/react-version-selector/index.d.ts +24 -0
- package/dist/internal/react-video-player/index.d.cts +9 -0
- package/dist/internal/react-video-player/index.d.ts +9 -0
- package/dist/internal/react-voice-pill/index.d.cts +10 -0
- package/dist/internal/react-voice-pill/index.d.ts +10 -0
- package/dist/internal/react-waveform/index.d.cts +9 -0
- package/dist/internal/react-waveform/index.d.ts +9 -0
- package/dist/internal/reaction-bar/index.d.cts +50 -0
- package/dist/internal/reaction-bar/index.d.ts +50 -0
- package/dist/internal/resizable-layout/index.d.cts +47 -0
- package/dist/internal/resizable-layout/index.d.ts +47 -0
- package/dist/internal/search-bar/index.d.cts +51 -0
- package/dist/internal/search-bar/index.d.ts +51 -0
- package/dist/internal/select/index.d.cts +69 -0
- package/dist/internal/select/index.d.ts +69 -0
- package/dist/internal/shared/index.d.cts +419 -0
- package/dist/internal/shared/index.d.ts +419 -0
- package/dist/internal/sidebar/index.d.cts +40 -0
- package/dist/internal/sidebar/index.d.ts +40 -0
- package/dist/internal/skeleton/index.d.cts +27 -0
- package/dist/internal/skeleton/index.d.ts +27 -0
- package/dist/internal/slide-viewer/index.d.cts +72 -0
- package/dist/internal/slide-viewer/index.d.ts +72 -0
- package/dist/internal/slider/index.d.cts +4 -0
- package/dist/internal/slider/index.d.ts +4 -0
- package/dist/internal/status-indicator/index.d.cts +42 -0
- package/dist/internal/status-indicator/index.d.ts +42 -0
- package/dist/internal/switch/index.d.cts +41 -0
- package/dist/internal/switch/index.d.ts +41 -0
- package/dist/internal/tabs/index.d.cts +45 -0
- package/dist/internal/tabs/index.d.ts +45 -0
- package/dist/internal/textarea/index.d.cts +28 -0
- package/dist/internal/textarea/index.d.ts +28 -0
- package/dist/internal/theme/index.d.cts +60 -0
- package/dist/internal/theme/index.d.ts +60 -0
- package/dist/internal/thread-view/index.d.cts +95 -0
- package/dist/internal/thread-view/index.d.ts +95 -0
- package/dist/internal/toast/index.d.cts +64 -0
- package/dist/internal/toast/index.d.ts +64 -0
- package/dist/internal/tooltip/index.d.cts +45 -0
- package/dist/internal/tooltip/index.d.ts +45 -0
- package/dist/internal/version-selector/index.d.cts +68 -0
- package/dist/internal/version-selector/index.d.ts +68 -0
- package/dist/internal/video-player/index.d.cts +50 -0
- package/dist/internal/video-player/index.d.ts +50 -0
- package/dist/internal/voice-pill/index.d.cts +86 -0
- package/dist/internal/voice-pill/index.d.ts +86 -0
- package/dist/internal/waveform/index.d.cts +83 -0
- package/dist/internal/waveform/index.d.ts +83 -0
- package/dist/theme.cjs +23 -0
- package/dist/theme.cjs.map +1 -1
- package/dist/theme.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.js +5 -2
- package/dist/theme.js.map +1 -1
- package/package.json +10 -7
|
@@ -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 };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
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 };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';
|
|
4
|
+
type BadgeSize = 'sm' | 'md';
|
|
5
|
+
interface BadgeProps {
|
|
6
|
+
variant?: BadgeVariant;
|
|
7
|
+
size?: BadgeSize;
|
|
8
|
+
}
|
|
9
|
+
interface BadgeAPI {
|
|
10
|
+
/** ARIA attributes to spread on the element */
|
|
11
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
12
|
+
/** Data attributes for CSS styling hooks */
|
|
13
|
+
dataAttributes: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
/** Get the icon name for a badge variant (undefined for non-status variants) */
|
|
16
|
+
declare function getBadgeIcon(variant: BadgeVariant): string | undefined;
|
|
17
|
+
declare function createBadge(props?: BadgeProps): BadgeAPI;
|
|
18
|
+
|
|
19
|
+
declare const badgeVariants: (props?: ({
|
|
20
|
+
variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | undefined;
|
|
21
|
+
size?: "sm" | "md" | undefined;
|
|
22
|
+
} & {
|
|
23
|
+
className?: string;
|
|
24
|
+
}) | undefined) => string;
|
|
25
|
+
|
|
26
|
+
export { type BadgeAPI, type BadgeProps, type BadgeSize, type BadgeVariant, badgeVariants, createBadge, getBadgeIcon };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';
|
|
4
|
+
type BadgeSize = 'sm' | 'md';
|
|
5
|
+
interface BadgeProps {
|
|
6
|
+
variant?: BadgeVariant;
|
|
7
|
+
size?: BadgeSize;
|
|
8
|
+
}
|
|
9
|
+
interface BadgeAPI {
|
|
10
|
+
/** ARIA attributes to spread on the element */
|
|
11
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
12
|
+
/** Data attributes for CSS styling hooks */
|
|
13
|
+
dataAttributes: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
/** Get the icon name for a badge variant (undefined for non-status variants) */
|
|
16
|
+
declare function getBadgeIcon(variant: BadgeVariant): string | undefined;
|
|
17
|
+
declare function createBadge(props?: BadgeProps): BadgeAPI;
|
|
18
|
+
|
|
19
|
+
declare const badgeVariants: (props?: ({
|
|
20
|
+
variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | undefined;
|
|
21
|
+
size?: "sm" | "md" | undefined;
|
|
22
|
+
} & {
|
|
23
|
+
className?: string;
|
|
24
|
+
}) | undefined) => string;
|
|
25
|
+
|
|
26
|
+
export { type BadgeAPI, type BadgeProps, type BadgeSize, type BadgeVariant, badgeVariants, createBadge, getBadgeIcon };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
interface NavTab {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
activeIcon?: string;
|
|
6
|
+
}
|
|
7
|
+
interface BottomNavProps {
|
|
8
|
+
tabs?: NavTab[];
|
|
9
|
+
currentPath?: string;
|
|
10
|
+
}
|
|
11
|
+
interface BottomNavAPI {
|
|
12
|
+
ariaProps: Record<string, string>;
|
|
13
|
+
isActive: (href: string) => boolean;
|
|
14
|
+
tabAriaProps: (href: string) => Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
declare function createBottomNav(props?: BottomNavProps): BottomNavAPI;
|
|
17
|
+
|
|
18
|
+
declare const bottomNavVariants: (props?: ({
|
|
19
|
+
[x: string]: string | undefined;
|
|
20
|
+
} & {
|
|
21
|
+
className?: string;
|
|
22
|
+
}) | undefined) => string;
|
|
23
|
+
declare const bottomNavTabVariants: (props?: ({
|
|
24
|
+
active?: "true" | "false" | undefined;
|
|
25
|
+
} & {
|
|
26
|
+
className?: string;
|
|
27
|
+
}) | undefined) => string;
|
|
28
|
+
|
|
29
|
+
export { type BottomNavAPI, type BottomNavProps, type NavTab, bottomNavTabVariants, bottomNavVariants, createBottomNav };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
interface NavTab {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
activeIcon?: string;
|
|
6
|
+
}
|
|
7
|
+
interface BottomNavProps {
|
|
8
|
+
tabs?: NavTab[];
|
|
9
|
+
currentPath?: string;
|
|
10
|
+
}
|
|
11
|
+
interface BottomNavAPI {
|
|
12
|
+
ariaProps: Record<string, string>;
|
|
13
|
+
isActive: (href: string) => boolean;
|
|
14
|
+
tabAriaProps: (href: string) => Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
declare function createBottomNav(props?: BottomNavProps): BottomNavAPI;
|
|
17
|
+
|
|
18
|
+
declare const bottomNavVariants: (props?: ({
|
|
19
|
+
[x: string]: string | undefined;
|
|
20
|
+
} & {
|
|
21
|
+
className?: string;
|
|
22
|
+
}) | undefined) => string;
|
|
23
|
+
declare const bottomNavTabVariants: (props?: ({
|
|
24
|
+
active?: "true" | "false" | undefined;
|
|
25
|
+
} & {
|
|
26
|
+
className?: string;
|
|
27
|
+
}) | undefined) => string;
|
|
28
|
+
|
|
29
|
+
export { type BottomNavAPI, type BottomNavProps, type NavTab, bottomNavTabVariants, bottomNavVariants, createBottomNav };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
interface BreadcrumbItem {
|
|
2
|
+
label: string;
|
|
3
|
+
href?: string;
|
|
4
|
+
}
|
|
5
|
+
interface BreadcrumbsProps {
|
|
6
|
+
/** Current pathname to auto-generate from */
|
|
7
|
+
pathname?: string;
|
|
8
|
+
/** Manual items (overrides pathname) */
|
|
9
|
+
items?: BreadcrumbItem[];
|
|
10
|
+
/** Custom label map for pathname segments */
|
|
11
|
+
labels?: Record<string, string>;
|
|
12
|
+
/** Separator character */
|
|
13
|
+
separator?: string;
|
|
14
|
+
/** Max items to show before truncating */
|
|
15
|
+
maxItems?: number;
|
|
16
|
+
}
|
|
17
|
+
interface BreadcrumbsAPI {
|
|
18
|
+
items: BreadcrumbItem[];
|
|
19
|
+
ariaProps: Record<string, string>;
|
|
20
|
+
separator: string;
|
|
21
|
+
isLast: (index: number) => boolean;
|
|
22
|
+
itemAriaProps: (index: number) => Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
declare function createBreadcrumbs(props?: BreadcrumbsProps): BreadcrumbsAPI;
|
|
25
|
+
|
|
26
|
+
declare const breadcrumbsVariants: (props?: ({
|
|
27
|
+
[x: string]: string | undefined;
|
|
28
|
+
} & {
|
|
29
|
+
className?: string;
|
|
30
|
+
}) | undefined) => string;
|
|
31
|
+
declare const breadcrumbItemVariants: (props?: ({
|
|
32
|
+
active?: "true" | "false" | undefined;
|
|
33
|
+
} & {
|
|
34
|
+
className?: string;
|
|
35
|
+
}) | undefined) => string;
|
|
36
|
+
declare const breadcrumbSeparatorStyles = "text-muted-foreground/50 select-none";
|
|
37
|
+
|
|
38
|
+
export { type BreadcrumbItem, type BreadcrumbsAPI, type BreadcrumbsProps, breadcrumbItemVariants, breadcrumbSeparatorStyles, breadcrumbsVariants, createBreadcrumbs };
|