@giddaa-housing/ui 0.1.0 → 1.1.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 +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.d.ts +9 -10
- package/dist/accordion.js +41 -117
- package/dist/activity-timeline.d.ts +29 -0
- package/dist/activity-timeline.js +97 -0
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -141
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +153 -0
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +40 -142
- package/dist/badge.d.ts +12 -13
- package/dist/badge.js +66 -114
- package/dist/bar-chart.d.ts +136 -114
- package/dist/bar-chart.js +244 -297
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -148
- package/dist/bullet-chart.d.ts +33 -33
- package/dist/bullet-chart.js +123 -183
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +38 -163
- package/dist/button.d.ts +2 -19
- package/dist/button.js +90 -142
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +134 -288
- package/dist/card.d.ts +14 -16
- package/dist/card.js +58 -174
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +319 -378
- package/dist/chart.d.ts +58 -59
- package/dist/chart.js +350 -466
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +84 -84
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +23 -77
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +220 -696
- package/dist/cta.d.ts +64 -0
- package/dist/cta.js +192 -0
- package/dist/currency-selector.d.ts +41 -0
- package/dist/currency-selector.js +114 -0
- package/dist/data-table.d.ts +164 -0
- package/dist/data-table.js +673 -0
- package/dist/date-picker.d.ts +27 -20
- package/dist/date-picker.js +122 -520
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +118 -0
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +117 -320
- package/dist/dropdown-menu.d.ts +14 -14
- package/dist/dropdown-menu.js +170 -365
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +328 -467
- package/dist/editorial-card.d.ts +27 -0
- package/dist/editorial-card.js +144 -0
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -135
- package/dist/field.d.ts +23 -25
- package/dist/field.js +111 -327
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +40 -0
- package/dist/footer.js +227 -0
- package/dist/funnel-chart.d.ts +38 -41
- package/dist/funnel-chart.js +168 -563
- package/dist/gallery-indicator.d.ts +17 -0
- package/dist/gallery-indicator.js +75 -0
- package/dist/heatmap-chart.d.ts +95 -0
- package/dist/heatmap-chart.js +197 -0
- package/dist/infotip.d.ts +10 -0
- package/dist/infotip.js +40 -0
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -19
- package/dist/input-group.js +92 -372
- package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
- package/dist/input-size-context.d.ts +2 -11
- package/dist/input-size-context.js +14 -20
- package/dist/input.d.ts +2 -13
- package/dist/input.js +23 -79
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -89
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -232
- package/dist/label.d.ts +6 -6
- package/dist/label.js +39 -66
- package/dist/line-chart.d.ts +88 -89
- package/dist/line-chart.js +143 -262
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +87 -141
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +83 -0
- package/dist/match.d.ts +15 -0
- package/dist/match.js +68 -0
- package/dist/media-gallery-hero.d.ts +58 -0
- package/dist/media-gallery-hero.js +201 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +919 -0
- package/dist/multi-step-form.d.ts +56 -0
- package/dist/multi-step-form.js +342 -0
- package/dist/number-input.d.ts +34 -34
- package/dist/number-input.js +62 -413
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -107
- package/dist/pagination.d.ts +17 -20
- package/dist/pagination.js +132 -341
- package/dist/password-input.d.ts +5 -12
- package/dist/password-input.js +32 -354
- package/dist/phone-input.d.ts +19 -19
- package/dist/phone-input.js +232 -561
- package/dist/photo-gallery.d.ts +20 -20
- package/dist/photo-gallery.js +314 -746
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +60 -60
- package/dist/pie-chart.js +141 -184
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +60 -156
- package/dist/price-tag.d.ts +34 -0
- package/dist/price-tag.js +118 -0
- package/dist/progress.d.ts +18 -16
- package/dist/progress.js +156 -300
- package/dist/property-listing-card.d.ts +29 -0
- package/dist/property-listing-card.js +117 -0
- package/dist/radar-chart.d.ts +108 -0
- package/dist/radar-chart.js +172 -0
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +47 -96
- package/dist/review-block.d.ts +18 -0
- package/dist/review-block.js +154 -0
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +594 -979
- package/dist/scatter-chart.d.ts +140 -0
- package/dist/scatter-chart.js +248 -0
- package/dist/search-input.d.ts +8 -15
- package/dist/search-input.js +58 -408
- package/dist/select.d.ts +8 -8
- package/dist/select.js +131 -291
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +31 -70
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +84 -262
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +380 -1055
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +14 -18
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +9 -45
- package/dist/slider.d.ts +27 -0
- package/dist/slider.js +81 -0
- package/dist/sparkline.d.ts +43 -46
- package/dist/sparkline.js +223 -561
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -276
- package/dist/styles.css +9995 -2
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +49 -106
- package/dist/table-card.d.ts +35 -0
- package/dist/table-card.js +125 -0
- package/dist/table.d.ts +18 -14
- package/dist/table.js +114 -182
- package/dist/tabs.d.ts +23 -15
- package/dist/tabs.js +62 -149
- package/dist/tag.d.ts +22 -23
- package/dist/tag.js +104 -156
- package/dist/testimonial-block.d.ts +33 -0
- package/dist/testimonial-block.js +208 -0
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +20 -74
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +247 -464
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -310
- package/dist/tooltip.d.ts +9 -10
- package/dist/tooltip.js +33 -91
- package/dist/tree-map.d.ts +54 -57
- package/dist/tree-map.js +231 -646
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +126 -0
- package/dist/waterfall-chart.js +480 -0
- package/package.json +123 -34
- package/dist/accordion.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/avatar.js.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/bar-chart.js.map +0 -1
- package/dist/base.css +0 -32
- package/dist/breadcrumb.js.map +0 -1
- package/dist/bullet-chart.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/calendar.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chart.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/dialog.js.map +0 -1
- package/dist/dropdown-menu.js.map +0 -1
- package/dist/dropzone.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/funnel-chart.js.map +0 -1
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/input-group.js.map +0 -1
- package/dist/input-size-context.js.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/item.js.map +0 -1
- package/dist/kpi-card.js.map +0 -1
- package/dist/label.js.map +0 -1
- package/dist/line-chart.js.map +0 -1
- package/dist/logo.js.map +0 -1
- package/dist/number-input.js.map +0 -1
- package/dist/page-header.js.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/password-input.js.map +0 -1
- package/dist/phone-input.js.map +0 -1
- package/dist/photo-gallery.js.map +0 -1
- package/dist/pie-chart.js.map +0 -1
- package/dist/popover.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/search-input.js.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/separator.js.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sidebar.js.map +0 -1
- package/dist/size-context.js.map +0 -1
- package/dist/skeleton.js.map +0 -1
- package/dist/sparkline.js.map +0 -1
- package/dist/stepper.js.map +0 -1
- package/dist/switch.js.map +0 -1
- package/dist/tab-list.d.ts +0 -38
- package/dist/tab-list.js +0 -394
- package/dist/tab-list.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tag.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme/giddaa.css +0 -2
- package/dist/time-picker.js.map +0 -1
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.js.map +0 -1
- package/dist/tree-map.js.map +0 -1
package/dist/field.js
CHANGED
|
@@ -1,345 +1,129 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
3
|
+
import { SizeProvider, useComponentSize } from "./size-context.js";
|
|
4
|
+
import { Separator } from "./separator.js";
|
|
5
|
+
import { Label } from "./label.js";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
7
|
import { cva } from "class-variance-authority";
|
|
3
8
|
import { useMemo } from "react";
|
|
4
|
-
|
|
5
|
-
// src/lib/cn.ts
|
|
6
|
-
import { clsx } from "clsx";
|
|
7
|
-
import { extendTailwindMerge } from "tailwind-merge";
|
|
8
|
-
var twMerge = extendTailwindMerge({
|
|
9
|
-
extend: {
|
|
10
|
-
classGroups: {
|
|
11
|
-
"font-size": [
|
|
12
|
-
{
|
|
13
|
-
text: [
|
|
14
|
-
"gdt-display",
|
|
15
|
-
"gdt-h1",
|
|
16
|
-
"gdt-h2",
|
|
17
|
-
"gdt-h3",
|
|
18
|
-
"gdt-h4",
|
|
19
|
-
"gdt-h5",
|
|
20
|
-
"gdt-xl",
|
|
21
|
-
"gdt-lg",
|
|
22
|
-
"gdt-md",
|
|
23
|
-
"gdt-sm",
|
|
24
|
-
"gdt-xs",
|
|
25
|
-
"gdt-subtext",
|
|
26
|
-
"gdt-capitalized"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
function cn(...inputs) {
|
|
34
|
-
return twMerge(clsx(inputs));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// src/components/ui/label.tsx
|
|
38
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
39
|
-
function Label({
|
|
40
|
-
className,
|
|
41
|
-
children,
|
|
42
|
-
withAsterisk = false,
|
|
43
|
-
showOptionalText = false,
|
|
44
|
-
...props
|
|
45
|
-
}) {
|
|
46
|
-
const labelClassName = cn(
|
|
47
|
-
"flex w-fit max-w-full items-center gap-1 text-gdt-sm leading-none font-semibold text-fg-primary select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
48
|
-
className
|
|
49
|
-
);
|
|
50
|
-
if (withAsterisk) {
|
|
51
|
-
return (
|
|
52
|
-
// biome-ignore lint/a11y/noLabelWithoutControl: association is supplied by callers through htmlFor or nesting patterns.
|
|
53
|
-
/* @__PURE__ */ jsxs("label", { "data-slot": "label", className: labelClassName, ...props, children: [
|
|
54
|
-
/* @__PURE__ */ jsx("div", { className: "inline-flex", children }),
|
|
55
|
-
withAsterisk && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0 text-fg-danger", children: "*" }),
|
|
56
|
-
showOptionalText && /* @__PURE__ */ jsx("span", { className: "text-gdt-xs font-normal italic", children: "(optional)" })
|
|
57
|
-
] })
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
return (
|
|
61
|
-
// biome-ignore lint/a11y/noLabelWithoutControl: association is supplied by callers through htmlFor or nesting patterns.
|
|
62
|
-
/* @__PURE__ */ jsx("label", { "data-slot": "label", className: labelClassName, ...props, children: /* @__PURE__ */ jsxs("div", { children: [
|
|
63
|
-
children,
|
|
64
|
-
" ",
|
|
65
|
-
showOptionalText && /* @__PURE__ */ jsx("span", { className: "text-gdt-xs font-normal italic", children: "(optional)" })
|
|
66
|
-
] }) })
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// src/components/ui/separator.tsx
|
|
71
|
-
import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
|
|
72
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
73
|
-
function Separator({
|
|
74
|
-
className,
|
|
75
|
-
orientation = "horizontal",
|
|
76
|
-
dashed = false,
|
|
77
|
-
shade = "feint",
|
|
78
|
-
thickness = "default",
|
|
79
|
-
...props
|
|
80
|
-
}) {
|
|
81
|
-
return /* @__PURE__ */ jsx2(
|
|
82
|
-
SeparatorPrimitive,
|
|
83
|
-
{
|
|
84
|
-
"data-slot": "separator",
|
|
85
|
-
orientation,
|
|
86
|
-
className: cn(
|
|
87
|
-
"shrink-0 data-horizontal:h-0 data-horizontal:w-full data-vertical:w-0 data-vertical:self-stretch",
|
|
88
|
-
// style
|
|
89
|
-
dashed ? "border-dashed" : "border-solid",
|
|
90
|
-
// shade
|
|
91
|
-
shade === "feint" && "border-line-subtle",
|
|
92
|
-
shade === "deep" && "border-line",
|
|
93
|
-
// thickness
|
|
94
|
-
thickness === "hairline" && "data-horizontal:border-t-[0.5px] data-vertical:border-l-[0.5px]",
|
|
95
|
-
thickness === "default" && "data-horizontal:border-t data-vertical:border-l",
|
|
96
|
-
thickness === "thick" && "data-horizontal:border-t-2 data-vertical:border-l-2",
|
|
97
|
-
thickness === "extra-thick" && "data-horizontal:border-t-[3px] data-vertical:border-l-[3px]",
|
|
98
|
-
className
|
|
99
|
-
),
|
|
100
|
-
...props
|
|
101
|
-
}
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// src/components/ui/size-context.tsx
|
|
106
|
-
import { createContext, useContext } from "react";
|
|
107
|
-
import { Fragment, jsx as jsx3 } from "react/jsx-runtime";
|
|
108
|
-
var SizeContext = createContext(void 0);
|
|
109
|
-
function SizeProvider({
|
|
110
|
-
children,
|
|
111
|
-
size
|
|
112
|
-
}) {
|
|
113
|
-
if (!size) {
|
|
114
|
-
return /* @__PURE__ */ jsx3(Fragment, { children });
|
|
115
|
-
}
|
|
116
|
-
return /* @__PURE__ */ jsx3(SizeContext.Provider, { value: size, children });
|
|
117
|
-
}
|
|
118
|
-
function useComponentSize(size, fallback = "md") {
|
|
119
|
-
const inheritedSize = useContext(SizeContext);
|
|
120
|
-
return size ?? inheritedSize ?? fallback;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// src/components/ui/field.tsx
|
|
124
|
-
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
9
|
+
//#region src/field.tsx
|
|
125
10
|
function FieldSet({ className, ...props }) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
|
|
132
|
-
className
|
|
133
|
-
),
|
|
134
|
-
...props
|
|
135
|
-
}
|
|
136
|
-
);
|
|
11
|
+
return /* @__PURE__ */ jsx("fieldset", {
|
|
12
|
+
"data-slot": "field-set",
|
|
13
|
+
className: cn("flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", className),
|
|
14
|
+
...props
|
|
15
|
+
});
|
|
137
16
|
}
|
|
138
|
-
function FieldLegend({
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
{
|
|
146
|
-
"data-slot": "field-legend",
|
|
147
|
-
"data-variant": variant,
|
|
148
|
-
className: cn(
|
|
149
|
-
"text-fg-primary data-[variant=label]:text-gdt-sm data-[variant=label]:font-semibold data-[variant=legend]:text-gdt-md data-[variant=legend]:font-medium",
|
|
150
|
-
className
|
|
151
|
-
),
|
|
152
|
-
...props
|
|
153
|
-
}
|
|
154
|
-
);
|
|
17
|
+
function FieldLegend({ className, variant = "legend", ...props }) {
|
|
18
|
+
return /* @__PURE__ */ jsx("legend", {
|
|
19
|
+
"data-slot": "field-legend",
|
|
20
|
+
"data-variant": variant,
|
|
21
|
+
className: cn("text-fg-primary data-[variant=label]:text-gdt-sm data-[variant=label]:font-semibold data-[variant=legend]:text-gdt-md data-[variant=legend]:font-medium", className),
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
155
24
|
}
|
|
156
25
|
function FieldGroup({ className, ...props }) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
"group/field-group @container/field-group flex w-full flex-col gap-6 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
|
|
163
|
-
className
|
|
164
|
-
),
|
|
165
|
-
...props
|
|
166
|
-
}
|
|
167
|
-
);
|
|
26
|
+
return /* @__PURE__ */ jsx("div", {
|
|
27
|
+
"data-slot": "field-group",
|
|
28
|
+
className: cn("group/field-group @container/field-group flex w-full flex-col gap-6 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4", className),
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
168
31
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
32
|
+
const fieldVariants = cva("group/field flex w-full", {
|
|
33
|
+
variants: {
|
|
34
|
+
orientation: {
|
|
35
|
+
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
36
|
+
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio],[role=switch]]:mt-px data-[size=sm]:gap-1.5 data-[size=md]:gap-2.5 data-[size=lg]:gap-3",
|
|
37
|
+
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio],[role=switch]]:mt-px"
|
|
38
|
+
},
|
|
39
|
+
size: {
|
|
40
|
+
sm: "gap-1",
|
|
41
|
+
md: "gap-1.5",
|
|
42
|
+
lg: "gap-2"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
defaultVariants: {
|
|
46
|
+
orientation: "vertical",
|
|
47
|
+
size: "md"
|
|
48
|
+
}
|
|
186
49
|
});
|
|
187
|
-
function Field({
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
className
|
|
204
|
-
),
|
|
205
|
-
...props
|
|
206
|
-
}
|
|
207
|
-
) });
|
|
50
|
+
function Field({ className, orientation = "vertical", size, ...props }) {
|
|
51
|
+
const resolvedSize = useComponentSize(size);
|
|
52
|
+
return /* @__PURE__ */ jsx(SizeProvider, {
|
|
53
|
+
size: resolvedSize,
|
|
54
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
55
|
+
role: "group",
|
|
56
|
+
"data-slot": "field",
|
|
57
|
+
"data-orientation": orientation,
|
|
58
|
+
"data-size": resolvedSize,
|
|
59
|
+
className: cn(fieldVariants({
|
|
60
|
+
orientation,
|
|
61
|
+
size: resolvedSize
|
|
62
|
+
}), className),
|
|
63
|
+
...props
|
|
64
|
+
})
|
|
65
|
+
});
|
|
208
66
|
}
|
|
209
67
|
function FieldContent({ className, ...props }) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
"group/field-content flex flex-1 flex-col leading-snug group-data-[size=sm]/field:gap-0.5 group-data-[size=md]/field:gap-0.5 group-data-[size=lg]/field:gap-1",
|
|
216
|
-
className
|
|
217
|
-
),
|
|
218
|
-
...props
|
|
219
|
-
}
|
|
220
|
-
);
|
|
68
|
+
return /* @__PURE__ */ jsx("div", {
|
|
69
|
+
"data-slot": "field-content",
|
|
70
|
+
className: cn("group/field-content flex flex-1 flex-col leading-snug group-data-[size=sm]/field:gap-0.5 group-data-[size=md]/field:gap-0.5 group-data-[size=lg]/field:gap-1", className),
|
|
71
|
+
...props
|
|
72
|
+
});
|
|
221
73
|
}
|
|
222
|
-
function FieldLabel({
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
{
|
|
229
|
-
"data-slot": "field-label",
|
|
230
|
-
className: cn(
|
|
231
|
-
"group/field-label peer/field-label flex w-fit gap-1 leading-snug font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10",
|
|
232
|
-
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:gap-2",
|
|
233
|
-
className
|
|
234
|
-
),
|
|
235
|
-
...props
|
|
236
|
-
}
|
|
237
|
-
);
|
|
74
|
+
function FieldLabel({ className, ...props }) {
|
|
75
|
+
return /* @__PURE__ */ jsx(Label, {
|
|
76
|
+
"data-slot": "field-label",
|
|
77
|
+
className: cn("group/field-label peer/field-label flex w-fit gap-1 leading-snug font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:gap-2", className),
|
|
78
|
+
...props
|
|
79
|
+
});
|
|
238
80
|
}
|
|
239
81
|
function FieldTitle({ className, ...props }) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
"flex w-fit items-center gap-2 font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50",
|
|
246
|
-
className
|
|
247
|
-
),
|
|
248
|
-
...props
|
|
249
|
-
}
|
|
250
|
-
);
|
|
82
|
+
return /* @__PURE__ */ jsx("div", {
|
|
83
|
+
"data-slot": "field-label",
|
|
84
|
+
className: cn("flex w-fit items-center gap-2 font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50", className),
|
|
85
|
+
...props
|
|
86
|
+
});
|
|
251
87
|
}
|
|
252
88
|
function FieldDescription({ className, ...props }) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
"text-left font-normal text-fg-secondary group-data-[size=sm]/field:text-gdt-subtext group-data-[size=md]/field:text-gdt-xs group-data-[size=lg]/field:text-gdt-sm group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
259
|
-
"last:mt-0 nth-last-2:-mt-1",
|
|
260
|
-
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
261
|
-
className
|
|
262
|
-
),
|
|
263
|
-
...props
|
|
264
|
-
}
|
|
265
|
-
);
|
|
89
|
+
return /* @__PURE__ */ jsx("p", {
|
|
90
|
+
"data-slot": "field-description",
|
|
91
|
+
className: cn("text-left font-normal text-fg-secondary group-data-[size=sm]/field:text-gdt-subtext group-data-[size=md]/field:text-gdt-xs group-data-[size=lg]/field:text-gdt-sm group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5", "last:mt-0 nth-last-2:-mt-1", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
92
|
+
...props
|
|
93
|
+
});
|
|
266
94
|
}
|
|
267
|
-
function FieldSeparator({
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
className
|
|
280
|
-
),
|
|
281
|
-
...props,
|
|
282
|
-
children: [
|
|
283
|
-
/* @__PURE__ */ jsx4(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
284
|
-
children && /* @__PURE__ */ jsx4(
|
|
285
|
-
"span",
|
|
286
|
-
{
|
|
287
|
-
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
288
|
-
"data-slot": "field-separator-content",
|
|
289
|
-
children
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
|
-
]
|
|
293
|
-
}
|
|
294
|
-
);
|
|
95
|
+
function FieldSeparator({ children, className, ...props }) {
|
|
96
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
97
|
+
"data-slot": "field-separator",
|
|
98
|
+
"data-content": !!children,
|
|
99
|
+
className: cn("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2", className),
|
|
100
|
+
...props,
|
|
101
|
+
children: [/* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }), children && /* @__PURE__ */ jsx("span", {
|
|
102
|
+
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
103
|
+
"data-slot": "field-separator-content",
|
|
104
|
+
children
|
|
105
|
+
})]
|
|
106
|
+
});
|
|
295
107
|
}
|
|
296
|
-
function FieldError({
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
return /* @__PURE__ */ jsx4("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
316
|
-
(error) => error?.message && /* @__PURE__ */ jsx4("li", { children: error.message }, error.message)
|
|
317
|
-
) });
|
|
318
|
-
}, [children, errors]);
|
|
319
|
-
if (!content) {
|
|
320
|
-
return null;
|
|
321
|
-
}
|
|
322
|
-
return /* @__PURE__ */ jsx4(
|
|
323
|
-
"div",
|
|
324
|
-
{
|
|
325
|
-
role: "alert",
|
|
326
|
-
"data-slot": "field-error",
|
|
327
|
-
className: cn("text-gdt-xs font-normal text-fg-danger", className),
|
|
328
|
-
...props,
|
|
329
|
-
children: content
|
|
330
|
-
}
|
|
331
|
-
);
|
|
108
|
+
function FieldError({ className, children, errors, ...props }) {
|
|
109
|
+
const content = useMemo(() => {
|
|
110
|
+
if (children) return children;
|
|
111
|
+
if (!errors?.length) return null;
|
|
112
|
+
const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
|
|
113
|
+
if (uniqueErrors?.length === 1) return uniqueErrors[0]?.message;
|
|
114
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
115
|
+
className: "ml-4 flex list-disc flex-col gap-1",
|
|
116
|
+
children: uniqueErrors.map((error) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, error.message))
|
|
117
|
+
});
|
|
118
|
+
}, [children, errors]);
|
|
119
|
+
if (!content) return null;
|
|
120
|
+
return /* @__PURE__ */ jsx("div", {
|
|
121
|
+
role: "alert",
|
|
122
|
+
"data-slot": "field-error",
|
|
123
|
+
className: cn("text-gdt-xs font-normal text-fg-danger", className),
|
|
124
|
+
...props,
|
|
125
|
+
children: content
|
|
126
|
+
});
|
|
332
127
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
FieldContent,
|
|
336
|
-
FieldDescription,
|
|
337
|
-
FieldError,
|
|
338
|
-
FieldGroup,
|
|
339
|
-
FieldLabel,
|
|
340
|
-
FieldLegend,
|
|
341
|
-
FieldSeparator,
|
|
342
|
-
FieldSet,
|
|
343
|
-
FieldTitle
|
|
344
|
-
};
|
|
345
|
-
//# sourceMappingURL=field.js.map
|
|
128
|
+
//#endregion
|
|
129
|
+
export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
|
package/dist/filter.d.ts
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/filter.d.ts
|
|
3
|
+
type FilterJoin = "AND" | "OR";
|
|
4
|
+
type FilterFieldType = "text" | "number" | "date" | "select" | "multiSelect" | "range" | "boolean";
|
|
5
|
+
type FilterCondition = "equals" | "greaterThan" | "lessThan" | "contains";
|
|
6
|
+
type FilterRangeValue = {
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
};
|
|
10
|
+
type FilterValue = string | number | boolean | Array<string | number> | FilterRangeValue;
|
|
11
|
+
type SerializedFilter = {
|
|
12
|
+
connector: FilterJoin;
|
|
13
|
+
field: string;
|
|
14
|
+
action: FilterCondition;
|
|
15
|
+
value: string | number | boolean | Array<string | number>;
|
|
16
|
+
};
|
|
17
|
+
type FilterFieldOption = {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string | number;
|
|
20
|
+
};
|
|
21
|
+
type FilterFieldValueProps = {
|
|
22
|
+
field: FilterFieldConfig;
|
|
23
|
+
value?: FilterValue;
|
|
24
|
+
onChange: (value?: FilterValue) => void;
|
|
25
|
+
invalid: boolean;
|
|
26
|
+
error?: string;
|
|
27
|
+
};
|
|
28
|
+
type FilterFieldConfig = {
|
|
29
|
+
/** The field id sent to the api e.g Name, for nested fields use dot notation e.g Address.City */
|
|
30
|
+
field: string;
|
|
31
|
+
label: string;
|
|
32
|
+
type: FilterFieldType;
|
|
33
|
+
/** Static options for select or multiSelect fields, also shown while `loadOptions` is in flight. */
|
|
34
|
+
options?: FilterFieldOption[];
|
|
35
|
+
/**
|
|
36
|
+
* Lazily load select options. Only called once the dropdown is opened and
|
|
37
|
+
* the result is cached per field, so wire it to `fetch`, a server action,
|
|
38
|
+
* or `queryClient.fetchQuery` — no data library is assumed.
|
|
39
|
+
*/
|
|
40
|
+
loadOptions?: () => Promise<FilterFieldOption[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Replace the built-in value input for this field. Compose the exported
|
|
43
|
+
* `FilterValue*` components to keep styling consistent, e.g. wire
|
|
44
|
+
* `FilterValueSelect` to React Query in your app.
|
|
45
|
+
*/
|
|
46
|
+
renderValue?: (props: FilterFieldValueProps) => React.ReactNode;
|
|
47
|
+
};
|
|
48
|
+
type FilterProps = {
|
|
49
|
+
children: React.ReactNode;
|
|
50
|
+
/** Connector used between generated filters. */
|
|
51
|
+
defaultJoin?: FilterJoin;
|
|
52
|
+
fields: FilterFieldConfig[];
|
|
53
|
+
/** Receives the serialized filter JSON string plus the structured filters. */
|
|
54
|
+
onApply: (serialized: string, filters: SerializedFilter[]) => void;
|
|
55
|
+
/** Serialized filters used to initialize state, e.g. read from the URL. */
|
|
56
|
+
defaultValue?: string;
|
|
57
|
+
};
|
|
58
|
+
declare function Filter({ children, defaultJoin, fields, onApply, defaultValue }: FilterProps): React.JSX.Element;
|
|
59
|
+
type FilterTriggerProps = {
|
|
60
|
+
children?: React.ReactNode;
|
|
61
|
+
className?: string;
|
|
62
|
+
countClassName?: string;
|
|
63
|
+
/** Hide the count badge while no filters are applied. */
|
|
64
|
+
hideCountWhenZero?: boolean;
|
|
65
|
+
render?: (props: {
|
|
66
|
+
count: number;
|
|
67
|
+
}) => React.ReactNode;
|
|
68
|
+
};
|
|
69
|
+
declare function FilterTrigger({ children, className, countClassName, hideCountWhenZero, render }: FilterTriggerProps): React.JSX.Element;
|
|
70
|
+
type FilterContentProps = {
|
|
71
|
+
addFilterLabel?: React.ReactNode;
|
|
72
|
+
className?: string;
|
|
73
|
+
label?: React.ReactNode;
|
|
74
|
+
};
|
|
75
|
+
declare function FilterContent({ addFilterLabel, className, label }: FilterContentProps): React.JSX.Element;
|
|
76
|
+
type FilterValueInputProps = {
|
|
77
|
+
value?: FilterValue;
|
|
78
|
+
onChange: (value?: FilterValue) => void;
|
|
79
|
+
invalid?: boolean;
|
|
80
|
+
placeholder?: string;
|
|
81
|
+
};
|
|
82
|
+
declare function FilterValueText({ value, onChange, invalid, placeholder }: FilterValueInputProps): React.JSX.Element;
|
|
83
|
+
declare function FilterValueNumber({ value, onChange, invalid, placeholder }: FilterValueInputProps): React.JSX.Element;
|
|
84
|
+
declare function FilterValueDate({ value, onChange, invalid }: FilterValueInputProps): React.JSX.Element;
|
|
85
|
+
type FilterValueBooleanProps = FilterValueInputProps & {
|
|
86
|
+
trueLabel?: string;
|
|
87
|
+
falseLabel?: string;
|
|
88
|
+
};
|
|
89
|
+
declare function FilterValueBoolean({ value, onChange, invalid, placeholder, trueLabel, falseLabel }: FilterValueBooleanProps): React.JSX.Element;
|
|
90
|
+
declare function FilterValueRange({ value, onChange, invalid }: FilterValueInputProps): React.JSX.Element;
|
|
91
|
+
type FilterValueSelectProps = FilterValueInputProps & {
|
|
92
|
+
options: FilterFieldOption[];
|
|
93
|
+
multiple?: boolean;
|
|
94
|
+
loading?: boolean;
|
|
95
|
+
emptyMessage?: React.ReactNode;
|
|
96
|
+
open?: boolean;
|
|
97
|
+
onOpenChange?: (open: boolean) => void;
|
|
98
|
+
};
|
|
99
|
+
declare function FilterValueSelect({ value, onChange, invalid, placeholder, options, multiple, loading, emptyMessage, open, onOpenChange }: FilterValueSelectProps): React.JSX.Element;
|
|
100
|
+
type FilterApplyButtonProps = {
|
|
101
|
+
children?: React.ReactNode;
|
|
102
|
+
className?: string;
|
|
103
|
+
onApplySuccess?: () => void;
|
|
104
|
+
};
|
|
105
|
+
declare function FilterApplyButton({ children, className, onApplySuccess }: FilterApplyButtonProps): React.JSX.Element;
|
|
106
|
+
type FilterResetButtonProps = {
|
|
107
|
+
children?: React.ReactNode;
|
|
108
|
+
className?: string;
|
|
109
|
+
onReset?: () => void;
|
|
110
|
+
};
|
|
111
|
+
declare function FilterResetButton({ children, className, onReset }: FilterResetButtonProps): React.JSX.Element;
|
|
112
|
+
/**
|
|
113
|
+
* Parse a serialized filter string (as produced by `onApply`) back into
|
|
114
|
+
* structured filters. Invalid or malformed entries are dropped.
|
|
115
|
+
*/
|
|
116
|
+
declare function parseSerializedFilters(value: string): SerializedFilter[];
|
|
117
|
+
//#endregion
|
|
118
|
+
export { Filter, FilterApplyButton, type FilterApplyButtonProps, type FilterCondition, FilterContent, type FilterContentProps, type FilterFieldConfig, type FilterFieldOption, type FilterFieldType, type FilterFieldValueProps, type FilterJoin, type FilterProps, type FilterRangeValue, FilterResetButton, type FilterResetButtonProps, FilterTrigger, type FilterTriggerProps, type FilterValue, FilterValueBoolean, type FilterValueBooleanProps, FilterValueDate, type FilterValueInputProps, FilterValueNumber, FilterValueRange, FilterValueSelect, type FilterValueSelectProps, FilterValueText, type SerializedFilter, parseSerializedFilters };
|