@refraction-ui/react 0.4.2 → 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.
- package/README.md +9 -1
- package/dist/chunk-ZWRGVWUY.js +120 -0
- package/dist/chunk-ZWRGVWUY.js.map +1 -0
- package/dist/form.cjs +315 -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 +196 -0
- package/dist/form.js.map +1 -0
- package/dist/index.cjs +0 -226
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +74 -76
- package/dist/index.d.ts +74 -76
- package/dist/index.js +2 -302
- package/dist/index.js.map +1 -1
- 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/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-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-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 +249 -0
- package/dist/internal/shared/index.d.ts +249 -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.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface MessageReaction {
|
|
4
|
+
emoji: string;
|
|
5
|
+
count: number;
|
|
6
|
+
userReacted: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface MessageAttachment {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
url: string;
|
|
12
|
+
type: string;
|
|
13
|
+
size?: number;
|
|
14
|
+
}
|
|
15
|
+
interface MessageData {
|
|
16
|
+
/** Unique message ID */
|
|
17
|
+
id: string;
|
|
18
|
+
/** Author display info */
|
|
19
|
+
author: {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
avatarUrl?: string;
|
|
23
|
+
};
|
|
24
|
+
/** Message content (can contain markdown) */
|
|
25
|
+
content: string;
|
|
26
|
+
/** Message timestamp */
|
|
27
|
+
timestamp: Date;
|
|
28
|
+
/** Reactions on this message */
|
|
29
|
+
reactions?: MessageReaction[];
|
|
30
|
+
/** Threaded replies */
|
|
31
|
+
replies?: MessageData[];
|
|
32
|
+
/** File attachments */
|
|
33
|
+
attachments?: MessageAttachment[];
|
|
34
|
+
/** Whether this message has been edited */
|
|
35
|
+
edited?: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface ThreadViewProps {
|
|
38
|
+
/** Messages to display */
|
|
39
|
+
messages: MessageData[];
|
|
40
|
+
/** Callback when a reply is sent */
|
|
41
|
+
onReply?: (messageId: string, content: string) => void;
|
|
42
|
+
/** Callback when a reaction is toggled */
|
|
43
|
+
onReact?: (messageId: string, emoji: string) => void;
|
|
44
|
+
/** Current user ID (for highlighting own messages) */
|
|
45
|
+
currentUserId?: string;
|
|
46
|
+
}
|
|
47
|
+
interface ThreadViewState {
|
|
48
|
+
messages: MessageData[];
|
|
49
|
+
replyingTo: string | null;
|
|
50
|
+
}
|
|
51
|
+
interface ThreadViewAPI {
|
|
52
|
+
/** Current state */
|
|
53
|
+
state: ThreadViewState;
|
|
54
|
+
/** Start replying to a message */
|
|
55
|
+
startReply(messageId: string): void;
|
|
56
|
+
/** Cancel reply */
|
|
57
|
+
cancelReply(): void;
|
|
58
|
+
/** Send a reply */
|
|
59
|
+
reply(messageId: string, content: string): void;
|
|
60
|
+
/** Toggle a reaction on a message */
|
|
61
|
+
react(messageId: string, emoji: string): void;
|
|
62
|
+
/** Format a timestamp for display */
|
|
63
|
+
formatTimestamp(date: Date): string;
|
|
64
|
+
/** Format relative time (e.g., "2 minutes ago") */
|
|
65
|
+
formatRelativeTime(date: Date): string;
|
|
66
|
+
/** ARIA props for the thread container */
|
|
67
|
+
ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
|
|
68
|
+
/** Get ARIA props for a message */
|
|
69
|
+
getMessageAriaProps(message: MessageData): Record<string, unknown>;
|
|
70
|
+
/** Get ARIA props for a reply button */
|
|
71
|
+
getReplyButtonAriaProps(messageId: string): Record<string, unknown>;
|
|
72
|
+
/** Generated IDs */
|
|
73
|
+
ids: {
|
|
74
|
+
thread: string;
|
|
75
|
+
label: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
declare function formatTimestamp(date: Date): string;
|
|
79
|
+
declare function formatRelativeTime(date: Date, now?: Date): string;
|
|
80
|
+
declare function createThreadView(props: ThreadViewProps): ThreadViewAPI;
|
|
81
|
+
|
|
82
|
+
declare const threadContainerStyles = "flex flex-col gap-1";
|
|
83
|
+
declare const threadMessageStyles = "flex gap-3 px-4 py-2 hover:bg-accent/50 rounded-md transition-colors group";
|
|
84
|
+
declare const threadAvatarStyles = "h-9 w-9 rounded-full bg-muted flex items-center justify-center text-sm font-medium overflow-hidden flex-shrink-0";
|
|
85
|
+
declare const threadContentStyles = "flex-1 min-w-0";
|
|
86
|
+
declare const threadAuthorStyles = "font-semibold text-sm";
|
|
87
|
+
declare const threadTimestampStyles = "text-xs text-muted-foreground ml-2";
|
|
88
|
+
declare const threadBodyStyles = "text-sm mt-0.5 whitespace-pre-wrap break-words";
|
|
89
|
+
declare const threadReactionsStyles = "flex flex-wrap gap-1 mt-1";
|
|
90
|
+
declare const threadReplyIndicatorStyles = "flex items-center gap-1 mt-1 text-xs text-primary cursor-pointer hover:underline";
|
|
91
|
+
declare const threadActionsStyles = "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity";
|
|
92
|
+
declare const threadAttachmentStyles = "flex items-center gap-2 mt-1 p-2 rounded border text-xs bg-muted/50";
|
|
93
|
+
declare const threadEditedStyles = "text-xs text-muted-foreground ml-1";
|
|
94
|
+
|
|
95
|
+
export { type MessageAttachment, type MessageData, type MessageReaction, type ThreadViewAPI, type ThreadViewProps, type ThreadViewState, createThreadView, formatRelativeTime, formatTimestamp, threadActionsStyles, threadAttachmentStyles, threadAuthorStyles, threadAvatarStyles, threadBodyStyles, threadContainerStyles, threadContentStyles, threadEditedStyles, threadMessageStyles, threadReactionsStyles, threadReplyIndicatorStyles, threadTimestampStyles };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface MessageReaction {
|
|
4
|
+
emoji: string;
|
|
5
|
+
count: number;
|
|
6
|
+
userReacted: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface MessageAttachment {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
url: string;
|
|
12
|
+
type: string;
|
|
13
|
+
size?: number;
|
|
14
|
+
}
|
|
15
|
+
interface MessageData {
|
|
16
|
+
/** Unique message ID */
|
|
17
|
+
id: string;
|
|
18
|
+
/** Author display info */
|
|
19
|
+
author: {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
avatarUrl?: string;
|
|
23
|
+
};
|
|
24
|
+
/** Message content (can contain markdown) */
|
|
25
|
+
content: string;
|
|
26
|
+
/** Message timestamp */
|
|
27
|
+
timestamp: Date;
|
|
28
|
+
/** Reactions on this message */
|
|
29
|
+
reactions?: MessageReaction[];
|
|
30
|
+
/** Threaded replies */
|
|
31
|
+
replies?: MessageData[];
|
|
32
|
+
/** File attachments */
|
|
33
|
+
attachments?: MessageAttachment[];
|
|
34
|
+
/** Whether this message has been edited */
|
|
35
|
+
edited?: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface ThreadViewProps {
|
|
38
|
+
/** Messages to display */
|
|
39
|
+
messages: MessageData[];
|
|
40
|
+
/** Callback when a reply is sent */
|
|
41
|
+
onReply?: (messageId: string, content: string) => void;
|
|
42
|
+
/** Callback when a reaction is toggled */
|
|
43
|
+
onReact?: (messageId: string, emoji: string) => void;
|
|
44
|
+
/** Current user ID (for highlighting own messages) */
|
|
45
|
+
currentUserId?: string;
|
|
46
|
+
}
|
|
47
|
+
interface ThreadViewState {
|
|
48
|
+
messages: MessageData[];
|
|
49
|
+
replyingTo: string | null;
|
|
50
|
+
}
|
|
51
|
+
interface ThreadViewAPI {
|
|
52
|
+
/** Current state */
|
|
53
|
+
state: ThreadViewState;
|
|
54
|
+
/** Start replying to a message */
|
|
55
|
+
startReply(messageId: string): void;
|
|
56
|
+
/** Cancel reply */
|
|
57
|
+
cancelReply(): void;
|
|
58
|
+
/** Send a reply */
|
|
59
|
+
reply(messageId: string, content: string): void;
|
|
60
|
+
/** Toggle a reaction on a message */
|
|
61
|
+
react(messageId: string, emoji: string): void;
|
|
62
|
+
/** Format a timestamp for display */
|
|
63
|
+
formatTimestamp(date: Date): string;
|
|
64
|
+
/** Format relative time (e.g., "2 minutes ago") */
|
|
65
|
+
formatRelativeTime(date: Date): string;
|
|
66
|
+
/** ARIA props for the thread container */
|
|
67
|
+
ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
|
|
68
|
+
/** Get ARIA props for a message */
|
|
69
|
+
getMessageAriaProps(message: MessageData): Record<string, unknown>;
|
|
70
|
+
/** Get ARIA props for a reply button */
|
|
71
|
+
getReplyButtonAriaProps(messageId: string): Record<string, unknown>;
|
|
72
|
+
/** Generated IDs */
|
|
73
|
+
ids: {
|
|
74
|
+
thread: string;
|
|
75
|
+
label: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
declare function formatTimestamp(date: Date): string;
|
|
79
|
+
declare function formatRelativeTime(date: Date, now?: Date): string;
|
|
80
|
+
declare function createThreadView(props: ThreadViewProps): ThreadViewAPI;
|
|
81
|
+
|
|
82
|
+
declare const threadContainerStyles = "flex flex-col gap-1";
|
|
83
|
+
declare const threadMessageStyles = "flex gap-3 px-4 py-2 hover:bg-accent/50 rounded-md transition-colors group";
|
|
84
|
+
declare const threadAvatarStyles = "h-9 w-9 rounded-full bg-muted flex items-center justify-center text-sm font-medium overflow-hidden flex-shrink-0";
|
|
85
|
+
declare const threadContentStyles = "flex-1 min-w-0";
|
|
86
|
+
declare const threadAuthorStyles = "font-semibold text-sm";
|
|
87
|
+
declare const threadTimestampStyles = "text-xs text-muted-foreground ml-2";
|
|
88
|
+
declare const threadBodyStyles = "text-sm mt-0.5 whitespace-pre-wrap break-words";
|
|
89
|
+
declare const threadReactionsStyles = "flex flex-wrap gap-1 mt-1";
|
|
90
|
+
declare const threadReplyIndicatorStyles = "flex items-center gap-1 mt-1 text-xs text-primary cursor-pointer hover:underline";
|
|
91
|
+
declare const threadActionsStyles = "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity";
|
|
92
|
+
declare const threadAttachmentStyles = "flex items-center gap-2 mt-1 p-2 rounded border text-xs bg-muted/50";
|
|
93
|
+
declare const threadEditedStyles = "text-xs text-muted-foreground ml-1";
|
|
94
|
+
|
|
95
|
+
export { type MessageAttachment, type MessageData, type MessageReaction, type ThreadViewAPI, type ThreadViewProps, type ThreadViewState, createThreadView, formatRelativeTime, formatTimestamp, threadActionsStyles, threadAttachmentStyles, threadAuthorStyles, threadAvatarStyles, threadBodyStyles, threadContainerStyles, threadContentStyles, threadEditedStyles, threadMessageStyles, threadReactionsStyles, threadReplyIndicatorStyles, threadTimestampStyles };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
type ToastVariant = 'default' | 'success' | 'error' | 'warning';
|
|
4
|
+
/** Get the icon name for a toast variant (colorblind-safe: meaning not conveyed by color alone) */
|
|
5
|
+
declare function getToastIcon(variant: ToastVariant): string;
|
|
6
|
+
interface ToastProps {
|
|
7
|
+
/** Visual variant */
|
|
8
|
+
variant?: ToastVariant;
|
|
9
|
+
/** Auto-dismiss duration in ms (default: 3000). Set to 0 to disable. */
|
|
10
|
+
duration?: number;
|
|
11
|
+
/** Whether the toast is open (controlled) */
|
|
12
|
+
open?: boolean;
|
|
13
|
+
/** Callback when open state changes */
|
|
14
|
+
onOpenChange?: (open: boolean) => void;
|
|
15
|
+
}
|
|
16
|
+
interface ToastState {
|
|
17
|
+
open: boolean;
|
|
18
|
+
variant: ToastVariant;
|
|
19
|
+
}
|
|
20
|
+
interface ToastAPI {
|
|
21
|
+
/** Current toast state */
|
|
22
|
+
state: ToastState;
|
|
23
|
+
/** ARIA attributes for the toast element */
|
|
24
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
25
|
+
/** Dismiss the toast */
|
|
26
|
+
dismiss(): void;
|
|
27
|
+
/** Start the auto-dismiss timer */
|
|
28
|
+
startTimer(): void;
|
|
29
|
+
/** Pause the auto-dismiss timer (e.g. on hover) */
|
|
30
|
+
pauseTimer(): void;
|
|
31
|
+
/** Resume the auto-dismiss timer */
|
|
32
|
+
resumeTimer(): void;
|
|
33
|
+
}
|
|
34
|
+
declare function createToast(props?: ToastProps): ToastAPI;
|
|
35
|
+
/** Entry in the toast manager */
|
|
36
|
+
interface ToastEntry {
|
|
37
|
+
id: string;
|
|
38
|
+
message: string;
|
|
39
|
+
variant: ToastVariant;
|
|
40
|
+
duration: number;
|
|
41
|
+
createdAt: number;
|
|
42
|
+
}
|
|
43
|
+
interface ToastManagerAPI {
|
|
44
|
+
/** Add a new toast. Returns the toast id. */
|
|
45
|
+
toast(message: string, opts?: {
|
|
46
|
+
variant?: ToastVariant;
|
|
47
|
+
duration?: number;
|
|
48
|
+
}): string;
|
|
49
|
+
/** Dismiss a toast by id */
|
|
50
|
+
dismiss(id: string): void;
|
|
51
|
+
/** Current toast list (read-only) */
|
|
52
|
+
readonly toasts: ReadonlyArray<ToastEntry>;
|
|
53
|
+
/** Subscribe to toast list changes. Returns unsubscribe function. */
|
|
54
|
+
subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void;
|
|
55
|
+
}
|
|
56
|
+
declare function createToastManager(): ToastManagerAPI;
|
|
57
|
+
|
|
58
|
+
declare const toastVariants: (props?: ({
|
|
59
|
+
variant?: "default" | "success" | "error" | "warning" | undefined;
|
|
60
|
+
} & {
|
|
61
|
+
className?: string;
|
|
62
|
+
}) | undefined) => string;
|
|
63
|
+
|
|
64
|
+
export { type ToastAPI, type ToastEntry, type ToastManagerAPI, type ToastProps, type ToastState, type ToastVariant, createToast, createToastManager, getToastIcon, toastVariants };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
type ToastVariant = 'default' | 'success' | 'error' | 'warning';
|
|
4
|
+
/** Get the icon name for a toast variant (colorblind-safe: meaning not conveyed by color alone) */
|
|
5
|
+
declare function getToastIcon(variant: ToastVariant): string;
|
|
6
|
+
interface ToastProps {
|
|
7
|
+
/** Visual variant */
|
|
8
|
+
variant?: ToastVariant;
|
|
9
|
+
/** Auto-dismiss duration in ms (default: 3000). Set to 0 to disable. */
|
|
10
|
+
duration?: number;
|
|
11
|
+
/** Whether the toast is open (controlled) */
|
|
12
|
+
open?: boolean;
|
|
13
|
+
/** Callback when open state changes */
|
|
14
|
+
onOpenChange?: (open: boolean) => void;
|
|
15
|
+
}
|
|
16
|
+
interface ToastState {
|
|
17
|
+
open: boolean;
|
|
18
|
+
variant: ToastVariant;
|
|
19
|
+
}
|
|
20
|
+
interface ToastAPI {
|
|
21
|
+
/** Current toast state */
|
|
22
|
+
state: ToastState;
|
|
23
|
+
/** ARIA attributes for the toast element */
|
|
24
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
25
|
+
/** Dismiss the toast */
|
|
26
|
+
dismiss(): void;
|
|
27
|
+
/** Start the auto-dismiss timer */
|
|
28
|
+
startTimer(): void;
|
|
29
|
+
/** Pause the auto-dismiss timer (e.g. on hover) */
|
|
30
|
+
pauseTimer(): void;
|
|
31
|
+
/** Resume the auto-dismiss timer */
|
|
32
|
+
resumeTimer(): void;
|
|
33
|
+
}
|
|
34
|
+
declare function createToast(props?: ToastProps): ToastAPI;
|
|
35
|
+
/** Entry in the toast manager */
|
|
36
|
+
interface ToastEntry {
|
|
37
|
+
id: string;
|
|
38
|
+
message: string;
|
|
39
|
+
variant: ToastVariant;
|
|
40
|
+
duration: number;
|
|
41
|
+
createdAt: number;
|
|
42
|
+
}
|
|
43
|
+
interface ToastManagerAPI {
|
|
44
|
+
/** Add a new toast. Returns the toast id. */
|
|
45
|
+
toast(message: string, opts?: {
|
|
46
|
+
variant?: ToastVariant;
|
|
47
|
+
duration?: number;
|
|
48
|
+
}): string;
|
|
49
|
+
/** Dismiss a toast by id */
|
|
50
|
+
dismiss(id: string): void;
|
|
51
|
+
/** Current toast list (read-only) */
|
|
52
|
+
readonly toasts: ReadonlyArray<ToastEntry>;
|
|
53
|
+
/** Subscribe to toast list changes. Returns unsubscribe function. */
|
|
54
|
+
subscribe(fn: (toasts: ReadonlyArray<ToastEntry>) => void): () => void;
|
|
55
|
+
}
|
|
56
|
+
declare function createToastManager(): ToastManagerAPI;
|
|
57
|
+
|
|
58
|
+
declare const toastVariants: (props?: ({
|
|
59
|
+
variant?: "default" | "success" | "error" | "warning" | undefined;
|
|
60
|
+
} & {
|
|
61
|
+
className?: string;
|
|
62
|
+
}) | undefined) => string;
|
|
63
|
+
|
|
64
|
+
export { type ToastAPI, type ToastEntry, type ToastManagerAPI, type ToastProps, type ToastState, type ToastVariant, createToast, createToastManager, getToastIcon, toastVariants };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AccessibilityProps, Side } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface TooltipProps {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
defaultOpen?: boolean;
|
|
6
|
+
onOpenChange?: (open: boolean) => void;
|
|
7
|
+
placement?: Side;
|
|
8
|
+
delayDuration?: number;
|
|
9
|
+
}
|
|
10
|
+
interface TooltipAPI {
|
|
11
|
+
/** Current open state */
|
|
12
|
+
state: {
|
|
13
|
+
open: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Props to spread on the trigger element */
|
|
16
|
+
triggerProps: Partial<AccessibilityProps> & {
|
|
17
|
+
'aria-describedby': string;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the content element */
|
|
20
|
+
contentProps: {
|
|
21
|
+
role: 'tooltip';
|
|
22
|
+
id: string;
|
|
23
|
+
};
|
|
24
|
+
/** Resolved placement */
|
|
25
|
+
placement: Side;
|
|
26
|
+
/** Open the tooltip */
|
|
27
|
+
open: () => void;
|
|
28
|
+
/** Close the tooltip (and clear any pending delay) */
|
|
29
|
+
close: () => void;
|
|
30
|
+
/** Open with delay */
|
|
31
|
+
openWithDelay: () => void;
|
|
32
|
+
/** The configured delay duration */
|
|
33
|
+
delayDuration: number;
|
|
34
|
+
/** Cancel any pending delay timer */
|
|
35
|
+
cancelDelay: () => void;
|
|
36
|
+
}
|
|
37
|
+
declare function createTooltip(props?: TooltipProps): TooltipAPI;
|
|
38
|
+
|
|
39
|
+
declare const tooltipContentVariants: (props?: ({
|
|
40
|
+
side?: "top" | "right" | "bottom" | "left" | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
className?: string;
|
|
43
|
+
}) | undefined) => string;
|
|
44
|
+
|
|
45
|
+
export { type TooltipAPI, type TooltipProps, createTooltip, tooltipContentVariants };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AccessibilityProps, Side } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface TooltipProps {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
defaultOpen?: boolean;
|
|
6
|
+
onOpenChange?: (open: boolean) => void;
|
|
7
|
+
placement?: Side;
|
|
8
|
+
delayDuration?: number;
|
|
9
|
+
}
|
|
10
|
+
interface TooltipAPI {
|
|
11
|
+
/** Current open state */
|
|
12
|
+
state: {
|
|
13
|
+
open: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Props to spread on the trigger element */
|
|
16
|
+
triggerProps: Partial<AccessibilityProps> & {
|
|
17
|
+
'aria-describedby': string;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the content element */
|
|
20
|
+
contentProps: {
|
|
21
|
+
role: 'tooltip';
|
|
22
|
+
id: string;
|
|
23
|
+
};
|
|
24
|
+
/** Resolved placement */
|
|
25
|
+
placement: Side;
|
|
26
|
+
/** Open the tooltip */
|
|
27
|
+
open: () => void;
|
|
28
|
+
/** Close the tooltip (and clear any pending delay) */
|
|
29
|
+
close: () => void;
|
|
30
|
+
/** Open with delay */
|
|
31
|
+
openWithDelay: () => void;
|
|
32
|
+
/** The configured delay duration */
|
|
33
|
+
delayDuration: number;
|
|
34
|
+
/** Cancel any pending delay timer */
|
|
35
|
+
cancelDelay: () => void;
|
|
36
|
+
}
|
|
37
|
+
declare function createTooltip(props?: TooltipProps): TooltipAPI;
|
|
38
|
+
|
|
39
|
+
declare const tooltipContentVariants: (props?: ({
|
|
40
|
+
side?: "top" | "right" | "bottom" | "left" | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
className?: string;
|
|
43
|
+
}) | undefined) => string;
|
|
44
|
+
|
|
45
|
+
export { type TooltipAPI, type TooltipProps, createTooltip, tooltipContentVariants };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { KeyboardHandlerMap } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface VersionOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
isLatest?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface VersionSelectorProps {
|
|
9
|
+
value?: string;
|
|
10
|
+
onValueChange?: (value: string) => void;
|
|
11
|
+
versions: VersionOption[];
|
|
12
|
+
}
|
|
13
|
+
interface VersionSelectorAPI {
|
|
14
|
+
/** Current state */
|
|
15
|
+
state: {
|
|
16
|
+
selectedVersion: string;
|
|
17
|
+
isOpen: boolean;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the trigger element */
|
|
20
|
+
triggerProps: {
|
|
21
|
+
'aria-expanded': boolean;
|
|
22
|
+
'aria-controls': string;
|
|
23
|
+
'aria-haspopup': 'listbox';
|
|
24
|
+
role: 'combobox';
|
|
25
|
+
};
|
|
26
|
+
/** Props to spread on the content/dropdown element */
|
|
27
|
+
contentProps: {
|
|
28
|
+
role: 'listbox';
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
/** Get props for an individual option */
|
|
32
|
+
getOptionProps: (value: string) => {
|
|
33
|
+
role: 'option';
|
|
34
|
+
'aria-selected': boolean;
|
|
35
|
+
'data-value': string;
|
|
36
|
+
'data-latest'?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Select a version */
|
|
39
|
+
select: (value: string) => void;
|
|
40
|
+
/** Open the dropdown */
|
|
41
|
+
open: () => void;
|
|
42
|
+
/** Close the dropdown */
|
|
43
|
+
close: () => void;
|
|
44
|
+
/** Keyboard handler map */
|
|
45
|
+
keyboardHandlers: KeyboardHandlerMap;
|
|
46
|
+
/** Pre-built keyboard event handler */
|
|
47
|
+
handleKeyDown: (event: KeyboardEvent) => void;
|
|
48
|
+
}
|
|
49
|
+
declare function createVersionSelector(props: VersionSelectorProps): VersionSelectorAPI;
|
|
50
|
+
|
|
51
|
+
declare const versionSelectorVariants: (props?: ({
|
|
52
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
53
|
+
} & {
|
|
54
|
+
className?: string;
|
|
55
|
+
}) | undefined) => string;
|
|
56
|
+
declare const versionSelectorOptionVariants: (props?: ({
|
|
57
|
+
selected?: "true" | "false" | undefined;
|
|
58
|
+
} & {
|
|
59
|
+
className?: string;
|
|
60
|
+
}) | undefined) => string;
|
|
61
|
+
|
|
62
|
+
declare const latestBadgeVariants: (props?: ({
|
|
63
|
+
variant?: "default" | "accent" | undefined;
|
|
64
|
+
} & {
|
|
65
|
+
className?: string;
|
|
66
|
+
}) | undefined) => string;
|
|
67
|
+
|
|
68
|
+
export { type VersionOption, type VersionSelectorAPI, type VersionSelectorProps, createVersionSelector, latestBadgeVariants, versionSelectorOptionVariants as optionVariants, versionSelectorVariants };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { KeyboardHandlerMap } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface VersionOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
isLatest?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface VersionSelectorProps {
|
|
9
|
+
value?: string;
|
|
10
|
+
onValueChange?: (value: string) => void;
|
|
11
|
+
versions: VersionOption[];
|
|
12
|
+
}
|
|
13
|
+
interface VersionSelectorAPI {
|
|
14
|
+
/** Current state */
|
|
15
|
+
state: {
|
|
16
|
+
selectedVersion: string;
|
|
17
|
+
isOpen: boolean;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the trigger element */
|
|
20
|
+
triggerProps: {
|
|
21
|
+
'aria-expanded': boolean;
|
|
22
|
+
'aria-controls': string;
|
|
23
|
+
'aria-haspopup': 'listbox';
|
|
24
|
+
role: 'combobox';
|
|
25
|
+
};
|
|
26
|
+
/** Props to spread on the content/dropdown element */
|
|
27
|
+
contentProps: {
|
|
28
|
+
role: 'listbox';
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
/** Get props for an individual option */
|
|
32
|
+
getOptionProps: (value: string) => {
|
|
33
|
+
role: 'option';
|
|
34
|
+
'aria-selected': boolean;
|
|
35
|
+
'data-value': string;
|
|
36
|
+
'data-latest'?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Select a version */
|
|
39
|
+
select: (value: string) => void;
|
|
40
|
+
/** Open the dropdown */
|
|
41
|
+
open: () => void;
|
|
42
|
+
/** Close the dropdown */
|
|
43
|
+
close: () => void;
|
|
44
|
+
/** Keyboard handler map */
|
|
45
|
+
keyboardHandlers: KeyboardHandlerMap;
|
|
46
|
+
/** Pre-built keyboard event handler */
|
|
47
|
+
handleKeyDown: (event: KeyboardEvent) => void;
|
|
48
|
+
}
|
|
49
|
+
declare function createVersionSelector(props: VersionSelectorProps): VersionSelectorAPI;
|
|
50
|
+
|
|
51
|
+
declare const versionSelectorVariants: (props?: ({
|
|
52
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
53
|
+
} & {
|
|
54
|
+
className?: string;
|
|
55
|
+
}) | undefined) => string;
|
|
56
|
+
declare const versionSelectorOptionVariants: (props?: ({
|
|
57
|
+
selected?: "true" | "false" | undefined;
|
|
58
|
+
} & {
|
|
59
|
+
className?: string;
|
|
60
|
+
}) | undefined) => string;
|
|
61
|
+
|
|
62
|
+
declare const latestBadgeVariants: (props?: ({
|
|
63
|
+
variant?: "default" | "accent" | undefined;
|
|
64
|
+
} & {
|
|
65
|
+
className?: string;
|
|
66
|
+
}) | undefined) => string;
|
|
67
|
+
|
|
68
|
+
export { type VersionOption, type VersionSelectorAPI, type VersionSelectorProps, createVersionSelector, latestBadgeVariants, versionSelectorOptionVariants as optionVariants, versionSelectorVariants };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface VideoPlayerProps {
|
|
4
|
+
src?: string;
|
|
5
|
+
poster?: string;
|
|
6
|
+
autoplay?: boolean;
|
|
7
|
+
muted?: boolean;
|
|
8
|
+
controls?: boolean;
|
|
9
|
+
}
|
|
10
|
+
type VideoState = 'idle' | 'loading' | 'playing' | 'paused' | 'ended';
|
|
11
|
+
interface VideoPlayerAPI {
|
|
12
|
+
/** Current player state */
|
|
13
|
+
state: VideoState;
|
|
14
|
+
/** Transition to playing state */
|
|
15
|
+
play: () => void;
|
|
16
|
+
/** Transition to paused state */
|
|
17
|
+
pause: () => void;
|
|
18
|
+
/** Toggle between playing and paused */
|
|
19
|
+
togglePlay: () => void;
|
|
20
|
+
/** Toggle mute state */
|
|
21
|
+
toggleMute: () => boolean;
|
|
22
|
+
/** ARIA props for the player region */
|
|
23
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
24
|
+
/** ARIA props for control buttons */
|
|
25
|
+
controlAriaProps: {
|
|
26
|
+
playPause: Partial<AccessibilityProps>;
|
|
27
|
+
mute: Partial<AccessibilityProps>;
|
|
28
|
+
};
|
|
29
|
+
/** Data attributes reflecting current state */
|
|
30
|
+
dataAttributes: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
declare function createVideoPlayer(props?: VideoPlayerProps): VideoPlayerAPI;
|
|
33
|
+
|
|
34
|
+
declare const playerVariants: (props?: ({
|
|
35
|
+
size?: "sm" | "md" | "lg" | "full" | undefined;
|
|
36
|
+
} & {
|
|
37
|
+
className?: string;
|
|
38
|
+
}) | undefined) => string;
|
|
39
|
+
declare const controlsVariants: (props?: ({
|
|
40
|
+
visibility?: "visible" | "hidden" | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
className?: string;
|
|
43
|
+
}) | undefined) => string;
|
|
44
|
+
declare const overlayVariants: (props?: ({
|
|
45
|
+
visibility?: "visible" | "hidden" | undefined;
|
|
46
|
+
} & {
|
|
47
|
+
className?: string;
|
|
48
|
+
}) | undefined) => string;
|
|
49
|
+
|
|
50
|
+
export { type VideoPlayerAPI, type VideoPlayerProps, type VideoState, controlsVariants, createVideoPlayer, overlayVariants, playerVariants };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface VideoPlayerProps {
|
|
4
|
+
src?: string;
|
|
5
|
+
poster?: string;
|
|
6
|
+
autoplay?: boolean;
|
|
7
|
+
muted?: boolean;
|
|
8
|
+
controls?: boolean;
|
|
9
|
+
}
|
|
10
|
+
type VideoState = 'idle' | 'loading' | 'playing' | 'paused' | 'ended';
|
|
11
|
+
interface VideoPlayerAPI {
|
|
12
|
+
/** Current player state */
|
|
13
|
+
state: VideoState;
|
|
14
|
+
/** Transition to playing state */
|
|
15
|
+
play: () => void;
|
|
16
|
+
/** Transition to paused state */
|
|
17
|
+
pause: () => void;
|
|
18
|
+
/** Toggle between playing and paused */
|
|
19
|
+
togglePlay: () => void;
|
|
20
|
+
/** Toggle mute state */
|
|
21
|
+
toggleMute: () => boolean;
|
|
22
|
+
/** ARIA props for the player region */
|
|
23
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
24
|
+
/** ARIA props for control buttons */
|
|
25
|
+
controlAriaProps: {
|
|
26
|
+
playPause: Partial<AccessibilityProps>;
|
|
27
|
+
mute: Partial<AccessibilityProps>;
|
|
28
|
+
};
|
|
29
|
+
/** Data attributes reflecting current state */
|
|
30
|
+
dataAttributes: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
declare function createVideoPlayer(props?: VideoPlayerProps): VideoPlayerAPI;
|
|
33
|
+
|
|
34
|
+
declare const playerVariants: (props?: ({
|
|
35
|
+
size?: "sm" | "md" | "lg" | "full" | undefined;
|
|
36
|
+
} & {
|
|
37
|
+
className?: string;
|
|
38
|
+
}) | undefined) => string;
|
|
39
|
+
declare const controlsVariants: (props?: ({
|
|
40
|
+
visibility?: "visible" | "hidden" | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
className?: string;
|
|
43
|
+
}) | undefined) => string;
|
|
44
|
+
declare const overlayVariants: (props?: ({
|
|
45
|
+
visibility?: "visible" | "hidden" | undefined;
|
|
46
|
+
} & {
|
|
47
|
+
className?: string;
|
|
48
|
+
}) | undefined) => string;
|
|
49
|
+
|
|
50
|
+
export { type VideoPlayerAPI, type VideoPlayerProps, type VideoState, controlsVariants, createVideoPlayer, overlayVariants, playerVariants };
|