@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
package/dist/index.d.mts CHANGED
@@ -1,39 +1,33 @@
1
- import { a as buildSearchParams, i as buildListingStatusParams, n as SearchConfig, o as clearSearchAndFilterParams, r as buildFilterParams, s as getApiParams, t as FilterConfig } from "./filter-utils-IZ0GtuPo.mjs";
2
- import { t as cn } from "./utils-CDue7cEt.mjs";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
4
- import * as React$1 from "react";
1
+ import { A as DataCard, B as AccordionSectionProps, C as DetailItem, D as DetailViewProps, F as LoadingCard, H as FaqAccordionProps, I as LoadingCardProps, O as CardWrapper, S as InfoRowProps, T as DetailView, V as FaqAccordion, _ as PillIndicatorProps, a as Pill, b as PillStatusProps, d as PillButtonProps, f as PillDelta, g as PillIndicator, j as DataCardProps, k as CardWrapperProps, l as PillAvatarProps, n as TimelineItem, o as PillAvatar, p as PillDeltaProps, r as TimelineProps, t as Timeline, u as PillButton, v as PillProps, w as DetailItemProps, x as InfoRow, y as PillStatus, z as AccordionSection } from "./timeline-Bgu1mIe9.mjs";
2
+ import { a as buildSearchParams, i as buildListingStatusParams, n as SearchConfig, o as clearSearchAndFilterParams, r as buildFilterParams, s as getApiParams, t as FilterConfig } from "./filter-utils-DOFTBWm1.mjs";
3
+ import { t as cn } from "./utils-rqvYP1by.mjs";
4
+ import * as React$2 from "react";
5
5
  import { ElementType, ReactNode } from "react";
6
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
7
 
