react-18-ui-library 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +202 -0
  2. package/dist/components/actions/CopyButton/CopyButton.d.ts +14 -0
  3. package/dist/components/actions/CopyButton/index.d.ts +2 -0
  4. package/dist/components/display/Avatar/Avatar.d.ts +21 -0
  5. package/dist/components/display/Avatar/index.d.ts +2 -0
  6. package/dist/components/display/Badge/Badge.d.ts +20 -0
  7. package/dist/components/display/Badge/index.d.ts +2 -0
  8. package/dist/components/display/Box/Box.d.ts +18 -0
  9. package/dist/components/display/Box/index.d.ts +2 -0
  10. package/dist/components/display/Card/Card.d.ts +11 -0
  11. package/dist/components/display/Card/index.d.ts +2 -0
  12. package/dist/components/display/Collapsible/Collapsible.d.ts +15 -0
  13. package/dist/components/display/Collapsible/index.d.ts +2 -0
  14. package/dist/components/display/DataTable/DataTable.d.ts +46 -0
  15. package/dist/components/display/EmptyState/EmptyState.d.ts +10 -0
  16. package/dist/components/display/EmptyState/index.d.ts +2 -0
  17. package/dist/components/display/Icon/Icon.d.ts +9 -0
  18. package/dist/components/display/Icon/index.d.ts +2 -0
  19. package/dist/components/display/Image/Image.d.ts +15 -0
  20. package/dist/components/display/Image/index.d.ts +2 -0
  21. package/dist/components/display/List/List.d.ts +24 -0
  22. package/dist/components/display/List/index.d.ts +2 -0
  23. package/dist/components/display/MarkdownReader/MarkdownReader.d.ts +7 -0
  24. package/dist/components/display/SVG/SVG.d.ts +18 -0
  25. package/dist/components/display/SVG/index.d.ts +2 -0
  26. package/dist/components/display/Stat/Stat.d.ts +13 -0
  27. package/dist/components/display/Stat/index.d.ts +2 -0
  28. package/dist/components/display/Table/Table.d.ts +31 -0
  29. package/dist/components/display/Table/index.d.ts +2 -0
  30. package/dist/components/display/Tag/Tag.d.ts +16 -0
  31. package/dist/components/display/Tag/index.d.ts +2 -0
  32. package/dist/components/display/Timeline/Timeline.d.ts +15 -0
  33. package/dist/components/display/Timeline/index.d.ts +2 -0
  34. package/dist/components/display/TreeView/TreeView.d.ts +23 -0
  35. package/dist/components/display/TreeView/index.d.ts +2 -0
  36. package/dist/components/feedback/Alert/Alert.d.ts +15 -0
  37. package/dist/components/feedback/Alert/index.d.ts +2 -0
  38. package/dist/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +18 -0
  39. package/dist/components/feedback/ErrorBoundary/index.d.ts +2 -0
  40. package/dist/components/feedback/FullScreenLoader/FullScreenLoader.d.ts +27 -0
  41. package/dist/components/feedback/ProgressBar/ProgressBar.d.ts +15 -0
  42. package/dist/components/feedback/ProgressBar/index.d.ts +2 -0
  43. package/dist/components/feedback/Skeleton/Skeleton.d.ts +16 -0
  44. package/dist/components/feedback/Skeleton/index.d.ts +2 -0
  45. package/dist/components/feedback/Spinner/Spinner.d.ts +9 -0
  46. package/dist/components/feedback/Spinner/index.d.ts +2 -0
  47. package/dist/components/feedback/Toast/Toast.d.ts +7 -0
  48. package/dist/components/feedback/Toast/index.d.ts +2 -0
  49. package/dist/components/forms/FileUpload/FileUpload.d.ts +24 -0
  50. package/dist/components/forms/FileUpload/index.d.ts +2 -0
  51. package/dist/components/forms/FormField/FormField.d.ts +12 -0
  52. package/dist/components/forms/FormField/index.d.ts +2 -0
  53. package/dist/components/forms/JSONForm/FormValidator.d.ts +157 -0
  54. package/dist/components/forms/JSONForm/JSONForm.d.ts +53 -0
  55. package/dist/components/forms/JSONForm/index.d.ts +4 -0
  56. package/dist/components/inputs/Button/Button.d.ts +15 -0
  57. package/dist/components/inputs/Button/index.d.ts +2 -0
  58. package/dist/components/inputs/Checkbox/Checkbox.d.ts +14 -0
  59. package/dist/components/inputs/Checkbox/index.d.ts +2 -0
  60. package/dist/components/inputs/ChipSelect/ChipSelect.d.ts +24 -0
  61. package/dist/components/inputs/DatePicker/DatePicker.d.ts +39 -0
  62. package/dist/components/inputs/DatePicker/index.d.ts +2 -0
  63. package/dist/components/inputs/IconButton/IconButton.d.ts +14 -0
  64. package/dist/components/inputs/IconButton/index.d.ts +2 -0
  65. package/dist/components/inputs/MultiSelect/MultiSelect.d.ts +35 -0
  66. package/dist/components/inputs/MultiSelect/index.d.ts +2 -0
  67. package/dist/components/inputs/NumberInput/NumberInput.d.ts +23 -0
  68. package/dist/components/inputs/NumberInput/index.d.ts +2 -0
  69. package/dist/components/inputs/OTPInput/OTPInput.d.ts +18 -0
  70. package/dist/components/inputs/OTPInput/index.d.ts +2 -0
  71. package/dist/components/inputs/PhoneInput/PhoneInput.d.ts +35 -0
  72. package/dist/components/inputs/PhoneInput/index.d.ts +2 -0
  73. package/dist/components/inputs/Radio/Radio.d.ts +20 -0
  74. package/dist/components/inputs/Radio/index.d.ts +2 -0
  75. package/dist/components/inputs/Rating/Rating.d.ts +19 -0
  76. package/dist/components/inputs/Rating/index.d.ts +2 -0
  77. package/dist/components/inputs/SearchSelect/SearchSelect.d.ts +39 -0
  78. package/dist/components/inputs/Select/Select.d.ts +25 -0
  79. package/dist/components/inputs/Select/index.d.ts +2 -0
  80. package/dist/components/inputs/Slider/Slider.d.ts +20 -0
  81. package/dist/components/inputs/Slider/index.d.ts +2 -0
  82. package/dist/components/inputs/Switch/Switch.d.ts +14 -0
  83. package/dist/components/inputs/Switch/index.d.ts +2 -0
  84. package/dist/components/inputs/TagInput/TagInput.d.ts +17 -0
  85. package/dist/components/inputs/TextArea/TextArea.d.ts +18 -0
  86. package/dist/components/inputs/TextArea/index.d.ts +2 -0
  87. package/dist/components/inputs/TextField/TextField.d.ts +21 -0
  88. package/dist/components/inputs/TextField/index.d.ts +2 -0
  89. package/dist/components/layout/AppShell/AppShell.d.ts +12 -0
  90. package/dist/components/layout/AppShell/index.d.ts +2 -0
  91. package/dist/components/layout/Container/Container.d.ts +8 -0
  92. package/dist/components/layout/Container/index.d.ts +2 -0
  93. package/dist/components/layout/Divider/Divider.d.ts +10 -0
  94. package/dist/components/layout/Divider/index.d.ts +2 -0
  95. package/dist/components/layout/Grid/Grid.d.ts +13 -0
  96. package/dist/components/layout/Grid/index.d.ts +2 -0
  97. package/dist/components/layout/Navbar/Navbar.d.ts +19 -0
  98. package/dist/components/layout/Navbar/index.d.ts +2 -0
  99. package/dist/components/layout/Sidebar/Sidebar.d.ts +24 -0
  100. package/dist/components/layout/Sidebar/index.d.ts +2 -0
  101. package/dist/components/layout/Spacer/Spacer.d.ts +6 -0
  102. package/dist/components/layout/Spacer/index.d.ts +2 -0
  103. package/dist/components/layout/Stack/Stack.d.ts +14 -0
  104. package/dist/components/layout/Stack/index.d.ts +2 -0
  105. package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +13 -0
  106. package/dist/components/navigation/Breadcrumb/index.d.ts +2 -0
  107. package/dist/components/navigation/Pagination/Pagination.d.ts +10 -0
  108. package/dist/components/navigation/Pagination/index.d.ts +2 -0
  109. package/dist/components/navigation/StepIndicator/StepIndicator.d.ts +15 -0
  110. package/dist/components/navigation/StepIndicator/index.d.ts +2 -0
  111. package/dist/components/navigation/Tabs/Tabs.d.ts +25 -0
  112. package/dist/components/navigation/Tabs/index.d.ts +2 -0
  113. package/dist/components/overlay/CommandPalette/CommandPalette.d.ts +35 -0
  114. package/dist/components/overlay/CommandPalette/index.d.ts +2 -0
  115. package/dist/components/overlay/ConfirmDialog/ConfirmDialog.d.ts +20 -0
  116. package/dist/components/overlay/ContextMenu/ContextMenu.d.ts +19 -0
  117. package/dist/components/overlay/ContextMenu/index.d.ts +2 -0
  118. package/dist/components/overlay/Drawer/Drawer.d.ts +18 -0
  119. package/dist/components/overlay/Drawer/index.d.ts +2 -0
  120. package/dist/components/overlay/Modal/Modal.d.ts +17 -0
  121. package/dist/components/overlay/Modal/index.d.ts +2 -0
  122. package/dist/components/overlay/Popover/Popover.d.ts +15 -0
  123. package/dist/components/overlay/Popover/index.d.ts +2 -0
  124. package/dist/components/overlay/Tooltip/Tooltip.d.ts +13 -0
  125. package/dist/components/overlay/Tooltip/index.d.ts +2 -0
  126. package/dist/components/typography/Code/Code.d.ts +11 -0
  127. package/dist/components/typography/Code/index.d.ts +2 -0
  128. package/dist/components/typography/Heading/Heading.d.ts +12 -0
  129. package/dist/components/typography/Heading/index.d.ts +2 -0
  130. package/dist/components/typography/Kbd/Kbd.d.ts +8 -0
  131. package/dist/components/typography/Kbd/index.d.ts +2 -0
  132. package/dist/components/typography/Label/Label.d.ts +8 -0
  133. package/dist/components/typography/Label/index.d.ts +2 -0
  134. package/dist/components/typography/Link/Link.d.ts +9 -0
  135. package/dist/components/typography/Link/index.d.ts +2 -0
  136. package/dist/components/typography/Text/Text.d.ts +16 -0
  137. package/dist/components/typography/Text/index.d.ts +2 -0
  138. package/dist/hooks/useClickOutside.d.ts +2 -0
  139. package/dist/hooks/useClipboard.d.ts +11 -0
  140. package/dist/hooks/useDebounce.d.ts +1 -0
  141. package/dist/hooks/useIntersectionObserver.d.ts +5 -0
  142. package/dist/hooks/useKeyboard.d.ts +9 -0
  143. package/dist/hooks/useLocalStorage.d.ts +1 -0
  144. package/dist/hooks/useMediaQuery.d.ts +1 -0
  145. package/dist/hooks/useTheme.d.ts +4 -0
  146. package/dist/hooks/useToast.d.ts +16 -0
  147. package/dist/hooks/useWindowSize.d.ts +8 -0
  148. package/dist/index.cjs.js +3639 -0
  149. package/dist/index.cjs.js.map +1 -0
  150. package/dist/index.d.ts +1587 -0
  151. package/dist/index.esm.js +3512 -0
  152. package/dist/index.esm.js.map +1 -0
  153. package/dist/styles.css +1 -0
  154. package/dist/theme/ThemeProvider.d.ts +59 -0
  155. package/dist/utils/cn.d.ts +2 -0
  156. package/package.json +112 -0
