@classytic/fluid 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/dist/client/calendar.d.mts +1 -2
- package/dist/client/calendar.mjs +4 -4
- package/dist/client/color-picker.d.mts +41 -25
- package/dist/client/color-picker.mjs +121 -73
- package/dist/client/core.d.mts +243 -557
- package/dist/client/core.mjs +351 -1462
- package/dist/client/error.d.mts +41 -41
- package/dist/client/error.mjs +35 -35
- package/dist/client/gallery.d.mts +33 -33
- package/dist/client/gallery.mjs +128 -127
- package/dist/client/hooks.d.mts +57 -39
- package/dist/client/hooks.mjs +29 -7
- package/dist/client/spreadsheet.d.mts +28 -28
- package/dist/client/spreadsheet.mjs +77 -77
- package/dist/client/table.d.mts +66 -33
- package/dist/client/table.mjs +87 -54
- package/dist/client/theme.mjs +1 -1
- package/dist/command.d.mts +6 -4
- package/dist/command.mjs +3 -3
- package/dist/compact.d.mts +97 -95
- package/dist/compact.mjs +336 -322
- package/dist/dashboard.d.mts +614 -422
- package/dist/dashboard.mjs +1051 -762
- package/dist/{dropdown-wrapper-B86u9Fri.mjs → dropdown-wrapper-B9nRDUlz.mjs} +25 -35
- package/dist/forms.d.mts +1037 -972
- package/dist/forms.mjs +2849 -2721
- package/dist/index.d.mts +218 -152
- package/dist/index.mjs +357 -264
- package/dist/layouts.d.mts +94 -94
- package/dist/layouts.mjs +115 -110
- package/dist/phone-input-B9_XPNvv.mjs +429 -0
- package/dist/phone-input-CLH_UjQZ.d.mts +31 -0
- package/dist/{search-context-DR7DBs7S.mjs → search-context-1g3ZmOvx.mjs} +1 -1
- package/dist/search.d.mts +168 -164
- package/dist/search.mjs +305 -301
- package/dist/{sheet-wrapper-C13Y-Q6w.mjs → sheet-wrapper-B2uxookb.mjs} +1 -1
- package/dist/timeline-Bgu1mIe9.d.mts +373 -0
- package/dist/timeline-HJtWf4Op.mjs +804 -0
- package/dist/{use-base-search-BGgWnWaF.d.mts → use-base-search-DFC4QKYU.d.mts} +1 -1
- package/dist/{use-media-query-BnVNIKT4.mjs → use-media-query-ChLfFChU.mjs} +6 -7
- package/package.json +2 -2
- /package/dist/{api-pagination-CJ0vR_w6.d.mts → api-pagination-C30ser2L.d.mts} +0 -0
- /package/dist/{filter-utils-DqMmy_v-.mjs → filter-utils-BGIvtq1R.mjs} +0 -0
- /package/dist/{filter-utils-IZ0GtuPo.d.mts → filter-utils-DOFTBWm1.d.mts} +0 -0
- /package/dist/{use-debounce-xmZucz5e.mjs → use-debounce-BNoNiEon.mjs} +0 -0
- /package/dist/{use-keyboard-shortcut-Bl6YM5Q7.mjs → use-keyboard-shortcut-C_Vk-36P.mjs} +0 -0
- /package/dist/{use-keyboard-shortcut-_mRCh3QO.d.mts → use-keyboard-shortcut-Q4CSPzSI.d.mts} +0 -0
- /package/dist/{use-mobile-BX3SQVo2.mjs → use-mobile-CnEmFiQx.mjs} +0 -0
- /package/dist/{use-scroll-detection-CsgsQYvy.mjs → use-scroll-detection-BKfqkmEC.mjs} +0 -0
- /package/dist/{utils-CDue7cEt.d.mts → utils-rqvYP1by.d.mts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cn } from "./utils-DQ5SCVoW.mjs";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
2
|
import { memo, useCallback, useMemo } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { LoaderIcon } from "lucide-react";
|
|
5
5
|
import { Button } from "@/components/ui/button";
|
|
6
6
|
import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle } from "@/components/ui/sheet";
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import * as react from "react";
|
|
2
|
+
import { ComponentType, HTMLAttributes, ReactNode } from "react";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
import { LucideIcon, LucideProps } from "lucide-react";
|
|
5
|
+
|
|
6
|
+
//#region src/components/accordion-wrapper.d.ts
|
|
7
|
+
interface AccordionSectionProps {
|
|
8
|
+
title: string;
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
defaultOpen?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
badge?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* AccordionSection - Single collapsible section with smooth animation
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <AccordionSection title="Settings" icon={<Settings className="h-4 w-4" />}>
|
|
21
|
+
* <div>Content here</div>
|
|
22
|
+
* </AccordionSection>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare const AccordionSection: react.NamedExoticComponent<AccordionSectionProps>;
|
|
26
|
+
interface FaqItem {
|
|
27
|
+
id: string;
|
|
28
|
+
question: string;
|
|
29
|
+
answer: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
interface FaqAccordionProps {
|
|
32
|
+
items: FaqItem[];
|
|
33
|
+
defaultOpen?: string;
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Allow multiple items to be open at once */
|
|
36
|
+
multiple?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* FaqAccordion - FAQ-style accordion where only one item can be open by default
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <FaqAccordion
|
|
44
|
+
* items={[
|
|
45
|
+
* { id: "1", question: "What is this?", answer: "A FAQ accordion" },
|
|
46
|
+
* { id: "2", question: "How does it work?", answer: "Click to expand" },
|
|
47
|
+
* ]}
|
|
48
|
+
* />
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare const FaqAccordion: react.NamedExoticComponent<FaqAccordionProps>;
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/components/card-wrapper.d.ts
|
|
54
|
+
declare const CARD_VARIANTS: {
|
|
55
|
+
readonly default: "";
|
|
56
|
+
readonly outline: "border-2";
|
|
57
|
+
readonly ghost: "border-0 shadow-none bg-transparent";
|
|
58
|
+
readonly elevated: "shadow-lg border-0";
|
|
59
|
+
readonly primary: "border-primary/20 bg-primary/5";
|
|
60
|
+
readonly secondary: "border-secondary/20 bg-secondary/5";
|
|
61
|
+
readonly destructive: "border-destructive/20 bg-destructive/5";
|
|
62
|
+
readonly success: "border-green-500/20 bg-green-500/5";
|
|
63
|
+
readonly warning: "border-yellow-500/20 bg-yellow-500/5";
|
|
64
|
+
};
|
|
65
|
+
declare const CARD_SIZES: {
|
|
66
|
+
readonly sm: "p-3";
|
|
67
|
+
readonly default: "p-6";
|
|
68
|
+
readonly lg: "p-8";
|
|
69
|
+
readonly xl: "p-10";
|
|
70
|
+
};
|
|
71
|
+
interface CardWrapperProps {
|
|
72
|
+
title?: ReactNode;
|
|
73
|
+
description?: ReactNode;
|
|
74
|
+
/** Content rendered on the right side of the header (e.g., action buttons, toggles) */
|
|
75
|
+
headerRight?: ReactNode;
|
|
76
|
+
children?: ReactNode;
|
|
77
|
+
footer?: ReactNode;
|
|
78
|
+
className?: string;
|
|
79
|
+
headerClassName?: string;
|
|
80
|
+
contentClassName?: string;
|
|
81
|
+
footerClassName?: string;
|
|
82
|
+
variant?: keyof typeof CARD_VARIANTS;
|
|
83
|
+
size?: keyof typeof CARD_SIZES;
|
|
84
|
+
hideHeader?: boolean;
|
|
85
|
+
}
|
|
86
|
+
declare function CardWrapper({
|
|
87
|
+
title,
|
|
88
|
+
description,
|
|
89
|
+
headerRight,
|
|
90
|
+
children,
|
|
91
|
+
footer,
|
|
92
|
+
className,
|
|
93
|
+
headerClassName,
|
|
94
|
+
contentClassName,
|
|
95
|
+
footerClassName,
|
|
96
|
+
variant,
|
|
97
|
+
size,
|
|
98
|
+
hideHeader
|
|
99
|
+
}: CardWrapperProps): react_jsx_runtime0.JSX.Element;
|
|
100
|
+
interface DataCardProps extends Omit<CardWrapperProps, "children"> {
|
|
101
|
+
/** Each item's `color` should be a complete Tailwind class (e.g. "text-green-600") */
|
|
102
|
+
data: Array<{
|
|
103
|
+
label: string;
|
|
104
|
+
value: ReactNode;
|
|
105
|
+
color?: string;
|
|
106
|
+
}>;
|
|
107
|
+
/** Number of columns in the data grid. Default: 3 (2 on mobile) */
|
|
108
|
+
cols?: 1 | 2 | 3 | 4;
|
|
109
|
+
}
|
|
110
|
+
declare function DataCard({
|
|
111
|
+
title,
|
|
112
|
+
data,
|
|
113
|
+
cols,
|
|
114
|
+
className,
|
|
115
|
+
...props
|
|
116
|
+
}: DataCardProps): react_jsx_runtime0.JSX.Element;
|
|
117
|
+
interface LoadingCardProps extends Omit<CardWrapperProps, "children"> {}
|
|
118
|
+
declare function LoadingCard({
|
|
119
|
+
title,
|
|
120
|
+
description,
|
|
121
|
+
className,
|
|
122
|
+
...props
|
|
123
|
+
}: LoadingCardProps): react_jsx_runtime0.JSX.Element;
|
|
124
|
+
interface StatsCardProps extends Omit<CardWrapperProps, "children" | "variant"> {
|
|
125
|
+
value: ReactNode;
|
|
126
|
+
icon?: ReactNode;
|
|
127
|
+
trend?: {
|
|
128
|
+
type: "up" | "down" | "neutral";
|
|
129
|
+
value: string;
|
|
130
|
+
};
|
|
131
|
+
/** Visual variant for the card and icon styling */
|
|
132
|
+
statsVariant?: "default" | "success" | "warning" | "danger" | "info";
|
|
133
|
+
/** Icon-only color tint (neutral card background). Overrides statsVariant icon color when set. */
|
|
134
|
+
iconColor?: "default" | "success" | "warning" | "danger" | "info" | "purple" | "orange";
|
|
135
|
+
/** Additional class for the icon wrapper */
|
|
136
|
+
iconClassName?: string;
|
|
137
|
+
}
|
|
138
|
+
declare function StatsCard({
|
|
139
|
+
title,
|
|
140
|
+
value,
|
|
141
|
+
description,
|
|
142
|
+
icon,
|
|
143
|
+
trend,
|
|
144
|
+
className,
|
|
145
|
+
statsVariant,
|
|
146
|
+
iconColor,
|
|
147
|
+
iconClassName,
|
|
148
|
+
...props
|
|
149
|
+
}: StatsCardProps): react_jsx_runtime0.JSX.Element;
|
|
150
|
+
interface DragHandleProps extends HTMLAttributes<HTMLDivElement> {
|
|
151
|
+
icon?: ReactNode;
|
|
152
|
+
}
|
|
153
|
+
interface DraggableCardProps extends Omit<CardWrapperProps, "children"> {
|
|
154
|
+
subtitle?: ReactNode;
|
|
155
|
+
badges?: ReactNode;
|
|
156
|
+
actions?: ReactNode;
|
|
157
|
+
details?: ReactNode;
|
|
158
|
+
dragHandleProps?: DragHandleProps;
|
|
159
|
+
isDragging?: boolean;
|
|
160
|
+
isHidden?: boolean;
|
|
161
|
+
children?: ReactNode;
|
|
162
|
+
}
|
|
163
|
+
declare function DraggableCard({
|
|
164
|
+
title,
|
|
165
|
+
subtitle,
|
|
166
|
+
badges,
|
|
167
|
+
actions,
|
|
168
|
+
details,
|
|
169
|
+
dragHandleProps,
|
|
170
|
+
className,
|
|
171
|
+
isDragging,
|
|
172
|
+
isHidden,
|
|
173
|
+
children,
|
|
174
|
+
...props
|
|
175
|
+
}: DraggableCardProps): react_jsx_runtime0.JSX.Element;
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region src/components/detail-view.d.ts
|
|
178
|
+
interface DetailViewItemData {
|
|
179
|
+
label: string;
|
|
180
|
+
value?: react.ReactNode;
|
|
181
|
+
/** Custom render function (overrides value) */
|
|
182
|
+
render?: () => react.ReactNode;
|
|
183
|
+
/** Hide this item entirely */
|
|
184
|
+
hidden?: boolean;
|
|
185
|
+
/** Span full width (ignores columns) */
|
|
186
|
+
fullWidth?: boolean;
|
|
187
|
+
/** Additional className for the value cell */
|
|
188
|
+
className?: string;
|
|
189
|
+
}
|
|
190
|
+
interface DetailViewProps {
|
|
191
|
+
items?: DetailViewItemData[];
|
|
192
|
+
/** Grid columns */
|
|
193
|
+
columns?: 1 | 2 | 3;
|
|
194
|
+
/** Label placement */
|
|
195
|
+
layout?: "stacked" | "horizontal" | "inline";
|
|
196
|
+
/** Size variant */
|
|
197
|
+
size?: "sm" | "default" | "lg";
|
|
198
|
+
/** Show dividers between items */
|
|
199
|
+
dividers?: boolean;
|
|
200
|
+
/** Striped rows (stacked layout only) */
|
|
201
|
+
striped?: boolean;
|
|
202
|
+
/** Card wrapper */
|
|
203
|
+
bordered?: boolean;
|
|
204
|
+
/** Section title */
|
|
205
|
+
title?: string;
|
|
206
|
+
/** Section description */
|
|
207
|
+
description?: string;
|
|
208
|
+
className?: string;
|
|
209
|
+
children?: react.ReactNode;
|
|
210
|
+
}
|
|
211
|
+
declare function DetailView({
|
|
212
|
+
items,
|
|
213
|
+
columns,
|
|
214
|
+
layout,
|
|
215
|
+
size,
|
|
216
|
+
dividers,
|
|
217
|
+
striped,
|
|
218
|
+
bordered,
|
|
219
|
+
title,
|
|
220
|
+
description,
|
|
221
|
+
className,
|
|
222
|
+
children
|
|
223
|
+
}: DetailViewProps): react_jsx_runtime0.JSX.Element;
|
|
224
|
+
interface DetailItemProps {
|
|
225
|
+
label: string;
|
|
226
|
+
children?: react.ReactNode;
|
|
227
|
+
value?: react.ReactNode;
|
|
228
|
+
className?: string;
|
|
229
|
+
labelClassName?: string;
|
|
230
|
+
layout?: "stacked" | "horizontal" | "inline";
|
|
231
|
+
}
|
|
232
|
+
declare function DetailItem({
|
|
233
|
+
label,
|
|
234
|
+
children,
|
|
235
|
+
value,
|
|
236
|
+
className,
|
|
237
|
+
labelClassName,
|
|
238
|
+
layout
|
|
239
|
+
}: DetailItemProps): react_jsx_runtime0.JSX.Element;
|
|
240
|
+
//#endregion
|
|
241
|
+
//#region src/components/info-row.d.ts
|
|
242
|
+
interface InfoRowProps {
|
|
243
|
+
label: string;
|
|
244
|
+
value: ReactNode;
|
|
245
|
+
copyable?: boolean;
|
|
246
|
+
icon?: ComponentType<LucideProps>;
|
|
247
|
+
}
|
|
248
|
+
declare function InfoRow({
|
|
249
|
+
label,
|
|
250
|
+
value,
|
|
251
|
+
copyable,
|
|
252
|
+
icon: Icon
|
|
253
|
+
}: InfoRowProps): react_jsx_runtime0.JSX.Element | null;
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/components/pill.d.ts
|
|
256
|
+
interface PillProps {
|
|
257
|
+
variant?: "default" | "secondary" | "destructive" | "outline";
|
|
258
|
+
themed?: boolean;
|
|
259
|
+
className?: string;
|
|
260
|
+
children?: ReactNode;
|
|
261
|
+
}
|
|
262
|
+
declare function Pill({
|
|
263
|
+
variant,
|
|
264
|
+
themed,
|
|
265
|
+
className,
|
|
266
|
+
...props
|
|
267
|
+
}: PillProps): react_jsx_runtime0.JSX.Element;
|
|
268
|
+
interface PillAvatarProps {
|
|
269
|
+
fallback?: string;
|
|
270
|
+
className?: string;
|
|
271
|
+
src?: string;
|
|
272
|
+
alt?: string;
|
|
273
|
+
}
|
|
274
|
+
declare function PillAvatar({
|
|
275
|
+
fallback,
|
|
276
|
+
className,
|
|
277
|
+
src,
|
|
278
|
+
alt,
|
|
279
|
+
...props
|
|
280
|
+
}: PillAvatarProps): react_jsx_runtime0.JSX.Element;
|
|
281
|
+
interface PillButtonProps {
|
|
282
|
+
className?: string;
|
|
283
|
+
children?: ReactNode;
|
|
284
|
+
onClick?: () => void;
|
|
285
|
+
}
|
|
286
|
+
declare function PillButton({
|
|
287
|
+
className,
|
|
288
|
+
...props
|
|
289
|
+
}: PillButtonProps): react_jsx_runtime0.JSX.Element;
|
|
290
|
+
interface PillStatusProps {
|
|
291
|
+
children?: ReactNode;
|
|
292
|
+
className?: string;
|
|
293
|
+
}
|
|
294
|
+
declare function PillStatus({
|
|
295
|
+
children,
|
|
296
|
+
className,
|
|
297
|
+
...props
|
|
298
|
+
}: PillStatusProps): react_jsx_runtime0.JSX.Element;
|
|
299
|
+
interface PillIndicatorProps {
|
|
300
|
+
variant?: "success" | "error" | "warning" | "info";
|
|
301
|
+
pulse?: boolean;
|
|
302
|
+
}
|
|
303
|
+
declare function PillIndicator({
|
|
304
|
+
variant,
|
|
305
|
+
pulse
|
|
306
|
+
}: PillIndicatorProps): react_jsx_runtime0.JSX.Element;
|
|
307
|
+
interface PillDeltaProps {
|
|
308
|
+
className?: string;
|
|
309
|
+
delta?: number;
|
|
310
|
+
}
|
|
311
|
+
declare function PillDelta({
|
|
312
|
+
className,
|
|
313
|
+
delta
|
|
314
|
+
}: PillDeltaProps): react_jsx_runtime0.JSX.Element;
|
|
315
|
+
interface PillIconProps extends LucideProps {
|
|
316
|
+
icon: ComponentType<LucideProps>;
|
|
317
|
+
className?: string;
|
|
318
|
+
}
|
|
319
|
+
declare function PillIcon({
|
|
320
|
+
icon: Icon,
|
|
321
|
+
className,
|
|
322
|
+
...props
|
|
323
|
+
}: PillIconProps): react_jsx_runtime0.JSX.Element;
|
|
324
|
+
interface PillAvatarGroupProps {
|
|
325
|
+
children?: ReactNode;
|
|
326
|
+
className?: string;
|
|
327
|
+
}
|
|
328
|
+
declare function PillAvatarGroup({
|
|
329
|
+
children,
|
|
330
|
+
className,
|
|
331
|
+
...props
|
|
332
|
+
}: PillAvatarGroupProps): react_jsx_runtime0.JSX.Element;
|
|
333
|
+
//#endregion
|
|
334
|
+
//#region src/components/timeline.d.ts
|
|
335
|
+
type TimelineStatus = "default" | "success" | "error" | "warning" | "pending" | "active";
|
|
336
|
+
interface TimelineItem {
|
|
337
|
+
/** Title of the timeline entry */
|
|
338
|
+
title: string;
|
|
339
|
+
/** Description or content */
|
|
340
|
+
description?: react.ReactNode;
|
|
341
|
+
/** Timestamp / date string */
|
|
342
|
+
timestamp?: string;
|
|
343
|
+
/** Secondary label (e.g., user name) */
|
|
344
|
+
label?: string;
|
|
345
|
+
/** Status determines icon color and connector style */
|
|
346
|
+
status?: TimelineStatus;
|
|
347
|
+
/** Custom icon override */
|
|
348
|
+
icon?: LucideIcon | react.ReactNode;
|
|
349
|
+
/** Additional content below description */
|
|
350
|
+
content?: react.ReactNode;
|
|
351
|
+
}
|
|
352
|
+
interface TimelineProps {
|
|
353
|
+
items: TimelineItem[];
|
|
354
|
+
/** Layout direction */
|
|
355
|
+
orientation?: "vertical" | "horizontal";
|
|
356
|
+
/** Size variant */
|
|
357
|
+
size?: "sm" | "default" | "lg";
|
|
358
|
+
/** Show connector lines */
|
|
359
|
+
showConnectors?: boolean;
|
|
360
|
+
/** Reverse order (newest first) */
|
|
361
|
+
reverse?: boolean;
|
|
362
|
+
className?: string;
|
|
363
|
+
}
|
|
364
|
+
declare function Timeline({
|
|
365
|
+
items,
|
|
366
|
+
orientation,
|
|
367
|
+
size,
|
|
368
|
+
showConnectors,
|
|
369
|
+
reverse,
|
|
370
|
+
className
|
|
371
|
+
}: TimelineProps): react_jsx_runtime0.JSX.Element;
|
|
372
|
+
//#endregion
|
|
373
|
+
export { DataCard as A, AccordionSectionProps as B, DetailItem as C, DetailViewProps as D, DetailViewItemData as E, LoadingCard as F, FaqAccordionProps as H, LoadingCardProps as I, StatsCard as L, DragHandleProps as M, DraggableCard as N, CardWrapper as O, DraggableCardProps as P, StatsCardProps as R, InfoRowProps as S, DetailView as T, FaqItem as U, FaqAccordion as V, PillIndicatorProps as _, Pill as a, PillStatusProps as b, PillAvatarGroupProps as c, PillButtonProps as d, PillDelta as f, PillIndicator as g, PillIconProps as h, TimelineStatus as i, DataCardProps as j, CardWrapperProps as k, PillAvatarProps as l, PillIcon as m, TimelineItem as n, PillAvatar as o, PillDeltaProps as p, TimelineProps as r, PillAvatarGroup as s, Timeline as t, PillButton as u, PillProps as v, DetailItemProps as w, InfoRow as x, PillStatus as y, AccordionSection as z };
|