@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.
Files changed (51) hide show
  1. package/README.md +21 -1
  2. package/dist/client/calendar.d.mts +1 -2
  3. package/dist/client/calendar.mjs +4 -4
  4. package/dist/client/color-picker.d.mts +41 -25
  5. package/dist/client/color-picker.mjs +121 -73
  6. package/dist/client/core.d.mts +243 -557
  7. package/dist/client/core.mjs +351 -1462
  8. package/dist/client/error.d.mts +41 -41
  9. package/dist/client/error.mjs +35 -35
  10. package/dist/client/gallery.d.mts +33 -33
  11. package/dist/client/gallery.mjs +128 -127
  12. package/dist/client/hooks.d.mts +57 -39
  13. package/dist/client/hooks.mjs +29 -7
  14. package/dist/client/spreadsheet.d.mts +28 -28
  15. package/dist/client/spreadsheet.mjs +77 -77
  16. package/dist/client/table.d.mts +66 -33
  17. package/dist/client/table.mjs +87 -54
  18. package/dist/client/theme.mjs +1 -1
  19. package/dist/command.d.mts +6 -4
  20. package/dist/command.mjs +3 -3
  21. package/dist/compact.d.mts +97 -95
  22. package/dist/compact.mjs +336 -322
  23. package/dist/dashboard.d.mts +614 -422
  24. package/dist/dashboard.mjs +1051 -762
  25. package/dist/{dropdown-wrapper-B86u9Fri.mjs → dropdown-wrapper-B9nRDUlz.mjs} +25 -35
  26. package/dist/forms.d.mts +1037 -972
  27. package/dist/forms.mjs +2849 -2721
  28. package/dist/index.d.mts +218 -152
  29. package/dist/index.mjs +357 -264
  30. package/dist/layouts.d.mts +94 -94
  31. package/dist/layouts.mjs +115 -110
  32. package/dist/phone-input-B9_XPNvv.mjs +429 -0
  33. package/dist/phone-input-CLH_UjQZ.d.mts +31 -0
  34. package/dist/{search-context-DR7DBs7S.mjs → search-context-1g3ZmOvx.mjs} +1 -1
  35. package/dist/search.d.mts +168 -164
  36. package/dist/search.mjs +305 -301
  37. package/dist/{sheet-wrapper-C13Y-Q6w.mjs → sheet-wrapper-B2uxookb.mjs} +1 -1
  38. package/dist/timeline-Bgu1mIe9.d.mts +373 -0
  39. package/dist/timeline-HJtWf4Op.mjs +804 -0
  40. package/dist/{use-base-search-BGgWnWaF.d.mts → use-base-search-DFC4QKYU.d.mts} +1 -1
  41. package/dist/{use-media-query-BnVNIKT4.mjs → use-media-query-ChLfFChU.mjs} +6 -7
  42. package/package.json +2 -2
  43. /package/dist/{api-pagination-CJ0vR_w6.d.mts → api-pagination-C30ser2L.d.mts} +0 -0
  44. /package/dist/{filter-utils-DqMmy_v-.mjs → filter-utils-BGIvtq1R.mjs} +0 -0
  45. /package/dist/{filter-utils-IZ0GtuPo.d.mts → filter-utils-DOFTBWm1.d.mts} +0 -0
  46. /package/dist/{use-debounce-xmZucz5e.mjs → use-debounce-BNoNiEon.mjs} +0 -0
  47. /package/dist/{use-keyboard-shortcut-Bl6YM5Q7.mjs → use-keyboard-shortcut-C_Vk-36P.mjs} +0 -0
  48. /package/dist/{use-keyboard-shortcut-_mRCh3QO.d.mts → use-keyboard-shortcut-Q4CSPzSI.d.mts} +0 -0
  49. /package/dist/{use-mobile-BX3SQVo2.mjs → use-mobile-CnEmFiQx.mjs} +0 -0
  50. /package/dist/{use-scroll-detection-CsgsQYvy.mjs → use-scroll-detection-BKfqkmEC.mjs} +0 -0
  51. /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 };