@@ -0,0 +1,18 @@
1
+ import React, { Component, type ErrorInfo, type ReactNode } from 'react';
2
+ export interface ErrorBoundaryProps {
3
+ children: ReactNode;
4
+ fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode);
5
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
6
+ }
7
+ interface ErrorBoundaryState {
8
+ hasError: boolean;
9
+ error: Error | null;
10
+ }
11
+ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
12
+ constructor(props: ErrorBoundaryProps);
13
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
14
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
15
+ reset: () => void;
16
+ render(): string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
17
+ }
18
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ErrorBoundary } from './ErrorBoundary';
2
+ export type { ErrorBoundaryProps } from './ErrorBoundary';
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export interface FullScreenLoaderState {
3
+ visible: boolean;
4
+ text?: string;
5
+ icon?: React.ReactNode;
6
+ blur?: boolean;
7
+ }
8
+ export interface FullScreenLoaderControls {
9
+ show: (options?: Partial<Omit<FullScreenLoaderState, 'visible'>>) => void;
10
+ hide: () => void;
11
+ update: (options: Partial<Omit<FullScreenLoaderState, 'visible'>>) => void;
12
+ }
13
+ export interface FullScreenLoaderProviderProps {
14
+ children: React.ReactNode;
15
+ defaultText?: string;
16
+ defaultBlur?: boolean;
17
+ }
18
+ export declare function FullScreenLoaderProvider({ children, defaultText, defaultBlur, }: FullScreenLoaderProviderProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function useFullScreenLoader(): FullScreenLoaderControls;
20
+ export interface FullScreenLoaderProps {
21
+ visible?: boolean;
22
+ text?: string;
23
+ icon?: React.ReactNode;
24
+ blur?: boolean;
25
+ className?: string;
26
+ }
27
+ export declare function FullScreenLoader({ visible, text, icon, blur, className, }: FullScreenLoaderProps): React.ReactPortal | null;
@@ -0,0 +1,15 @@
1
+ export type ProgressVariant = 'primary' | 'success' | 'error' | 'warning' | 'info';
2
+ export type ProgressSize = 'xs' | 'sm' | 'md' | 'lg';
3
+ export interface ProgressBarProps {
4
+ value?: number;
5
+ max?: number;
6
+ variant?: ProgressVariant;
7
+ size?: ProgressSize;
8
+ label?: string;
9
+ showValue?: boolean;
10
+ striped?: boolean;
11
+ animated?: boolean;
12
+ indeterminate?: boolean;
13
+ className?: string;
14
+ }
15
+ export declare function ProgressBar({ value, max, variant, size, label, showValue, striped, animated, indeterminate, className, }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { ProgressBar } from './ProgressBar';
2
+ export type { ProgressBarProps, ProgressVariant, ProgressSize } from './ProgressBar';
@@ -0,0 +1,16 @@
1
+ export type SkeletonVariant = 'text' | 'rect' | 'circle';
2
+ export interface SkeletonProps {
3
+ variant?: SkeletonVariant;
4
+ width?: string | number;
5
+ height?: string | number;
6
+ lines?: number;
7
+ className?: string;
8
+ animated?: boolean;
9
+ }
10
+ export declare function Skeleton({ variant, width, height, lines, className, animated, }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
11
+ export interface SkeletonCardProps {
12
+ showAvatar?: boolean;
13
+ lines?: number;
14
+ className?: string;
15
+ }
16
+ export declare function SkeletonCard({ showAvatar, lines, className }: SkeletonCardProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Skeleton, SkeletonCard } from './Skeleton';
2
+ export type { SkeletonProps, SkeletonCardProps, SkeletonVariant } from './Skeleton';
@@ -0,0 +1,9 @@
1
+ export type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
+ export interface SpinnerProps {
3
+ size?: SpinnerSize;
4
+ color?: 'primary' | 'secondary' | 'white' | 'current';
5
+ label?: string;
6
+ overlay?: boolean;
7
+ className?: string;
8
+ }
9
+ export declare function Spinner({ size, color, label, overlay, className }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Spinner } from './Spinner';
2
+ export type { SpinnerProps, SpinnerSize } from './Spinner';
@@ -0,0 +1,7 @@
1
+ import { type Toast as ToastData, type ToastPosition } from '../../../hooks/useToast';
2
+ export interface ToastProviderProps {
3
+ toasts: ToastData[];
4
+ onDismiss: (id: string) => void;
5
+ position?: ToastPosition;
6
+ }
7
+ export declare function ToastProvider({ toasts, onDismiss, position }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { ToastProvider } from './Toast';
2
+ export type { ToastProviderProps } from './Toast';
@@ -0,0 +1,24 @@
1
+ import { type Accept } from 'react-dropzone';
2
+ export interface UploadedFile {
3
+ file: File;
4
+ id: string;
5
+ preview?: string;
6
+ progress?: number;
7
+ error?: string;
8
+ }
9
+ export interface FileUploadProps {
10
+ accept?: Accept;
11
+ maxFiles?: number;
12
+ maxSize?: number;
13
+ multiple?: boolean;
14
+ disabled?: boolean;
15
+ label?: string;
16
+ helperText?: string;
17
+ error?: string;
18
+ files?: UploadedFile[];
19
+ onFilesChange?: (files: UploadedFile[]) => void;
20
+ onFileRemove?: (id: string) => void;
21
+ showPreview?: boolean;
22
+ className?: string;
23
+ }
24
+ export declare function FileUpload({ accept, maxFiles, maxSize, multiple, disabled, label, helperText, error, files, onFilesChange, onFileRemove, showPreview, className, }: FileUploadProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { FileUpload } from './FileUpload';
2
+ export type { FileUploadProps, UploadedFile } from './FileUpload';
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface FormFieldProps {
3
+ label?: string;
4
+ helperText?: string;
5
+ error?: string;
6
+ required?: boolean;
7
+ disabled?: boolean;
8
+ htmlFor?: string;
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ }
12
+ export declare function FormField({ label, helperText, error, required, disabled, htmlFor, children, className, }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { FormField } from './FormField';
2
+ export type { FormFieldProps } from './FormField';
@@ -0,0 +1,157 @@
1
+ import type { RegisterOptions } from 'react-hook-form';
2
+ type ValidateFn = (value: unknown) => boolean | string;
3
+ export interface CompiledRules {
4
+ required?: RegisterOptions['required'];
5
+ minLength?: RegisterOptions['minLength'];
6
+ maxLength?: RegisterOptions['maxLength'];
7
+ min?: RegisterOptions['min'];
8
+ max?: RegisterOptions['max'];
9
+ pattern?: RegisterOptions['pattern'];
10
+ validate?: Record<string, ValidateFn>;
11
+ }
12
+ declare abstract class BaseValidator<T extends BaseValidator<T>> {
13
+ protected _required: string | false;
14
+ protected _validates: Record<string, ValidateFn>;
15
+ required(message?: string): T;
16
+ custom(name: string, fn: ValidateFn, message?: string): T;
17
+ abstract compile(): CompiledRules;
18
+ }
19
+ export declare class StringValidator extends BaseValidator<StringValidator> {
20
+ private _minLength?;
21
+ private _maxLength?;
22
+ private _pattern?;
23
+ private _mustBeString;
24
+ mustBe(_type: 'string'): StringValidator;
25
+ minLength(len: number, message?: string): StringValidator;
26
+ maxLength(len: number, message?: string): StringValidator;
27
+ lengthBetween(min: number, max: number, message?: string): StringValidator;
28
+ length(exact: number, message?: string): StringValidator;
29
+ shouldMatch(pattern: RegExp, message?: string): StringValidator;
30
+ shouldBeIn(list: string[], message?: string): StringValidator;
31
+ notEmpty(message?: string): StringValidator;
32
+ noSpaces(message?: string): StringValidator;
33
+ alphanumeric(message?: string): StringValidator;
34
+ startsWith(prefix: string, message?: string): StringValidator;
35
+ endsWith(suffix: string, message?: string): StringValidator;
36
+ compile(): CompiledRules;
37
+ }
38
+ export declare class NumberValidator extends BaseValidator<NumberValidator> {
39
+ private _min?;
40
+ private _max?;
41
+ private _maxLength?;
42
+ private _mustBeNumber;
43
+ mustBe(_type: 'number'): NumberValidator;
44
+ min(value: number, message?: string): NumberValidator;
45
+ max(value: number, message?: string): NumberValidator;
46
+ between(min: number, max: number, message?: string): NumberValidator;
47
+ length(digits: number, message?: string): NumberValidator;
48
+ positive(message?: string): NumberValidator;
49
+ integer(message?: string): NumberValidator;
50
+ nonZero(message?: string): NumberValidator;
51
+ negative(message?: string): NumberValidator;
52
+ multipleOf(factor: number, message?: string): NumberValidator;
53
+ compile(): CompiledRules;
54
+ }
55
+ export declare class EmailValidator extends BaseValidator<EmailValidator> {
56
+ private static EMAIL_RE;
57
+ mustBe(_type: 'string'): EmailValidator;
58
+ shouldMatch(pattern: RegExp, message?: string): EmailValidator;
59
+ domain(allowedDomains: string[], message?: string): EmailValidator;
60
+ blockedDomains(blocked: string[], message?: string): EmailValidator;
61
+ compile(): CompiledRules;
62
+ }
63
+ export declare class UrlValidator extends BaseValidator<UrlValidator> {
64
+ private static URL_RE;
65
+ mustBe(_type: 'string'): UrlValidator;
66
+ httpsOnly(message?: string): UrlValidator;
67
+ allowedDomains(domains: string[], message?: string): UrlValidator;
68
+ noTrailingSlash(message?: string): UrlValidator;
69
+ compile(): CompiledRules;
70
+ }
71
+ export declare class TelValidator extends BaseValidator<TelValidator> {
72
+ length(digits: number, message?: string): TelValidator;
73
+ minLength(digits: number, message?: string): TelValidator;
74
+ maxLength(digits: number, message?: string): TelValidator;
75
+ shouldMatch(pattern: RegExp, message?: string): TelValidator;
76
+ compile(): CompiledRules;
77
+ }
78
+ export declare class BooleanValidator extends BaseValidator<BooleanValidator> {
79
+ mustBeTrue(message?: string): BooleanValidator;
80
+ compile(): CompiledRules;
81
+ }
82
+ export declare class ArrayValidator extends BaseValidator<ArrayValidator> {
83
+ private _min?;
84
+ private _max?;
85
+ minItems(count: number, message?: string): ArrayValidator;
86
+ maxItems(count: number, message?: string): ArrayValidator;
87
+ exactItems(count: number, message?: string): ArrayValidator;
88
+ noEmpty(message?: string): ArrayValidator;
89
+ shouldBeIn(list: string[], message?: string): ArrayValidator;
90
+ compile(): CompiledRules;
91
+ }
92
+ export declare class PasswordValidator extends BaseValidator<PasswordValidator> {
93
+ private _minLength?;
94
+ private _maxLength?;
95
+ minLength(len: number, message?: string): PasswordValidator;
96
+ maxLength(len: number, message?: string): PasswordValidator;
97
+ hasUppercase(message?: string): PasswordValidator;
98
+ hasLowercase(message?: string): PasswordValidator;
99
+ hasDigit(message?: string): PasswordValidator;
100
+ hasSpecialChar(message?: string): PasswordValidator;
101
+ noSpaces(message?: string): PasswordValidator;
102
+ /** Confirm this field matches another field value — pass a getter for the other field */
103
+ confirmMatch(getOtherValue: () => unknown, message?: string): PasswordValidator;
104
+ /** Shorthand: minLength(8) + uppercase + lowercase + digit + special char */
105
+ strong(message?: string): PasswordValidator;
106
+ compile(): CompiledRules;
107
+ }
108
+ export declare class DateValidator extends BaseValidator<DateValidator> {
109
+ private _toDate;
110
+ validDate(message?: string): DateValidator;
111
+ minDate(date: Date, message?: string): DateValidator;
112
+ maxDate(date: Date, message?: string): DateValidator;
113
+ notInPast(message?: string): DateValidator;
114
+ notInFuture(message?: string): DateValidator;
115
+ between(minDate: Date, maxDate: Date, message?: string): DateValidator;
116
+ compile(): CompiledRules;
117
+ }
118
+ export declare class SelectValidator extends BaseValidator<SelectValidator> {
119
+ shouldBeIn(list: string[], message?: string): SelectValidator;
120
+ notEmpty(message?: string): SelectValidator;
121
+ compile(): CompiledRules;
122
+ }
123
+ export declare class FileValidator extends BaseValidator<FileValidator> {
124
+ /** Max file size in bytes */
125
+ maxSize(bytes: number, message?: string): FileValidator;
126
+ allowedTypes(mimeTypes: string[], message?: string): FileValidator;
127
+ allowedExtensions(exts: string[], message?: string): FileValidator;
128
+ maxFiles(count: number, message?: string): FileValidator;
129
+ minFiles(count: number, message?: string): FileValidator;
130
+ compile(): CompiledRules;
131
+ }
132
+ export declare const v: {
133
+ /** text, textarea fields — lengthBetween, shouldMatch, shouldBeIn, noSpaces, alphanumeric */
134
+ string: () => StringValidator;
135
+ /** number fields — between, integer, multipleOf, nonZero, length */
136
+ number: () => NumberValidator;
137
+ /** password fields — strong(), hasUppercase, hasDigit, hasSpecialChar, confirmMatch */
138
+ password: () => PasswordValidator;
139
+ /** email fields — auto email regex, domain whitelist/blacklist */
140
+ email: () => EmailValidator;
141
+ /** url fields — httpsOnly, allowedDomains, noTrailingSlash */
142
+ url: () => UrlValidator;
143
+ /** tel/phone fields — length, minLength, maxLength, shouldMatch */
144
+ tel: () => TelValidator;
145
+ /** DatePicker fields — minDate, maxDate, notInPast, notInFuture */
146
+ date: () => DateValidator;
147
+ /** select/radio fields — shouldBeIn, notEmpty */
148
+ select: () => SelectValidator;
149
+ /** checkbox/switch fields — mustBeTrue */
150
+ boolean: () => BooleanValidator;
151
+ /** multiselect/chipselect/taginput — minItems, maxItems, exactItems, shouldBeIn, noEmpty */
152
+ array: () => ArrayValidator;
153
+ /** FileUpload fields — maxSize, allowedTypes, allowedExtensions, maxFiles, minFiles */
154
+ file: () => FileValidator;
155
+ };
156
+ export type AnyValidator = StringValidator | NumberValidator | PasswordValidator | EmailValidator | UrlValidator | TelValidator | DateValidator | SelectValidator | BooleanValidator | ArrayValidator | FileValidator;
157
+ export {};
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { type SubmitHandler } from 'react-hook-form';
3
+ import type { AnyValidator } from './FormValidator';
4
+ export type JSONFieldType = 'text' | 'email' | 'password' | 'number' | 'url' | 'tel' | 'textarea' | 'select' | 'multiselect' | 'searchselect' | 'multisearchselect' | 'chipselect' | 'taginput' | 'checkbox' | 'switch' | 'radio' | 'hidden';
5
+ export interface JSONFormOption {
6
+ value: string;
7
+ label: string;
8
+ disabled?: boolean;
9
+ }
10
+ export interface JSONFormField {
11
+ name: string;
12
+ type: JSONFieldType;
13
+ label?: string;
14
+ placeholder?: string;
15
+ helperText?: string;
16
+ required?: boolean;
17
+ disabled?: boolean;
18
+ defaultValue?: unknown;
19
+ options?: JSONFormOption[];
20
+ prefixIcon?: React.ReactNode;
21
+ prefixImage?: string;
22
+ prefixText?: string;
23
+ suffixIcon?: React.ReactNode;
24
+ suffixImage?: string;
25
+ suffixText?: string;
26
+ validation?: {
27
+ min?: number;
28
+ max?: number;
29
+ minLength?: number;
30
+ maxLength?: number;
31
+ pattern?: RegExp;
32
+ validate?: (value: unknown) => boolean | string;
33
+ };
34
+ /** Fluent validator built with v.string(), v.number(), v.email() etc. Takes precedence over validation object */
35
+ validator?: AnyValidator;
36
+ colSpan?: 1 | 2 | 3;
37
+ rows?: number;
38
+ autoResize?: boolean;
39
+ showCharCount?: boolean;
40
+ }
41
+ export interface JSONFormProps {
42
+ schema: JSONFormField[];
43
+ defaultValues?: Record<string, unknown>;
44
+ onSubmit: SubmitHandler<Record<string, unknown>>;
45
+ onCancel?: () => void;
46
+ submitLabel?: string;
47
+ cancelLabel?: string;
48
+ loading?: boolean;
49
+ columns?: 1 | 2 | 3;
50
+ className?: string;
51
+ actionsClassName?: string;
52
+ }
53
+ export declare function JSONForm({ schema, defaultValues, onSubmit, onCancel, submitLabel, cancelLabel, loading, columns, className, actionsClassName, }: JSONFormProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { JSONForm } from './JSONForm';
2
+ export type { JSONFormProps, JSONFormField, JSONFormOption, JSONFieldType } from './JSONForm';
3
+ export { v } from './FormValidator';
4
+ export type { AnyValidator, StringValidator, NumberValidator, PasswordValidator, EmailValidator, UrlValidator, TelValidator, DateValidator, SelectValidator, BooleanValidator, ArrayValidator, FileValidator, CompiledRules, } from './FormValidator';
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "link" | "success" | "primary" | "secondary" | "outline" | "ghost" | "danger" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
6
+ fullWidth?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
9
+ loading?: boolean;
10
+ leftIcon?: React.ReactNode;
11
+ rightIcon?: React.ReactNode;
12
+ asChild?: boolean;
13
+ }
14
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
15
+ export { buttonVariants };
@@ -0,0 +1,2 @@
1
+ export { Button, buttonVariants } from './Button';
2
+ export type { ButtonProps } from './Button';
@@ -0,0 +1,14 @@
1
+ export interface CheckboxProps {
2
+ label?: string;
3
+ description?: string;
4
+ checked?: boolean | 'indeterminate';
5
+ defaultChecked?: boolean;
6
+ onCheckedChange?: (checked: boolean | 'indeterminate') => void;
7
+ disabled?: boolean;
8
+ required?: boolean;
9
+ error?: string;
10
+ size?: 'sm' | 'md' | 'lg';
11
+ className?: string;
12
+ id?: string;
13
+ }
14
+ export declare function Checkbox({ label, description, checked, defaultChecked, onCheckedChange, disabled, required, error, size, className, id: externalId, }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Checkbox } from './Checkbox';
2
+ export type { CheckboxProps } from './Checkbox';
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface ChipSelectOption {
3
+ value: string;
4
+ label: string;
5
+ icon?: React.ReactNode;
6
+ disabled?: boolean;
7
+ }
8
+ export type ChipSelectSize = 'sm' | 'md' | 'lg';
9
+ export interface ChipSelectProps {
10
+ options: ChipSelectOption[];
11
+ value?: string[];
12
+ onChange?: (value: string[]) => void;
13
+ multiple?: boolean;
14
+ maxSelect?: number;
15
+ label?: string;
16
+ helperText?: string;
17
+ error?: string;
18
+ disabled?: boolean;
19
+ required?: boolean;
20
+ size?: ChipSelectSize;
21
+ className?: string;
22
+ fullWidth?: boolean;
23
+ }
24
+ export declare function ChipSelect({ options, value, onChange, multiple, maxSelect, label, helperText, error, disabled, required, size, className, fullWidth, }: ChipSelectProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { DateRange } from 'react-day-picker';
2
+ export type DatePickerMode = 'single' | 'range';
3
+ export type DatePickerSize = 'sm' | 'md' | 'lg';
4
+ export interface DatePickerSingleProps {
5
+ mode?: 'single';
6
+ value?: Date;
7
+ defaultValue?: Date;
8
+ onChange?: (date: Date | undefined) => void;
9
+ }
10
+ export interface DatePickerRangeProps {
11
+ mode: 'range';
12
+ value?: DateRange;
13
+ defaultValue?: DateRange;
14
+ onChange?: (range: DateRange | undefined) => void;
15
+ }
16
+ type DatePickerBaseProps = {
17
+ label?: string;
18
+ helperText?: string;
19
+ error?: string;
20
+ placeholder?: string;
21
+ dateFormat?: string;
22
+ disabled?: boolean;
23
+ required?: boolean;
24
+ clearable?: boolean;
25
+ size?: DatePickerSize;
26
+ fullWidth?: boolean;
27
+ minDate?: Date;
28
+ maxDate?: Date;
29
+ disabledDates?: Date[];
30
+ /** How many years before current year to show in the year dropdown (default: 10) */
31
+ yearRangeBefore?: number;
32
+ /** How many years after current year to show in the year dropdown (default: 5) */
33
+ yearRangeAfter?: number;
34
+ className?: string;
35
+ containerClassName?: string;
36
+ };
37
+ export type DatePickerProps = DatePickerBaseProps & (DatePickerSingleProps | DatePickerRangeProps);
38
+ export declare function DatePicker(props: DatePickerProps): import("react/jsx-runtime").JSX.Element;
39
+ export {};
@@ -0,0 +1,2 @@
1
+ export { DatePicker } from './DatePicker';
2
+ export type { DatePickerProps, DatePickerMode, DatePickerSize, DatePickerSingleProps, DatePickerRangeProps } from './DatePicker';
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const iconButtonVariants: (props?: ({
4
+ variant?: "primary" | "secondary" | "outline" | "ghost" | "danger" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
6
+ rounded?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {
9
+ icon: React.ReactNode;
10
+ loading?: boolean;
11
+ 'aria-label': string;
12
+ }
13
+ export declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
14
+ export {};
@@ -0,0 +1,2 @@
1
+ export { IconButton } from './IconButton';
2
+ export type { IconButtonProps } from './IconButton';
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ export interface MultiSelectOption {
3
+ value: string;
4
+ label: string;
5
+ description?: string;
6
+ icon?: React.ReactNode;
7
+ disabled?: boolean;
8
+ }
9
+ export interface MultiSelectGroup {
10
+ label: string;
11
+ options: MultiSelectOption[];
12
+ }
13
+ export interface MultiSelectProps {
14
+ options?: MultiSelectOption[];
15
+ groups?: MultiSelectGroup[];
16
+ value?: string[];
17
+ defaultValue?: string[];
18
+ onChange?: (value: string[]) => void;
19
+ placeholder?: string;
20
+ searchPlaceholder?: string;
21
+ label?: string;
22
+ helperText?: string;
23
+ error?: string;
24
+ disabled?: boolean;
25
+ required?: boolean;
26
+ searchable?: boolean;
27
+ clearable?: boolean;
28
+ maxSelected?: number;
29
+ maxDisplayed?: number;
30
+ size?: 'sm' | 'md' | 'lg';
31
+ fullWidth?: boolean;
32
+ className?: string;
33
+ containerClassName?: string;
34
+ }
35
+ export declare function MultiSelect({ options, groups, value: controlledValue, defaultValue, onChange, placeholder, searchPlaceholder, label, helperText, error, disabled, required, searchable, clearable, maxSelected, maxDisplayed, size, fullWidth, className, containerClassName, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { MultiSelect } from './MultiSelect';
2
+ export type { MultiSelectProps, MultiSelectOption, MultiSelectGroup } from './MultiSelect';
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ export type NumberInputSize = 'sm' | 'md' | 'lg';
3
+ export interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'onChange' | 'type'> {
4
+ value?: number;
5
+ defaultValue?: number;
6
+ onChange?: (value: number | undefined) => void;
7
+ min?: number;
8
+ max?: number;
9
+ step?: number;
10
+ precision?: number;
11
+ prefix?: string;
12
+ suffix?: string;
13
+ label?: string;
14
+ helperText?: string;
15
+ error?: string;
16
+ size?: NumberInputSize;
17
+ fullWidth?: boolean;
18
+ hideControls?: boolean;
19
+ showMaxLength?: boolean;
20
+ formatValue?: (value: number) => string;
21
+ containerClassName?: string;
22
+ }
23
+ export declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,2 @@
1
+ export { NumberInput } from './NumberInput';
2
+ export type { NumberInputProps, NumberInputSize } from './NumberInput';
@@ -0,0 +1,18 @@
1
+ export type OTPInputSize = 'sm' | 'md' | 'lg';
2
+ export interface OTPInputProps {
3
+ length?: number;
4
+ value?: string;
5
+ onChange?: (value: string) => void;
6
+ onComplete?: (value: string) => void;
7
+ size?: OTPInputSize;
8
+ mask?: boolean;
9
+ disabled?: boolean;
10
+ error?: string;
11
+ label?: string;
12
+ helperText?: string;
13
+ separator?: boolean;
14
+ separatorAt?: number[];
15
+ autoFocus?: boolean;
16
+ className?: string;
17
+ }
18
+ export declare function OTPInput({ length, value: controlledValue, onChange, onComplete, size, mask, disabled, error, label, helperText, separator, separatorAt, autoFocus, className, }: OTPInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { OTPInput } from './OTPInput';
2
+ export type { OTPInputProps, OTPInputSize } from './OTPInput';
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ export interface CountryCode {
3
+ code: string;
4
+ dialCode: string;
5
+ flag: string;
6
+ name: string;
7
+ }
8
+ export declare const DEFAULT_COUNTRY_CODES: CountryCode[];
9
+ export type PhoneInputSize = 'sm' | 'md' | 'lg';
10
+ export interface PhoneInputValue {
11
+ countryCode: CountryCode;
12
+ number: string;
13
+ /** Full value e.g. "+91 9876543210" */
14
+ full: string;
15
+ }
16
+ export interface PhoneInputProps {
17
+ value?: PhoneInputValue;
18
+ defaultCountry?: string;
19
+ onChange?: (value: PhoneInputValue) => void;
20
+ label?: string;
21
+ helperText?: string;
22
+ error?: string;
23
+ placeholder?: string;
24
+ disabled?: boolean;
25
+ required?: boolean;
26
+ size?: PhoneInputSize;
27
+ fullWidth?: boolean;
28
+ maxLength?: number;
29
+ showMaxLength?: boolean;
30
+ countryCodes?: CountryCode[];
31
+ className?: string;
32
+ containerClassName?: string;
33
+ id?: string;
34
+ }
35
+ export declare const PhoneInput: React.ForwardRefExoticComponent<PhoneInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,2 @@
1
+ export { PhoneInput, DEFAULT_COUNTRY_CODES } from './PhoneInput';
2
+ export type { PhoneInputProps, PhoneInputSize, PhoneInputValue, CountryCode } from './PhoneInput';