@classytic/fluid 0.1.1
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 +62 -0
- package/dist/dashboard.d.ts +349 -0
- package/dist/dashboard.js +992 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/index.d.ts +2046 -0
- package/dist/index.js +6968 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +25 -0
- package/dist/layout.js +62 -0
- package/dist/layout.js.map +1 -0
- package/dist/utils-Cbsgs0XP.d.ts +5 -0
- package/package.json +111 -0
- package/styles.css +12 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2046 @@
|
|
|
1
|
+
export { c as cn } from './utils-Cbsgs0XP.js';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import React__default, { RefObject, ReactNode, ElementType, ComponentType, InputHTMLAttributes, KeyboardEvent, ChangeEvent, TextareaHTMLAttributes } from 'react';
|
|
4
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
|
+
import { ColumnDef } from '@tanstack/react-table';
|
|
6
|
+
import { LucideIcon, LucideProps } from 'lucide-react';
|
|
7
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
8
|
+
import { VariantProps } from 'class-variance-authority';
|
|
9
|
+
import { FieldValues, Control, FieldPath, FieldError, Path } from 'react-hook-form';
|
|
10
|
+
import 'clsx';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Filter utilities for building URL parameters
|
|
14
|
+
* Simplified approach since backend handles all operator parsing
|
|
15
|
+
*/
|
|
16
|
+
interface FilterConfig {
|
|
17
|
+
paramName: string;
|
|
18
|
+
type?: "array" | "string" | "number" | "boolean";
|
|
19
|
+
defaultValue?: unknown;
|
|
20
|
+
}
|
|
21
|
+
interface SearchConfig {
|
|
22
|
+
basePath: string;
|
|
23
|
+
searchFields?: Record<string, string>;
|
|
24
|
+
filterFields?: Record<string, FilterConfig>;
|
|
25
|
+
defaultSearchType?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build URL parameters from filters object
|
|
29
|
+
*/
|
|
30
|
+
declare function buildFilterParams(filters: Record<string, unknown>, filterConfig: Record<string, FilterConfig>): URLSearchParams;
|
|
31
|
+
/**
|
|
32
|
+
* Build search parameters from search state
|
|
33
|
+
*/
|
|
34
|
+
declare function buildSearchParams(searchType: string, searchValue: string, searchFields: Record<string, string>): URLSearchParams;
|
|
35
|
+
/**
|
|
36
|
+
* Build listing status parameters (inventory-specific)
|
|
37
|
+
*/
|
|
38
|
+
declare function buildListingStatusParams(listingStatus: Record<string, boolean | undefined>): URLSearchParams;
|
|
39
|
+
/**
|
|
40
|
+
* Clear specific parameter types from URLSearchParams
|
|
41
|
+
*/
|
|
42
|
+
declare function clearSearchAndFilterParams(params: URLSearchParams, config: SearchConfig): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get API-ready parameters from URL
|
|
45
|
+
*/
|
|
46
|
+
declare function getApiParams(searchParams: URLSearchParams): Record<string, string>;
|
|
47
|
+
|
|
48
|
+
declare function useIsMobile(): boolean;
|
|
49
|
+
|
|
50
|
+
interface UseBaseSearchConfig {
|
|
51
|
+
basePath: string;
|
|
52
|
+
searchFields?: Record<string, string>;
|
|
53
|
+
filterFields?: Record<string, FilterConfig>;
|
|
54
|
+
defaultSearchType?: string;
|
|
55
|
+
}
|
|
56
|
+
interface UseBaseSearchReturn {
|
|
57
|
+
searchType: string;
|
|
58
|
+
setSearchType: (type: string) => void;
|
|
59
|
+
searchValue: string;
|
|
60
|
+
setSearchValue: (value: string) => void;
|
|
61
|
+
filters: Record<string, unknown>;
|
|
62
|
+
setFilters: React.Dispatch<React.SetStateAction<Record<string, unknown>>>;
|
|
63
|
+
updateFilter: (key: string, value: unknown) => void;
|
|
64
|
+
handleSearch: () => void;
|
|
65
|
+
clearSearch: () => void;
|
|
66
|
+
getSearchParams: () => Record<string, string>;
|
|
67
|
+
hasActiveSearch: boolean;
|
|
68
|
+
hasActiveFilters: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Base search hook that provides common search functionality
|
|
72
|
+
* Can be extended by specific search hooks for different entities
|
|
73
|
+
* Supports bracket syntax: field[operator]=value
|
|
74
|
+
*/
|
|
75
|
+
declare function useBaseSearch(config: UseBaseSearchConfig): UseBaseSearchReturn;
|
|
76
|
+
|
|
77
|
+
declare function useMediaQuery(query: string, defaultValue?: boolean): boolean;
|
|
78
|
+
|
|
79
|
+
declare const useScrollDetection: (ref: RefObject<HTMLDivElement | null>, delay?: number) => {
|
|
80
|
+
checkScroll: () => () => void;
|
|
81
|
+
canScrollLeft: boolean;
|
|
82
|
+
canScrollRight: boolean;
|
|
83
|
+
isScrollable: boolean;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
interface AccordionSectionProps {
|
|
87
|
+
title: string;
|
|
88
|
+
icon?: ReactNode;
|
|
89
|
+
children: ReactNode;
|
|
90
|
+
defaultOpen?: boolean;
|
|
91
|
+
className?: string;
|
|
92
|
+
badge?: ReactNode;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* AccordionSection - Single collapsible section with smooth animation
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```tsx
|
|
99
|
+
* <AccordionSection title="Settings" icon={<Settings className="h-4 w-4" />}>
|
|
100
|
+
* <div>Content here</div>
|
|
101
|
+
* </AccordionSection>
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
declare const AccordionSection: React$1.NamedExoticComponent<AccordionSectionProps>;
|
|
105
|
+
interface FaqItem {
|
|
106
|
+
id: string;
|
|
107
|
+
question: string;
|
|
108
|
+
answer: ReactNode;
|
|
109
|
+
}
|
|
110
|
+
interface FaqAccordionProps {
|
|
111
|
+
items: FaqItem[];
|
|
112
|
+
defaultOpen?: string;
|
|
113
|
+
className?: string;
|
|
114
|
+
/** Allow multiple items to be open at once */
|
|
115
|
+
openMultiple?: boolean;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* FaqAccordion - FAQ-style accordion where only one item can be open by default
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```tsx
|
|
122
|
+
* <FaqAccordion
|
|
123
|
+
* items={[
|
|
124
|
+
* { id: "1", question: "What is this?", answer: "A FAQ accordion" },
|
|
125
|
+
* { id: "2", question: "How does it work?", answer: "Click to expand" },
|
|
126
|
+
* ]}
|
|
127
|
+
* />
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
declare const FaqAccordion: React$1.NamedExoticComponent<FaqAccordionProps>;
|
|
131
|
+
|
|
132
|
+
interface DisplayHeadingProps {
|
|
133
|
+
children: ReactNode;
|
|
134
|
+
size?: "lg" | "xl" | "2xl";
|
|
135
|
+
align?: "left" | "center" | "right";
|
|
136
|
+
className?: string;
|
|
137
|
+
highlightText?: string;
|
|
138
|
+
highlightColor?: "primary" | "secondary" | "accent" | "gradient";
|
|
139
|
+
as?: ElementType;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* DisplayHeading - Reusable component for hero/display headings
|
|
143
|
+
* Provides consistent typography across the platform
|
|
144
|
+
*/
|
|
145
|
+
declare function DisplayHeading({ children, size, align, className, highlightText, highlightColor, as: Component, ...props }: DisplayHeadingProps): react_jsx_runtime.JSX.Element;
|
|
146
|
+
|
|
147
|
+
declare const FacebookIcon: () => react_jsx_runtime.JSX.Element;
|
|
148
|
+
declare const GoogleIcon: () => react_jsx_runtime.JSX.Element;
|
|
149
|
+
declare const TwitterXIcon: () => react_jsx_runtime.JSX.Element;
|
|
150
|
+
declare const InstagramIcon: () => react_jsx_runtime.JSX.Element;
|
|
151
|
+
declare const WhatsAppIcon: () => react_jsx_runtime.JSX.Element;
|
|
152
|
+
|
|
153
|
+
interface ThumbnailProps {
|
|
154
|
+
src?: string;
|
|
155
|
+
alt?: string;
|
|
156
|
+
aspect?: "square" | "video" | "portrait";
|
|
157
|
+
size?: "small" | "medium" | "large" | "full";
|
|
158
|
+
className?: string;
|
|
159
|
+
fallback?: string;
|
|
160
|
+
onClick?: () => void;
|
|
161
|
+
}
|
|
162
|
+
declare function Thumbnail({ src, alt, aspect, size, className, fallback, onClick, }: ThumbnailProps): react_jsx_runtime.JSX.Element;
|
|
163
|
+
|
|
164
|
+
interface ApiPaginationData {
|
|
165
|
+
total: number;
|
|
166
|
+
pages: number;
|
|
167
|
+
page: number;
|
|
168
|
+
limit: number;
|
|
169
|
+
hasNext: boolean;
|
|
170
|
+
hasPrev: boolean;
|
|
171
|
+
}
|
|
172
|
+
interface ApiPaginationProps extends Partial<ApiPaginationData> {
|
|
173
|
+
onPageChange?: (page: number) => void;
|
|
174
|
+
className?: string;
|
|
175
|
+
showInfo?: boolean;
|
|
176
|
+
infoPosition?: "left" | "right";
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* ApiPagination - A reusable pagination component for API-driven data
|
|
180
|
+
*/
|
|
181
|
+
declare function ApiPagination({ total, limit, pages, page, hasNext, hasPrev, onPageChange, className, showInfo, infoPosition, }: ApiPaginationProps): react_jsx_runtime.JSX.Element;
|
|
182
|
+
|
|
183
|
+
interface CardWrapperProps {
|
|
184
|
+
title?: ReactNode;
|
|
185
|
+
description?: ReactNode;
|
|
186
|
+
children?: ReactNode;
|
|
187
|
+
footer?: ReactNode;
|
|
188
|
+
className?: string;
|
|
189
|
+
headerClassName?: string;
|
|
190
|
+
contentClassName?: string;
|
|
191
|
+
footerClassName?: string;
|
|
192
|
+
variant?: "default" | "outline" | "ghost" | "elevated" | "primary" | "secondary" | "destructive" | "success" | "warning";
|
|
193
|
+
size?: "sm" | "default" | "lg" | "xl";
|
|
194
|
+
hideHeader?: boolean;
|
|
195
|
+
}
|
|
196
|
+
declare function CardWrapper({ title, description, children, footer, className, headerClassName, contentClassName, footerClassName, variant, size, hideHeader, ...props }: CardWrapperProps): react_jsx_runtime.JSX.Element;
|
|
197
|
+
interface DataCardProps extends Omit<CardWrapperProps, "children"> {
|
|
198
|
+
data: Array<{
|
|
199
|
+
label: string;
|
|
200
|
+
value: ReactNode;
|
|
201
|
+
color?: string;
|
|
202
|
+
}>;
|
|
203
|
+
}
|
|
204
|
+
declare function DataCard({ title, data, className, ...props }: DataCardProps): react_jsx_runtime.JSX.Element;
|
|
205
|
+
interface LoadingCardProps extends Omit<CardWrapperProps, "children"> {
|
|
206
|
+
}
|
|
207
|
+
declare function LoadingCard({ title, description, className, ...props }: LoadingCardProps): react_jsx_runtime.JSX.Element;
|
|
208
|
+
interface StatsCardProps extends Omit<CardWrapperProps, "children" | "variant"> {
|
|
209
|
+
value: ReactNode;
|
|
210
|
+
icon?: ReactNode;
|
|
211
|
+
trend?: {
|
|
212
|
+
type: "up" | "down" | "neutral";
|
|
213
|
+
value: string;
|
|
214
|
+
};
|
|
215
|
+
/** Visual variant for the card and icon styling */
|
|
216
|
+
statsVariant?: "default" | "success" | "warning" | "danger" | "info";
|
|
217
|
+
/** Additional class for the icon wrapper */
|
|
218
|
+
iconClassName?: string;
|
|
219
|
+
}
|
|
220
|
+
declare function StatsCard({ title, value, description, icon, trend, className, statsVariant, iconClassName, ...props }: StatsCardProps): react_jsx_runtime.JSX.Element;
|
|
221
|
+
interface DraggableCardProps extends Omit<CardWrapperProps, "children"> {
|
|
222
|
+
subtitle?: ReactNode;
|
|
223
|
+
badges?: ReactNode;
|
|
224
|
+
actions?: ReactNode;
|
|
225
|
+
details?: ReactNode;
|
|
226
|
+
dragHandleProps?: any;
|
|
227
|
+
isDragging?: boolean;
|
|
228
|
+
isHidden?: boolean;
|
|
229
|
+
children?: ReactNode;
|
|
230
|
+
}
|
|
231
|
+
declare function DraggableCard({ title, subtitle, badges, actions, details, dragHandleProps, className, isDragging, isHidden, children, ...props }: DraggableCardProps): react_jsx_runtime.JSX.Element;
|
|
232
|
+
|
|
233
|
+
interface SkeletonTableProps {
|
|
234
|
+
/** Number of skeleton rows */
|
|
235
|
+
rows?: number;
|
|
236
|
+
/** Number of skeleton columns */
|
|
237
|
+
columns?: number;
|
|
238
|
+
/** Optional column headers - if provided, shows text instead of skeleton */
|
|
239
|
+
headers?: string[];
|
|
240
|
+
/** Additional CSS classes */
|
|
241
|
+
className?: string;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* SkeletonTable - Loading skeleton for tables
|
|
245
|
+
* Matches DataTable structure for consistent loading states
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```tsx
|
|
249
|
+
* <SkeletonTable rows={5} columns={4} />
|
|
250
|
+
* <SkeletonTable headers={["Name", "Email", "Status"]} rows={10} />
|
|
251
|
+
* ```
|
|
252
|
+
*/
|
|
253
|
+
declare function SkeletonTable({ rows, columns, headers, className, }: SkeletonTableProps): react_jsx_runtime.JSX.Element;
|
|
254
|
+
interface SkeletonListProps {
|
|
255
|
+
/** Number of skeleton items */
|
|
256
|
+
items?: number;
|
|
257
|
+
/** Additional CSS classes */
|
|
258
|
+
className?: string;
|
|
259
|
+
/** Show avatar placeholder */
|
|
260
|
+
showAvatar?: boolean;
|
|
261
|
+
/** Avatar shape */
|
|
262
|
+
avatarShape?: "circle" | "square";
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* SkeletonList - Compact skeleton for lists with avatars
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```tsx
|
|
269
|
+
* <SkeletonList items={5} />
|
|
270
|
+
* <SkeletonList items={3} showAvatar={false} />
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
declare function SkeletonList({ items, className, showAvatar, avatarShape, }: SkeletonListProps): react_jsx_runtime.JSX.Element;
|
|
274
|
+
interface SkeletonCardProps {
|
|
275
|
+
/** Additional CSS classes */
|
|
276
|
+
className?: string;
|
|
277
|
+
/** Show action buttons placeholder */
|
|
278
|
+
showActions?: boolean;
|
|
279
|
+
/** Number of text lines */
|
|
280
|
+
lines?: number;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* SkeletonCard - Card skeleton for grid layouts
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```tsx
|
|
287
|
+
* <SkeletonCard />
|
|
288
|
+
* <SkeletonCard showActions={false} lines={2} />
|
|
289
|
+
* ```
|
|
290
|
+
*/
|
|
291
|
+
declare function SkeletonCard({ className, showActions, lines, }: SkeletonCardProps): react_jsx_runtime.JSX.Element;
|
|
292
|
+
interface SkeletonGridProps {
|
|
293
|
+
/** Number of skeleton cards */
|
|
294
|
+
cards?: number;
|
|
295
|
+
/** Grid columns configuration */
|
|
296
|
+
columns?: 1 | 2 | 3 | 4;
|
|
297
|
+
/** Additional CSS classes */
|
|
298
|
+
className?: string;
|
|
299
|
+
/** Props passed to each SkeletonCard */
|
|
300
|
+
cardProps?: Omit<SkeletonCardProps, "className">;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* SkeletonGrid - Grid of skeleton cards
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```tsx
|
|
307
|
+
* <SkeletonGrid cards={6} columns={3} />
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
declare function SkeletonGrid({ cards, columns, className, cardProps, }: SkeletonGridProps): react_jsx_runtime.JSX.Element;
|
|
311
|
+
|
|
312
|
+
interface ClientSubmitButtonProps {
|
|
313
|
+
children: ReactNode;
|
|
314
|
+
disabled?: boolean;
|
|
315
|
+
loading?: boolean;
|
|
316
|
+
loadingText?: string;
|
|
317
|
+
className?: string;
|
|
318
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
319
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
320
|
+
form?: string;
|
|
321
|
+
}
|
|
322
|
+
declare function ClientSubmitButton({ children, disabled, loading, loadingText, className, variant, size, form, ...props }: ClientSubmitButtonProps): react_jsx_runtime.JSX.Element;
|
|
323
|
+
|
|
324
|
+
interface CollapsibleWrapperProps {
|
|
325
|
+
children: ReactNode;
|
|
326
|
+
trigger: ReactNode;
|
|
327
|
+
defaultOpen?: boolean;
|
|
328
|
+
open?: boolean;
|
|
329
|
+
onOpenChange?: (open: boolean) => void;
|
|
330
|
+
/** @deprecated Use render prop pattern with trigger element instead */
|
|
331
|
+
triggerAsChild?: boolean;
|
|
332
|
+
triggerVariant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
333
|
+
triggerSize?: "default" | "sm" | "lg" | "icon";
|
|
334
|
+
triggerClassName?: string;
|
|
335
|
+
contentClassName?: string;
|
|
336
|
+
className?: string;
|
|
337
|
+
showChevron?: boolean;
|
|
338
|
+
chevronPosition?: "left" | "right";
|
|
339
|
+
disabled?: boolean;
|
|
340
|
+
}
|
|
341
|
+
declare function CollapsibleWrapper({ children, trigger, defaultOpen, open, onOpenChange, triggerAsChild, triggerVariant, triggerSize, triggerClassName, contentClassName, className, showChevron, chevronPosition, disabled, ...props }: CollapsibleWrapperProps): react_jsx_runtime.JSX.Element;
|
|
342
|
+
interface CollapsibleCardProps {
|
|
343
|
+
title: ReactNode;
|
|
344
|
+
children: ReactNode;
|
|
345
|
+
defaultOpen?: boolean;
|
|
346
|
+
className?: string;
|
|
347
|
+
headerClassName?: string;
|
|
348
|
+
contentClassName?: string;
|
|
349
|
+
}
|
|
350
|
+
declare function CollapsibleCard({ title, children, defaultOpen, className, headerClassName, contentClassName, ...props }: CollapsibleCardProps): react_jsx_runtime.JSX.Element;
|
|
351
|
+
interface CollapsibleSectionProps {
|
|
352
|
+
label: ReactNode;
|
|
353
|
+
children: ReactNode;
|
|
354
|
+
defaultOpen?: boolean;
|
|
355
|
+
className?: string;
|
|
356
|
+
labelClassName?: string;
|
|
357
|
+
contentClassName?: string;
|
|
358
|
+
}
|
|
359
|
+
declare function CollapsibleSection({ label, children, defaultOpen, className, labelClassName, contentClassName, ...props }: CollapsibleSectionProps): react_jsx_runtime.JSX.Element;
|
|
360
|
+
|
|
361
|
+
interface ConfirmDialogProps {
|
|
362
|
+
open: boolean;
|
|
363
|
+
onOpenChange: (open: boolean) => void;
|
|
364
|
+
/** Trigger element that opens the dialog */
|
|
365
|
+
trigger?: React$1.ReactElement;
|
|
366
|
+
title?: string;
|
|
367
|
+
description?: string;
|
|
368
|
+
confirmText?: string;
|
|
369
|
+
cancelText?: string;
|
|
370
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
371
|
+
isLoading?: boolean;
|
|
372
|
+
onConfirm?: () => void;
|
|
373
|
+
onCancel?: () => void;
|
|
374
|
+
icon?: ReactNode;
|
|
375
|
+
children?: ReactNode;
|
|
376
|
+
className?: string;
|
|
377
|
+
/** Header className */
|
|
378
|
+
headerClassName?: string;
|
|
379
|
+
/** Description className */
|
|
380
|
+
descriptionClassName?: string;
|
|
381
|
+
/** Footer className */
|
|
382
|
+
footerClassName?: string;
|
|
383
|
+
/** Whether to show the cancel button (default: true) */
|
|
384
|
+
showCancel?: boolean;
|
|
385
|
+
}
|
|
386
|
+
declare function ConfirmDialog({ open, onOpenChange, trigger, title, description, confirmText, cancelText, variant, isLoading, onConfirm, onCancel, icon, children, className, headerClassName, descriptionClassName, footerClassName, showCancel, ...props }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
387
|
+
interface DeleteConfirmDialogProps {
|
|
388
|
+
open: boolean;
|
|
389
|
+
onOpenChange: (open: boolean) => void;
|
|
390
|
+
onConfirm?: () => void;
|
|
391
|
+
isLoading?: boolean;
|
|
392
|
+
itemName?: string;
|
|
393
|
+
itemDetails?: ReactNode;
|
|
394
|
+
}
|
|
395
|
+
declare function DeleteConfirmDialog({ open, onOpenChange, onConfirm, isLoading, itemName, itemDetails, ...props }: DeleteConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
396
|
+
interface InfoAlertProps extends Omit<ConfirmDialogProps, "showCancel" | "variant"> {
|
|
397
|
+
confirmText?: string;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* InfoAlert - Information/warning alert with only confirm button (no cancel)
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```tsx
|
|
404
|
+
* <InfoAlert
|
|
405
|
+
* open={open}
|
|
406
|
+
* onOpenChange={setOpen}
|
|
407
|
+
* title="Session expired"
|
|
408
|
+
* description="Please log in again"
|
|
409
|
+
* confirmText="OK"
|
|
410
|
+
* onConfirm={() => setOpen(false)}
|
|
411
|
+
* />
|
|
412
|
+
* ```
|
|
413
|
+
*/
|
|
414
|
+
declare function InfoAlert({ title, description, confirmText, onConfirm, onOpenChange, ...props }: InfoAlertProps): react_jsx_runtime.JSX.Element;
|
|
415
|
+
|
|
416
|
+
interface ErrorStateProps {
|
|
417
|
+
/** Error title */
|
|
418
|
+
title?: string;
|
|
419
|
+
/** Error message or Error object */
|
|
420
|
+
error: string | Error | {
|
|
421
|
+
message?: string;
|
|
422
|
+
} | null | undefined;
|
|
423
|
+
/** Optional retry callback */
|
|
424
|
+
onRetry?: () => void;
|
|
425
|
+
/** Alert variant */
|
|
426
|
+
variant?: "default" | "destructive";
|
|
427
|
+
/** Additional CSS classes */
|
|
428
|
+
className?: string;
|
|
429
|
+
/** Custom icon */
|
|
430
|
+
icon?: ReactNode;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* ErrorState Component
|
|
434
|
+
*
|
|
435
|
+
* Reusable error display component with retry functionality
|
|
436
|
+
* Used for consistent error handling across pages
|
|
437
|
+
*/
|
|
438
|
+
declare function ErrorState({ title, error, onRetry, variant, className, icon, }: ErrorStateProps): react_jsx_runtime.JSX.Element;
|
|
439
|
+
interface ErrorStateInlineProps {
|
|
440
|
+
/** Error message or Error object */
|
|
441
|
+
error: string | Error | {
|
|
442
|
+
message?: string;
|
|
443
|
+
} | null | undefined;
|
|
444
|
+
/** Optional retry callback */
|
|
445
|
+
onRetry?: () => void;
|
|
446
|
+
/** Additional CSS classes */
|
|
447
|
+
className?: string;
|
|
448
|
+
/** Custom icon */
|
|
449
|
+
icon?: ReactNode;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Inline ErrorState variant - more compact for table cells
|
|
453
|
+
*/
|
|
454
|
+
declare function ErrorStateInline({ error, onRetry, className, icon, }: ErrorStateInlineProps): react_jsx_runtime.JSX.Element;
|
|
455
|
+
|
|
456
|
+
interface CopyButtonProps {
|
|
457
|
+
value: string;
|
|
458
|
+
className?: string;
|
|
459
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
460
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
461
|
+
showToast?: boolean;
|
|
462
|
+
toastMessage?: string;
|
|
463
|
+
errorMessage?: string;
|
|
464
|
+
timeout?: number;
|
|
465
|
+
children?: ReactNode;
|
|
466
|
+
}
|
|
467
|
+
declare function CopyButton({ value, className, size, variant, showToast, toastMessage, errorMessage, timeout, children, ...props }: CopyButtonProps): react_jsx_runtime.JSX.Element;
|
|
468
|
+
interface CopyTextProps {
|
|
469
|
+
value: string;
|
|
470
|
+
displayValue?: string;
|
|
471
|
+
className?: string;
|
|
472
|
+
textClassName?: string;
|
|
473
|
+
buttonClassName?: string;
|
|
474
|
+
maxLength?: number;
|
|
475
|
+
showButton?: boolean;
|
|
476
|
+
}
|
|
477
|
+
declare function CopyText({ value, displayValue, className, textClassName, buttonClassName, maxLength, showButton, ...buttonProps }: CopyTextProps): react_jsx_runtime.JSX.Element;
|
|
478
|
+
interface CopyCodeBlockProps {
|
|
479
|
+
value: string;
|
|
480
|
+
className?: string;
|
|
481
|
+
language?: string;
|
|
482
|
+
showLineNumbers?: boolean;
|
|
483
|
+
}
|
|
484
|
+
declare function CopyCodeBlock({ value, className, language, showLineNumbers, ...buttonProps }: CopyCodeBlockProps): react_jsx_runtime.JSX.Element;
|
|
485
|
+
|
|
486
|
+
interface CustomPaginationProps {
|
|
487
|
+
page: number;
|
|
488
|
+
pages: number;
|
|
489
|
+
hasNext: boolean;
|
|
490
|
+
hasPrev: boolean;
|
|
491
|
+
onPageChange: (page: number) => void;
|
|
492
|
+
}
|
|
493
|
+
declare function CustomPagination({ page, onPageChange, pages, hasPrev, hasNext, }: CustomPaginationProps): react_jsx_runtime.JSX.Element | null;
|
|
494
|
+
interface PaginationInfoProps {
|
|
495
|
+
page: number;
|
|
496
|
+
total: number;
|
|
497
|
+
limit?: number;
|
|
498
|
+
}
|
|
499
|
+
declare function PaginationInfo({ page, total, limit }: PaginationInfoProps): react_jsx_runtime.JSX.Element;
|
|
500
|
+
|
|
501
|
+
interface DataTablePaginationProps extends Partial<ApiPaginationData> {
|
|
502
|
+
onPageChange?: (page: number) => void;
|
|
503
|
+
}
|
|
504
|
+
interface DataTableProps<TData, TValue> {
|
|
505
|
+
columns: ColumnDef<TData, TValue>[];
|
|
506
|
+
data: TData[];
|
|
507
|
+
isLoading?: boolean;
|
|
508
|
+
pagination?: DataTablePaginationProps;
|
|
509
|
+
enableSorting?: boolean;
|
|
510
|
+
enableRowSelection?: boolean;
|
|
511
|
+
onRowSelectionChange?: (selectedRows: TData[]) => void;
|
|
512
|
+
className?: string;
|
|
513
|
+
}
|
|
514
|
+
declare function DataTable<TData, TValue>({ columns, data, isLoading, pagination, enableSorting, enableRowSelection, onRowSelectionChange, className, }: DataTableProps<TData, TValue>): react_jsx_runtime.JSX.Element;
|
|
515
|
+
|
|
516
|
+
declare const SIZE_VARIANTS$1: {
|
|
517
|
+
readonly sm: "sm:!max-w-sm";
|
|
518
|
+
readonly default: "sm:!max-w-md";
|
|
519
|
+
readonly lg: "sm:!max-w-lg md:!max-w-2xl";
|
|
520
|
+
readonly xl: "sm:!max-w-2xl md:!max-w-4xl";
|
|
521
|
+
readonly "2xl": "sm:!max-w-4xl md:!max-w-6xl";
|
|
522
|
+
readonly full: "!max-w-[95vw] !h-[95vh]";
|
|
523
|
+
};
|
|
524
|
+
type SizeVariant$1 = keyof typeof SIZE_VARIANTS$1;
|
|
525
|
+
interface DialogWrapperProps {
|
|
526
|
+
open: boolean;
|
|
527
|
+
onOpenChange: (open: boolean) => void;
|
|
528
|
+
title?: ReactNode;
|
|
529
|
+
description?: ReactNode;
|
|
530
|
+
children?: ReactNode;
|
|
531
|
+
footer?: ReactNode;
|
|
532
|
+
trigger?: ReactNode;
|
|
533
|
+
size?: SizeVariant$1;
|
|
534
|
+
className?: string;
|
|
535
|
+
headerClassName?: string;
|
|
536
|
+
contentClassName?: string;
|
|
537
|
+
footerClassName?: string;
|
|
538
|
+
hideHeader?: boolean;
|
|
539
|
+
hideTitle?: boolean;
|
|
540
|
+
hideDescription?: boolean;
|
|
541
|
+
hideCloseButton?: boolean;
|
|
542
|
+
}
|
|
543
|
+
declare function DialogWrapper({ open, onOpenChange, title, description, children, footer, trigger, size, className, headerClassName, contentClassName, footerClassName, hideHeader, hideTitle, hideDescription, hideCloseButton, ...props }: DialogWrapperProps): react_jsx_runtime.JSX.Element;
|
|
544
|
+
interface FormDialogProps extends Omit<DialogWrapperProps, "footer"> {
|
|
545
|
+
onSubmit?: () => void;
|
|
546
|
+
onCancel?: () => void;
|
|
547
|
+
submitText?: string;
|
|
548
|
+
cancelText?: string;
|
|
549
|
+
isLoading?: boolean;
|
|
550
|
+
submitDisabled?: boolean;
|
|
551
|
+
}
|
|
552
|
+
declare function FormDialog({ open, onOpenChange, title, description, children, onSubmit, onCancel, submitText, cancelText, isLoading, submitDisabled, ...props }: FormDialogProps): react_jsx_runtime.JSX.Element;
|
|
553
|
+
|
|
554
|
+
interface DropdownWrapperProps {
|
|
555
|
+
trigger: React$1.ReactNode;
|
|
556
|
+
children: React$1.ReactNode;
|
|
557
|
+
align?: "start" | "center" | "end";
|
|
558
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
559
|
+
sideOffset?: number;
|
|
560
|
+
className?: string;
|
|
561
|
+
contentClassName?: string;
|
|
562
|
+
}
|
|
563
|
+
declare function DropdownWrapper({ trigger, children, align, side, sideOffset, className, contentClassName, ...props }: DropdownWrapperProps): react_jsx_runtime.JSX.Element;
|
|
564
|
+
interface ActionDropdownItem {
|
|
565
|
+
type?: "item" | "separator" | "label" | "group";
|
|
566
|
+
key?: string;
|
|
567
|
+
label?: string | (() => string);
|
|
568
|
+
icon?: LucideIcon;
|
|
569
|
+
onClick?: (e: React$1.MouseEvent) => void;
|
|
570
|
+
disabled?: boolean;
|
|
571
|
+
hidden?: boolean;
|
|
572
|
+
variant?: "default" | "destructive";
|
|
573
|
+
shortcut?: string;
|
|
574
|
+
className?: string;
|
|
575
|
+
items?: ActionDropdownItem[];
|
|
576
|
+
}
|
|
577
|
+
interface ActionDropdownProps {
|
|
578
|
+
items?: ActionDropdownItem[];
|
|
579
|
+
triggerIcon?: LucideIcon;
|
|
580
|
+
triggerVariant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
581
|
+
triggerSize?: "default" | "sm" | "lg" | "icon";
|
|
582
|
+
triggerClassName?: string;
|
|
583
|
+
triggerLabel?: string;
|
|
584
|
+
showOnHover?: boolean;
|
|
585
|
+
align?: "start" | "center" | "end";
|
|
586
|
+
contentClassName?: string;
|
|
587
|
+
onOpenChange?: (open: boolean) => void;
|
|
588
|
+
stopPropagation?: boolean;
|
|
589
|
+
}
|
|
590
|
+
declare function ActionDropdown({ items, triggerIcon: TriggerIcon, triggerVariant, triggerSize, triggerClassName, triggerLabel, showOnHover, align, contentClassName, onOpenChange, stopPropagation, ...props }: ActionDropdownProps): react_jsx_runtime.JSX.Element;
|
|
591
|
+
interface SelectDropdownOption {
|
|
592
|
+
value: string;
|
|
593
|
+
label: string;
|
|
594
|
+
icon?: LucideIcon;
|
|
595
|
+
}
|
|
596
|
+
interface SelectDropdownProps {
|
|
597
|
+
value?: string;
|
|
598
|
+
onValueChange?: (value: string) => void;
|
|
599
|
+
placeholder?: string;
|
|
600
|
+
options?: SelectDropdownOption[];
|
|
601
|
+
triggerClassName?: string;
|
|
602
|
+
contentClassName?: string;
|
|
603
|
+
disabled?: boolean;
|
|
604
|
+
}
|
|
605
|
+
declare function SelectDropdown({ value, onValueChange, placeholder, options, triggerClassName, contentClassName, disabled, ...props }: SelectDropdownProps): react_jsx_runtime.JSX.Element;
|
|
606
|
+
interface CheckboxDropdownProps {
|
|
607
|
+
values?: string[];
|
|
608
|
+
onValuesChange?: (values: string[]) => void;
|
|
609
|
+
placeholder?: string;
|
|
610
|
+
options?: SelectDropdownOption[];
|
|
611
|
+
triggerClassName?: string;
|
|
612
|
+
contentClassName?: string;
|
|
613
|
+
disabled?: boolean;
|
|
614
|
+
showSelectedCount?: boolean;
|
|
615
|
+
}
|
|
616
|
+
declare function CheckboxDropdown({ values, onValuesChange, placeholder, options, triggerClassName, contentClassName, disabled, showSelectedCount, ...props }: CheckboxDropdownProps): react_jsx_runtime.JSX.Element;
|
|
617
|
+
interface RadioDropdownProps {
|
|
618
|
+
value?: string;
|
|
619
|
+
onValueChange?: (value: string) => void;
|
|
620
|
+
placeholder?: string;
|
|
621
|
+
options?: SelectDropdownOption[];
|
|
622
|
+
triggerClassName?: string;
|
|
623
|
+
contentClassName?: string;
|
|
624
|
+
disabled?: boolean;
|
|
625
|
+
}
|
|
626
|
+
declare function RadioDropdown({ value, onValueChange, placeholder, options, triggerClassName, contentClassName, disabled, ...props }: RadioDropdownProps): react_jsx_runtime.JSX.Element;
|
|
627
|
+
|
|
628
|
+
interface InfoRowProps {
|
|
629
|
+
label: string;
|
|
630
|
+
value: ReactNode;
|
|
631
|
+
copyable?: boolean;
|
|
632
|
+
icon?: ComponentType<LucideProps>;
|
|
633
|
+
}
|
|
634
|
+
declare function InfoRow({ label, value, copyable, icon: Icon }: InfoRowProps): react_jsx_runtime.JSX.Element | null;
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Item Component Helpers
|
|
638
|
+
*/
|
|
639
|
+
declare const iconItemMediaVariants: (props?: ({
|
|
640
|
+
iconBg?: "primary" | "gradient" | "none" | "gold" | "muted" | null | undefined;
|
|
641
|
+
iconSize?: "lg" | "xl" | "sm" | "md" | null | undefined;
|
|
642
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
643
|
+
interface IconItemMediaProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof iconItemMediaVariants> {
|
|
644
|
+
icon?: React$1.ReactNode;
|
|
645
|
+
children?: React$1.ReactNode;
|
|
646
|
+
}
|
|
647
|
+
declare const IconItemMedia: React$1.NamedExoticComponent<IconItemMediaProps>;
|
|
648
|
+
interface FeatureItemProps {
|
|
649
|
+
icon?: React$1.ReactNode;
|
|
650
|
+
iconBg?: "primary" | "gold" | "muted" | "gradient" | "none";
|
|
651
|
+
iconSize?: "sm" | "md" | "lg" | "xl";
|
|
652
|
+
title?: React$1.ReactNode;
|
|
653
|
+
description?: React$1.ReactNode;
|
|
654
|
+
variant?: "default" | "outline" | "ghost" | "gradient-light" | "gradient";
|
|
655
|
+
size?: "sm" | "default" | "lg";
|
|
656
|
+
layout?: "vertical" | "horizontal";
|
|
657
|
+
titleAs?: React$1.ElementType;
|
|
658
|
+
className?: string;
|
|
659
|
+
titleClassName?: string;
|
|
660
|
+
descriptionClassName?: string;
|
|
661
|
+
iconClassName?: string;
|
|
662
|
+
children?: React$1.ReactNode;
|
|
663
|
+
}
|
|
664
|
+
declare const FeatureItem: React$1.NamedExoticComponent<FeatureItemProps>;
|
|
665
|
+
|
|
666
|
+
declare function ModeToggle(): react_jsx_runtime.JSX.Element;
|
|
667
|
+
|
|
668
|
+
interface PhoneInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "onChange"> {
|
|
669
|
+
onChange?: (value: string) => void;
|
|
670
|
+
defaultCountry?: string;
|
|
671
|
+
}
|
|
672
|
+
declare const PhoneInput: React$1.ForwardRefExoticComponent<PhoneInputProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
673
|
+
|
|
674
|
+
interface PillProps {
|
|
675
|
+
variant?: "default" | "secondary" | "destructive" | "outline";
|
|
676
|
+
themed?: boolean;
|
|
677
|
+
className?: string;
|
|
678
|
+
children?: ReactNode;
|
|
679
|
+
}
|
|
680
|
+
declare function Pill({ variant, themed, className, ...props }: PillProps): react_jsx_runtime.JSX.Element;
|
|
681
|
+
interface PillAvatarProps {
|
|
682
|
+
fallback?: string;
|
|
683
|
+
className?: string;
|
|
684
|
+
src?: string;
|
|
685
|
+
alt?: string;
|
|
686
|
+
}
|
|
687
|
+
declare function PillAvatar({ fallback, className, src, alt, ...props }: PillAvatarProps): react_jsx_runtime.JSX.Element;
|
|
688
|
+
interface PillButtonProps {
|
|
689
|
+
className?: string;
|
|
690
|
+
children?: ReactNode;
|
|
691
|
+
onClick?: () => void;
|
|
692
|
+
}
|
|
693
|
+
declare function PillButton({ className, ...props }: PillButtonProps): react_jsx_runtime.JSX.Element;
|
|
694
|
+
interface PillStatusProps {
|
|
695
|
+
children?: ReactNode;
|
|
696
|
+
className?: string;
|
|
697
|
+
}
|
|
698
|
+
declare function PillStatus({ children, className, ...props }: PillStatusProps): react_jsx_runtime.JSX.Element;
|
|
699
|
+
interface PillIndicatorProps {
|
|
700
|
+
variant?: "success" | "error" | "warning" | "info";
|
|
701
|
+
pulse?: boolean;
|
|
702
|
+
}
|
|
703
|
+
declare function PillIndicator({ variant, pulse }: PillIndicatorProps): react_jsx_runtime.JSX.Element;
|
|
704
|
+
interface PillDeltaProps {
|
|
705
|
+
className?: string;
|
|
706
|
+
delta?: number;
|
|
707
|
+
}
|
|
708
|
+
declare function PillDelta({ className, delta }: PillDeltaProps): react_jsx_runtime.JSX.Element;
|
|
709
|
+
interface PillIconProps extends LucideProps {
|
|
710
|
+
icon: ComponentType<LucideProps>;
|
|
711
|
+
className?: string;
|
|
712
|
+
}
|
|
713
|
+
declare function PillIcon({ icon: Icon, className, ...props }: PillIconProps): react_jsx_runtime.JSX.Element;
|
|
714
|
+
interface PillAvatarGroupProps {
|
|
715
|
+
children?: ReactNode;
|
|
716
|
+
className?: string;
|
|
717
|
+
}
|
|
718
|
+
declare function PillAvatarGroup({ children, className, ...props }: PillAvatarGroupProps): react_jsx_runtime.JSX.Element;
|
|
719
|
+
|
|
720
|
+
interface PanelConfig {
|
|
721
|
+
title?: string;
|
|
722
|
+
icon?: ReactNode;
|
|
723
|
+
content: ReactNode;
|
|
724
|
+
badge?: ReactNode;
|
|
725
|
+
}
|
|
726
|
+
interface ResponsiveSplitLayoutProps {
|
|
727
|
+
leftPanel: PanelConfig;
|
|
728
|
+
rightPanel: PanelConfig;
|
|
729
|
+
className?: string;
|
|
730
|
+
leftPanelClassName?: string;
|
|
731
|
+
rightPanelClassName?: string;
|
|
732
|
+
variant?: "default" | "tabs" | "fixed";
|
|
733
|
+
desktopVariant?: "default" | "tabs" | "fixed";
|
|
734
|
+
mobileVariant?: "default" | "tabs" | "fixed";
|
|
735
|
+
defaultLayout?: [number, number];
|
|
736
|
+
minSizes?: [number, number];
|
|
737
|
+
rightPanelWidth?: number;
|
|
738
|
+
persistLayoutKey?: string;
|
|
739
|
+
mobileBreakpoint?: "sm" | "md" | "lg" | "xl";
|
|
740
|
+
forceMobile?: boolean;
|
|
741
|
+
forceDesktop?: boolean;
|
|
742
|
+
}
|
|
743
|
+
declare function ResponsiveSplitLayout({ leftPanel, rightPanel, className, leftPanelClassName, rightPanelClassName, variant, desktopVariant, mobileVariant, defaultLayout, minSizes, rightPanelWidth, persistLayoutKey, mobileBreakpoint, forceMobile, forceDesktop, }: ResponsiveSplitLayoutProps): react_jsx_runtime.JSX.Element;
|
|
744
|
+
|
|
745
|
+
declare const SIZE_VARIANTS: {
|
|
746
|
+
readonly sm: "sm:!max-w-md";
|
|
747
|
+
readonly default: "w-full sm:!max-w-md md:!max-w-lg";
|
|
748
|
+
readonly lg: "w-full sm:!max-w-lg md:!max-w-2xl lg:!max-w-4xl";
|
|
749
|
+
readonly xl: "w-full sm:!max-w-2xl md:!max-w-4xl lg:!max-w-5xl";
|
|
750
|
+
readonly full: "w-full !max-w-full";
|
|
751
|
+
readonly mobile: "w-[85%] !max-w-sm";
|
|
752
|
+
readonly "mobile-nav": "!w-[300px] sm:!w-[350px]";
|
|
753
|
+
};
|
|
754
|
+
type SizeVariant = keyof typeof SIZE_VARIANTS;
|
|
755
|
+
interface SheetWrapperProps {
|
|
756
|
+
open: boolean;
|
|
757
|
+
onOpenChange: (open: boolean) => void;
|
|
758
|
+
title?: string;
|
|
759
|
+
description?: string;
|
|
760
|
+
children?: ReactNode;
|
|
761
|
+
footer?: ReactNode;
|
|
762
|
+
header?: ReactNode;
|
|
763
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
764
|
+
size?: SizeVariant;
|
|
765
|
+
modal?: boolean;
|
|
766
|
+
className?: string;
|
|
767
|
+
headerClassName?: string;
|
|
768
|
+
contentClassName?: string;
|
|
769
|
+
footerClassName?: string;
|
|
770
|
+
innerClassName?: string;
|
|
771
|
+
hideHeader?: boolean;
|
|
772
|
+
hideTitle?: boolean;
|
|
773
|
+
hideDescription?: boolean;
|
|
774
|
+
hideCloseButton?: boolean;
|
|
775
|
+
disableContentPadding?: boolean;
|
|
776
|
+
}
|
|
777
|
+
declare const SheetWrapper: React$1.NamedExoticComponent<SheetWrapperProps>;
|
|
778
|
+
interface FormSheetProps extends Omit<SheetWrapperProps, "footer"> {
|
|
779
|
+
onSubmit?: () => void;
|
|
780
|
+
onCancel?: () => void;
|
|
781
|
+
submitLabel?: string;
|
|
782
|
+
cancelLabel?: string;
|
|
783
|
+
submitDisabled?: boolean;
|
|
784
|
+
submitLoading?: boolean;
|
|
785
|
+
formId?: string;
|
|
786
|
+
}
|
|
787
|
+
declare const FormSheet: React$1.NamedExoticComponent<FormSheetProps>;
|
|
788
|
+
interface ConfirmSheetProps extends Omit<SheetWrapperProps, "footer"> {
|
|
789
|
+
onConfirm?: () => void;
|
|
790
|
+
onCancel?: () => void;
|
|
791
|
+
confirmLabel?: string;
|
|
792
|
+
cancelLabel?: string;
|
|
793
|
+
confirmVariant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
794
|
+
confirmDisabled?: boolean;
|
|
795
|
+
confirmLoading?: boolean;
|
|
796
|
+
}
|
|
797
|
+
declare const ConfirmSheet: React$1.NamedExoticComponent<ConfirmSheetProps>;
|
|
798
|
+
|
|
799
|
+
interface TableWrapperColumn {
|
|
800
|
+
key?: string;
|
|
801
|
+
header: ReactNode;
|
|
802
|
+
className?: string;
|
|
803
|
+
cellClassName?: string;
|
|
804
|
+
render?: (item: any, index: number) => ReactNode;
|
|
805
|
+
}
|
|
806
|
+
interface TableWrapperEmptyState {
|
|
807
|
+
icon?: ReactNode;
|
|
808
|
+
title?: string;
|
|
809
|
+
description?: string;
|
|
810
|
+
}
|
|
811
|
+
interface TableWrapperProps {
|
|
812
|
+
title?: ReactNode;
|
|
813
|
+
description?: ReactNode;
|
|
814
|
+
icon?: ReactNode;
|
|
815
|
+
children?: ReactNode;
|
|
816
|
+
columns?: TableWrapperColumn[];
|
|
817
|
+
data?: any[];
|
|
818
|
+
renderRow?: (item: any, index: number) => ReactNode;
|
|
819
|
+
emptyState?: TableWrapperEmptyState;
|
|
820
|
+
className?: string;
|
|
821
|
+
tableClassName?: string;
|
|
822
|
+
maxHeight?: string;
|
|
823
|
+
}
|
|
824
|
+
declare function TableWrapper({ title, description, icon, children, columns, data, renderRow, emptyState, className, tableClassName, maxHeight, ...props }: TableWrapperProps): react_jsx_runtime.JSX.Element;
|
|
825
|
+
interface SimpleTableProps extends Omit<TableWrapperProps, "renderRow" | "children"> {
|
|
826
|
+
columns: TableWrapperColumn[];
|
|
827
|
+
data: any[];
|
|
828
|
+
}
|
|
829
|
+
declare function SimpleTable({ title, data, columns, emptyState, className, ...props }: SimpleTableProps): react_jsx_runtime.JSX.Element;
|
|
830
|
+
|
|
831
|
+
interface TabsWrapperProps {
|
|
832
|
+
defaultValue?: string;
|
|
833
|
+
value?: string;
|
|
834
|
+
onValueChange?: (value: string) => void;
|
|
835
|
+
children: ReactNode;
|
|
836
|
+
className?: string;
|
|
837
|
+
listClassName?: string;
|
|
838
|
+
contentClassName?: string;
|
|
839
|
+
variant?: "default" | "primary" | "secondary" | "outline" | "ghost" | "underline";
|
|
840
|
+
orientation?: "horizontal" | "vertical";
|
|
841
|
+
layout?: "default" | "flex" | "sidebar";
|
|
842
|
+
withScrollArea?: boolean;
|
|
843
|
+
scrollAreaClassName?: string;
|
|
844
|
+
}
|
|
845
|
+
declare const TabsWrapper: React$1.NamedExoticComponent<TabsWrapperProps>;
|
|
846
|
+
interface TabTriggerProps {
|
|
847
|
+
value: string;
|
|
848
|
+
children: ReactNode;
|
|
849
|
+
className?: string;
|
|
850
|
+
variant?: "default" | "primary" | "secondary" | "outline" | "ghost" | "underline";
|
|
851
|
+
icon?: ReactNode;
|
|
852
|
+
hideTextOnMobile?: boolean;
|
|
853
|
+
disabled?: boolean;
|
|
854
|
+
}
|
|
855
|
+
declare const TabTrigger: React$1.NamedExoticComponent<TabTriggerProps>;
|
|
856
|
+
interface TabContentProps {
|
|
857
|
+
value: string;
|
|
858
|
+
children: ReactNode;
|
|
859
|
+
className?: string;
|
|
860
|
+
withScrollArea?: boolean;
|
|
861
|
+
scrollAreaClassName?: string;
|
|
862
|
+
padding?: boolean;
|
|
863
|
+
keepMounted?: boolean;
|
|
864
|
+
}
|
|
865
|
+
declare const TabContent: React$1.NamedExoticComponent<TabContentProps>;
|
|
866
|
+
interface DynamicTabItem {
|
|
867
|
+
value: string;
|
|
868
|
+
label: ReactNode;
|
|
869
|
+
content: ReactNode;
|
|
870
|
+
icon?: ReactNode;
|
|
871
|
+
disabled?: boolean;
|
|
872
|
+
hideTextOnMobile?: boolean;
|
|
873
|
+
}
|
|
874
|
+
interface DynamicTabsProps {
|
|
875
|
+
tabs?: DynamicTabItem[];
|
|
876
|
+
defaultValue?: string;
|
|
877
|
+
value?: string;
|
|
878
|
+
onValueChange?: (value: string) => void;
|
|
879
|
+
variant?: "default" | "primary" | "secondary" | "outline" | "ghost" | "underline";
|
|
880
|
+
layout?: "default" | "flex" | "sidebar";
|
|
881
|
+
className?: string;
|
|
882
|
+
listClassName?: string;
|
|
883
|
+
listWrapperClassName?: string;
|
|
884
|
+
contentClassName?: string;
|
|
885
|
+
scrollable?: boolean;
|
|
886
|
+
}
|
|
887
|
+
declare const DynamicTabs: React$1.NamedExoticComponent<DynamicTabsProps>;
|
|
888
|
+
|
|
889
|
+
interface TooltipWrapperProps {
|
|
890
|
+
children: ReactNode;
|
|
891
|
+
content: ReactNode;
|
|
892
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
893
|
+
align?: "start" | "center" | "end";
|
|
894
|
+
delay?: number;
|
|
895
|
+
sideOffset?: number;
|
|
896
|
+
className?: string;
|
|
897
|
+
contentClassName?: string;
|
|
898
|
+
disabled?: boolean;
|
|
899
|
+
}
|
|
900
|
+
declare function TooltipWrapper({ children, content, side, align, delay, sideOffset, className, contentClassName, disabled, ...props }: TooltipWrapperProps): react_jsx_runtime.JSX.Element;
|
|
901
|
+
interface ButtonTooltipProps extends Omit<TooltipWrapperProps, "content"> {
|
|
902
|
+
tooltip: ReactNode;
|
|
903
|
+
variant?: "default" | "outline" | "ghost";
|
|
904
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
905
|
+
}
|
|
906
|
+
declare function ButtonTooltip({ children, tooltip, variant, size, className, ...props }: ButtonTooltipProps): react_jsx_runtime.JSX.Element;
|
|
907
|
+
interface IconTooltipProps extends Omit<TooltipWrapperProps, "content" | "children"> {
|
|
908
|
+
icon: ReactNode;
|
|
909
|
+
tooltip: ReactNode;
|
|
910
|
+
iconClassName?: string;
|
|
911
|
+
size?: number;
|
|
912
|
+
}
|
|
913
|
+
declare function IconTooltip({ icon, tooltip, className, iconClassName, size, ...props }: IconTooltipProps): react_jsx_runtime.JSX.Element;
|
|
914
|
+
interface InfoTooltipProps extends Omit<TooltipWrapperProps, "content" | "children"> {
|
|
915
|
+
tooltip: ReactNode;
|
|
916
|
+
size?: number;
|
|
917
|
+
}
|
|
918
|
+
declare function InfoTooltip({ tooltip, className, size, ...props }: InfoTooltipProps): react_jsx_runtime.JSX.Element;
|
|
919
|
+
interface ActionTooltipProps extends Omit<TooltipWrapperProps, "content"> {
|
|
920
|
+
tooltip: ReactNode;
|
|
921
|
+
action?: () => void;
|
|
922
|
+
variant?: "ghost" | "outline";
|
|
923
|
+
size?: "sm" | "icon";
|
|
924
|
+
}
|
|
925
|
+
declare function ActionTooltip({ children, tooltip, action, variant, size, className, ...props }: ActionTooltipProps): react_jsx_runtime.JSX.Element;
|
|
926
|
+
|
|
927
|
+
interface TransformFunctions {
|
|
928
|
+
input?: (value: unknown) => string;
|
|
929
|
+
output?: (value: string) => unknown;
|
|
930
|
+
}
|
|
931
|
+
interface FormInputProps<TFieldValues extends FieldValues = FieldValues> {
|
|
932
|
+
control?: Control<TFieldValues>;
|
|
933
|
+
name: FieldPath<TFieldValues> | string;
|
|
934
|
+
label?: string;
|
|
935
|
+
placeholder?: string;
|
|
936
|
+
description?: string;
|
|
937
|
+
helperText?: string;
|
|
938
|
+
required?: boolean;
|
|
939
|
+
disabled?: boolean;
|
|
940
|
+
readOnly?: boolean;
|
|
941
|
+
type?: string;
|
|
942
|
+
className?: string;
|
|
943
|
+
labelClassName?: string;
|
|
944
|
+
inputClassName?: string;
|
|
945
|
+
inputGroupClassName?: string;
|
|
946
|
+
IconLeft?: ReactNode;
|
|
947
|
+
IconRight?: ReactNode;
|
|
948
|
+
AddonLeft?: ReactNode;
|
|
949
|
+
AddonRight?: ReactNode;
|
|
950
|
+
iconLeft?: ReactNode;
|
|
951
|
+
iconRight?: ReactNode;
|
|
952
|
+
addonLeft?: ReactNode;
|
|
953
|
+
addonRight?: ReactNode;
|
|
954
|
+
transform?: TransformFunctions;
|
|
955
|
+
onValueChange?: (value: unknown) => void;
|
|
956
|
+
value?: string | number;
|
|
957
|
+
onChange?: (value: unknown) => void;
|
|
958
|
+
min?: number | string;
|
|
959
|
+
max?: number | string;
|
|
960
|
+
step?: number | string;
|
|
961
|
+
minLength?: number;
|
|
962
|
+
maxLength?: number;
|
|
963
|
+
pattern?: string;
|
|
964
|
+
autoComplete?: string;
|
|
965
|
+
autoFocus?: boolean;
|
|
966
|
+
inputMode?: InputHTMLAttributes<HTMLInputElement>["inputMode"];
|
|
967
|
+
enterKeyHint?: InputHTMLAttributes<HTMLInputElement>["enterKeyHint"];
|
|
968
|
+
}
|
|
969
|
+
/**
|
|
970
|
+
* FormInput - Text input with react-hook-form integration
|
|
971
|
+
*
|
|
972
|
+
* Features:
|
|
973
|
+
* - Works with react-hook-form Controller
|
|
974
|
+
* - Supports input groups with icons/addons
|
|
975
|
+
* - Value transformation (input/output)
|
|
976
|
+
* - Can be used standalone without form
|
|
977
|
+
*
|
|
978
|
+
* @example
|
|
979
|
+
* ```tsx
|
|
980
|
+
* // With react-hook-form
|
|
981
|
+
* <FormInput
|
|
982
|
+
* control={form.control}
|
|
983
|
+
* name="email"
|
|
984
|
+
* type="email"
|
|
985
|
+
* label="Email"
|
|
986
|
+
* placeholder="user@example.com"
|
|
987
|
+
* required
|
|
988
|
+
* />
|
|
989
|
+
*
|
|
990
|
+
* // With icon
|
|
991
|
+
* <FormInput
|
|
992
|
+
* control={form.control}
|
|
993
|
+
* name="search"
|
|
994
|
+
* IconLeft={<SearchIcon />}
|
|
995
|
+
* placeholder="Search..."
|
|
996
|
+
* />
|
|
997
|
+
* ```
|
|
998
|
+
*/
|
|
999
|
+
declare function FormInput<TFieldValues extends FieldValues = FieldValues>({ control, name, label, placeholder, description, helperText, required, disabled, readOnly, type, className, labelClassName, inputClassName, inputGroupClassName, IconLeft, IconRight, AddonLeft, AddonRight, iconLeft, iconRight, addonLeft, addonRight, onValueChange, transform, value, onChange, min, max, step, minLength, maxLength, pattern, autoComplete, autoFocus, inputMode, enterKeyHint, }: FormInputProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1000
|
+
|
|
1001
|
+
interface FormTextareaProps<TFieldValues extends FieldValues = FieldValues> {
|
|
1002
|
+
control?: Control<TFieldValues>;
|
|
1003
|
+
name: FieldPath<TFieldValues> | string;
|
|
1004
|
+
label?: string;
|
|
1005
|
+
placeholder?: string;
|
|
1006
|
+
description?: string;
|
|
1007
|
+
helperText?: string;
|
|
1008
|
+
required?: boolean;
|
|
1009
|
+
disabled?: boolean;
|
|
1010
|
+
readOnly?: boolean;
|
|
1011
|
+
rows?: number;
|
|
1012
|
+
value?: string;
|
|
1013
|
+
onChange?: (value: string) => void;
|
|
1014
|
+
onValueChange?: (value: string) => void;
|
|
1015
|
+
className?: string;
|
|
1016
|
+
labelClassName?: string;
|
|
1017
|
+
textareaClassName?: string;
|
|
1018
|
+
inputGroupClassName?: string;
|
|
1019
|
+
IconLeft?: React$1.ReactNode;
|
|
1020
|
+
IconRight?: React$1.ReactNode;
|
|
1021
|
+
AddonLeft?: React$1.ReactNode;
|
|
1022
|
+
AddonRight?: React$1.ReactNode;
|
|
1023
|
+
iconLeft?: React$1.ReactNode;
|
|
1024
|
+
iconRight?: React$1.ReactNode;
|
|
1025
|
+
addonLeft?: React$1.ReactNode;
|
|
1026
|
+
addonRight?: React$1.ReactNode;
|
|
1027
|
+
minLength?: number;
|
|
1028
|
+
maxLength?: number;
|
|
1029
|
+
autoComplete?: string;
|
|
1030
|
+
autoFocus?: boolean;
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
* FormTextarea - Textarea with react-hook-form integration
|
|
1034
|
+
*
|
|
1035
|
+
* @example
|
|
1036
|
+
* ```tsx
|
|
1037
|
+
* <FormTextarea
|
|
1038
|
+
* control={form.control}
|
|
1039
|
+
* name="bio"
|
|
1040
|
+
* label="Biography"
|
|
1041
|
+
* placeholder="Tell us about yourself..."
|
|
1042
|
+
* rows={5}
|
|
1043
|
+
* />
|
|
1044
|
+
* ```
|
|
1045
|
+
*/
|
|
1046
|
+
declare function FormTextarea<TFieldValues extends FieldValues = FieldValues>({ control, name, label, description, helperText, required, disabled, readOnly, placeholder, value: propValue, onChange: propOnChange, onValueChange, className, labelClassName, textareaClassName, inputGroupClassName, IconLeft, IconRight, AddonLeft, AddonRight, iconLeft, iconRight, addonLeft, addonRight, rows, minLength, maxLength, autoComplete, autoFocus, }: FormTextareaProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1047
|
+
|
|
1048
|
+
interface SelectOption$1 {
|
|
1049
|
+
value: string | number;
|
|
1050
|
+
label: string;
|
|
1051
|
+
disabled?: boolean;
|
|
1052
|
+
}
|
|
1053
|
+
interface SelectOptionGroup {
|
|
1054
|
+
label: string;
|
|
1055
|
+
items: SelectOption$1[];
|
|
1056
|
+
}
|
|
1057
|
+
interface SelectInputProps<TFieldValues extends FieldValues = FieldValues> {
|
|
1058
|
+
control?: Control<TFieldValues>;
|
|
1059
|
+
name: FieldPath<TFieldValues> | string;
|
|
1060
|
+
label?: string;
|
|
1061
|
+
placeholder?: string;
|
|
1062
|
+
description?: string;
|
|
1063
|
+
helperText?: string;
|
|
1064
|
+
required?: boolean;
|
|
1065
|
+
disabled?: boolean;
|
|
1066
|
+
items?: SelectOption$1[];
|
|
1067
|
+
groups?: SelectOptionGroup[];
|
|
1068
|
+
allOption?: SelectOption$1;
|
|
1069
|
+
valueKey?: string;
|
|
1070
|
+
displayKey?: string;
|
|
1071
|
+
value?: string | number;
|
|
1072
|
+
onValueChange?: (value: string) => void;
|
|
1073
|
+
className?: string;
|
|
1074
|
+
labelClassName?: string;
|
|
1075
|
+
triggerClassName?: string;
|
|
1076
|
+
contentClassName?: string;
|
|
1077
|
+
itemClassName?: string;
|
|
1078
|
+
Icon?: React$1.ComponentType<{
|
|
1079
|
+
className?: string;
|
|
1080
|
+
}>;
|
|
1081
|
+
defaultOpen?: boolean;
|
|
1082
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
1083
|
+
sideOffset?: number;
|
|
1084
|
+
align?: "start" | "center" | "end";
|
|
1085
|
+
alignOffset?: number;
|
|
1086
|
+
}
|
|
1087
|
+
/**
|
|
1088
|
+
* SelectInput - Select dropdown with react-hook-form integration
|
|
1089
|
+
*
|
|
1090
|
+
* Features:
|
|
1091
|
+
* - Flat and grouped options
|
|
1092
|
+
* - Custom placeholder
|
|
1093
|
+
* - Optional "All" option (use placeholder text to match)
|
|
1094
|
+
* - Custom styling
|
|
1095
|
+
*
|
|
1096
|
+
* Note: For "All" options with value="", the placeholder will be shown when selected.
|
|
1097
|
+
* Make sure your placeholder text matches what you want to display for "All".
|
|
1098
|
+
*
|
|
1099
|
+
* @example
|
|
1100
|
+
* ```tsx
|
|
1101
|
+
* // Basic usage
|
|
1102
|
+
* <SelectInput
|
|
1103
|
+
* control={form.control}
|
|
1104
|
+
* name="role"
|
|
1105
|
+
* label="Role"
|
|
1106
|
+
* items={[
|
|
1107
|
+
* { value: "admin", label: "Admin" },
|
|
1108
|
+
* { value: "user", label: "User" },
|
|
1109
|
+
* ]}
|
|
1110
|
+
* />
|
|
1111
|
+
*
|
|
1112
|
+
* // With "All" option - placeholder shows when "All" is selected
|
|
1113
|
+
* <SelectInput
|
|
1114
|
+
* name="status"
|
|
1115
|
+
* label="Status"
|
|
1116
|
+
* items={[
|
|
1117
|
+
* { value: "", label: "All" }, // This will show placeholder when selected
|
|
1118
|
+
* { value: "active", label: "Active" },
|
|
1119
|
+
* ]}
|
|
1120
|
+
* placeholder="All" // Make sure this matches the "All" label
|
|
1121
|
+
* />
|
|
1122
|
+
* ```
|
|
1123
|
+
*/
|
|
1124
|
+
declare function SelectInput<TFieldValues extends FieldValues = FieldValues>({ control, items, groups, name, label, placeholder, allOption, description, helperText, required, disabled, className, labelClassName, triggerClassName, contentClassName, itemClassName, Icon, onValueChange, value: propValue, defaultOpen, side, sideOffset, align, alignOffset, }: SelectInputProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1125
|
+
|
|
1126
|
+
interface CheckboxItem {
|
|
1127
|
+
id: string;
|
|
1128
|
+
label: string;
|
|
1129
|
+
disabled?: boolean;
|
|
1130
|
+
}
|
|
1131
|
+
interface CheckboxInputProps<TFieldValues extends FieldValues = FieldValues> {
|
|
1132
|
+
control?: Control<TFieldValues>;
|
|
1133
|
+
name: FieldPath<TFieldValues> | string;
|
|
1134
|
+
label?: string;
|
|
1135
|
+
description?: string;
|
|
1136
|
+
helperText?: string;
|
|
1137
|
+
required?: boolean;
|
|
1138
|
+
disabled?: boolean;
|
|
1139
|
+
items?: CheckboxItem[];
|
|
1140
|
+
value?: string[];
|
|
1141
|
+
onChange?: (values: string[]) => void;
|
|
1142
|
+
onValueChange?: (values: string[]) => void;
|
|
1143
|
+
className?: string;
|
|
1144
|
+
labelClassName?: string;
|
|
1145
|
+
checkboxClassName?: string;
|
|
1146
|
+
itemClassName?: string;
|
|
1147
|
+
itemLabelClassName?: string;
|
|
1148
|
+
}
|
|
1149
|
+
/**
|
|
1150
|
+
* CheckboxInput - Checkbox group with react-hook-form integration
|
|
1151
|
+
*
|
|
1152
|
+
* Features:
|
|
1153
|
+
* - Multiple checkbox items
|
|
1154
|
+
* - Array value support
|
|
1155
|
+
* - Can be used standalone
|
|
1156
|
+
*
|
|
1157
|
+
* @example
|
|
1158
|
+
* ```tsx
|
|
1159
|
+
* <CheckboxInput
|
|
1160
|
+
* control={form.control}
|
|
1161
|
+
* name="features"
|
|
1162
|
+
* label="Features"
|
|
1163
|
+
* items={[
|
|
1164
|
+
* { id: "wifi", label: "WiFi" },
|
|
1165
|
+
* { id: "parking", label: "Parking" },
|
|
1166
|
+
* { id: "pool", label: "Pool" },
|
|
1167
|
+
* ]}
|
|
1168
|
+
* />
|
|
1169
|
+
* ```
|
|
1170
|
+
*/
|
|
1171
|
+
declare function CheckboxInput<TFieldValues extends FieldValues = FieldValues>({ control, name, label, description, helperText, required, disabled, items, value: propValue, onChange: propOnChange, onValueChange, className, labelClassName, checkboxClassName, itemClassName, itemLabelClassName, }: CheckboxInputProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1172
|
+
|
|
1173
|
+
interface RadioChoice {
|
|
1174
|
+
value: string;
|
|
1175
|
+
label: string;
|
|
1176
|
+
disabled?: boolean;
|
|
1177
|
+
}
|
|
1178
|
+
interface RadioInputProps<TFieldValues extends FieldValues = FieldValues> {
|
|
1179
|
+
control?: Control<TFieldValues>;
|
|
1180
|
+
name: FieldPath<TFieldValues> | string;
|
|
1181
|
+
label?: string;
|
|
1182
|
+
description?: string;
|
|
1183
|
+
helperText?: string;
|
|
1184
|
+
required?: boolean;
|
|
1185
|
+
disabled?: boolean;
|
|
1186
|
+
choices?: RadioChoice[];
|
|
1187
|
+
items?: RadioChoice[];
|
|
1188
|
+
orientation?: "vertical" | "horizontal";
|
|
1189
|
+
value?: string;
|
|
1190
|
+
onChange?: (value: string) => void;
|
|
1191
|
+
onValueChange?: (value: string) => void;
|
|
1192
|
+
className?: string;
|
|
1193
|
+
labelClassName?: string;
|
|
1194
|
+
radioGroupClassName?: string;
|
|
1195
|
+
radioItemClassName?: string;
|
|
1196
|
+
radioLabelClassName?: string;
|
|
1197
|
+
}
|
|
1198
|
+
/**
|
|
1199
|
+
* RadioInput - Radio group with react-hook-form integration
|
|
1200
|
+
*
|
|
1201
|
+
* @example
|
|
1202
|
+
* ```tsx
|
|
1203
|
+
* <RadioInput
|
|
1204
|
+
* control={form.control}
|
|
1205
|
+
* name="plan"
|
|
1206
|
+
* label="Select Plan"
|
|
1207
|
+
* choices={[
|
|
1208
|
+
* { value: "free", label: "Free" },
|
|
1209
|
+
* { value: "pro", label: "Pro" },
|
|
1210
|
+
* { value: "enterprise", label: "Enterprise" },
|
|
1211
|
+
* ]}
|
|
1212
|
+
* orientation="horizontal"
|
|
1213
|
+
* />
|
|
1214
|
+
* ```
|
|
1215
|
+
*/
|
|
1216
|
+
declare function RadioInput<TFieldValues extends FieldValues = FieldValues>({ control, name, label, description, helperText, required, disabled, choices, items, orientation, value: propValue, onChange: propOnChange, onValueChange, className, labelClassName, radioGroupClassName, radioItemClassName, radioLabelClassName, }: RadioInputProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1217
|
+
|
|
1218
|
+
interface SwitchInputProps<TFieldValues extends FieldValues = FieldValues> {
|
|
1219
|
+
control?: Control<TFieldValues>;
|
|
1220
|
+
name: FieldPath<TFieldValues> | string;
|
|
1221
|
+
label?: string;
|
|
1222
|
+
description?: string;
|
|
1223
|
+
helperText?: string;
|
|
1224
|
+
required?: boolean;
|
|
1225
|
+
disabled?: boolean;
|
|
1226
|
+
orientation?: "horizontal" | "vertical";
|
|
1227
|
+
value?: boolean;
|
|
1228
|
+
onChange?: (value: boolean) => void;
|
|
1229
|
+
onValueChange?: (value: boolean) => void;
|
|
1230
|
+
className?: string;
|
|
1231
|
+
labelClassName?: string;
|
|
1232
|
+
switchClassName?: string;
|
|
1233
|
+
}
|
|
1234
|
+
/**
|
|
1235
|
+
* SwitchInput - Toggle switch with react-hook-form integration
|
|
1236
|
+
*
|
|
1237
|
+
* @example
|
|
1238
|
+
* ```tsx
|
|
1239
|
+
* <SwitchInput
|
|
1240
|
+
* control={form.control}
|
|
1241
|
+
* name="notifications"
|
|
1242
|
+
* label="Enable notifications"
|
|
1243
|
+
* description="Receive email updates"
|
|
1244
|
+
* />
|
|
1245
|
+
* ```
|
|
1246
|
+
*/
|
|
1247
|
+
declare function SwitchInput<TFieldValues extends FieldValues = FieldValues>({ control, name, label, description, helperText, required, disabled, orientation, value: propValue, onChange: propOnChange, onValueChange, className, labelClassName, switchClassName, }: SwitchInputProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1248
|
+
|
|
1249
|
+
type DateValue = Date | string | null | undefined;
|
|
1250
|
+
interface DateInputProps {
|
|
1251
|
+
control?: Control<FieldValues>;
|
|
1252
|
+
name: string;
|
|
1253
|
+
label?: string;
|
|
1254
|
+
placeholder?: string;
|
|
1255
|
+
description?: string;
|
|
1256
|
+
helperText?: string;
|
|
1257
|
+
required?: boolean;
|
|
1258
|
+
disabled?: boolean;
|
|
1259
|
+
minDate?: DateValue;
|
|
1260
|
+
maxDate?: DateValue;
|
|
1261
|
+
value?: DateValue;
|
|
1262
|
+
onChange?: (date: Date | undefined) => void;
|
|
1263
|
+
onValueChange?: (date: Date | undefined) => void;
|
|
1264
|
+
className?: string;
|
|
1265
|
+
labelClassName?: string;
|
|
1266
|
+
inputClassName?: string;
|
|
1267
|
+
Icon?: React$1.ComponentType<{
|
|
1268
|
+
className?: string;
|
|
1269
|
+
}>;
|
|
1270
|
+
allowClear?: boolean;
|
|
1271
|
+
}
|
|
1272
|
+
/**
|
|
1273
|
+
* DateInput - Date picker with react-hook-form integration
|
|
1274
|
+
*
|
|
1275
|
+
* @example
|
|
1276
|
+
* ```tsx
|
|
1277
|
+
* <DateInput
|
|
1278
|
+
* control={form.control}
|
|
1279
|
+
* name="birthDate"
|
|
1280
|
+
* label="Date of Birth"
|
|
1281
|
+
* minDate="1900-01-01"
|
|
1282
|
+
* maxDate={new Date()}
|
|
1283
|
+
* />
|
|
1284
|
+
* ```
|
|
1285
|
+
*/
|
|
1286
|
+
declare function DateInput({ control, name, label, description, helperText, placeholder, required, disabled, className, labelClassName, inputClassName, minDate, maxDate, onValueChange, value: propValue, onChange: propOnChange, Icon, allowClear, }: DateInputProps): react_jsx_runtime.JSX.Element;
|
|
1287
|
+
|
|
1288
|
+
interface TagInputProps {
|
|
1289
|
+
control?: Control<FieldValues>;
|
|
1290
|
+
name: string;
|
|
1291
|
+
label?: string;
|
|
1292
|
+
placeholder?: string;
|
|
1293
|
+
description?: string;
|
|
1294
|
+
helperText?: string;
|
|
1295
|
+
required?: boolean;
|
|
1296
|
+
disabled?: boolean;
|
|
1297
|
+
maxTags?: number;
|
|
1298
|
+
allowDuplicates?: boolean;
|
|
1299
|
+
delimiter?: string;
|
|
1300
|
+
suggestions?: string[];
|
|
1301
|
+
suggestionLimit?: number;
|
|
1302
|
+
value?: string[];
|
|
1303
|
+
onChange?: (tags: string[]) => void;
|
|
1304
|
+
onValueChange?: (tags: string[]) => void;
|
|
1305
|
+
validateTag?: (tag: string) => boolean;
|
|
1306
|
+
transformTag?: (tag: string) => string;
|
|
1307
|
+
formatTag?: (tag: string) => string;
|
|
1308
|
+
className?: string;
|
|
1309
|
+
labelClassName?: string;
|
|
1310
|
+
inputClassName?: string;
|
|
1311
|
+
[key: string]: unknown;
|
|
1312
|
+
}
|
|
1313
|
+
/**
|
|
1314
|
+
* TagInput - Tag/chip input with react-hook-form integration
|
|
1315
|
+
*
|
|
1316
|
+
* @example
|
|
1317
|
+
* ```tsx
|
|
1318
|
+
* <TagInput
|
|
1319
|
+
* control={form.control}
|
|
1320
|
+
* name="tags"
|
|
1321
|
+
* label="Tags"
|
|
1322
|
+
* placeholder="Add tags..."
|
|
1323
|
+
* maxTags={10}
|
|
1324
|
+
* suggestions={["react", "typescript", "nextjs"]}
|
|
1325
|
+
* />
|
|
1326
|
+
* ```
|
|
1327
|
+
*/
|
|
1328
|
+
declare function TagInput({ control, name, label, description, helperText, placeholder, required, disabled, className, labelClassName, inputClassName, maxTags, allowDuplicates, suggestions, suggestionLimit, value: propValue, onChange: propOnChange, onValueChange, delimiter, validateTag, transformTag, formatTag, ...props }: TagInputProps): react_jsx_runtime.JSX.Element;
|
|
1329
|
+
|
|
1330
|
+
interface TagChoiceItem {
|
|
1331
|
+
value: string;
|
|
1332
|
+
label: string;
|
|
1333
|
+
disabled?: boolean;
|
|
1334
|
+
}
|
|
1335
|
+
interface TagChoiceInputProps {
|
|
1336
|
+
control?: Control<FieldValues>;
|
|
1337
|
+
name?: string;
|
|
1338
|
+
label?: string;
|
|
1339
|
+
placeholder?: string;
|
|
1340
|
+
description?: string;
|
|
1341
|
+
helperText?: string;
|
|
1342
|
+
required?: boolean;
|
|
1343
|
+
disabled?: boolean;
|
|
1344
|
+
items?: TagChoiceItem[];
|
|
1345
|
+
value?: string[];
|
|
1346
|
+
onValueChange?: (values: string[]) => void;
|
|
1347
|
+
className?: string;
|
|
1348
|
+
}
|
|
1349
|
+
/**
|
|
1350
|
+
* TagChoiceInput - Multi-select with tags display
|
|
1351
|
+
*
|
|
1352
|
+
* @example
|
|
1353
|
+
* ```tsx
|
|
1354
|
+
* <TagChoiceInput
|
|
1355
|
+
* control={form.control}
|
|
1356
|
+
* name="categories"
|
|
1357
|
+
* label="Categories"
|
|
1358
|
+
* items={[
|
|
1359
|
+
* { value: "tech", label: "Technology" },
|
|
1360
|
+
* { value: "design", label: "Design" },
|
|
1361
|
+
* ]}
|
|
1362
|
+
* />
|
|
1363
|
+
* ```
|
|
1364
|
+
*/
|
|
1365
|
+
declare function TagChoiceInput({ control, name, label, description, helperText, placeholder, required, disabled, className, items, value: propValue, onValueChange, }: TagChoiceInputProps): react_jsx_runtime.JSX.Element;
|
|
1366
|
+
declare namespace TagChoiceInput {
|
|
1367
|
+
var displayName: string;
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
interface ComboboxOption {
|
|
1371
|
+
value: string;
|
|
1372
|
+
label: string;
|
|
1373
|
+
disabled?: boolean;
|
|
1374
|
+
}
|
|
1375
|
+
interface ComboboxInputProps {
|
|
1376
|
+
control?: Control<FieldValues>;
|
|
1377
|
+
name: string;
|
|
1378
|
+
label?: string;
|
|
1379
|
+
placeholder?: string;
|
|
1380
|
+
searchPlaceholder?: string;
|
|
1381
|
+
emptyText?: string;
|
|
1382
|
+
description?: string;
|
|
1383
|
+
helperText?: string;
|
|
1384
|
+
required?: boolean;
|
|
1385
|
+
disabled?: boolean;
|
|
1386
|
+
items?: ComboboxOption[];
|
|
1387
|
+
value?: string;
|
|
1388
|
+
onChange?: (value: string) => void;
|
|
1389
|
+
onValueChange?: (value: string) => void;
|
|
1390
|
+
className?: string;
|
|
1391
|
+
labelClassName?: string;
|
|
1392
|
+
triggerClassName?: string;
|
|
1393
|
+
renderOption?: (option: ComboboxOption) => ReactNode;
|
|
1394
|
+
}
|
|
1395
|
+
/**
|
|
1396
|
+
* ComboboxInput - Searchable select with react-hook-form integration
|
|
1397
|
+
*
|
|
1398
|
+
* @example
|
|
1399
|
+
* ```tsx
|
|
1400
|
+
* <ComboboxInput
|
|
1401
|
+
* control={form.control}
|
|
1402
|
+
* name="country"
|
|
1403
|
+
* label="Country"
|
|
1404
|
+
* items={[
|
|
1405
|
+
* { value: "us", label: "United States" },
|
|
1406
|
+
* { value: "uk", label: "United Kingdom" },
|
|
1407
|
+
* ]}
|
|
1408
|
+
* searchPlaceholder="Search countries..."
|
|
1409
|
+
* />
|
|
1410
|
+
* ```
|
|
1411
|
+
*/
|
|
1412
|
+
declare function ComboboxInput({ control, name, label, placeholder, searchPlaceholder, emptyText, description, helperText, required, disabled, items, className, labelClassName, triggerClassName, onValueChange, renderOption, value: propValue, onChange: propOnChange, }: ComboboxInputProps): react_jsx_runtime.JSX.Element;
|
|
1413
|
+
|
|
1414
|
+
interface SlugFieldProps {
|
|
1415
|
+
control?: Control<FieldValues>;
|
|
1416
|
+
name: string;
|
|
1417
|
+
label?: string;
|
|
1418
|
+
placeholder?: string;
|
|
1419
|
+
description?: string;
|
|
1420
|
+
helperText?: string;
|
|
1421
|
+
required?: boolean;
|
|
1422
|
+
disabled?: boolean;
|
|
1423
|
+
sourceValue?: string;
|
|
1424
|
+
onGenerate?: (sourceValue: string) => string;
|
|
1425
|
+
value?: string;
|
|
1426
|
+
onChange?: (e: {
|
|
1427
|
+
target: {
|
|
1428
|
+
value: string;
|
|
1429
|
+
};
|
|
1430
|
+
}) => void;
|
|
1431
|
+
onValueChange?: (value: string) => void;
|
|
1432
|
+
className?: string;
|
|
1433
|
+
labelClassName?: string;
|
|
1434
|
+
inputClassName?: string;
|
|
1435
|
+
error?: FieldError;
|
|
1436
|
+
}
|
|
1437
|
+
/**
|
|
1438
|
+
* Generates a URL-friendly slug from a string
|
|
1439
|
+
*/
|
|
1440
|
+
declare function generateSlug$1(text: string | undefined): string;
|
|
1441
|
+
/**
|
|
1442
|
+
* SlugField - URL slug input with auto-generation
|
|
1443
|
+
*
|
|
1444
|
+
* @example
|
|
1445
|
+
* ```tsx
|
|
1446
|
+
* <SlugField
|
|
1447
|
+
* control={form.control}
|
|
1448
|
+
* name="slug"
|
|
1449
|
+
* label="URL Slug"
|
|
1450
|
+
* sourceValue={form.watch("title")}
|
|
1451
|
+
* description="This will be used in the page URL"
|
|
1452
|
+
* required
|
|
1453
|
+
* />
|
|
1454
|
+
* ```
|
|
1455
|
+
*/
|
|
1456
|
+
declare const SlugField: React$1.ForwardRefExoticComponent<SlugFieldProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
1457
|
+
|
|
1458
|
+
interface FormErrorSummaryProps {
|
|
1459
|
+
/** Form errors object from react-hook-form */
|
|
1460
|
+
errors?: Record<string, unknown>;
|
|
1461
|
+
/** Additional CSS classes */
|
|
1462
|
+
className?: string;
|
|
1463
|
+
/** Custom title text */
|
|
1464
|
+
title?: string;
|
|
1465
|
+
}
|
|
1466
|
+
/**
|
|
1467
|
+
* FormErrorSummary - Displays a summary of form validation errors
|
|
1468
|
+
*
|
|
1469
|
+
* Takes react-hook-form errors object and displays all errors in a list.
|
|
1470
|
+
* Automatically flattens nested errors for complex form structures.
|
|
1471
|
+
*/
|
|
1472
|
+
declare function FormErrorSummary({ errors, className, title, }: FormErrorSummaryProps): react_jsx_runtime.JSX.Element | null;
|
|
1473
|
+
|
|
1474
|
+
interface DateRange {
|
|
1475
|
+
from?: Date;
|
|
1476
|
+
to?: Date;
|
|
1477
|
+
}
|
|
1478
|
+
interface DateRangeFilterProps {
|
|
1479
|
+
/** Initial start date */
|
|
1480
|
+
initialStartDate?: Date;
|
|
1481
|
+
/** Initial end date */
|
|
1482
|
+
initialEndDate?: Date;
|
|
1483
|
+
/** Callback when filter is applied (receives startDate, endDate) */
|
|
1484
|
+
onFilter?: (startDate: Date | null, endDate: Date | null) => void;
|
|
1485
|
+
/** Callback when filter is cleared */
|
|
1486
|
+
onClear?: () => void;
|
|
1487
|
+
/** Additional classes for the container */
|
|
1488
|
+
className?: string;
|
|
1489
|
+
/** Additional classes for trigger button */
|
|
1490
|
+
buttonClassName?: string;
|
|
1491
|
+
/** Placeholder text when no date selected */
|
|
1492
|
+
placeholder?: string;
|
|
1493
|
+
/** Minimum selectable date */
|
|
1494
|
+
minDate?: Date;
|
|
1495
|
+
/** Maximum selectable date */
|
|
1496
|
+
maxDate?: Date;
|
|
1497
|
+
/** Align popover to the right */
|
|
1498
|
+
alignRight?: boolean;
|
|
1499
|
+
/** Number of months to display */
|
|
1500
|
+
numberOfMonths?: number;
|
|
1501
|
+
}
|
|
1502
|
+
/**
|
|
1503
|
+
* DateRangeFilter - A date range picker for filtering
|
|
1504
|
+
*
|
|
1505
|
+
* Features:
|
|
1506
|
+
* - Only applies filter when explicitly submitted
|
|
1507
|
+
* - Supports clearing filters
|
|
1508
|
+
* - Uses Popover to show calendar on click
|
|
1509
|
+
* - Configurable min/max dates
|
|
1510
|
+
*/
|
|
1511
|
+
declare function DateRangeFilter({ initialStartDate, initialEndDate, onFilter, onClear, className, buttonClassName, placeholder, minDate, maxDate, alignRight, numberOfMonths, }: DateRangeFilterProps): react_jsx_runtime.JSX.Element;
|
|
1512
|
+
|
|
1513
|
+
interface DateRangeValue {
|
|
1514
|
+
from?: Date | string;
|
|
1515
|
+
to?: Date | string;
|
|
1516
|
+
}
|
|
1517
|
+
interface DateRangeInputProps {
|
|
1518
|
+
/** React Hook Form control */
|
|
1519
|
+
control?: Control<any>;
|
|
1520
|
+
/** Field name for form registration */
|
|
1521
|
+
name?: string;
|
|
1522
|
+
/** Field label */
|
|
1523
|
+
label?: string;
|
|
1524
|
+
/** Description text below the input */
|
|
1525
|
+
description?: string;
|
|
1526
|
+
/** Placeholder text */
|
|
1527
|
+
placeholder?: string;
|
|
1528
|
+
/** Whether the field is required */
|
|
1529
|
+
required?: boolean;
|
|
1530
|
+
/** Whether the field is disabled */
|
|
1531
|
+
disabled?: boolean;
|
|
1532
|
+
/** Additional className for the wrapper */
|
|
1533
|
+
className?: string;
|
|
1534
|
+
/** Additional className for the label */
|
|
1535
|
+
labelClassName?: string;
|
|
1536
|
+
/** Additional className for the button */
|
|
1537
|
+
buttonClassName?: string;
|
|
1538
|
+
/** Additional className for the calendar popover */
|
|
1539
|
+
calendarClassName?: string;
|
|
1540
|
+
/** Minimum selectable date */
|
|
1541
|
+
minDate?: Date;
|
|
1542
|
+
/** Maximum selectable date */
|
|
1543
|
+
maxDate?: Date;
|
|
1544
|
+
/** Array of disabled dates */
|
|
1545
|
+
disabledDates?: Date[];
|
|
1546
|
+
/** Array of disabled days (0-6, where 0 is Sunday) */
|
|
1547
|
+
disabledDays?: number[];
|
|
1548
|
+
/** Callback when value changes */
|
|
1549
|
+
onValueChange?: (range: DateRangeValue) => void;
|
|
1550
|
+
/** Custom validation function for date range */
|
|
1551
|
+
validateDateRange?: (range: DateRangeValue) => boolean;
|
|
1552
|
+
/** Function to clear form errors */
|
|
1553
|
+
clearErrors?: (name: string) => void;
|
|
1554
|
+
/** Custom description component */
|
|
1555
|
+
descriptionComponent?: ReactNode;
|
|
1556
|
+
/** Whether to show clear button */
|
|
1557
|
+
allowClear?: boolean;
|
|
1558
|
+
/** Whether to show badge with date range */
|
|
1559
|
+
showBadge?: boolean;
|
|
1560
|
+
/** Custom icon component */
|
|
1561
|
+
Icon?: LucideIcon;
|
|
1562
|
+
/** Transform functions for input/output */
|
|
1563
|
+
transform?: {
|
|
1564
|
+
input: (value: any) => DateRangeValue;
|
|
1565
|
+
output: (range: DateRangeValue) => any;
|
|
1566
|
+
};
|
|
1567
|
+
}
|
|
1568
|
+
/**
|
|
1569
|
+
* DateRangeInput - Date range picker with react-hook-form integration
|
|
1570
|
+
*
|
|
1571
|
+
* @example
|
|
1572
|
+
* ```tsx
|
|
1573
|
+
* <DateRangeInput
|
|
1574
|
+
* control={control}
|
|
1575
|
+
* name="dateRange"
|
|
1576
|
+
* label="Select Dates"
|
|
1577
|
+
* placeholder="Pick a date range"
|
|
1578
|
+
* />
|
|
1579
|
+
* ```
|
|
1580
|
+
*/
|
|
1581
|
+
declare function DateRangeInput({ control, name, label, description, placeholder, required, disabled, className, labelClassName, buttonClassName, calendarClassName, minDate, maxDate, disabledDates, disabledDays, onValueChange, validateDateRange, clearErrors, descriptionComponent, allowClear, showBadge, Icon, transform, }: DateRangeInputProps): react_jsx_runtime.JSX.Element;
|
|
1582
|
+
|
|
1583
|
+
interface SearchRootProps {
|
|
1584
|
+
children: ReactNode;
|
|
1585
|
+
hook: UseBaseSearchReturn;
|
|
1586
|
+
className?: string;
|
|
1587
|
+
}
|
|
1588
|
+
/**
|
|
1589
|
+
* Root search component that provides context to all child components
|
|
1590
|
+
*
|
|
1591
|
+
* @example
|
|
1592
|
+
* <Search.Root hook={useMySearch()}>
|
|
1593
|
+
* <Search.Input />
|
|
1594
|
+
* <Search.Filters />
|
|
1595
|
+
* <Search.Actions />
|
|
1596
|
+
* </Search.Root>
|
|
1597
|
+
*/
|
|
1598
|
+
declare function SearchRoot({ children, hook, className }: SearchRootProps): react_jsx_runtime.JSX.Element;
|
|
1599
|
+
|
|
1600
|
+
interface SearchInputProps {
|
|
1601
|
+
placeholder?: string;
|
|
1602
|
+
className?: string;
|
|
1603
|
+
disabled?: boolean;
|
|
1604
|
+
showIcon?: boolean;
|
|
1605
|
+
showClearButton?: boolean;
|
|
1606
|
+
onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
|
|
1607
|
+
}
|
|
1608
|
+
/**
|
|
1609
|
+
* Search input component using modern shadcn InputGroup pattern
|
|
1610
|
+
*
|
|
1611
|
+
* @example
|
|
1612
|
+
* <Search.Input placeholder="Search..." />
|
|
1613
|
+
*/
|
|
1614
|
+
declare function SearchInput({ placeholder, className, disabled, showIcon, showClearButton, onKeyDown, ...props }: SearchInputProps): react_jsx_runtime.JSX.Element;
|
|
1615
|
+
|
|
1616
|
+
interface SearchTypeOption {
|
|
1617
|
+
value: string;
|
|
1618
|
+
label: string;
|
|
1619
|
+
}
|
|
1620
|
+
interface SearchTypeInputProps {
|
|
1621
|
+
placeholder?: string;
|
|
1622
|
+
className?: string;
|
|
1623
|
+
disabled?: boolean;
|
|
1624
|
+
showIcon?: boolean;
|
|
1625
|
+
showClearButton?: boolean;
|
|
1626
|
+
searchTypeOptions?: SearchTypeOption[];
|
|
1627
|
+
onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
|
|
1628
|
+
}
|
|
1629
|
+
/**
|
|
1630
|
+
* Search input component with type selector using InputGroup pattern
|
|
1631
|
+
*
|
|
1632
|
+
* @example
|
|
1633
|
+
* <Search.TypeInput
|
|
1634
|
+
* placeholder="Search..."
|
|
1635
|
+
* searchTypeOptions={[
|
|
1636
|
+
* { value: "_id", label: "ID" },
|
|
1637
|
+
* { value: "customerPhone", label: "Phone" },
|
|
1638
|
+
* { value: "customerEmail", label: "Email" },
|
|
1639
|
+
* ]}
|
|
1640
|
+
* />
|
|
1641
|
+
*/
|
|
1642
|
+
declare function SearchTypeInput({ placeholder, className, disabled, showIcon, showClearButton, searchTypeOptions, onKeyDown, ...props }: SearchTypeInputProps): react_jsx_runtime.JSX.Element;
|
|
1643
|
+
|
|
1644
|
+
interface SearchFiltersProps {
|
|
1645
|
+
children: ReactNode;
|
|
1646
|
+
title?: string;
|
|
1647
|
+
description?: string;
|
|
1648
|
+
disabled?: boolean;
|
|
1649
|
+
className?: string;
|
|
1650
|
+
}
|
|
1651
|
+
/**
|
|
1652
|
+
* Search filters component with mobile sheet support
|
|
1653
|
+
*
|
|
1654
|
+
* @example
|
|
1655
|
+
* <Search.Filters>
|
|
1656
|
+
* <TagChoiceInput label="Category" ... />
|
|
1657
|
+
* <SelectInput label="Status" ... />
|
|
1658
|
+
* </Search.Filters>
|
|
1659
|
+
*/
|
|
1660
|
+
declare function SearchFilters({ children, title, description, disabled, className, }: SearchFiltersProps): react_jsx_runtime.JSX.Element;
|
|
1661
|
+
|
|
1662
|
+
interface SearchActionsProps {
|
|
1663
|
+
showSearchButton?: boolean;
|
|
1664
|
+
showClearButton?: boolean;
|
|
1665
|
+
searchButtonText?: string;
|
|
1666
|
+
clearButtonText?: string;
|
|
1667
|
+
disabled?: boolean;
|
|
1668
|
+
className?: string;
|
|
1669
|
+
}
|
|
1670
|
+
/**
|
|
1671
|
+
* Search action buttons
|
|
1672
|
+
*/
|
|
1673
|
+
declare function SearchActions({ showSearchButton, showClearButton, searchButtonText, clearButtonText, disabled, className, }: SearchActionsProps): react_jsx_runtime.JSX.Element;
|
|
1674
|
+
|
|
1675
|
+
interface SearchContainerProps {
|
|
1676
|
+
children: ReactNode;
|
|
1677
|
+
className?: string;
|
|
1678
|
+
}
|
|
1679
|
+
/**
|
|
1680
|
+
* Container for search input and action buttons
|
|
1681
|
+
* Provides responsive layout
|
|
1682
|
+
*
|
|
1683
|
+
* @example
|
|
1684
|
+
* <Search.Container>
|
|
1685
|
+
* <Search.Input />
|
|
1686
|
+
* <Search.Filters />
|
|
1687
|
+
* <Search.Actions />
|
|
1688
|
+
* </Search.Container>
|
|
1689
|
+
*/
|
|
1690
|
+
declare function SearchContainer({ children, className }: SearchContainerProps): react_jsx_runtime.JSX.Element;
|
|
1691
|
+
|
|
1692
|
+
interface SearchFilterActionsProps {
|
|
1693
|
+
onClose?: () => void;
|
|
1694
|
+
disabled?: boolean;
|
|
1695
|
+
}
|
|
1696
|
+
/**
|
|
1697
|
+
* Filter actions component (Reset/Apply buttons)
|
|
1698
|
+
* Used inside filter popovers/sheets
|
|
1699
|
+
*/
|
|
1700
|
+
declare function SearchFilterActions({ onClose, disabled }: SearchFilterActionsProps): react_jsx_runtime.JSX.Element;
|
|
1701
|
+
|
|
1702
|
+
interface SearchProviderProps {
|
|
1703
|
+
children: ReactNode;
|
|
1704
|
+
value: UseBaseSearchReturn;
|
|
1705
|
+
}
|
|
1706
|
+
declare function SearchProvider({ children, value }: SearchProviderProps): react_jsx_runtime.JSX.Element;
|
|
1707
|
+
declare function useSearch(): UseBaseSearchReturn;
|
|
1708
|
+
|
|
1709
|
+
/**
|
|
1710
|
+
* Composable Search Component System
|
|
1711
|
+
*
|
|
1712
|
+
* @example
|
|
1713
|
+
* ```tsx
|
|
1714
|
+
* import { Search } from "@classytic/fluid";
|
|
1715
|
+
*
|
|
1716
|
+
* function MySearch() {
|
|
1717
|
+
* const searchHook = useMySearch();
|
|
1718
|
+
*
|
|
1719
|
+
* return (
|
|
1720
|
+
* <Search.Root hook={searchHook}>
|
|
1721
|
+
* <Search.Container>
|
|
1722
|
+
* <Search.Input placeholder="Search..." />
|
|
1723
|
+
* <Search.Filters>
|
|
1724
|
+
* <SelectInput ... />
|
|
1725
|
+
* <TagChoiceInput ... />
|
|
1726
|
+
* </Search.Filters>
|
|
1727
|
+
* <Search.Actions />
|
|
1728
|
+
* </Search.Container>
|
|
1729
|
+
* </Search.Root>
|
|
1730
|
+
* );
|
|
1731
|
+
* }
|
|
1732
|
+
* ```
|
|
1733
|
+
*/
|
|
1734
|
+
|
|
1735
|
+
type index_SearchActionsProps = SearchActionsProps;
|
|
1736
|
+
type index_SearchContainerProps = SearchContainerProps;
|
|
1737
|
+
type index_SearchFilterActionsProps = SearchFilterActionsProps;
|
|
1738
|
+
type index_SearchFiltersProps = SearchFiltersProps;
|
|
1739
|
+
type index_SearchInputProps = SearchInputProps;
|
|
1740
|
+
declare const index_SearchProvider: typeof SearchProvider;
|
|
1741
|
+
type index_SearchProviderProps = SearchProviderProps;
|
|
1742
|
+
type index_SearchRootProps = SearchRootProps;
|
|
1743
|
+
type index_SearchTypeInputProps = SearchTypeInputProps;
|
|
1744
|
+
type index_SearchTypeOption = SearchTypeOption;
|
|
1745
|
+
declare const index_useSearch: typeof useSearch;
|
|
1746
|
+
declare namespace index {
|
|
1747
|
+
export { SearchActions as Actions, SearchContainer as Container, SearchFilterActions as FilterActions, SearchFilters as Filters, SearchInput as Input, SearchRoot as Root, type index_SearchActionsProps as SearchActionsProps, type index_SearchContainerProps as SearchContainerProps, type index_SearchFilterActionsProps as SearchFilterActionsProps, type index_SearchFiltersProps as SearchFiltersProps, type index_SearchInputProps as SearchInputProps, index_SearchProvider as SearchProvider, type index_SearchProviderProps as SearchProviderProps, type index_SearchRootProps as SearchRootProps, type index_SearchTypeInputProps as SearchTypeInputProps, type index_SearchTypeOption as SearchTypeOption, SearchTypeInput as TypeInput, index_useSearch as useSearch };
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
interface FieldRootProps {
|
|
1751
|
+
children: ReactNode;
|
|
1752
|
+
className?: string;
|
|
1753
|
+
disabled?: boolean;
|
|
1754
|
+
invalid?: boolean;
|
|
1755
|
+
}
|
|
1756
|
+
interface FieldLabelProps {
|
|
1757
|
+
children: ReactNode;
|
|
1758
|
+
className?: string;
|
|
1759
|
+
}
|
|
1760
|
+
interface FieldErrorProps {
|
|
1761
|
+
children?: ReactNode;
|
|
1762
|
+
className?: string;
|
|
1763
|
+
}
|
|
1764
|
+
interface FieldIconProps {
|
|
1765
|
+
children: ReactNode;
|
|
1766
|
+
className?: string;
|
|
1767
|
+
}
|
|
1768
|
+
declare const Field: {
|
|
1769
|
+
Root: React__default.NamedExoticComponent<FieldRootProps>;
|
|
1770
|
+
Label: React__default.NamedExoticComponent<FieldLabelProps>;
|
|
1771
|
+
Error: React__default.NamedExoticComponent<FieldErrorProps>;
|
|
1772
|
+
Icon: React__default.NamedExoticComponent<FieldIconProps>;
|
|
1773
|
+
};
|
|
1774
|
+
|
|
1775
|
+
interface CompactInputProps<T extends FieldValues = FieldValues> extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange"> {
|
|
1776
|
+
control?: Control<T>;
|
|
1777
|
+
name?: Path<T>;
|
|
1778
|
+
description?: string;
|
|
1779
|
+
required?: boolean;
|
|
1780
|
+
label?: string;
|
|
1781
|
+
placeholder?: string;
|
|
1782
|
+
disabled?: boolean;
|
|
1783
|
+
type?: string;
|
|
1784
|
+
AddonLeft?: ReactNode;
|
|
1785
|
+
AddonRight?: ReactNode;
|
|
1786
|
+
inputClassName?: string;
|
|
1787
|
+
onValueChange?: (value: string) => void;
|
|
1788
|
+
value?: string;
|
|
1789
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
1790
|
+
error?: string;
|
|
1791
|
+
}
|
|
1792
|
+
/**
|
|
1793
|
+
* CompactInput - Enhanced form input with InputGroup support
|
|
1794
|
+
*
|
|
1795
|
+
* Features:
|
|
1796
|
+
* - Floating label design
|
|
1797
|
+
* - InputGroup support with icons, buttons, and text addons
|
|
1798
|
+
* - Controller integration for react-hook-form
|
|
1799
|
+
* - Direct usage without form
|
|
1800
|
+
*/
|
|
1801
|
+
declare const CompactInput: React$1.ForwardRefExoticComponent<CompactInputProps<FieldValues> & React$1.RefAttributes<HTMLInputElement>>;
|
|
1802
|
+
|
|
1803
|
+
interface CompactTextareaProps<T extends FieldValues = FieldValues> extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "onChange"> {
|
|
1804
|
+
control?: Control<T>;
|
|
1805
|
+
name?: Path<T>;
|
|
1806
|
+
description?: string;
|
|
1807
|
+
required?: boolean;
|
|
1808
|
+
label?: string;
|
|
1809
|
+
placeholder?: string;
|
|
1810
|
+
disabled?: boolean;
|
|
1811
|
+
rows?: number;
|
|
1812
|
+
AddonLeft?: ReactNode;
|
|
1813
|
+
AddonRight?: ReactNode;
|
|
1814
|
+
inputClassName?: string;
|
|
1815
|
+
onValueChange?: (value: string) => void;
|
|
1816
|
+
value?: string;
|
|
1817
|
+
onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
|
|
1818
|
+
error?: string;
|
|
1819
|
+
}
|
|
1820
|
+
/**
|
|
1821
|
+
* CompactTextarea - Enhanced textarea with InputGroup support
|
|
1822
|
+
*
|
|
1823
|
+
* Features:
|
|
1824
|
+
* - Floating label design
|
|
1825
|
+
* - InputGroup support with addons
|
|
1826
|
+
* - Character counter with maxLength
|
|
1827
|
+
* - Controller integration for react-hook-form
|
|
1828
|
+
* - Direct usage without form
|
|
1829
|
+
*/
|
|
1830
|
+
declare const CompactTextarea: React$1.ForwardRefExoticComponent<CompactTextareaProps<FieldValues> & React$1.RefAttributes<HTMLTextAreaElement>>;
|
|
1831
|
+
|
|
1832
|
+
interface SelectOption {
|
|
1833
|
+
value: string;
|
|
1834
|
+
label: string;
|
|
1835
|
+
}
|
|
1836
|
+
interface CompactSelectProps<T extends FieldValues = FieldValues> {
|
|
1837
|
+
control?: Control<T>;
|
|
1838
|
+
name?: Path<T>;
|
|
1839
|
+
description?: string;
|
|
1840
|
+
required?: boolean;
|
|
1841
|
+
label?: string;
|
|
1842
|
+
placeholder?: string;
|
|
1843
|
+
disabled?: boolean;
|
|
1844
|
+
items?: SelectOption[];
|
|
1845
|
+
className?: string;
|
|
1846
|
+
onValueChange?: (value: string) => void;
|
|
1847
|
+
value?: string;
|
|
1848
|
+
error?: string;
|
|
1849
|
+
}
|
|
1850
|
+
/**
|
|
1851
|
+
* CompactSelect - Simple, clean select dropdown
|
|
1852
|
+
*
|
|
1853
|
+
* @example
|
|
1854
|
+
* <CompactSelect
|
|
1855
|
+
* label="Status"
|
|
1856
|
+
* items={[
|
|
1857
|
+
* { value: "active", label: "Active" },
|
|
1858
|
+
* { value: "inactive", label: "Inactive" }
|
|
1859
|
+
* ]}
|
|
1860
|
+
* />
|
|
1861
|
+
*/
|
|
1862
|
+
declare const CompactSelect: React$1.ForwardRefExoticComponent<CompactSelectProps<FieldValues> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1863
|
+
|
|
1864
|
+
interface CompactNumberInputProps<T extends FieldValues = FieldValues> {
|
|
1865
|
+
control?: Control<T>;
|
|
1866
|
+
name?: Path<T>;
|
|
1867
|
+
description?: string;
|
|
1868
|
+
required?: boolean;
|
|
1869
|
+
label?: string;
|
|
1870
|
+
placeholder?: string;
|
|
1871
|
+
disabled?: boolean;
|
|
1872
|
+
min?: number;
|
|
1873
|
+
max?: number;
|
|
1874
|
+
step?: number;
|
|
1875
|
+
prefix?: ReactNode;
|
|
1876
|
+
suffix?: ReactNode;
|
|
1877
|
+
showButtons?: boolean;
|
|
1878
|
+
buttonVariant?: "ghost" | "outline" | "default";
|
|
1879
|
+
className?: string;
|
|
1880
|
+
inputClassName?: string;
|
|
1881
|
+
labelClassName?: string;
|
|
1882
|
+
containerClassName?: string;
|
|
1883
|
+
onValueChange?: (value: number | string) => void;
|
|
1884
|
+
value?: number | string;
|
|
1885
|
+
defaultValue?: number | string;
|
|
1886
|
+
onChange?: (value: number | string) => void;
|
|
1887
|
+
error?: string;
|
|
1888
|
+
}
|
|
1889
|
+
/**
|
|
1890
|
+
* CompactNumberInput - A space-efficient number input with optional increment/decrement buttons
|
|
1891
|
+
*
|
|
1892
|
+
* Features:
|
|
1893
|
+
* - Floating label design
|
|
1894
|
+
* - Optional increment/decrement buttons
|
|
1895
|
+
* - Support for min/max/step values
|
|
1896
|
+
* - Prefix/suffix support
|
|
1897
|
+
* - Form integration via control prop
|
|
1898
|
+
* - Direct usage without form
|
|
1899
|
+
*/
|
|
1900
|
+
declare const CompactNumberInput: React$1.ForwardRefExoticComponent<CompactNumberInputProps<FieldValues> & React$1.RefAttributes<HTMLInputElement>>;
|
|
1901
|
+
|
|
1902
|
+
interface Choice {
|
|
1903
|
+
value: string;
|
|
1904
|
+
label: string;
|
|
1905
|
+
}
|
|
1906
|
+
interface CompactTagChoiceProps<T extends FieldValues = FieldValues> {
|
|
1907
|
+
control?: Control<T>;
|
|
1908
|
+
name?: Path<T>;
|
|
1909
|
+
label?: string;
|
|
1910
|
+
description?: string;
|
|
1911
|
+
placeholder?: string;
|
|
1912
|
+
required?: boolean;
|
|
1913
|
+
disabled?: boolean;
|
|
1914
|
+
choices?: Choice[];
|
|
1915
|
+
maxSelections?: number;
|
|
1916
|
+
className?: string;
|
|
1917
|
+
containerClassName?: string;
|
|
1918
|
+
labelClassName?: string;
|
|
1919
|
+
inputClassName?: string;
|
|
1920
|
+
value?: string[];
|
|
1921
|
+
onChange?: (value: string[]) => void;
|
|
1922
|
+
onValueChange?: (value: string[]) => void;
|
|
1923
|
+
error?: string;
|
|
1924
|
+
}
|
|
1925
|
+
/**
|
|
1926
|
+
* CompactTagChoice - A compact tag selection input
|
|
1927
|
+
*
|
|
1928
|
+
* Features:
|
|
1929
|
+
* - Multi-select tag interface
|
|
1930
|
+
* - Maximum selection limit
|
|
1931
|
+
* - Popover for selecting options
|
|
1932
|
+
* - Form integration via control prop
|
|
1933
|
+
* - Direct usage without form
|
|
1934
|
+
*/
|
|
1935
|
+
declare const CompactTagChoice: React$1.ForwardRefExoticComponent<CompactTagChoiceProps<FieldValues> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1936
|
+
|
|
1937
|
+
/**
|
|
1938
|
+
* Generates a URL-friendly slug from a string
|
|
1939
|
+
*/
|
|
1940
|
+
declare function generateSlug(text: string): string;
|
|
1941
|
+
interface CompactSlugFieldProps<T extends FieldValues = FieldValues> {
|
|
1942
|
+
control?: Control<T>;
|
|
1943
|
+
name?: Path<T>;
|
|
1944
|
+
description?: string;
|
|
1945
|
+
required?: boolean;
|
|
1946
|
+
label?: string;
|
|
1947
|
+
placeholder?: string;
|
|
1948
|
+
disabled?: boolean;
|
|
1949
|
+
icon?: ReactNode;
|
|
1950
|
+
sourceValue?: string;
|
|
1951
|
+
onGenerate?: (source: string) => string;
|
|
1952
|
+
className?: string;
|
|
1953
|
+
inputClassName?: string;
|
|
1954
|
+
onValueChange?: (value: string) => void;
|
|
1955
|
+
value?: string;
|
|
1956
|
+
onChange?: (e: ChangeEvent<HTMLInputElement> | {
|
|
1957
|
+
target: {
|
|
1958
|
+
value: string;
|
|
1959
|
+
};
|
|
1960
|
+
}) => void;
|
|
1961
|
+
error?: string;
|
|
1962
|
+
}
|
|
1963
|
+
/**
|
|
1964
|
+
* CompactSlugField - Compact slug input with auto-generation
|
|
1965
|
+
*
|
|
1966
|
+
* Features:
|
|
1967
|
+
* - Compact design with floating label
|
|
1968
|
+
* - Auto-generate slug from source field
|
|
1969
|
+
* - Manual editing support
|
|
1970
|
+
* - InputGroup with generate button
|
|
1971
|
+
* - Form integration via control prop
|
|
1972
|
+
*/
|
|
1973
|
+
declare const CompactSlugField: React$1.ForwardRefExoticComponent<CompactSlugFieldProps<FieldValues> & React$1.RefAttributes<HTMLInputElement>>;
|
|
1974
|
+
|
|
1975
|
+
interface CalendarEvent {
|
|
1976
|
+
id: string;
|
|
1977
|
+
date: Date | string;
|
|
1978
|
+
[key: string]: any;
|
|
1979
|
+
}
|
|
1980
|
+
interface EventCalendarProps<T extends CalendarEvent> {
|
|
1981
|
+
/** Events to display on the calendar */
|
|
1982
|
+
events?: T[];
|
|
1983
|
+
/** Currently selected date */
|
|
1984
|
+
selectedDate?: Date | null;
|
|
1985
|
+
/** Callback when a date is selected */
|
|
1986
|
+
onDateSelect?: (date: Date, events: T[]) => void;
|
|
1987
|
+
/** Callback when month changes */
|
|
1988
|
+
onMonthChange?: (date: Date) => void;
|
|
1989
|
+
/** Initial month to display */
|
|
1990
|
+
initialMonth?: Date;
|
|
1991
|
+
/** Custom render for day cell content */
|
|
1992
|
+
renderDayContent?: (date: Date, events: T[], isSelected: boolean) => ReactNode;
|
|
1993
|
+
/** Custom render for event indicators */
|
|
1994
|
+
renderEventIndicators?: (events: T[]) => ReactNode;
|
|
1995
|
+
/** Get events for a specific date (custom filtering) */
|
|
1996
|
+
getEventsForDate?: (date: Date, events: T[]) => T[];
|
|
1997
|
+
/** Additional class names */
|
|
1998
|
+
className?: string;
|
|
1999
|
+
/** Header content (left side) */
|
|
2000
|
+
headerLeft?: ReactNode;
|
|
2001
|
+
/** Header content (right side, before navigation) */
|
|
2002
|
+
headerRight?: ReactNode;
|
|
2003
|
+
/** Minimum cell height */
|
|
2004
|
+
minCellHeight?: string;
|
|
2005
|
+
/** Show week numbers */
|
|
2006
|
+
showWeekNumbers?: boolean;
|
|
2007
|
+
/** Loading state */
|
|
2008
|
+
isLoading?: boolean;
|
|
2009
|
+
}
|
|
2010
|
+
/**
|
|
2011
|
+
* EventCalendar - A reusable calendar component for displaying events
|
|
2012
|
+
*
|
|
2013
|
+
* Can be used for attendance tracking, scheduling, etc.
|
|
2014
|
+
*/
|
|
2015
|
+
declare function EventCalendar<T extends CalendarEvent>({ events, selectedDate: controlledSelectedDate, onDateSelect, onMonthChange, initialMonth, renderDayContent, renderEventIndicators, getEventsForDate, className, headerLeft, headerRight, minCellHeight, showWeekNumbers, isLoading, }: EventCalendarProps<T>): react_jsx_runtime.JSX.Element;
|
|
2016
|
+
/**
|
|
2017
|
+
* CalendarDayDetail - Side panel component for showing selected day details
|
|
2018
|
+
*/
|
|
2019
|
+
interface CalendarDayDetailProps {
|
|
2020
|
+
date: Date | null;
|
|
2021
|
+
title?: string;
|
|
2022
|
+
emptyMessage?: string;
|
|
2023
|
+
children?: ReactNode;
|
|
2024
|
+
className?: string;
|
|
2025
|
+
}
|
|
2026
|
+
declare function CalendarDayDetail({ date, title, emptyMessage, children, className, }: CalendarDayDetailProps): react_jsx_runtime.JSX.Element;
|
|
2027
|
+
/**
|
|
2028
|
+
* CalendarWithDetail - Calendar with integrated detail panel
|
|
2029
|
+
*/
|
|
2030
|
+
interface CalendarWithDetailProps<T extends CalendarEvent> extends Omit<EventCalendarProps<T>, "onDateSelect"> {
|
|
2031
|
+
/** Render detail panel content */
|
|
2032
|
+
renderDetail?: (date: Date, events: T[]) => ReactNode;
|
|
2033
|
+
/** Detail panel title when no date selected */
|
|
2034
|
+
detailTitle?: string;
|
|
2035
|
+
/** Detail panel empty message */
|
|
2036
|
+
detailEmptyMessage?: string;
|
|
2037
|
+
/** Layout direction */
|
|
2038
|
+
layout?: "horizontal" | "vertical";
|
|
2039
|
+
/** Detail panel position */
|
|
2040
|
+
detailPosition?: "left" | "right" | "top" | "bottom";
|
|
2041
|
+
/** Callback when date is selected */
|
|
2042
|
+
onDateSelect?: (date: Date, events: T[]) => void;
|
|
2043
|
+
}
|
|
2044
|
+
declare function CalendarWithDetail<T extends CalendarEvent>({ renderDetail, detailTitle, detailEmptyMessage, layout, detailPosition, onDateSelect, ...calendarProps }: CalendarWithDetailProps<T>): react_jsx_runtime.JSX.Element;
|
|
2045
|
+
|
|
2046
|
+
export { AccordionSection, type AccordionSectionProps, ActionDropdown, type ActionDropdownItem, type ActionDropdownProps, ActionTooltip, type ActionTooltipProps, ApiPagination, type ApiPaginationData, type ApiPaginationProps, ButtonTooltip, type ButtonTooltipProps, CalendarDayDetail, type CalendarDayDetailProps, type CalendarEvent, CalendarWithDetail, type CalendarWithDetailProps, CardWrapper, type CardWrapperProps, CheckboxDropdown, type CheckboxDropdownProps, CheckboxInput, type CheckboxInputProps, type CheckboxItem, ClientSubmitButton, type ClientSubmitButtonProps, CollapsibleCard, type CollapsibleCardProps, CollapsibleSection, type CollapsibleSectionProps, CollapsibleWrapper, type CollapsibleWrapperProps, ComboboxInput, type ComboboxInputProps, type ComboboxOption, CompactInput, type CompactInputProps, CompactNumberInput, type CompactNumberInputProps, CompactSelect, type CompactSelectProps, CompactSlugField, type CompactSlugFieldProps, CompactTagChoice, type CompactTagChoiceProps, CompactTextarea, type CompactTextareaProps, ConfirmDialog, type ConfirmDialogProps, ConfirmSheet, type ConfirmSheetProps, CopyButton, type CopyButtonProps, CopyCodeBlock, type CopyCodeBlockProps, CopyText, type CopyTextProps, CustomPagination, type CustomPaginationProps, DataCard, type DataCardProps, DataTable, type DataTablePaginationProps, type DataTableProps, DateInput, type DateInputProps, type DateRange, DateRangeFilter, type DateRangeFilterProps, DateRangeInput, type DateRangeInputProps, type DateRangeValue, DeleteConfirmDialog, type DeleteConfirmDialogProps, DialogWrapper, type DialogWrapperProps, DisplayHeading, type DisplayHeadingProps, DraggableCard, type DraggableCardProps, DropdownWrapper, type DropdownWrapperProps, type DynamicTabItem, DynamicTabs, type DynamicTabsProps, ErrorState, ErrorStateInline, type ErrorStateInlineProps, type ErrorStateProps, EventCalendar, type EventCalendarProps, FacebookIcon, FaqAccordion, type FaqAccordionProps, type FaqItem, FeatureItem, type FeatureItemProps, Field, type FilterConfig, FormDialog, type FormDialogProps, FormErrorSummary, type FormErrorSummaryProps, FormInput, type FormInputProps, FormSheet, type FormSheetProps, FormTextarea, type FormTextareaProps, GoogleIcon, IconItemMedia, type IconItemMediaProps, IconTooltip, type IconTooltipProps, InfoAlert, type InfoAlertProps, InfoRow, type InfoRowProps, InfoTooltip, type InfoTooltipProps, InstagramIcon, LoadingCard, type LoadingCardProps, ModeToggle, PaginationInfo, type PaginationInfoProps, PhoneInput, type PhoneInputProps, Pill, PillAvatar, PillAvatarGroup, type PillAvatarGroupProps, type PillAvatarProps, PillButton, type PillButtonProps, PillDelta, type PillDeltaProps, PillIcon, type PillIconProps, PillIndicator, type PillIndicatorProps, type PillProps, PillStatus, type PillStatusProps, type RadioChoice, RadioDropdown, type RadioDropdownProps, RadioInput, type RadioInputProps, ResponsiveSplitLayout, type ResponsiveSplitLayoutProps, index as Search, type SearchActionsProps, type SearchConfig, type SearchContainerProps, type SearchFilterActionsProps, type SearchFiltersProps, type SearchInputProps, SearchProvider, type SearchProviderProps, type SearchRootProps, type SearchTypeInputProps, type SearchTypeOption, SelectDropdown, type SelectDropdownOption, type SelectDropdownProps, SelectInput, type SelectInputProps, type SelectOption$1 as SelectOption, type SelectOptionGroup, SheetWrapper, type SheetWrapperProps, SimpleTable, type SimpleTableProps, SkeletonCard, type SkeletonCardProps, SkeletonGrid, type SkeletonGridProps, SkeletonList, type SkeletonListProps, SkeletonTable, type SkeletonTableProps, SlugField, type SlugFieldProps, StatsCard, type StatsCardProps, SwitchInput, type SwitchInputProps, TabContent, type TabContentProps, TabTrigger, type TabTriggerProps, TableWrapper, type TableWrapperColumn, type TableWrapperEmptyState, type TableWrapperProps, TabsWrapper, type TabsWrapperProps, TagChoiceInput, type TagChoiceInputProps, type TagChoiceItem, TagInput, type TagInputProps, Thumbnail, type ThumbnailProps, TooltipWrapper, type TooltipWrapperProps, TwitterXIcon, type UseBaseSearchConfig, type UseBaseSearchReturn, WhatsAppIcon, buildFilterParams, buildListingStatusParams, buildSearchParams, clearSearchAndFilterParams, generateSlug$1 as generateSlug, generateSlug as generateSlugCompact, getApiParams, useBaseSearch, useIsMobile, useMediaQuery, useScrollDetection, useSearch };
|