7
- //#region src/layout/section.d.ts
8
- type Background = "default" | "muted" | "primary" | "transparent";
9
- type Padding = "none" | "sm" | "md" | "lg" | "xl";
10
- interface SectionProps {
11
- id?: string;
12
- children: ReactNode;
13
- className?: string;
14
- background?: Background;
15
- padding?: Padding;
16
- }
17
- declare function Section({
18
- id,
19
- children,
20
- className,
21
- background,
22
- padding
23
- }: SectionProps): react_jsx_runtime0.JSX.Element;
24
- //#endregion
25
- //#region src/layout/container.d.ts
26
- type MaxWidth = "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "full";
27
- interface ContainerProps {
28
- children: ReactNode;
8
+ //#region src/components/detail-field.d.ts
9
+ interface DetailFieldProps {
10
+ /** Field label */
11
+ label: string;
12
+ /** Field value (string, number, or ReactNode) */
13
+ value?: React.ReactNode;
14
+ /** Fallback when value is nullish. Default: "-" */
15
+ placeholder?: string;
29
16
  className?: string;
30
- maxWidth?: MaxWidth;
17
+ labelClassName?: string;
18
+ valueClassName?: string;
19
+ /** Render children instead of value prop */
20
+ children?: React.ReactNode;
31
21
  }
32
- declare function Container({
33
- children,
22
+ declare function DetailField({
23
+ label,
24
+ value,
25
+ placeholder,
34
26
  className,
35
- maxWidth
36
- }: ContainerProps): react_jsx_runtime0.JSX.Element;
27
+ labelClassName,
28
+ valueClassName,
29
+ children
30
+ }: DetailFieldProps): react_jsx_runtime0.JSX.Element;
37
31
  //#endregion
38
32
  //#region src/components/display-heading.d.ts
39
33
  interface DisplayHeadingProps {
@@ -60,12 +54,132 @@ declare function DisplayHeading({
60
54
  ...props
61
55
  }: DisplayHeadingProps): react_jsx_runtime0.JSX.Element;
62
56
  //#endregion
63
- //#region src/components/social-icons.d.ts
64
- declare const FacebookIcon: () => react_jsx_runtime0.JSX.Element;
65
- declare const GoogleIcon: () => react_jsx_runtime0.JSX.Element;
66
- declare const TwitterXIcon: () => react_jsx_runtime0.JSX.Element;
67
- declare const InstagramIcon: () => react_jsx_runtime0.JSX.Element;
68
- declare const WhatsAppIcon: () => react_jsx_runtime0.JSX.Element;
57
+ //#region src/components/empty-state.d.ts
58
+ interface EmptyStateProps {
59
+ /** Title text */
60
+ title?: string;
61
+ /** Description / subtitle */
62
+ description?: string;
63
+ /** Icon element (ReactNode) — e.g. <SearchX /> or <MyCustomIcon /> */
64
+ icon?: React$2.ReactNode;
65
+ /** Primary action button */
66
+ action?: React$2.ReactNode;
67
+ /** Secondary action button */
68
+ secondaryAction?: React$2.ReactNode;
69
+ /** Visual variant */
70
+ variant?: "default" | "compact" | "card";
71
+ /** Additional className */
72
+ className?: string;
73
+ /** Children rendered below the description */
74
+ children?: React$2.ReactNode;
75
+ }
76
+ /**
77
+ * EmptyState — Higher-level wrapper around the composable Empty primitives.
78
+ *
79
+ * Composes: Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent
80
+ *
81
+ * @example Default
82
+ * ```tsx
83
+ * <EmptyState
84
+ * title="No projects yet"
85
+ * description="Create your first project to get started."
86
+ * icon={<FolderPlus className="h-6 w-6" />}
87
+ * action={<Button>Create Project</Button>}
88
+ * />
89
+ * ```
90
+ *
91
+ * @example Compact (inline)
92
+ * ```tsx
93
+ * <EmptyState variant="compact" title="No items" />
94
+ * ```
95
+ *
96
+ * @example With preset
97
+ * ```tsx
98
+ * <EmptyStateNoResults action={<Button onClick={clearFilters}>Clear filters</Button>} />
99
+ * ```
100
+ */
101
+ declare function EmptyState({
102
+ title,
103
+ description,
104
+ icon,
105
+ action,
106
+ secondaryAction,
107
+ variant,
108
+ className,
109
+ children
110
+ }: EmptyStateProps): react_jsx_runtime0.JSX.Element;
111
+ type EmptyStatePresetProps = Omit<EmptyStateProps, "icon" | "title" | "description"> & {
112
+ title?: string;
113
+ description?: string;
114
+ };
115
+ /** No search results — with search icon */
116
+ declare function EmptyStateNoResults(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
117
+ /** No data — with inbox icon */
118
+ declare function EmptyStateNoData(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
119
+ /** Not found — with file-x icon */
120
+ declare function EmptyStateNotFound(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
121
+ //#endregion
122
+ //#region src/components/loading-state.d.ts
123
+ interface LoadingStateProps {
124
+ /** Loading message text */
125
+ text?: string;
126
+ /** Visual variant */
127
+ variant?: "default" | "inline" | "overlay" | "minimal";
128
+ /** Spinner size */
129
+ size?: "sm" | "md" | "lg";
130
+ /** Additional className */
131
+ className?: string;
132
+ }
133
+ interface LoadingOverlayProps {
134
+ /** Loading message text */
135
+ text?: string;
136
+ /** Whether the overlay is visible */
137
+ visible?: boolean;
138
+ /** Additional className */
139
+ className?: string;
140
+ /** Children to render behind the overlay */
141
+ children?: React$2.ReactNode;
142
+ }
143
+ /**
144
+ * LoadingState — Versatile loading indicator
145
+ *
146
+ * @example Default (centered, full area)
147
+ * ```tsx
148
+ * <LoadingState text="Loading projects..." />
149
+ * ```
150
+ *
151
+ * @example Inline (in a row)
152
+ * ```tsx
153
+ * <LoadingState variant="inline" text="Saving..." size="sm" />
154
+ * ```
155
+ *
156
+ * @example Minimal (just the spinner)
157
+ * ```tsx
158
+ * <LoadingState variant="minimal" />
159
+ * ```
160
+ */
161
+ declare function LoadingState({
162
+ text,
163
+ variant,
164
+ size,
165
+ className
166
+ }: LoadingStateProps): react_jsx_runtime0.JSX.Element;
167
+ /**
168
+ * LoadingOverlay — Renders children with an overlay spinner on top
169
+ *
170
+ * @example
171
+ * ```tsx
172
+ * <LoadingOverlay visible={isSaving} text="Saving changes...">
173
+ * <MyFormContent />
174
+ * </LoadingOverlay>
175
+ * ```
176
+ */
177
+ declare function LoadingOverlay({
178
+ text,
179
+ visible,
180
+ className,
181
+ children
182
+ }: LoadingOverlayProps): react_jsx_runtime0.JSX.Element;
69
183
  //#endregion
70
184
  //#region src/components/skeleton-wrappers.d.ts
71
185
  interface SkeletonTableProps {
@@ -166,131 +280,83 @@ declare function SkeletonGrid({
166
280
  cardProps
167
281
  }: SkeletonGridProps): react_jsx_runtime0.JSX.Element;
168
282
  //#endregion
169
- //#region src/components/loading-state.d.ts
170
- interface LoadingStateProps {
171
- /** Loading message text */
172
- text?: string;
173
- /** Visual variant */
174
- variant?: "default" | "inline" | "overlay" | "minimal";
175
- /** Spinner size */
176
- size?: "sm" | "md" | "lg";
177
- /** Additional className */
283
+ //#region src/components/social-icons.d.ts
284
+ declare const FacebookIcon: () => react_jsx_runtime0.JSX.Element;
285
+ declare const GoogleIcon: () => react_jsx_runtime0.JSX.Element;
286
+ declare const TwitterXIcon: () => react_jsx_runtime0.JSX.Element;
287
+ declare const InstagramIcon: () => react_jsx_runtime0.JSX.Element;
288
+ declare const WhatsAppIcon: () => react_jsx_runtime0.JSX.Element;
289
+ //#endregion
290
+ //#region src/components/stats-grid.d.ts
291
+ interface StatsGridProps {
292
+ /** Responsive column counts */
293
+ columns?: {
294
+ default?: 1 | 2 | 3 | 4;
295
+ sm?: 1 | 2 | 3 | 4;
296
+ md?: 1 | 2 | 3 | 4;
297
+ lg?: 1 | 2 | 3 | 4;
298
+ };
299
+ /** Gap between items */
300
+ gap?: "sm" | "default" | "lg";
178
301
  className?: string;
302
+ children: React.ReactNode;
179
303
  }
180
- interface LoadingOverlayProps {
181
- /** Loading message text */
182
- text?: string;
183
- /** Whether the overlay is visible */
184
- visible?: boolean;
185
- /** Additional className */
304
+ declare function StatsGrid({
305
+ columns,
306
+ gap,
307
+ className,
308
+ children
309
+ }: StatsGridProps): react_jsx_runtime0.JSX.Element;
310
+ //#endregion
311
+ //#region src/components/status-badge.d.ts
312
+ type StatusBadgeVariant = "info" | "success" | "warning" | "error" | "neutral";
313
+ interface StatusBadgeProps {
314
+ /** Semantic variant */
315
+ variant?: StatusBadgeVariant;
316
+ /** Show a colored dot indicator before text */
317
+ dot?: boolean;
318
+ /** Size */
319
+ size?: "sm" | "default" | "lg";
186
320
  className?: string;
187
- /** Children to render behind the overlay */
188
- children?: React$1.ReactNode;
321
+ children: React.ReactNode;
189
322
  }
190
- /**
191
- * LoadingState — Versatile loading indicator
192
- *
193
- * @example Default (centered, full area)
194
- * ```tsx
195
- * <LoadingState text="Loading projects..." />
196
- * ```
197
- *
198
- * @example Inline (in a row)
199
- * ```tsx
200
- * <LoadingState variant="inline" text="Saving..." size="sm" />
201
- * ```
202
- *
203
- * @example Minimal (just the spinner)
204
- * ```tsx
205
- * <LoadingState variant="minimal" />
206
- * ```
207
- */
208
- declare function LoadingState({
209
- text,
323
+ declare function StatusBadge({
210
324
  variant,
325
+ dot,
211
326
  size,
212
- className
213
- }: LoadingStateProps): react_jsx_runtime0.JSX.Element;
214
- /**
215
- * LoadingOverlay — Renders children with an overlay spinner on top
216
- *
217
- * @example
218
- * ```tsx
219
- * <LoadingOverlay visible={isSaving} text="Saving changes...">
220
- * <MyFormContent />
221
- * </LoadingOverlay>
222
- * ```
223
- */
224
- declare function LoadingOverlay({
225
- text,
226
- visible,
227
327
  className,
228
328
  children
229
- }: LoadingOverlayProps): react_jsx_runtime0.JSX.Element;
329
+ }: StatusBadgeProps): react_jsx_runtime0.JSX.Element;
230
330
  //#endregion
231
- //#region src/components/empty-state.d.ts
232
- interface EmptyStateProps {
233
- /** Title text */
234
- title?: string;
235
- /** Description / subtitle */
236
- description?: string;
237
- /** Icon element (ReactNode) — e.g. <SearchX /> or <MyCustomIcon /> */
238
- icon?: React$1.ReactNode;
239
- /** Primary action button */
240
- action?: React$1.ReactNode;
241
- /** Secondary action button */
242
- secondaryAction?: React$1.ReactNode;
243
- /** Visual variant */
244
- variant?: "default" | "compact" | "card";
245
- /** Additional className */
331
+ //#region src/layout/container.d.ts
332
+ type MaxWidth = "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "full";
333
+ interface ContainerProps {
334
+ children: ReactNode;
246
335
  className?: string;
247
- /** Children rendered below the description */
248
- children?: React$1.ReactNode;
336
+ maxWidth?: MaxWidth;
249
337
  }
250
- /**
251
- * EmptyState — Higher-level wrapper around the composable Empty primitives.
252
- *
253
- * Composes: Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent
254
- *
255
- * @example Default
256
- * ```tsx
257
- * <EmptyState
258
- * title="No projects yet"
259
- * description="Create your first project to get started."
260
- * icon={<FolderPlus className="h-6 w-6" />}
261
- * action={<Button>Create Project</Button>}
262
- * />
263
- * ```
264
- *
265
- * @example Compact (inline)
266
- * ```tsx
267
- * <EmptyState variant="compact" title="No items" />
268
- * ```
269
- *
270
- * @example With preset
271
- * ```tsx
272
- * <EmptyStateNoResults action={<Button onClick={clearFilters}>Clear filters</Button>} />
273
- * ```
274
- */
275
- declare function EmptyState({
276
- title,
277
- description,
278
- icon,
279
- action,
280
- secondaryAction,
281
- variant,
338
+ declare function Container({
339
+ children,
282
340
  className,
283
- children
284
- }: EmptyStateProps): react_jsx_runtime0.JSX.Element;
285
- type EmptyStatePresetProps = Omit<EmptyStateProps, "icon" | "title" | "description"> & {
286
- title?: string;
287
- description?: string;
288
- };
289
- /** No search results — with search icon */
290
- declare function EmptyStateNoResults(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
291
- /** No data — with inbox icon */
292
- declare function EmptyStateNoData(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
293
- /** Not found — with file-x icon */
294
- declare function EmptyStateNotFound(props: EmptyStatePresetProps): react_jsx_runtime0.JSX.Element;
341
+ maxWidth
342
+ }: ContainerProps): react_jsx_runtime0.JSX.Element;
343
+ //#endregion
344
+ //#region src/layout/section.d.ts
345
+ type Background = "default" | "muted" | "primary" | "transparent";
346
+ type Padding = "none" | "sm" | "md" | "lg" | "xl";
347
+ interface SectionProps {
348
+ id?: string;
349
+ children: ReactNode;
350
+ className?: string;
351
+ background?: Background;
352
+ padding?: Padding;
353
+ }
354
+ declare function Section({
355
+ id,
356
+ children,
357
+ className,
358
+ background,
359
+ padding
360
+ }: SectionProps): react_jsx_runtime0.JSX.Element;
295
361
  //#endregion
296
- export { Container, type ContainerProps, DisplayHeading, type DisplayHeadingProps, EmptyState, EmptyStateNoData, EmptyStateNoResults, EmptyStateNotFound, type EmptyStatePresetProps, type EmptyStateProps, FacebookIcon, type FilterConfig, GoogleIcon, InstagramIcon, LoadingOverlay, type LoadingOverlayProps, LoadingState, type LoadingStateProps, type SearchConfig, Section, type SectionProps, SkeletonCard, type SkeletonCardProps, SkeletonGrid, type SkeletonGridProps, SkeletonList, type SkeletonListProps, SkeletonTable, type SkeletonTableProps, TwitterXIcon, WhatsAppIcon, buildFilterParams, buildListingStatusParams, buildSearchParams, clearSearchAndFilterParams, cn, getApiParams };
362
+ export { AccordionSection, type AccordionSectionProps, CardWrapper, type CardWrapperProps, Container, type ContainerProps, DataCard, type DataCardProps, DetailField, type DetailFieldProps, DetailItem, type DetailItemProps, DetailView, type DetailViewProps, DisplayHeading, type DisplayHeadingProps, EmptyState, EmptyStateNoData, EmptyStateNoResults, EmptyStateNotFound, type EmptyStatePresetProps, type EmptyStateProps, FacebookIcon, FaqAccordion, type FaqAccordionProps, type FilterConfig, GoogleIcon, InfoRow, type InfoRowProps, InstagramIcon, LoadingCard, type LoadingCardProps, LoadingOverlay, type LoadingOverlayProps, LoadingState, type LoadingStateProps, Pill, PillAvatar, type PillAvatarProps, PillButton, type PillButtonProps, PillDelta, type PillDeltaProps, PillIndicator, type PillIndicatorProps, type PillProps, PillStatus, type PillStatusProps, type SearchConfig, Section, type SectionProps, SkeletonCard, type SkeletonCardProps, SkeletonGrid, type SkeletonGridProps, SkeletonList, type SkeletonListProps, SkeletonTable, type SkeletonTableProps, StatsGrid, type StatsGridProps, StatusBadge, type StatusBadgeProps, type StatusBadgeVariant, Timeline, type TimelineItem, type TimelineProps, TwitterXIcon, WhatsAppIcon, buildFilterParams, buildListingStatusParams, buildSearchParams, clearSearchAndFilterParams, cn, getApiParams };