@refraction-ui/react 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +45 -258
- 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 +47 -334
- 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,40 @@
|
|
|
1
|
+
import { AccessibilityProps, KeyboardHandlerMap, TokenContract } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
type CheckedState = boolean | 'indeterminate';
|
|
4
|
+
interface CheckboxProps {
|
|
5
|
+
checked?: CheckedState;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
name?: string;
|
|
9
|
+
value?: string;
|
|
10
|
+
}
|
|
11
|
+
interface CheckboxAPI {
|
|
12
|
+
/** ARIA attributes to spread on the element */
|
|
13
|
+
ariaProps: Partial<AccessibilityProps>;
|
|
14
|
+
/** Keyboard handlers to attach */
|
|
15
|
+
keyboardHandlers: KeyboardHandlerMap;
|
|
16
|
+
/** Whether interaction should be blocked */
|
|
17
|
+
isInteractive: boolean;
|
|
18
|
+
/** Data attributes for CSS styling hooks */
|
|
19
|
+
dataAttributes: Record<string, string>;
|
|
20
|
+
/** Current state */
|
|
21
|
+
state: {
|
|
22
|
+
checked: CheckedState;
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
declare function createCheckbox(props?: CheckboxProps): CheckboxAPI;
|
|
27
|
+
/** SVG path data for the check icon */
|
|
28
|
+
declare const checkIconPath = "M20 6L9 17l-5-5";
|
|
29
|
+
/** SVG path data for the indeterminate/minus icon */
|
|
30
|
+
declare const indeterminateIconPath = "M5 12h14";
|
|
31
|
+
|
|
32
|
+
declare const checkboxTokens: TokenContract;
|
|
33
|
+
declare const checkboxVariants: (props?: ({
|
|
34
|
+
checked?: "indeterminate" | "true" | "false" | undefined;
|
|
35
|
+
size?: "sm" | "default" | "lg" | undefined;
|
|
36
|
+
} & {
|
|
37
|
+
className?: string;
|
|
38
|
+
}) | undefined) => string;
|
|
39
|
+
|
|
40
|
+
export { type CheckboxAPI, type CheckboxProps, type CheckedState, checkIconPath, checkboxTokens, checkboxVariants, createCheckbox, indeterminateIconPath };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AccessibilityProps, TokenContract } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
type CodeEditorTheme = 'light' | 'dark';
|
|
4
|
+
interface CodeEditorProps {
|
|
5
|
+
value?: string;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
language?: string;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
theme?: CodeEditorTheme;
|
|
10
|
+
}
|
|
11
|
+
interface CodeEditorState {
|
|
12
|
+
value: string;
|
|
13
|
+
language: string;
|
|
14
|
+
theme: CodeEditorTheme;
|
|
15
|
+
}
|
|
16
|
+
interface CodeEditorAPI {
|
|
17
|
+
/** Current editor state */
|
|
18
|
+
state: CodeEditorState;
|
|
19
|
+
/** ARIA attributes for the editor element */
|
|
20
|
+
ariaProps: Partial<AccessibilityProps> & {
|
|
21
|
+
'aria-multiline'?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** Data attributes for CSS styling hooks */
|
|
24
|
+
dataAttributes: Record<string, string>;
|
|
25
|
+
/** Update the editor value */
|
|
26
|
+
setValue: (value: string) => void;
|
|
27
|
+
/** Get a human-readable label for the current language */
|
|
28
|
+
getLanguageLabel: () => string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a headless code editor API.
|
|
32
|
+
*
|
|
33
|
+
* This provides the headless interface for a code editor — state management,
|
|
34
|
+
* ARIA props, and data attributes. Actual rendering (Monaco, CodeMirror, or
|
|
35
|
+
* a simple textarea) is handled by framework-specific wrappers.
|
|
36
|
+
*/
|
|
37
|
+
declare function createCodeEditor(props?: CodeEditorProps): CodeEditorAPI;
|
|
38
|
+
|
|
39
|
+
declare const codeEditorTokens: TokenContract;
|
|
40
|
+
declare const codeEditorVariants: (props?: ({
|
|
41
|
+
theme?: "light" | "dark" | undefined;
|
|
42
|
+
size?: "sm" | "default" | "lg" | undefined;
|
|
43
|
+
} & {
|
|
44
|
+
className?: string;
|
|
45
|
+
}) | undefined) => string;
|
|
46
|
+
|
|
47
|
+
export { type CodeEditorAPI, type CodeEditorProps, type CodeEditorState, type CodeEditorTheme, codeEditorTokens, codeEditorVariants, createCodeEditor };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AccessibilityProps, TokenContract } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
type CodeEditorTheme = 'light' | 'dark';
|
|
4
|
+
interface CodeEditorProps {
|
|
5
|
+
value?: string;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
language?: string;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
theme?: CodeEditorTheme;
|
|
10
|
+
}
|
|
11
|
+
interface CodeEditorState {
|
|
12
|
+
value: string;
|
|
13
|
+
language: string;
|
|
14
|
+
theme: CodeEditorTheme;
|
|
15
|
+
}
|
|
16
|
+
interface CodeEditorAPI {
|
|
17
|
+
/** Current editor state */
|
|
18
|
+
state: CodeEditorState;
|
|
19
|
+
/** ARIA attributes for the editor element */
|
|
20
|
+
ariaProps: Partial<AccessibilityProps> & {
|
|
21
|
+
'aria-multiline'?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** Data attributes for CSS styling hooks */
|
|
24
|
+
dataAttributes: Record<string, string>;
|
|
25
|
+
/** Update the editor value */
|
|
26
|
+
setValue: (value: string) => void;
|
|
27
|
+
/** Get a human-readable label for the current language */
|
|
28
|
+
getLanguageLabel: () => string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a headless code editor API.
|
|
32
|
+
*
|
|
33
|
+
* This provides the headless interface for a code editor — state management,
|
|
34
|
+
* ARIA props, and data attributes. Actual rendering (Monaco, CodeMirror, or
|
|
35
|
+
* a simple textarea) is handled by framework-specific wrappers.
|
|
36
|
+
*/
|
|
37
|
+
declare function createCodeEditor(props?: CodeEditorProps): CodeEditorAPI;
|
|
38
|
+
|
|
39
|
+
declare const codeEditorTokens: TokenContract;
|
|
40
|
+
declare const codeEditorVariants: (props?: ({
|
|
41
|
+
theme?: "light" | "dark" | undefined;
|
|
42
|
+
size?: "sm" | "default" | "lg" | undefined;
|
|
43
|
+
} & {
|
|
44
|
+
className?: string;
|
|
45
|
+
}) | undefined) => string;
|
|
46
|
+
|
|
47
|
+
export { type CodeEditorAPI, type CodeEditorProps, type CodeEditorState, type CodeEditorTheme, codeEditorTokens, codeEditorVariants, createCodeEditor };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
interface CollapsibleProps {
|
|
2
|
+
open?: boolean;
|
|
3
|
+
defaultOpen?: boolean;
|
|
4
|
+
onOpenChange?: (open: boolean) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface CollapsibleAPI {
|
|
8
|
+
/** Current open state */
|
|
9
|
+
state: {
|
|
10
|
+
open: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** Props to spread on the trigger element */
|
|
13
|
+
triggerProps: {
|
|
14
|
+
'aria-expanded': boolean;
|
|
15
|
+
'aria-controls': string;
|
|
16
|
+
'data-state': 'open' | 'closed';
|
|
17
|
+
'data-disabled': string | undefined;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the content element */
|
|
20
|
+
contentProps: {
|
|
21
|
+
id: string;
|
|
22
|
+
role: 'region';
|
|
23
|
+
'data-state': 'open' | 'closed';
|
|
24
|
+
hidden: boolean;
|
|
25
|
+
};
|
|
26
|
+
/** Toggle the open state */
|
|
27
|
+
toggle: () => void;
|
|
28
|
+
/** Open the collapsible */
|
|
29
|
+
open: () => void;
|
|
30
|
+
/** Close the collapsible */
|
|
31
|
+
close: () => void;
|
|
32
|
+
/** Keyboard event handler for Enter/Space toggle */
|
|
33
|
+
keyboardHandler: (event: KeyboardEvent) => void;
|
|
34
|
+
}
|
|
35
|
+
declare function createCollapsible(props?: CollapsibleProps): CollapsibleAPI;
|
|
36
|
+
|
|
37
|
+
declare const collapsibleContentVariants: (props?: ({
|
|
38
|
+
state?: "open" | "closed" | undefined;
|
|
39
|
+
} & {
|
|
40
|
+
className?: string;
|
|
41
|
+
}) | undefined) => string;
|
|
42
|
+
|
|
43
|
+
export { type CollapsibleAPI, type CollapsibleProps, collapsibleContentVariants, createCollapsible };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
interface CollapsibleProps {
|
|
2
|
+
open?: boolean;
|
|
3
|
+
defaultOpen?: boolean;
|
|
4
|
+
onOpenChange?: (open: boolean) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface CollapsibleAPI {
|
|
8
|
+
/** Current open state */
|
|
9
|
+
state: {
|
|
10
|
+
open: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** Props to spread on the trigger element */
|
|
13
|
+
triggerProps: {
|
|
14
|
+
'aria-expanded': boolean;
|
|
15
|
+
'aria-controls': string;
|
|
16
|
+
'data-state': 'open' | 'closed';
|
|
17
|
+
'data-disabled': string | undefined;
|
|
18
|
+
};
|
|
19
|
+
/** Props to spread on the content element */
|
|
20
|
+
contentProps: {
|
|
21
|
+
id: string;
|
|
22
|
+
role: 'region';
|
|
23
|
+
'data-state': 'open' | 'closed';
|
|
24
|
+
hidden: boolean;
|
|
25
|
+
};
|
|
26
|
+
/** Toggle the open state */
|
|
27
|
+
toggle: () => void;
|
|
28
|
+
/** Open the collapsible */
|
|
29
|
+
open: () => void;
|
|
30
|
+
/** Close the collapsible */
|
|
31
|
+
close: () => void;
|
|
32
|
+
/** Keyboard event handler for Enter/Space toggle */
|
|
33
|
+
keyboardHandler: (event: KeyboardEvent) => void;
|
|
34
|
+
}
|
|
35
|
+
declare function createCollapsible(props?: CollapsibleProps): CollapsibleAPI;
|
|
36
|
+
|
|
37
|
+
declare const collapsibleContentVariants: (props?: ({
|
|
38
|
+
state?: "open" | "closed" | undefined;
|
|
39
|
+
} & {
|
|
40
|
+
className?: string;
|
|
41
|
+
}) | undefined) => string;
|
|
42
|
+
|
|
43
|
+
export { type CollapsibleAPI, type CollapsibleProps, collapsibleContentVariants, createCollapsible };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { KeyboardHandlerMap } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface CommandProps {
|
|
4
|
+
/** Whether the command palette is open (controlled) */
|
|
5
|
+
open?: boolean;
|
|
6
|
+
/** Callback when open state changes */
|
|
7
|
+
onOpenChange?: (open: boolean) => void;
|
|
8
|
+
/** Custom filter function — receives item value and search query, returns true to include */
|
|
9
|
+
filter?: (value: string, search: string) => boolean;
|
|
10
|
+
}
|
|
11
|
+
interface CommandItemData {
|
|
12
|
+
/** Unique identifier for the item */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Display label */
|
|
15
|
+
label: string;
|
|
16
|
+
/** Searchable value */
|
|
17
|
+
value: string;
|
|
18
|
+
/** Whether the item is disabled */
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Optional group the item belongs to */
|
|
21
|
+
group?: string;
|
|
22
|
+
}
|
|
23
|
+
interface CommandState {
|
|
24
|
+
/** Current search query */
|
|
25
|
+
search: string;
|
|
26
|
+
/** Items after filtering */
|
|
27
|
+
filteredItems: CommandItemData[];
|
|
28
|
+
/** Index of the currently highlighted item in filteredItems */
|
|
29
|
+
selectedIndex: number;
|
|
30
|
+
/** Whether the palette is open */
|
|
31
|
+
open: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface CommandAPI {
|
|
34
|
+
/** Current command state */
|
|
35
|
+
state: CommandState;
|
|
36
|
+
/** Update the search query and re-filter items */
|
|
37
|
+
search(query: string): void;
|
|
38
|
+
/** Select the item at the given index (or the currently highlighted item) */
|
|
39
|
+
select(index?: number): CommandItemData | undefined;
|
|
40
|
+
/** Keyboard handlers for the command palette */
|
|
41
|
+
keyboardHandlers: KeyboardHandlerMap;
|
|
42
|
+
/** ARIA attributes for the command root */
|
|
43
|
+
ariaProps: Record<string, unknown>;
|
|
44
|
+
/** ARIA attributes for the input */
|
|
45
|
+
inputAriaProps: Record<string, unknown>;
|
|
46
|
+
/** ARIA attributes for the list */
|
|
47
|
+
listAriaProps: Record<string, unknown>;
|
|
48
|
+
/** Get ARIA attributes for a specific item */
|
|
49
|
+
getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown>;
|
|
50
|
+
/** Generated IDs */
|
|
51
|
+
ids: {
|
|
52
|
+
root: string;
|
|
53
|
+
input: string;
|
|
54
|
+
list: string;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
declare function createCommand(props?: CommandProps, items?: CommandItemData[]): CommandAPI;
|
|
58
|
+
|
|
59
|
+
declare const commandVariants: (props?: ({
|
|
60
|
+
[x: string]: string | undefined;
|
|
61
|
+
} & {
|
|
62
|
+
className?: string;
|
|
63
|
+
}) | undefined) => string;
|
|
64
|
+
declare const commandInputVariants: (props?: ({
|
|
65
|
+
[x: string]: string | undefined;
|
|
66
|
+
} & {
|
|
67
|
+
className?: string;
|
|
68
|
+
}) | undefined) => string;
|
|
69
|
+
declare const commandItemVariants: (props?: ({
|
|
70
|
+
state?: "default" | "selected" | "disabled" | undefined;
|
|
71
|
+
} & {
|
|
72
|
+
className?: string;
|
|
73
|
+
}) | undefined) => string;
|
|
74
|
+
declare const commandGroupVariants: (props?: ({
|
|
75
|
+
[x: string]: string | undefined;
|
|
76
|
+
} & {
|
|
77
|
+
className?: string;
|
|
78
|
+
}) | undefined) => string;
|
|
79
|
+
|
|
80
|
+
export { type CommandAPI, type CommandItemData, type CommandProps, type CommandState, commandGroupVariants, commandInputVariants, commandItemVariants, commandVariants, createCommand };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { KeyboardHandlerMap } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface CommandProps {
|
|
4
|
+
/** Whether the command palette is open (controlled) */
|
|
5
|
+
open?: boolean;
|
|
6
|
+
/** Callback when open state changes */
|
|
7
|
+
onOpenChange?: (open: boolean) => void;
|
|
8
|
+
/** Custom filter function — receives item value and search query, returns true to include */
|
|
9
|
+
filter?: (value: string, search: string) => boolean;
|
|
10
|
+
}
|
|
11
|
+
interface CommandItemData {
|
|
12
|
+
/** Unique identifier for the item */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Display label */
|
|
15
|
+
label: string;
|
|
16
|
+
/** Searchable value */
|
|
17
|
+
value: string;
|
|
18
|
+
/** Whether the item is disabled */
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Optional group the item belongs to */
|
|
21
|
+
group?: string;
|
|
22
|
+
}
|
|
23
|
+
interface CommandState {
|
|
24
|
+
/** Current search query */
|
|
25
|
+
search: string;
|
|
26
|
+
/** Items after filtering */
|
|
27
|
+
filteredItems: CommandItemData[];
|
|
28
|
+
/** Index of the currently highlighted item in filteredItems */
|
|
29
|
+
selectedIndex: number;
|
|
30
|
+
/** Whether the palette is open */
|
|
31
|
+
open: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface CommandAPI {
|
|
34
|
+
/** Current command state */
|
|
35
|
+
state: CommandState;
|
|
36
|
+
/** Update the search query and re-filter items */
|
|
37
|
+
search(query: string): void;
|
|
38
|
+
/** Select the item at the given index (or the currently highlighted item) */
|
|
39
|
+
select(index?: number): CommandItemData | undefined;
|
|
40
|
+
/** Keyboard handlers for the command palette */
|
|
41
|
+
keyboardHandlers: KeyboardHandlerMap;
|
|
42
|
+
/** ARIA attributes for the command root */
|
|
43
|
+
ariaProps: Record<string, unknown>;
|
|
44
|
+
/** ARIA attributes for the input */
|
|
45
|
+
inputAriaProps: Record<string, unknown>;
|
|
46
|
+
/** ARIA attributes for the list */
|
|
47
|
+
listAriaProps: Record<string, unknown>;
|
|
48
|
+
/** Get ARIA attributes for a specific item */
|
|
49
|
+
getItemAriaProps(item: CommandItemData, index: number): Record<string, unknown>;
|
|
50
|
+
/** Generated IDs */
|
|
51
|
+
ids: {
|
|
52
|
+
root: string;
|
|
53
|
+
input: string;
|
|
54
|
+
list: string;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
declare function createCommand(props?: CommandProps, items?: CommandItemData[]): CommandAPI;
|
|
58
|
+
|
|
59
|
+
declare const commandVariants: (props?: ({
|
|
60
|
+
[x: string]: string | undefined;
|
|
61
|
+
} & {
|
|
62
|
+
className?: string;
|
|
63
|
+
}) | undefined) => string;
|
|
64
|
+
declare const commandInputVariants: (props?: ({
|
|
65
|
+
[x: string]: string | undefined;
|
|
66
|
+
} & {
|
|
67
|
+
className?: string;
|
|
68
|
+
}) | undefined) => string;
|
|
69
|
+
declare const commandItemVariants: (props?: ({
|
|
70
|
+
state?: "default" | "selected" | "disabled" | undefined;
|
|
71
|
+
} & {
|
|
72
|
+
className?: string;
|
|
73
|
+
}) | undefined) => string;
|
|
74
|
+
declare const commandGroupVariants: (props?: ({
|
|
75
|
+
[x: string]: string | undefined;
|
|
76
|
+
} & {
|
|
77
|
+
className?: string;
|
|
78
|
+
}) | undefined) => string;
|
|
79
|
+
|
|
80
|
+
export { type CommandAPI, type CommandItemData, type CommandProps, type CommandState, commandGroupVariants, commandInputVariants, commandItemVariants, commandVariants, createCommand };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
interface ContentProtectionProps {
|
|
2
|
+
/** Enable content protection. Default: true */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
/** Disable copy/cut. Default: true */
|
|
5
|
+
disableCopy?: boolean;
|
|
6
|
+
/** Disable right-click context menu. Default: true */
|
|
7
|
+
disableContextMenu?: boolean;
|
|
8
|
+
/** Watermark text overlay */
|
|
9
|
+
watermarkText?: string;
|
|
10
|
+
}
|
|
11
|
+
interface WatermarkConfig {
|
|
12
|
+
text: string;
|
|
13
|
+
opacity: number;
|
|
14
|
+
angle: number;
|
|
15
|
+
}
|
|
16
|
+
interface ContentProtectionAPI {
|
|
17
|
+
eventHandlers: {
|
|
18
|
+
onCopy?: (e: {
|
|
19
|
+
preventDefault(): void;
|
|
20
|
+
}) => void;
|
|
21
|
+
onCut?: (e: {
|
|
22
|
+
preventDefault(): void;
|
|
23
|
+
}) => void;
|
|
24
|
+
onContextMenu?: (e: {
|
|
25
|
+
preventDefault(): void;
|
|
26
|
+
}) => void;
|
|
27
|
+
onSelectStart?: (e: {
|
|
28
|
+
preventDefault(): void;
|
|
29
|
+
}) => void;
|
|
30
|
+
};
|
|
31
|
+
watermarkConfig: WatermarkConfig | null;
|
|
32
|
+
dataAttributes: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
declare function createContentProtection(props?: ContentProtectionProps): ContentProtectionAPI;
|
|
35
|
+
|
|
36
|
+
declare const contentProtectionVariants: (props?: ({
|
|
37
|
+
[x: string]: string | undefined;
|
|
38
|
+
} & {
|
|
39
|
+
className?: string;
|
|
40
|
+
}) | undefined) => string;
|
|
41
|
+
declare const watermarkVariants: (props?: ({
|
|
42
|
+
[x: string]: string | undefined;
|
|
43
|
+
} & {
|
|
44
|
+
className?: string;
|
|
45
|
+
}) | undefined) => string;
|
|
46
|
+
|
|
47
|
+
export { type ContentProtectionAPI, type ContentProtectionProps, type WatermarkConfig, contentProtectionVariants, createContentProtection, watermarkVariants };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
interface ContentProtectionProps {
|
|
2
|
+
/** Enable content protection. Default: true */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
/** Disable copy/cut. Default: true */
|
|
5
|
+
disableCopy?: boolean;
|
|
6
|
+
/** Disable right-click context menu. Default: true */
|
|
7
|
+
disableContextMenu?: boolean;
|
|
8
|
+
/** Watermark text overlay */
|
|
9
|
+
watermarkText?: string;
|
|
10
|
+
}
|
|
11
|
+
interface WatermarkConfig {
|
|
12
|
+
text: string;
|
|
13
|
+
opacity: number;
|
|
14
|
+
angle: number;
|
|
15
|
+
}
|
|
16
|
+
interface ContentProtectionAPI {
|
|
17
|
+
eventHandlers: {
|
|
18
|
+
onCopy?: (e: {
|
|
19
|
+
preventDefault(): void;
|
|
20
|
+
}) => void;
|
|
21
|
+
onCut?: (e: {
|
|
22
|
+
preventDefault(): void;
|
|
23
|
+
}) => void;
|
|
24
|
+
onContextMenu?: (e: {
|
|
25
|
+
preventDefault(): void;
|
|
26
|
+
}) => void;
|
|
27
|
+
onSelectStart?: (e: {
|
|
28
|
+
preventDefault(): void;
|
|
29
|
+
}) => void;
|
|
30
|
+
};
|
|
31
|
+
watermarkConfig: WatermarkConfig | null;
|
|
32
|
+
dataAttributes: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
declare function createContentProtection(props?: ContentProtectionProps): ContentProtectionAPI;
|
|
35
|
+
|
|
36
|
+
declare const contentProtectionVariants: (props?: ({
|
|
37
|
+
[x: string]: string | undefined;
|
|
38
|
+
} & {
|
|
39
|
+
className?: string;
|
|
40
|
+
}) | undefined) => string;
|
|
41
|
+
declare const watermarkVariants: (props?: ({
|
|
42
|
+
[x: string]: string | undefined;
|
|
43
|
+
} & {
|
|
44
|
+
className?: string;
|
|
45
|
+
}) | undefined) => string;
|
|
46
|
+
|
|
47
|
+
export { type ContentProtectionAPI, type ContentProtectionProps, type WatermarkConfig, contentProtectionVariants, createContentProtection, watermarkVariants };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.cjs';
|
|
2
|
+
|
|
3
|
+
interface ColumnDef<T = Record<string, unknown>> {
|
|
4
|
+
/** Unique column identifier */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Column header text */
|
|
7
|
+
header: string;
|
|
8
|
+
/** Accessor function to get cell value from row */
|
|
9
|
+
accessor: (row: T) => unknown;
|
|
10
|
+
/** Whether this column is sortable */
|
|
11
|
+
sortable?: boolean;
|
|
12
|
+
/** Whether this column is filterable */
|
|
13
|
+
filterable?: boolean;
|
|
14
|
+
}
|
|
15
|
+
type SortDirection = 'asc' | 'desc';
|
|
16
|
+
interface DataTableProps<T = Record<string, unknown>> {
|
|
17
|
+
/** Column definitions */
|
|
18
|
+
columns: ColumnDef<T>[];
|
|
19
|
+
/** Data rows */
|
|
20
|
+
data: T[];
|
|
21
|
+
/** Current sort column */
|
|
22
|
+
sortBy?: string;
|
|
23
|
+
/** Current sort direction */
|
|
24
|
+
sortDir?: SortDirection;
|
|
25
|
+
/** Callback when sort changes */
|
|
26
|
+
onSort?: (columnId: string, direction: SortDirection) => void;
|
|
27
|
+
/** Active filters: columnId -> filter value */
|
|
28
|
+
filters?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
interface DataTableState<T = Record<string, unknown>> {
|
|
31
|
+
sortedData: T[];
|
|
32
|
+
sortBy: string | null;
|
|
33
|
+
sortDir: SortDirection;
|
|
34
|
+
filters: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
interface DataTableAPI<T = Record<string, unknown>> {
|
|
37
|
+
/** Current table state */
|
|
38
|
+
state: DataTableState<T>;
|
|
39
|
+
/** Toggle sort for a column */
|
|
40
|
+
sort(columnId: string): void;
|
|
41
|
+
/** Set a filter value for a column */
|
|
42
|
+
setFilter(columnId: string, value: string): void;
|
|
43
|
+
/** Get ARIA and role props for a header cell */
|
|
44
|
+
getHeaderProps(col: ColumnDef<T>): Partial<AccessibilityProps> & Record<string, unknown>;
|
|
45
|
+
/** Get props for a data cell */
|
|
46
|
+
getCellProps(col: ColumnDef<T>, row: T): Record<string, unknown>;
|
|
47
|
+
/** Get props for a data row */
|
|
48
|
+
getRowProps(row: T, index: number): Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
declare function createDataTable<T = Record<string, unknown>>(props: DataTableProps<T>): DataTableAPI<T>;
|
|
51
|
+
|
|
52
|
+
declare const tableVariants: (props?: ({
|
|
53
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
54
|
+
} & {
|
|
55
|
+
className?: string;
|
|
56
|
+
}) | undefined) => string;
|
|
57
|
+
declare const headerVariants: (props?: ({
|
|
58
|
+
sortable?: "true" | "false" | undefined;
|
|
59
|
+
} & {
|
|
60
|
+
className?: string;
|
|
61
|
+
}) | undefined) => string;
|
|
62
|
+
declare const cellVariants: (props?: ({
|
|
63
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
64
|
+
} & {
|
|
65
|
+
className?: string;
|
|
66
|
+
}) | undefined) => string;
|
|
67
|
+
declare const rowVariants: (props?: ({
|
|
68
|
+
selected?: "true" | "false" | undefined;
|
|
69
|
+
} & {
|
|
70
|
+
className?: string;
|
|
71
|
+
}) | undefined) => string;
|
|
72
|
+
|
|
73
|
+
export { type ColumnDef, type DataTableAPI, type DataTableProps, type DataTableState, type SortDirection, cellVariants, createDataTable, headerVariants, rowVariants, tableVariants };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AccessibilityProps } from '../shared/index.js';
|
|
2
|
+
|
|
3
|
+
interface ColumnDef<T = Record<string, unknown>> {
|
|
4
|
+
/** Unique column identifier */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Column header text */
|
|
7
|
+
header: string;
|
|
8
|
+
/** Accessor function to get cell value from row */
|
|
9
|
+
accessor: (row: T) => unknown;
|
|
10
|
+
/** Whether this column is sortable */
|
|
11
|
+
sortable?: boolean;
|
|
12
|
+
/** Whether this column is filterable */
|
|
13
|
+
filterable?: boolean;
|
|
14
|
+
}
|
|
15
|
+
type SortDirection = 'asc' | 'desc';
|
|
16
|
+
interface DataTableProps<T = Record<string, unknown>> {
|
|
17
|
+
/** Column definitions */
|
|
18
|
+
columns: ColumnDef<T>[];
|
|
19
|
+
/** Data rows */
|
|
20
|
+
data: T[];
|
|
21
|
+
/** Current sort column */
|
|
22
|
+
sortBy?: string;
|
|
23
|
+
/** Current sort direction */
|
|
24
|
+
sortDir?: SortDirection;
|
|
25
|
+
/** Callback when sort changes */
|
|
26
|
+
onSort?: (columnId: string, direction: SortDirection) => void;
|
|
27
|
+
/** Active filters: columnId -> filter value */
|
|
28
|
+
filters?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
interface DataTableState<T = Record<string, unknown>> {
|
|
31
|
+
sortedData: T[];
|
|
32
|
+
sortBy: string | null;
|
|
33
|
+
sortDir: SortDirection;
|
|
34
|
+
filters: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
interface DataTableAPI<T = Record<string, unknown>> {
|
|
37
|
+
/** Current table state */
|
|
38
|
+
state: DataTableState<T>;
|
|
39
|
+
/** Toggle sort for a column */
|
|
40
|
+
sort(columnId: string): void;
|
|
41
|
+
/** Set a filter value for a column */
|
|
42
|
+
setFilter(columnId: string, value: string): void;
|
|
43
|
+
/** Get ARIA and role props for a header cell */
|
|
44
|
+
getHeaderProps(col: ColumnDef<T>): Partial<AccessibilityProps> & Record<string, unknown>;
|
|
45
|
+
/** Get props for a data cell */
|
|
46
|
+
getCellProps(col: ColumnDef<T>, row: T): Record<string, unknown>;
|
|
47
|
+
/** Get props for a data row */
|
|
48
|
+
getRowProps(row: T, index: number): Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
declare function createDataTable<T = Record<string, unknown>>(props: DataTableProps<T>): DataTableAPI<T>;
|
|
51
|
+
|
|
52
|
+
declare const tableVariants: (props?: ({
|
|
53
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
54
|
+
} & {
|
|
55
|
+
className?: string;
|
|
56
|
+
}) | undefined) => string;
|
|
57
|
+
declare const headerVariants: (props?: ({
|
|
58
|
+
sortable?: "true" | "false" | undefined;
|
|
59
|
+
} & {
|
|
60
|
+
className?: string;
|
|
61
|
+
}) | undefined) => string;
|
|
62
|
+
declare const cellVariants: (props?: ({
|
|
63
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
64
|
+
} & {
|
|
65
|
+
className?: string;
|
|
66
|
+
}) | undefined) => string;
|
|
67
|
+
declare const rowVariants: (props?: ({
|
|
68
|
+
selected?: "true" | "false" | undefined;
|
|
69
|
+
} & {
|
|
70
|
+
className?: string;
|
|
71
|
+
}) | undefined) => string;
|
|
72
|
+
|
|
73
|
+
export { type ColumnDef, type DataTableAPI, type DataTableProps, type DataTableState, type SortDirection, cellVariants, createDataTable, headerVariants, rowVariants, tableVariants };
|