@classytic/fluid 0.2.4 → 0.3.3

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 (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -62
  3. package/dist/api-pagination-CJ0vR_w6.d.mts +34 -0
  4. package/dist/api-pagination-DBTE0yk4.mjs +190 -0
  5. package/dist/chunk-DQk6qfdC.mjs +18 -0
  6. package/dist/client/calendar.d.mts +105 -0
  7. package/dist/client/calendar.mjs +202 -0
  8. package/dist/client/core.d.mts +1614 -0
  9. package/dist/client/core.mjs +2779 -0
  10. package/dist/client/error.d.mts +125 -0
  11. package/dist/client/error.mjs +166 -0
  12. package/dist/client/hooks.d.mts +162 -0
  13. package/dist/client/hooks.mjs +447 -0
  14. package/dist/client/table.d.mts +84 -0
  15. package/dist/client/table.mjs +373 -0
  16. package/dist/client/theme.d.mts +6 -0
  17. package/dist/client/theme.mjs +65 -0
  18. package/dist/command.d.mts +134 -0
  19. package/dist/command.mjs +132 -0
  20. package/dist/compact.d.mts +359 -0
  21. package/dist/compact.mjs +892 -0
  22. package/dist/dashboard.d.mts +778 -0
  23. package/dist/dashboard.mjs +1617 -0
  24. package/dist/filter-utils-DqMmy_v-.mjs +72 -0
  25. package/dist/filter-utils-IZ0GtuPo.d.mts +40 -0
  26. package/dist/forms.d.mts +1549 -0
  27. package/dist/forms.mjs +3740 -0
  28. package/dist/index.d.mts +296 -0
  29. package/dist/index.mjs +432 -0
  30. package/dist/layouts.d.mts +215 -0
  31. package/dist/layouts.mjs +460 -0
  32. package/dist/search-context-DR7DBs7S.mjs +19 -0
  33. package/dist/search.d.mts +254 -0
  34. package/dist/search.mjs +523 -0
  35. package/dist/sheet-wrapper-C13Y-Q6w.mjs +211 -0
  36. package/dist/use-base-search-BGgWnWaF.d.mts +35 -0
  37. package/dist/use-debounce-xmZucz5e.mjs +53 -0
  38. package/dist/use-keyboard-shortcut-Bl6YM5Q7.mjs +82 -0
  39. package/dist/use-keyboard-shortcut-_mRCh3QO.d.mts +24 -0
  40. package/dist/use-media-query-BnVNIKT4.mjs +17 -0
  41. package/dist/use-mobile-BX3SQVo2.mjs +20 -0
  42. package/dist/use-scroll-detection-CsgsQYvy.mjs +43 -0
  43. package/dist/utils-CDue7cEt.d.mts +6 -0
  44. package/dist/utils-DQ5SCVoW.mjs +10 -0
  45. package/package.json +85 -45
  46. package/styles.css +2 -2
  47. package/dist/chunk-GUHK2DTW.js +0 -15
  48. package/dist/chunk-GUHK2DTW.js.map +0 -1
  49. package/dist/chunk-H3NFL3GJ.js +0 -57
  50. package/dist/chunk-H3NFL3GJ.js.map +0 -1
  51. package/dist/chunk-J2YRTQE4.js +0 -293
  52. package/dist/chunk-J2YRTQE4.js.map +0 -1
  53. package/dist/compact.d.ts +0 -217
  54. package/dist/compact.js +0 -986
  55. package/dist/compact.js.map +0 -1
  56. package/dist/dashboard.d.ts +0 -387
  57. package/dist/dashboard.js +0 -1032
  58. package/dist/dashboard.js.map +0 -1
  59. package/dist/index.d.ts +0 -2140
  60. package/dist/index.js +0 -6422
  61. package/dist/index.js.map +0 -1
  62. package/dist/layout.d.ts +0 -25
  63. package/dist/layout.js +0 -4
  64. package/dist/layout.js.map +0 -1
  65. package/dist/search.d.ts +0 -172
  66. package/dist/search.js +0 -341
  67. package/dist/search.js.map +0 -1
  68. package/dist/use-base-search-AS5Z3SAy.d.ts +0 -64
  69. package/dist/utils-Cbsgs0XP.d.ts +0 -5
@@ -0,0 +1,296 @@
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";
5
+ import { ElementType, ReactNode } from "react";
6
+
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;
29
+ className?: string;
30
+ maxWidth?: MaxWidth;
31
+ }
32
+ declare function Container({
33
+ children,
34
+ className,
35
+ maxWidth
36
+ }: ContainerProps): react_jsx_runtime0.JSX.Element;
37
+ //#endregion
38
+ //#region src/components/display-heading.d.ts
39
+ interface DisplayHeadingProps {
40
+ children: ReactNode;
41
+ size?: "lg" | "xl" | "2xl";
42
+ align?: "left" | "center" | "right";
43
+ className?: string;
44
+ highlightText?: string;
45
+ highlightColor?: "primary" | "secondary" | "accent" | "gradient";
46
+ as?: ElementType;
47
+ }
48
+ /**
49
+ * DisplayHeading - Reusable component for hero/display headings
50
+ * Provides consistent typography across the platform
51
+ */
52
+ declare function DisplayHeading({
53
+ children,
54
+ size,
55
+ align,
56
+ className,
57
+ highlightText,
58
+ highlightColor,
59
+ as: Component,
60
+ ...props
61
+ }: DisplayHeadingProps): react_jsx_runtime0.JSX.Element;
62
+ //#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;
69
+ //#endregion
70
+ //#region src/components/skeleton-wrappers.d.ts
71
+ interface SkeletonTableProps {
72
+ /** Number of skeleton rows */
73
+ rows?: number;
74
+ /** Number of skeleton columns */
75
+ columns?: number;
76
+ /** Optional column headers - if provided, shows text instead of skeleton */
77
+ headers?: string[];
78
+ /** Additional CSS classes */
79
+ className?: string;
80
+ }
81
+ /**
82
+ * SkeletonTable - Loading skeleton for tables
83
+ * Matches DataTable structure for consistent loading states
84
+ *
85
+ * @example
86
+ * ```tsx
87
+ * <SkeletonTable rows={5} columns={4} />
88
+ * <SkeletonTable headers={["Name", "Email", "Status"]} rows={10} />
89
+ * ```
90
+ */
91
+ declare function SkeletonTable({
92
+ rows,
93
+ columns,
94
+ headers,
95
+ className
96
+ }: SkeletonTableProps): react_jsx_runtime0.JSX.Element;
97
+ interface SkeletonListProps {
98
+ /** Number of skeleton items */
99
+ items?: number;
100
+ /** Additional CSS classes */
101
+ className?: string;
102
+ /** Show avatar placeholder */
103
+ showAvatar?: boolean;
104
+ /** Avatar shape */
105
+ avatarShape?: "circle" | "square";
106
+ }
107
+ /**
108
+ * SkeletonList - Compact skeleton for lists with avatars
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * <SkeletonList items={5} />
113
+ * <SkeletonList items={3} showAvatar={false} />
114
+ * ```
115
+ */
116
+ declare function SkeletonList({
117
+ items,
118
+ className,
119
+ showAvatar,
120
+ avatarShape
121
+ }: SkeletonListProps): react_jsx_runtime0.JSX.Element;
122
+ interface SkeletonCardProps {
123
+ /** Additional CSS classes */
124
+ className?: string;
125
+ /** Show action buttons placeholder */
126
+ showActions?: boolean;
127
+ /** Number of text lines */
128
+ lines?: number;
129
+ }
130
+ /**
131
+ * SkeletonCard - Card skeleton for grid layouts
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * <SkeletonCard />
136
+ * <SkeletonCard showActions={false} lines={2} />
137
+ * ```
138
+ */
139
+ declare function SkeletonCard({
140
+ className,
141
+ showActions,
142
+ lines
143
+ }: SkeletonCardProps): react_jsx_runtime0.JSX.Element;
144
+ interface SkeletonGridProps {
145
+ /** Number of skeleton cards */
146
+ cards?: number;
147
+ /** Grid columns configuration */
148
+ columns?: 1 | 2 | 3 | 4;
149
+ /** Additional CSS classes */
150
+ className?: string;
151
+ /** Props passed to each SkeletonCard */
152
+ cardProps?: Omit<SkeletonCardProps, "className">;
153
+ }
154
+ /**
155
+ * SkeletonGrid - Grid of skeleton cards
156
+ *
157
+ * @example
158
+ * ```tsx
159
+ * <SkeletonGrid cards={6} columns={3} />
160
+ * ```
161
+ */
162
+ declare function SkeletonGrid({
163
+ cards,
164
+ columns,
165
+ className,
166
+ cardProps
167
+ }: SkeletonGridProps): react_jsx_runtime0.JSX.Element;
168
+ //#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 */
178
+ className?: string;
179
+ }
180
+ interface LoadingOverlayProps {
181
+ /** Loading message text */
182
+ text?: string;
183
+ /** Whether the overlay is visible */
184
+ visible?: boolean;
185
+ /** Additional className */
186
+ className?: string;
187
+ /** Children to render behind the overlay */
188
+ children?: React$1.ReactNode;
189
+ }
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,
210
+ variant,
211
+ 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
+ className,
228
+ children
229
+ }: LoadingOverlayProps): react_jsx_runtime0.JSX.Element;
230
+ //#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 */
246
+ className?: string;
247
+ /** Children rendered below the description */
248
+ children?: React$1.ReactNode;
249
+ }
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,
282
+ 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;
295
+ //#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 };