@jerry-fd/ui 0.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/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT LICENSE
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,162 @@
1
+ A powerful and flexible data filter component library for React, providing multiple filter types with rich configuration options.
2
+
3
+ > ⚠️ **Note**: This is a client-side only component library. It does not support Server-Side Rendering (SSR) or React Server Components (RSC).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @jerry-fd/data-filter
9
+
10
+ # Install peer dependencies
11
+ npm install dayjs antd
12
+ ```
13
+
14
+ ## Features
15
+
16
+ - 📦 Multiple filter types (text, number, date, option, multi-option)
17
+ - 🎨 Customizable UI with modern design
18
+ - 🔍 Built-in search functionality
19
+ - 📅 Date picker with single and range modes
20
+ - 🔢 Number filter with single and range modes
21
+ - 🎯 Full TypeScript support
22
+ - ♿ Accessible (ARIA compliant)
23
+ - 🎛️ Controlled component with state management
24
+
25
+ ## Quick Start
26
+
27
+ ```tsx
28
+ import React, { useState } from 'react';
29
+ import { DataFilter, FilterColumnDef, FiltersState } from '@jerry-fd/data-filter';
30
+ import '@jerry-fd/data-filter/styles';
31
+ import dayjs from 'dayjs';
32
+
33
+ function App() {
34
+ const [filters, setFilters] = useState<FiltersState>([]);
35
+
36
+ const columns: FilterColumnDef[] = [
37
+ {
38
+ type: 'text',
39
+ columnId: 'name',
40
+ displayName: 'Name',
41
+ icon: Heading1,
42
+ },
43
+ ];
44
+
45
+ return (
46
+ <DataFilter
47
+ columns={columns}
48
+ filters={filters}
49
+ onFiltersChange={setFilters}
50
+ />
51
+ );
52
+ }
53
+ ```
54
+
55
+ ## Example
56
+
57
+ ```tsx
58
+ import type { FilterColumnDef, FilterColumnOption, FiltersState } from '@jerry-fd/data-filter';
59
+ import { DataFilter } from '@jerry-fd/data-filter';
60
+ import dayjs from 'dayjs';
61
+
62
+ type DataSchema = {
63
+ id: number;
64
+ name: string;
65
+ status: string;
66
+ tags: string[];
67
+ date: Date;
68
+ score: number;
69
+ };
70
+
71
+ const filterColumns: FilterColumnDef<DataSchema>[] = [
72
+ {
73
+ type: 'text',
74
+ columnId: 'name',
75
+ displayName: 'Name',
76
+ icon: Heading1,
77
+ },
78
+ ];
79
+
80
+ // Initialize with default filters (optional)
81
+ const defaultFilters: FiltersState = [
82
+ {
83
+ columnId: 'name',
84
+ type: 'text',
85
+ values: ['Search'],
86
+ },
87
+ ];
88
+
89
+ function App() {
90
+ const [filters, setFilters] = useState<FiltersState>(defaultFilters);
91
+
92
+ return (
93
+ <DataFilter
94
+ columns={filterColumns}
95
+ filters={filters}
96
+ onFiltersChange={setFilters}
97
+ />
98
+ );
99
+ }
100
+
101
+ export default App;
102
+ ```
103
+
104
+ ## API Reference
105
+
106
+ ### DataFilter Props
107
+
108
+ | Prop | Type | Description |
109
+ |------|------|-------------|
110
+ | `columns` | `FilterColumnDef[]` | Array of filter column definitions |
111
+ | `filters` | `FiltersState` | Current filter state (controlled) |
112
+ | `onFiltersChange` | `(filters: FiltersState) => void` | Callback when filters change |
113
+
114
+ ### FilterColumnDef
115
+
116
+ Base properties for all filter types:
117
+
118
+ | Property | Type | Required | Description |
119
+ |----------|------|----------|-------------|
120
+ | `type` | `'text' \| 'number' \| 'date' \| 'option' \| 'multiOption'` | ✅ | Filter type |
121
+ | `columnId` | `string` | ✅ | Unique identifier for the filter |
122
+ | `displayName` | `string` | ✅ | Display name for the filter |
123
+ | `icon` | `React.ReactNode` | ❌ | Optional |
124
+
125
+ ### Number/Date Filter Additional Props
126
+
127
+ | Property | Type | Required | Description |
128
+ |----------|------|----------|-------------|
129
+ | `mode` | `'single' \| 'range'` | ✅ | Single value or range selection |
130
+ | `min` | `number` | ❌ | Minimum value (number only) |
131
+ | `max` | `number` | ❌ | Maximum value (number only) |
132
+ | `showTime` | `boolean` | ❌ | Show time picker (date only) |
133
+
134
+ ### Option Filter Additional Props
135
+
136
+ | Property | Type | Required | Description |
137
+ |----------|------|----------|-------------|
138
+ | `options` | `FilterColumnOption[]` | ✅ | Array of selectable options |
139
+
140
+ ### FilterColumnOption
141
+
142
+ | Property | Type | Description |
143
+ |----------|------|-------------|
144
+ | `label` | `string` | Display label |
145
+ | `value` | `string` | Option value |
146
+ | `icon` | `React.ReactNode` | Optional icon or visual indicator |
147
+
148
+ ### FiltersState
149
+
150
+ Array of active filter values:
151
+
152
+ ```tsx
153
+ type FiltersState = Array<{
154
+ columnId: string;
155
+ type: 'text' | 'number' | 'date' | 'option' | 'multiOption';
156
+ values: any[];
157
+ }>;
158
+ ```
159
+
160
+ ## License
161
+
162
+ MIT
@@ -0,0 +1,84 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React$1 from 'react';
3
+ import { Dayjs } from 'dayjs';
4
+
5
+ type IconSize = number | string;
6
+ type IconBaseProps = {
7
+ size?: IconSize;
8
+ className?: string;
9
+ };
10
+ type IconType<P extends IconBaseProps = IconBaseProps> = React$1.ComponentType<P> | React$1.ReactElement<P>;
11
+
12
+ interface FilterColumnOption {
13
+ key?: React.Key;
14
+ label: string;
15
+ value: string;
16
+ icon?: React.ReactNode;
17
+ selected?: boolean;
18
+ }
19
+ type ColumnDataType = {
20
+ type: 'text';
21
+ options?: never;
22
+ };
23
+ type OptionBasedColumnDataType = {
24
+ type: 'option' | 'multiOption';
25
+ options: FilterColumnOption[];
26
+ };
27
+ type NumberBasedColumnDataType = {
28
+ type: 'number';
29
+ mode?: 'single' | 'range';
30
+ min?: number;
31
+ max?: number;
32
+ step?: number;
33
+ options?: never;
34
+ };
35
+ type DateBasedColumnDataType = {
36
+ type: 'date';
37
+ mode?: 'single' | 'range';
38
+ showTime?: boolean | {
39
+ format: 'HH:mm' | 'HH:mm:ss';
40
+ };
41
+ };
42
+ interface ColumnConfig<T> {
43
+ columnId: keyof T & string;
44
+ displayName: string;
45
+ icon?: IconType;
46
+ }
47
+ type ColumnDataTypes = ColumnDataType | DateBasedColumnDataType | NumberBasedColumnDataType | OptionBasedColumnDataType;
48
+ type FilterColumnDef<TData, TType extends ColumnDataTypes['type'] = ColumnDataTypes['type']> = ColumnConfig<TData> & (TType extends 'option' | 'multiOption' ? OptionBasedColumnDataType & {
49
+ type: TType;
50
+ } : TType extends 'number' ? NumberBasedColumnDataType & {
51
+ type: TType;
52
+ } : TType extends 'date' ? DateBasedColumnDataType & {
53
+ type: TType;
54
+ } : TType extends 'text' ? ColumnDataType & {
55
+ type: TType;
56
+ } : ColumnDataTypes);
57
+ type ColumnDataNativeMap = {
58
+ text: string;
59
+ number: number;
60
+ date: Dayjs;
61
+ option: string;
62
+ multiOption: string[];
63
+ };
64
+ type ElementType<T> = T extends (infer U)[] ? U : T;
65
+ type FilterValues<T extends ColumnDataTypes['type']> = Array<ElementType<ColumnDataNativeMap[T]>>;
66
+ type FilterModel<TType extends ColumnDataTypes['type'] = ColumnDataTypes['type']> = {
67
+ columnId: string;
68
+ type: TType;
69
+ values: FilterValues<TType>;
70
+ };
71
+ type FiltersState = Array<FilterModel>;
72
+ type UseDataFiltersProps = {
73
+ defaultFilters?: FiltersState;
74
+ filters?: FiltersState;
75
+ onFiltersChange?: React.Dispatch<React.SetStateAction<FiltersState>>;
76
+ };
77
+ type DataFilterProps<T> = UseDataFiltersProps & {
78
+ columns: FilterColumnDef<T>[];
79
+ className?: string;
80
+ };
81
+
82
+ declare function DataFilter<TData>({ columns, filters, defaultFilters, className, onFiltersChange, }: DataFilterProps<TData>): react_jsx_runtime.JSX.Element;
83
+
84
+ export { DataFilter, type FilterColumnDef, type FilterColumnOption, type FiltersState };
@@ -0,0 +1,3 @@
1
+ import {b,c}from'./chunk-75LTHX75.js';import {extendTailwindMerge}from'tailwind-merge';import {createTV,cn as cn$1}from'tailwind-variants';import F from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Slot,Separator,Popover}from'radix-ui';import {Command}from'cmdk';import {DatePicker,Checkbox,Radio,Input,InputNumber}from'antd';import {m,AnimatePresence}from'motion/react';import $n from'react-use-measure';function xt(t,{insertAt:e}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",e==="top"&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t));}xt(`/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */:root:not(#\\#),:host:not(#\\#){--color-red-500: rgb(251, 44, 54);--color-orange-500: rgb(252, 113, 0);--color-green-500: rgb(0, 198, 90);--color-teal-500: rgb(0, 185, 166);--color-purple-300: rgb(216, 180, 255);--color-pink-500: rgb(246, 51, 154);--color-neutral-50: hsl(216deg, 33.33%, 97.06%);--color-neutral-200: hsl(220deg, 17.65%, 90%);--color-neutral-300: hsl(218.57deg, 15.22%, 81.96%);--color-neutral-400: hsl(220deg, 11.48%, 64.12%);--color-neutral-600: hsl(222deg, 10.87%, 36.08%);--color-neutral-800: hsl(227.14deg, 17.07%, 16.08%);--color-neutral-950: hsl(221.54deg, 31.71%, 8.04%);--color-white: #fff;--spacing: 1px;--container-2xs: 18rem;--container-lg: 32rem;--container-xl: 36rem;--tracking-tight: -.025em;--tracking-widest: .1em;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-out: cubic-bezier(0, 0, .2, 1);--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--color-neutral-0: hsl(0deg, 0%, 100%);--color-bg-strong: var(--color-neutral-950);--color-bg-surface: var(--color-neutral-800);--color-bg-soft: var(--color-neutral-200);--color-bg-weak: var(--color-neutral-50);--color-bg-white: var(--color-neutral-0);--color-text-strong: var(--color-neutral-950);--color-text-sub: var(--color-neutral-600);--color-text-soft: var(--color-neutral-400);--color-text-disabled: var(--color-neutral-300);--color-text-white: var(--color-neutral-0);--color-stroke-soft: var(--color-neutral-200);--text-title-h1: 5.6rem;--text-title-h1--line-height: 6.4rem;--text-title-h1--letter-spacing: -.01em;--text-title-h1--font-weight: 500;--text-title-h2: 4.8rem;--text-title-h2--line-height: 5.6rem;--text-title-h2--letter-spacing: -.01em;--text-title-h2--font-weight: 500;--text-title-h3: 4rem;--text-title-h3--line-height: 4.8rem;--text-title-h3--letter-spacing: -.01em;--text-title-h3--font-weight: 500;--text-label-xl: 2.4rem;--text-label-xl--line-height: 3.2rem;--text-label-xl--letter-spacing: -.015em;--text-label-xl--font-weight: 500;--text-label-lg: 1.8rem;--text-label-lg--line-height: 2.4rem;--text-label-lg--letter-spacing: -.015em;--text-label-lg--font-weight: 500;--text-label-md: 1.6rem;--text-label-md--line-height: 2.4rem;--text-label-md--letter-spacing: -.011em;--text-label-md--font-weight: 500;--text-label-sm: 1.4rem;--text-label-sm--line-height: 2rem;--text-label-sm--letter-spacing: -.006em;--text-label-sm--font-weight: 500;--text-label-xs: 1.2rem;--text-label-xs--line-height: 1.6rem;--text-label-xs--letter-spacing: 0em;--text-label-xs--font-weight: 500;--text-paragraph-xl: 2.4rem;--text-paragraph-xl--line-height: 3.2rem;--text-paragraph-xl--letter-spacing: -.015em;--text-paragraph-xl--font-weight: 400;--text-paragraph-lg: 1.8rem;--text-paragraph-lg--line-height: 2.4rem;--text-paragraph-lg--letter-spacing: -.015em;--text-paragraph-lg--font-weight: 400;--text-paragraph-md: 1.6rem;--text-paragraph-md--line-height: 2.4rem;--text-paragraph-md--letter-spacing: -.011em;--text-paragraph-md--font-weight: 400;--text-paragraph-sm: 1.4rem;--text-paragraph-sm--line-height: 2rem;--text-paragraph-sm--letter-spacing: -.006em;--text-paragraph-sm--font-weight: 400;--text-paragraph-xs: 1.2rem;--text-paragraph-xs--line-height: 1.6rem;--text-paragraph-xs--letter-spacing: 0em;--text-paragraph-xs--font-weight: 400;--text-subheading-md: 1.6rem;--text-subheading-md--line-height: 2.4rem;--text-subheading-md--letter-spacing: .06em;--text-subheading-md--font-weight: 500;--text-subheading-sm: 1.4rem;--text-subheading-sm--line-height: 2rem;--text-subheading-sm--letter-spacing: .06em;--text-subheading-sm--font-weight: 500;--text-subheading-xs: 1.2rem;--text-subheading-xs--line-height: 1.6rem;--text-subheading-xs--letter-spacing: .04em;--text-subheading-xs--font-weight: 500;--text-subheading-2xs: 1.1rem;--text-subheading-2xs--line-height: 1.2rem;--text-subheading-2xs--letter-spacing: .02em;--text-subheading-2xs--font-weight: 500;--root-font-size: 10px}@supports (color: color(display-p3 0 0 0%)){:root:not(#\\#),:host:not(#\\#){--color-orange-500: rgb(252, 113, 0);--color-green-500: rgb(0, 198, 90);--color-teal-500: rgb(0, 185, 166);--color-purple-300: rgb(216, 180, 255)}@media(color-gamut:p3){:root:not(#\\#),:host:not(#\\#){--color-orange-500: color(display-p3 .94659 .44979 .07573);--color-green-500: color(display-p3 .30873 .77475 .37431);--color-teal-500: color(display-p3 .26657 .72152 .65546);--color-purple-300: color(display-p3 .82939 .70374 .99608)}}}.pointer-events-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){pointer-events:none}.visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){visibility:visible}.sr-only:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border-width:0}.absolute:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){position:absolute}.relative:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){position:relative}.static:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){position:static}.inset-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){top:calc(var(--spacing) * 0);right:calc(var(--spacing) * 0);bottom:calc(var(--spacing) * 0);left:calc(var(--spacing) * 0)}.top-16:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){top:calc(var(--spacing) * 16)}.right-16:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){right:calc(var(--spacing) * 16)}.z-1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){z-index:1}.z-50:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){z-index:50}.container:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:100%}.-mx-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-left:calc(var(--spacing) * -4);margin-right:calc(var(--spacing) * -4)}.mx-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-left:calc(var(--spacing) * 4);margin-right:calc(var(--spacing) * 4)}.-mr-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-right:calc(var(--spacing) * -4)}.mr-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-right:calc(var(--spacing) * 4)}.-ml-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-left:calc(var(--spacing) * -2)}.ml-auto:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin-left:auto}.flex:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:flex}.grid:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:grid}.hidden:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:none}.inline:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:inline}.inline-flex:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:inline-flex}.table:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){display:table}.size-10:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-14:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-18:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 18);height:calc(var(--spacing) * 18)}.size-24:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.h-26:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:calc(var(--spacing) * 26)}.h-28:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:calc(var(--spacing) * 28)}.h-32:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:calc(var(--spacing) * 32)}.h-36:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:calc(var(--spacing) * 36)}.h-40:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:calc(var(--spacing) * 40)}.h-\\[1px\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:1px}.h-full:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:100%}.h-px:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){height:1px}.max-h-256:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){max-height:calc(var(--spacing) * 256)}.max-h-300:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){max-height:calc(var(--spacing) * 300)}.max-h-fit:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){max-height:fit-content}.w-24:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 24)}.w-28:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:calc(var(--spacing) * 28)}.w-\\[1px\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:1px}.w-fit:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:fit-content}.w-full:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:100%}.w-max:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){width:max-content}.max-w-2xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){max-width:var(--container-2xs)}.max-w-xl:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){max-width:var(--container-xl)}.min-w-288:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){min-width:calc(var(--spacing) * 288)}.min-w-lg:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){min-width:var(--container-lg)}.shrink-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){flex-shrink:0}.-translate-x-1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-\\[calc\\(50\\%\\+1px\\)\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-translate-y: calc((50% + 1px)*-1) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-45:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){rotate:-45deg}.transform:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-not-allowed:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){cursor:not-allowed}.scroll-py-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){scroll-padding-block:calc(var(--spacing) * 4)}.flex-col:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){flex-direction:column}.flex-wrap:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){flex-wrap:wrap}.items-center:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){align-items:center}.justify-between:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){justify-content:space-between}.justify-center:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){justify-content:center}.gap-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 2)}.gap-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 4)}.gap-5:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 5)}.gap-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 6)}.gap-8:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 8)}.gap-12:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){gap:calc(var(--spacing) * 12)}.space-y-10:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){:where(&>:not(:last-child)):not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-space-y-reverse: 0;margin-top:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}}.overflow-hidden:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){overflow:hidden}.overflow-x-hidden:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){overflow-x:hidden}.overflow-y-auto:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){overflow-y:auto}.rounded-2xl:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:var(--radius-2xl)}.rounded-\\[6px\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:6px}.rounded-\\[8px\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:8px}.rounded-full:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:calc(infinity * 1px)}.rounded-lg:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:var(--radius-lg)}.rounded-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:0}.rounded-xl:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-radius:var(--radius-xl)}.rounded-r-full:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-top-right-radius:calc(infinity * 1px);border-bottom-right-radius:calc(infinity * 1px)}.rounded-bl-\\[3px\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-bottom-left-radius:3px}.border:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-style:var(--tw-border-style);border-width:1px}.border-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-style:var(--tw-border-style);border-width:0px}.border-b:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-border-style: none;border-style:none}.border-stroke-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-color:var(--color-stroke-soft)}.border-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-color:transparent}.bg-bg-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-soft)}.bg-bg-strong:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-strong)}.bg-bg-weak:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-weak)}.bg-bg-white:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-white)}.bg-green-500:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-green-500)}.bg-orange-500:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-orange-500)}.bg-pink-500:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-pink-500)}.bg-purple-300:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-purple-300)}.bg-red-500:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-red-500)}.bg-stroke-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-stroke-soft)}.bg-teal-500:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-teal-500)}.bg-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:transparent}.p-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding:calc(var(--spacing) * 0)}.p-0\\!:not(#\\#){padding:calc(var(--spacing) * 0)!important}.p-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding:calc(var(--spacing) * 4)}.p-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding:calc(var(--spacing) * 6)}.p-16:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding:calc(var(--spacing) * 16)}.p-20:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding:calc(var(--spacing) * 20)}.px-4:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 4);padding-right:calc(var(--spacing) * 4)}.px-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 6);padding-right:calc(var(--spacing) * 6)}.px-8:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 8);padding-right:calc(var(--spacing) * 8)}.px-10:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 10);padding-right:calc(var(--spacing) * 10)}.px-12:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 12);padding-right:calc(var(--spacing) * 12)}.px-14:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 14);padding-right:calc(var(--spacing) * 14)}.py-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-top:calc(var(--spacing) * 6);padding-bottom:calc(var(--spacing) * 6)}.py-12:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-top:calc(var(--spacing) * 12);padding-bottom:calc(var(--spacing) * 12)}.py-24:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-top:calc(var(--spacing) * 24);padding-bottom:calc(var(--spacing) * 24)}.ps-10:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 10)}.pe-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-right:calc(var(--spacing) * 6)}.pt-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-top:calc(var(--spacing) * 6)}.pb-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-bottom:calc(var(--spacing) * 0)}.pb-5:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-bottom:calc(var(--spacing) * 5)}.pb-8:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-bottom:calc(var(--spacing) * 8)}.text-center:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){text-align:center}.text-label-lg:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-lg);line-height:var(--tw-leading, var(--text-label-lg--line-height));letter-spacing:var(--tw-tracking, var(--text-label-lg--letter-spacing));font-weight:var(--tw-font-weight, var(--text-label-lg--font-weight))}.text-label-md:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-md);line-height:var(--tw-leading, var(--text-label-md--line-height));letter-spacing:var(--tw-tracking, var(--text-label-md--letter-spacing));font-weight:var(--tw-font-weight, var(--text-label-md--font-weight))}.text-label-sm:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-sm);line-height:var(--tw-leading, var(--text-label-sm--line-height));letter-spacing:var(--tw-tracking, var(--text-label-sm--letter-spacing));font-weight:var(--tw-font-weight, var(--text-label-sm--font-weight))}.text-label-xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-xs);line-height:var(--tw-leading, var(--text-label-xs--line-height));letter-spacing:var(--tw-tracking, var(--text-label-xs--letter-spacing));font-weight:var(--tw-font-weight, var(--text-label-xs--font-weight))}.text-paragraph-sm:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-sm);line-height:var(--tw-leading, var(--text-paragraph-sm--line-height));letter-spacing:var(--tw-tracking, var(--text-paragraph-sm--letter-spacing));font-weight:var(--tw-font-weight, var(--text-paragraph-sm--font-weight))}.text-title-h1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-title-h1);line-height:var(--tw-leading, var(--text-title-h1--line-height));letter-spacing:var(--tw-tracking, var(--text-title-h1--letter-spacing));font-weight:var(--tw-font-weight, var(--text-title-h1--font-weight))}.leading-16:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-leading: calc(var(--spacing) * 16);line-height:calc(var(--spacing) * 16)}.tracking-tight:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-tracking: var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){white-space:nowrap}.text-text-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-soft)}.text-text-strong:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-strong)}.text-text-sub:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-sub)}.text-text-white:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-white)}.text-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:transparent}.tabular-nums:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-numeric-spacing: tabular-nums;font-feature-settings:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:0}.opacity-50:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:.5}.opacity-100:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:1}.shadow-regular-md:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-shadow: 0 16px 32px -12px var(--tw-shadow-color, #0e121b1a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-stroke-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ring-color: var(--color-stroke-soft)}.ring-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ring-color: transparent}.outline-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){outline-style:var(--tw-outline-style);outline-width:0px}.filter:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-200:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-duration: .2s;transition-duration:.2s}.ease-out:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-outline-style: none;outline-style:none}.select-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){-webkit-user-select:none;user-select:none}.\\[clip-path\\:polygon\\(0_100\\%\\,0_0\\,100\\%_100\\%\\)\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){-webkit-clip-path:polygon(0 100%,0 0,100% 100%);clip-path:polygon(0 100%,0 0,100% 100%)}.group-aria-selected\\:text-text-sub:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){[aria-selected=true]:where(.group):not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *&{color:var(--color-text-sub)}}.group-data-\\[selected\\=true\\]\\:opacity-100:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){[data-selected=true]:where(.group):not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *&{opacity:1}}.hover\\:border-stroke-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:hover:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-color:var(--color-stroke-soft)}}.hover\\:bg-bg-surface:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:hover:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-surface)}}.hover\\:bg-bg-weak:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:hover:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-weak)}}.hover\\:text-text-strong:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:hover:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-strong)}}.focus-visible\\:bg-bg-white:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-white)}}.focus-visible\\:text-text-strong:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-strong)}}.focus-visible\\:outline-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){outline-style:var(--tw-outline-style);outline-width:2px}}.focus-visible\\:outline-offset-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){outline-offset:0px}}.focus-visible\\:outline-offset-1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){outline-offset:1px}}.focus-visible\\:outline-\\(--focus-outline-color\\):not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:focus-visible:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){outline-color:var(--focus-outline-color)}}.active\\:scale-\\[0\\.98\\]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&.active:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){scale:.98}}.active\\:border-stroke-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&.active:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){border-color:var(--color-stroke-soft)}}.active\\:bg-bg-surface:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&.active:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-surface)}}.active\\:bg-bg-weak:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&.active:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-weak)}}.disabled\\:pointer-events-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){pointer-events:none}}.disabled\\:cursor-not-allowed:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){cursor:not-allowed}}.disabled\\:text-text-disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-disabled)}}.disabled\\:opacity-50:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:.5}}.disabled\\:opacity-70:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:.7}}.disabled\\:ring-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:disabled:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ring-color: transparent}}.data-disabled\\:pointer-events-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-disabled]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){pointer-events:none}}.data-disabled\\:opacity-70:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-disabled]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:.7}}.data-disabled\\:ring-transparent:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-disabled]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-ring-color: transparent}}.data-\\[disabled\\=true\\]\\:pointer-events-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-disabled=true]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){pointer-events:none}}.data-\\[disabled\\=true\\]\\:opacity-50:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-disabled=true]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:.5}}.data-\\[selected\\=true\\]\\:bg-bg-weak:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-selected=true]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){background-color:var(--color-bg-weak)}}.data-\\[selected\\=true\\]\\:text-text-strong:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-selected=true]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-strong)}}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-side=bottom]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-translate-y: calc(2*var(--spacing)*-1)}}.data-\\[side\\=left\\]\\:slide-in-from-right-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-side=left]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-translate-x: calc(2*var(--spacing))}}.data-\\[side\\=right\\]\\:slide-in-from-left-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-side=right]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-translate-x: calc(2*var(--spacing)*-1)}}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-side=top]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-translate-y: calc(2*var(--spacing))}}.data-\\[state\\=checked\\]\\:opacity-100:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=checked]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){opacity:1}}.data-\\[state\\=closed\\]\\:animate-out:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=closed]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.data-\\[state\\=closed\\]\\:fade-out-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=closed]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-exit-opacity: 0 ;--tw-exit-opacity: 0}}.data-\\[state\\=closed\\]\\:zoom-out-95:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=closed]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-exit-scale: 95% ;--tw-exit-scale: .95}}.data-\\[state\\=open\\]\\:animate-in:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=open]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.data-\\[state\\=open\\]\\:fade-in-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=open]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}}.data-\\[state\\=open\\]\\:zoom-in-95:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&[data-state=open]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--tw-enter-scale: 95% ;--tw-enter-scale: .95}}.\\[\\&_\\.ant-picker-panels\\]\\:gap-8:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) .ant-picker-panels{gap:calc(var(--spacing) * 8)}}.\\[\\&_svg\\]\\:pointer-events-none:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) svg{pointer-events:none}}.\\[\\&_svg\\]\\:shrink-0:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) svg{flex-shrink:0}}.\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:px-8:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *{&[cmdk-group-heading]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-left:calc(var(--spacing) * 8);padding-right:calc(var(--spacing) * 8)}}}.\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:py-6:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *{&[cmdk-group-heading]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){padding-top:calc(var(--spacing) * 6);padding-bottom:calc(var(--spacing) * 6)}}}.\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-label-xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *{&[cmdk-group-heading]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-xs);line-height:var(--tw-leading, var(--text-label-xs--line-height));letter-spacing:var(--tw-tracking, var(--text-label-xs--letter-spacing));font-weight:var(--tw-font-weight, var(--text-label-xs--font-weight))}}}.\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-text-soft:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *{&[cmdk-group-heading]:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){color:var(--color-text-soft)}}}@property --tw-animation-delay{syntax: "*"; inherits: false; initial-value: 0s;}@property --tw-animation-direction{syntax: "*"; inherits: false; initial-value: normal;}@property --tw-animation-duration{syntax: "*"; inherits: false;}@property --tw-animation-fill-mode{syntax: "*"; inherits: false; initial-value: none;}@property --tw-animation-iteration-count{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-translate-y{syntax: "*"; inherits: false; initial-value: 0;}:root:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){--focus-outline-color: var(--ui-focus-outline-color, #1890ff)}.text-title-h1:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-title-h1);line-height:var(--text-title-h1--line-height);letter-spacing:var(--text-title-h1--letter-spacing);font-weight:var(--text-title-h1--font-weight)}.text-title-h2:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-title-h2);line-height:var(--text-title-h2--line-height);letter-spacing:var(--text-title-h2--letter-spacing);font-weight:var(--text-title-h2--font-weight)}.text-title-h3:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-title-h3);line-height:var(--text-title-h3--line-height);letter-spacing:var(--text-title-h3--letter-spacing);font-weight:var(--text-title-h3--font-weight)}.text-label-xl:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-xl);line-height:var(--text-label-xl--line-height);letter-spacing:var(--text-label-xl--letter-spacing);font-weight:var(--text-label-xl--font-weight)}.text-label-lg:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-lg);line-height:var(--text-label-lg--line-height);letter-spacing:var(--text-label-lg--letter-spacing);font-weight:var(--text-label-lg--font-weight)}.text-label-md:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-md);line-height:var(--text-label-md--line-height);letter-spacing:var(--text-label-md--letter-spacing);font-weight:var(--text-label-md--font-weight)}.text-label-sm:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-sm);line-height:var(--text-label-sm--line-height);letter-spacing:var(--text-label-sm--letter-spacing);font-weight:var(--text-label-sm--font-weight)}.text-label-xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-label-xs);line-height:var(--text-label-xs--line-height);letter-spacing:var(--text-label-xs--letter-spacing);font-weight:var(--text-label-xs--font-weight)}.text-paragraph-xl:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-xl);line-height:var(--text-paragraph-xl--line-height);letter-spacing:var(--text-paragraph-xl--letter-spacing);font-weight:var(--text-paragraph-xl--font-weight)}.text-paragraph-lg:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-lg);line-height:var(--text-paragraph-lg--line-height);letter-spacing:var(--text-paragraph-lg--letter-spacing);font-weight:var(--text-paragraph-lg--font-weight)}.text-paragraph-md:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-md);line-height:var(--text-paragraph-md--line-height);letter-spacing:var(--text-paragraph-md--letter-spacing);font-weight:var(--text-paragraph-md--font-weight)}.text-paragraph-sm:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-sm);line-height:var(--text-paragraph-sm--line-height);letter-spacing:var(--text-paragraph-sm--letter-spacing);font-weight:var(--text-paragraph-sm--font-weight)}.text-paragraph-xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-paragraph-xs);line-height:var(--text-paragraph-xs--line-height);letter-spacing:var(--text-paragraph-xs--letter-spacing);font-weight:var(--text-paragraph-xs--font-weight)}.text-subheading-md:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-subheading-md);line-height:var(--text-subheading-md--line-height);letter-spacing:var(--text-subheading-md--letter-spacing);font-weight:var(--text-subheading-md--font-weight)}.text-subheading-sm:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-subheading-sm);line-height:var(--text-subheading-sm--line-height);letter-spacing:var(--text-subheading-sm--letter-spacing);font-weight:var(--text-subheading-sm--font-weight)}.text-subheading-xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-subheading-xs);line-height:var(--text-subheading-xs--line-height);letter-spacing:var(--text-subheading-xs--letter-spacing);font-weight:var(--text-subheading-xs--font-weight)}.text-subheading-2xs:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){font-size:var(--text-subheading-2xs);line-height:var(--text-subheading-2xs--line-height);letter-spacing:var(--text-subheading-2xs--letter-spacing);font-weight:var(--text-subheading-2xs--font-weight)}*:not(#\\#):not(#\\#),:not(#\\#):not(#\\#):before,:not(#\\#):not(#\\#):after{box-sizing:border-box}button:not(#\\#):not(#\\#),input:not(#\\#):not(#\\#),optgroup:not(#\\#):not(#\\#),select:not(#\\#):not(#\\#),textarea:not(#\\#):not(#\\#){font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;letter-spacing:inherit;color:inherit}button:not(#\\#):not(#\\#),[role=button]:not(#\\#):not(#\\#){cursor:pointer}html:not(#\\#):not(#\\#),:root:not(#\\#):not(#\\#){font-size:var(--root-font-size);font-weight:400;font-family:system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Helvetica,Arial,sans-serif,"apple color emoji","segoe ui emoji",segoe ui symbol;line-height:1.5;font-feature-settings:normal;font-synthesis:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.lucide:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#){stroke-width:1.5;&:not(#\\#):not(#\\#):not(#\\#):not(#\\#):not(#\\#) *{vector-effect:non-scaling-stroke}}.data-filter:not(#\\#):not(#\\#):not(#\\#):not(#\\#){margin:0;font-size:1.4rem;font-weight:400;font-family:system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Helvetica,Arial,sans-serif,"apple color emoji","segoe ui emoji",segoe ui symbol;line-height:1.5;font-feature-settings:normal;font-synthesis:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background-color:var(--color-white);color:var(--color-text-strong)}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-duration: initial;--tw-ease: initial;--tw-animation-delay: 0s;--tw-animation-direction: normal;--tw-animation-duration: initial;--tw-animation-fill-mode: none;--tw-animation-iteration-count: 1;--tw-enter-blur: 0;--tw-enter-opacity: 1;--tw-enter-rotate: 0;--tw-enter-scale: 1;--tw-enter-translate-x: 0;--tw-enter-translate-y: 0;--tw-exit-blur: 0;--tw-exit-opacity: 1;--tw-exit-rotate: 0;--tw-exit-scale: 1;--tw-exit-translate-x: 0;--tw-exit-translate-y: 0}}
2
+ `);var Le={title:["h1","h2","h3","h4","h5","h6"],label:["xl","lg","md","sm","xs"],paragraph:["xl","lg","md","sm","xs"],subheading:["md","sm","xs","2xs"]},Ee=Object.entries(Le).flatMap(([t,e])=>e.map(n=>`${t}-${n}`)),Et={extend:{classGroups:{"font-size":[{text:Ee}]}}},je=extendTailwindMerge(Et),vt=createTV({twMergeConfig:Et}),d=(...t)=>je(cn$1(...t));function U(t){let{as:e,size:n,className:o,...a}=t;if(F.isValidElement(e)){let l=e.props,s=l.className&&o?`${l.className} ${o}`:o??l.className,p=l.size??n,c={...l,...a,...p!==void 0?{size:p}:{},...s?{className:s}:{}};return F.cloneElement(e,c)}let r=e,i={...a,...n!==void 0?{size:n}:{},...o?{className:o}:{}};return jsx(r,{...i})}function _t({stroke:t="2",className:e}){return jsx("svg",{className:e,width:"20",height:"20",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:t,fill:"none",strokeLinecap:"round",strokeLinejoin:"round",xmlns:"http://www.w3.org/2000/svg",children:jsxs("g",{children:[jsxs("circle",{cx:"12",cy:"12",r:"9.5",children:[jsx("animate",{attributeName:"stroke-dasharray",dur:"1.5s",calcMode:"spline",values:"0 150;42 150;42 150;42 150",keyTimes:"0;0.475;0.95;1",keySplines:"0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1",repeatCount:"indefinite"}),jsx("animate",{attributeName:"stroke-dashoffset",dur:"1.5s",calcMode:"spline",values:"0;-16;-59;-59",keyTimes:"0;0.475;0.95;1",keySplines:"0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1",repeatCount:"indefinite"})]}),jsx("animateTransform",{attributeName:"transform",type:"rotate",dur:"2s",values:"0 12 12;360 12 12",repeatCount:"indefinite"})]})})}function Ht(){return F.useCallback(e=>(e.preventDefault(),false),[])}var wt=vt({base:["relative inline-flex items-center justify-center bg-transparent whitespace-nowrap outline-0 select-none","transition duration-200 ease-out","active:scale-[0.98]","focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-(--focus-outline-color)","disabled:pointer-events-none disabled:opacity-70 disabled:ring-transparent data-disabled:pointer-events-none data-disabled:opacity-70 data-disabled:ring-transparent"]}),$t=vt({slots:{root:[wt(),"group border border-transparent"],icon:"flex shrink-0 items-center justify-center",overlay:"absolute inset-0 flex items-center justify-center"},variants:{variant:{neutral:{}},mode:{filled:{},stroke:{},lighter:{},ghost:{}},loading:{true:{root:"pointer-events-none cursor-not-allowed"}},size:{large:{root:"h-40 gap-6 rounded-2xl px-14 text-label-lg",overlay:"rounded-2xl",icon:"size-18"},medium:{root:"h-36 gap-6 rounded-[8px] px-12 text-label-md",overlay:"rounded-[8px]",icon:"size-18"},small:{root:"h-32 gap-5 rounded-[6px] px-10 text-label-sm",overlay:"rounded-[6px]",icon:"size-16"},xsmall:{root:"h-28 gap-4 rounded-[6px] px-8 text-label-xs",overlay:"rounded-[6px]",icon:"size-14"}}},compoundVariants:[{variant:"neutral",mode:"filled",class:{root:["bg-bg-strong text-text-white","hover:bg-bg-surface","active:bg-bg-surface"],overlay:"text-text-white"}},{variant:"neutral",mode:"stroke",class:{root:["border-stroke-soft bg-bg-white text-text-strong","hover:bg-bg-weak","active:bg-bg-weak","focus-visible:text-text-strong"],overlay:"text-text-strong"}},{variant:"neutral",mode:"lighter",class:{root:["bg-bg-weak text-text-strong","hover:border-stroke-soft","active:border-stroke-soft"],overlay:"text-text-strong"}},{variant:"neutral",mode:"ghost",class:{root:["bg-transparent text-text-strong ring-transparent","hover:bg-bg-weak","active:bg-bg-weak","focus-visible:bg-bg-white"],overlay:"text-text-strong"}}],defaultVariants:{variant:"neutral",mode:"filled",size:"small"}}),C=F.forwardRef((t,e)=>{let{children:n,variant:o,mode:a,size:r,startContent:i,endContent:l,asChild:s=false,className:p,loading:c=false,disabled:m,...u}=t,h=Ht(),f=s?Slot.Root:"button",{root:y,icon:J,overlay:b}=$t({variant:o,mode:a,size:r,loading:c}),Se=!!i,Re=!!l,Ot=J(),O="none";c&&(Se?O="startContent":Re?O="endContent":O="overlay");let ft=jsx(_t,{className:Ot}),Q=(Ie,Me)=>jsx("span",{className:Ot,children:Ie},Me),Ve=()=>O==="startContent"?Q(ft,"startContent"):i?Q(i,"startContent"):null,ze=()=>O==="endContent"?Q(ft,"endContent"):l?Q(l,"endContent"):null,Lt=m||c;return jsxs(f,{ref:e,onContextMenu:h,className:y({className:p}),disabled:s?void 0:Lt,"data-state":c?"loading":"idle","data-disabled":Lt?"":void 0,...u,children:[Ve(),jsx(Slot.Slottable,{children:n&&jsx("span",{className:d("inline-flex justify-center",O==="overlay"&&"text-transparent"),children:n})}),ze(),O==="overlay"&&jsx("span",{className:b(),children:ft})]})});C.displayName="ButtonRoot";var W=({className:t,orientation:e="horizontal",decorative:n=true,...o})=>jsx(Separator.Root,{decorative:n,orientation:e,className:d("shrink-0 bg-stroke-soft",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...o});W.displayName=Separator.Root.displayName;function _({className:t,...e}){return jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-ellipsis-icon lucide-ellipsis",t),...e,children:[jsx("circle",{cx:"12",cy:"12",r:"1"}),jsx("circle",{cx:"19",cy:"12",r:"1"}),jsx("circle",{cx:"5",cy:"12",r:"1"})]})}function yt({className:t,...e}){return jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-x-icon lucide-x",t),...e,children:[jsx("path",{d:"M18 6 6 18"}),jsx("path",{d:"m6 6 12 12"})]})}function kt({className:t,...e}){return jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-funnel-plus-icon lucide-funnel-plus",t),...e,children:[jsx("path",{d:"M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348"}),jsx("path",{d:"M16 6h6"}),jsx("path",{d:"M19 3v6"})]})}function Pt({className:t,...e}){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-chevron-right-icon lucide-chevron-right",t),...e,children:jsx("path",{d:"m9 18 6-6-6-6"})})}function Dt({className:t,...e}){return jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-arrow-left-icon lucide-arrow-left",t),...e,children:[jsx("path",{d:"m12 19-7-7 7-7"}),jsx("path",{d:"M19 12H5"})]})}function Tt({className:t,...e}){return jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:d("lucide lucide-search-icon lucide-search",t),...e,children:[jsx("path",{d:"m21 21-4.34-4.34"}),jsx("circle",{cx:"11",cy:"11",r:"8"})]})}var et=Popover.Root,nt=Popover.Trigger,X=F.forwardRef(({children:t,className:e,align:n="center",sideOffset:o=4,collisionPadding:a=12,arrowPadding:r=12,arrow:i=true,unstyled:l,...s},p)=>jsx(Popover.Portal,{children:jsxs(Popover.Content,{ref:p,align:n,sideOffset:o,collisionPadding:a,arrowPadding:r,className:d([!l&&"w-max rounded-2xl bg-bg-white p-20 shadow-regular-md ring-1 ring-stroke-soft"],"z-50","data-[state=closed]:animate-out data-[state=open]:animate-in","data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...s,children:[jsx(Slot.Slottable,{children:t}),i&&jsx(Popover.Arrow,{asChild:true,children:jsx("div",{className:"size-11 -translate-y-[calc(50%+1px)] -rotate-45 rounded-bl-[3px] border border-stroke-soft bg-bg-white [clip-path:polygon(0_100%,0_0,100%_100%)]"})})]})}));X.displayName="PopoverContent";var Ze=F.forwardRef(({className:t,unstyled:e,...n},o)=>jsx(Popover.Close,{ref:o,className:d([!e&&"absolute top-16 right-16"],t),...n}));Ze.displayName="PopoverClose";function Qt({title:t,onBack:e}){return jsxs("div",{className:"relative flex items-center justify-between border-b border-stroke-soft px-12 pt-6 pb-5",children:[jsx("button",{className:wt({className:"-ml-2 size-24 shrink-0 rounded-xl border-0 text-text-sub hover:bg-bg-weak hover:text-text-strong focus-visible:outline-offset-0 active:bg-bg-weak"}),onClick:e,children:jsx(Dt,{className:"size-16"})}),jsx("span",{className:"text-label-sm",children:t}),jsx("span",{className:"w-24 shrink-0"})]})}function D({className:t,...e}){return jsx(Command,{"data-slot":"command",className:d("flex h-full w-full flex-col overflow-hidden rounded-2xl bg-bg-white",t),...e})}function Y({className:t,...e}){return jsxs("div",{"data-slot":"command-input-wrapper",className:d("flex h-36 items-center gap-8 border-b border-stroke-soft px-12",t),children:[jsx(Tt,{className:"size-16 shrink-0 opacity-50"}),jsx(Command.Input,{"data-slot":"command-input",className:d("flex h-40 w-full rounded-2xl border-none bg-transparent py-12 text-label-sm outline-none disabled:cursor-not-allowed disabled:opacity-50"),...e})]})}function k({className:t,...e}){return jsx(Command.List,{"data-slot":"command-list",className:d("max-h-300 scroll-py-4 overflow-x-hidden overflow-y-auto outline-0",t),...e})}function at({...t}){return jsx(Command.Empty,{"data-slot":"command-empty",className:"py-24 text-center text-paragraph-sm",...t})}function v({className:t,...e}){return jsx(Command.Group,{"data-slot":"command-group",className:d("overflow-hidden p-4 text-text-sub **:[[cmdk-group-heading]]:px-8 **:[[cmdk-group-heading]]:py-6 **:[[cmdk-group-heading]]:text-label-xs **:[[cmdk-group-heading]]:text-text-soft",t),...e})}function rt({className:t,...e}){return jsx(Command.Separator,{"data-slot":"command-separator",className:d("-mx-4 h-px bg-bg-soft",t),...e})}function V({className:t,...e}){return jsx(Command.Item,{"data-slot":"command-item",className:d("relative flex items-center gap-8 rounded-lg px-8 py-6 outline-0 select-none","data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50","data-[selected=true]:bg-bg-weak data-[selected=true]:text-text-strong","text-label-sm [&_svg]:pointer-events-none [&_svg]:shrink-0",t),...e})}var Zt={filter:"Filters",search_keywords:"Search...",no_results:"No results",to:"to",input_number:"Input Number",min:"Min",max:"Max",apply:"Apply Filter",clean:"Clean Filter"};var te={filter:"\u6570\u636E\u7B5B\u9009",search_keywords:"\u641C\u7D22\u5173\u952E\u5B57...",no_results:"\u6CA1\u6709\u7ED3\u679C",to:"\u81F3",input_number:"\u8F93\u5165\u6570\u5B57",min:"\u6700\u5C0F\u503C",max:"\u6700\u5927\u503C",apply:"\u5E94\u7528\u7B5B\u9009",clean:"\u6E05\u7A7A\u7B5B\u9009"};var sn={"zh-CN":te,"en-US":Zt};function x(){let[t]=b();return F.useCallback(n=>sn[t][n]??n,[t])}function T({onClick:t,disabled:e}){let n=x();return jsxs(Fragment,{children:[jsx("div",{className:"h-px bg-bg-soft"}),jsx("div",{className:"p-4",children:jsx(C,{variant:"neutral",mode:"ghost",onClick:t,disabled:e,className:"w-full disabled:text-text-disabled",children:n("apply")})})]})}var cn=DatePicker._InternalPanelDoNotUseOrYouWillBeFired,dn=DatePicker._InternalRangePanelDoNotUseOrYouWillBeFired,oe={popup:{root:{inset:"0 auto auto 0",padding:0},container:{userSelect:"none",boxShadow:"none"}}};function ae({actions:t,filter:e,column:n,onApply:o}){let a=F.useRef(e?.values),[r,i]=F.useState(()=>Array.isArray(e?.values)?e.values:n.mode==="single"?[null]:[null,null]),l=F.useCallback(c=>{c&&i(c);},[]),s=F.useCallback(()=>{a.current=r,t.setFilterValue(n,r),o?.();},[t,n,r,o]),p=F.useMemo(()=>{let c=r.filter(Boolean);if(!a.current)return n.mode==="single"?c.length===1:n.mode==="range"?c.length===2:false;let m=a.current.filter(Boolean);return n.mode==="range"&&c.length<2?false:c.length!==m.length?true:c.some((u,h)=>{let f=m[h];return f&&!f.isSame(u)})},[n.mode,r]);return jsxs(Fragment,{children:[jsx(D,{children:jsx(k,{className:"max-h-fit",children:jsxs(v,{className:"px-6 pt-6 pb-0",children:[n.mode==="single"&&jsx(un,{value:r,onChange:l,column:n}),n.mode==="range"&&jsx(mn,{value:r,onChange:l,column:n})]})})}),jsx(T,{onClick:s,disabled:!p})]})}function un({value:t,column:e,onChange:n}){let o=F.useCallback(a=>{a&&n([a]);},[n]);return jsx(cn,{showToday:false,inputReadOnly:true,needConfirm:false,allowClear:false,showTime:e.showTime,value:t?.[0],onCalendarChange:o,classNames:{root:"w-full",popup:{container:"[&_.ant-picker-panels]:gap-8",body:"p-0!"}},styles:oe})}function mn({value:t,column:e,onChange:n}){let[o,a]=t,r=F.useCallback(s=>{!s||s?.filter(Boolean).length!==2||n(s);},[n]),[i,l]=F.useState(true);return jsx(dn,{value:[o,a],onCalendarChange:r,classNames:{root:i?"w-full":"min-w-288",popup:{container:"[&_.ant-picker-panels]:gap-8",body:"p-0!"}},onPanelChange:(s,p)=>{l(p.every(c=>c==="date"));},showTime:e.showTime,inputReadOnly:true,allowClear:false,needConfirm:false,previewValue:false,styles:oe})}var Nt=F.memo(function({option:e,onToggle:n}){let{value:o,label:a,icon:r,selected:i}=e,l=F.useCallback(()=>{n(o,!i);},[n,o,i]);return jsxs(V,{onSelect:l,className:"group flex items-center gap-6",children:[jsx(Checkbox,{tabIndex:-1,checked:i,className:d("mr-4 opacity-0 group-data-[selected=true]:opacity-100 data-[state=checked]:opacity-100",i&&"opacity-100")}),r,jsx("span",{children:a})]})});function it({options:t,initialValues:e,pendingValues:n}){let o=F.useRef(e),{selectedOptions:a,unselectedOptions:r}=F.useMemo(()=>{let s=new Set(o.current),p=[],c=[];for(let m of t)s.has(m.value)?p.push(m):c.push(m);return {selectedOptions:p,unselectedOptions:c}},[t]),{selectedOptionsWithState:i,unselectedOptionsWithState:l}=F.useMemo(()=>{let s=new Set(Array.isArray(n)?n:[n]),p=a.map(m=>({...m,selected:s.has(m.value),initialSelected:true})),c=r.map(m=>({...m,selected:s.has(m.value),initialSelected:false}));return {selectedOptionsWithState:p,unselectedOptionsWithState:c}},[a,r,n]);return {selectedOptions:i,unselectedOptions:l}}function se({column:t,filter:e,actions:n,onApply:o}){let a=x(),[r,i]=F.useState(()=>e?.values??[]),{selectedOptions:l,unselectedOptions:s}=it({options:t.options,initialValues:e?.values??[],pendingValues:r}),p=F.useCallback((u,h)=>{i(f=>h?f.includes(u)?f:[...f,u]:f.filter(y=>y!==u));},[]),c=F.useCallback(()=>{n.setFilterValue(t,r),o?.();},[n,t,r,o]),m=F.useMemo(()=>{let u=new Set(e?.values??[]),h=new Set(r);if(u.size!==h.size)return true;for(let f of h)if(!u.has(f))return true;return false},[e?.values,r]);return jsxs(Fragment,{children:[jsxs(D,{children:[jsx(Y,{autoFocus:true,placeholder:"Search..."}),jsx(at,{children:a("no_results")}),jsxs(k,{className:"max-h-256",children:[jsx(v,{className:d(l.length===0&&"hidden"),children:l.map(u=>jsx(Nt,{option:u,onToggle:p},u.value))}),jsx(rt,{className:d((l.length===0||s.length===0)&&"hidden")}),jsx(v,{className:d(s.length===0&&"hidden"),children:s.map(u=>jsx(Nt,{option:u,onToggle:p},u.value))})]})]}),jsx(T,{onClick:c,disabled:!m})]})}function lt({onEnter:t,...e}){let n=F.useCallback(o=>{o.key==="Enter"&&(o.target instanceof HTMLInputElement||o.target instanceof HTMLButtonElement)&&(o.preventDefault(),t?.());},[t]);return jsx(D,{onKeyDown:n,...e})}function pe({actions:t,filter:e,column:n,onApply:o}){let a=F.useRef(e?.values),[r,i]=F.useState(()=>Array.isArray(e?.values)?e.values:n.mode==="single"?[null]:[null,null]),l=F.useCallback(()=>{le(r)&&(a.current=r,t.setFilterValue(n,r),o?.());},[t,n,r,o]),s=F.useMemo(()=>{if(!le(r))return false;let c=a.current;return !Array.isArray(c)||c.length!==r.length?true:c.some((m,u)=>m!==r[u])},[r]),p=n.mode==="range";return jsxs(Fragment,{children:[jsx(lt,{onEnter:l,className:d(p&&"min-w-lg"),children:jsx(k,{className:"max-h-fit",children:jsx(v,{children:jsx("div",{className:"p-6 pb-8",children:p?jsx(yn,{value:r,column:n,onChange:i}):jsx(bn,{column:n,value:r,onChange:i})})})})}),jsx(T,{onClick:l,disabled:!s})]})}function bn({column:t,value:e,onChange:n,ref:o}){let a=x();return jsx(InputNumber,{ref:o,className:"w-full max-w-2xs",placeholder:a("input_number"),value:e[0],min:t.min,max:t.max,step:t.step,mode:"spinner",onChange:r=>{$(r)&&n([r]);},autoFocus:true})}function yn({column:t,value:e,onChange:n}){let o=x(),a=F.useId(),r=F.useId(),i=F.useCallback(s=>{if(!$(s))return;let p=[s,e[1]];n?.(p);},[e,n]),l=F.useCallback(s=>{if(!$(s))return;let p=[e[0],s];n?.(p);},[e,n]);return jsxs("div",{className:"flex w-full max-w-xl gap-12",children:[jsxs("div",{className:"flex flex-col gap-6",children:[jsx("label",{className:"text-label-sm select-none",htmlFor:a,children:o("min")}),jsx(InputNumber,{id:a,mode:"spinner",placeholder:"min",autoFocus:true,value:e[0],min:t.min,max:$(e[1])?e[1]-1:t.max,step:t.step,onChange:i})]}),jsxs("div",{className:"flex flex-col gap-6",children:[jsx("label",{className:"text-label-sm select-none",htmlFor:r,children:o("max")}),jsx(InputNumber,{id:r,mode:"spinner",placeholder:"max",value:e[1],min:$(e[0])?e[0]+1:t.min,max:t.max,step:t.step,onChange:l})]})]})}function le(t){return t.every($)}function $(t){return typeof t=="number"&&Number.isFinite(t)}var zt=F.memo(function({option:e,onSelect:n}){let{value:o,label:a,icon:r,selected:i}=e,l=F.useCallback(()=>{n(o);},[n,o]);return jsxs(V,{value:o,onSelect:l,className:"group flex items-center gap-6",children:[jsx(Radio,{tabIndex:-1,className:d("mr-4 opacity-0 group-data-[selected=true]:opacity-100 data-[state=checked]:opacity-100",i&&"opacity-100"),checked:i,value:o,id:o}),r,jsx("span",{children:a})]})});function ue({column:t,filter:e,actions:n,onApply:o}){let a=x(),[r,i]=F.useState(()=>e?.values[0]??""),{selectedOptions:l,unselectedOptions:s}=it({options:t.options,initialValues:e?.values??[],pendingValues:r??""}),p=F.useCallback(u=>{i(u);},[]),c=F.useCallback(()=>{r&&(n.setFilterValue(t,[r]),o?.());},[n,t,r,o]),m=F.useMemo(()=>e?.values[0]!==r,[e?.values,r]);return jsxs(Fragment,{children:[jsxs(D,{children:[jsx(Y,{autoFocus:true,placeholder:"Search..."}),jsx(at,{children:a("no_results")}),jsxs(k,{className:"max-h-256",children:[jsx(v,{className:d(l.length===0&&"hidden"),children:l.map(u=>jsx(zt,{option:u,onSelect:p},u.value))}),jsx(rt,{className:d((l.length===0||s.length===0)&&"hidden")}),jsx(v,{className:d(s.length===0&&"hidden"),children:s.map(u=>jsx(zt,{option:u,onSelect:p},u.value))})]})]}),jsx(T,{onClick:c,disabled:!m})]})}function dt(t){let{value:e,defaultValue:n,onChange:o}=t,a=e!==void 0,[r,i]=F.useState(n),l=a?e:r,s=F.useRef({value:e,state:r,isControlled:a,onChange:o});s.current={value:e,state:r,isControlled:a,onChange:o};let p=F.useCallback((c,...m)=>{let{value:u,state:h,isControlled:f,onChange:y}=s.current,b=typeof c=="function"?c(f?u:h):c;f||i(b),y&&y(b,...m);},[]);return [l,p]}function ge({actions:t,filter:e,column:n,onApply:o}){let a=x(),r=F.useRef(e?.values[0]??""),[i,l]=dt({defaultValue:r.current}),s=F.useCallback(()=>{t.setFilterValue(n,[i]),o?.();},[t,n,i,o]),p=r.current===i;return jsxs(Fragment,{children:[jsx(lt,{onEnter:s,children:jsx(k,{className:"max-h-fit",children:jsx(v,{children:jsx(V,{children:jsx(Input,{rootClassName:"w-full",placeholder:a("search_keywords"),autoFocus:true,value:i,onChange:c=>l(c.target.value)})})})})}),jsx(T,{onClick:s,disabled:p})]})}function ut({enableHeader:t,column:e,filter:n,actions:o,onApply:a,onBack:r}){let i=F.useMemo(()=>{switch(e.type){case "text":return jsx(ge,{filter:n,actions:o,column:e,onApply:a});case "option":return jsx(ue,{filter:n,actions:o,column:e,onApply:a});case "multiOption":return jsx(se,{filter:n,actions:o,column:e,onApply:a});case "number":return jsx(pe,{filter:n,actions:o,column:e,onApply:a});case "date":return jsx(ae,{filter:n,actions:o,column:e,onApply:a});default:return null}},[o,e,n,a]);return jsxs(Fragment,{children:[t&&jsx(Qt,{title:e.displayName,onBack:r}),i]})}function he({column:t,filter:e,actions:n,enableAutoClose:o}){let[a,r]=F.useState(false),i=F.useCallback(()=>{o&&setTimeout(()=>{r(false);},120);},[o]);return jsxs(et,{open:a,onOpenChange:r,children:[jsx(nt,{asChild:true,children:jsx(C,{mode:"ghost",variant:"neutral",size:"xsmall",className:d("z-1 h-full w-fit rounded-none px-4 text-label-sm",a&&"active"),children:jsx(zn,{filter:e,column:t})})}),jsx(X,{align:"start",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:4,children:jsx(ut,{enableHeader:false,column:t,filter:e,actions:n,onApply:i})})]})}function zn({filter:t,column:e}){switch(e.type){case "text":return jsx(Mn,{filter:t});case "number":return jsx(An,{filter:t,mode:e.mode});case "date":return jsx(In,{filter:t,column:e});case "option":return jsx(Bn,{filter:t,column:e});case "multiOption":return jsx(On,{filter:t,column:e});default:return null}}function In({filter:t,column:e}){let[n]=b();if(!t)return null;if(t.values.length===0)return jsx(_,{className:"size-16"});let o=n.toLowerCase().includes("cn"),a=!!e.showTime,r=a?c.presets.dateSlash:o?"YYYY, M\u6708D\u65E5":"MMM D, YYYY",i=typeof e.showTime=="object"?e.showTime.format:a?c.presets.timeSecond:void 0,l=[r,i].filter(p=>!!p);if(t.values.length===1){let c=t.values[0].format(l.join(" "));return jsx("span",{children:c})}let s=En(t.values[0],t.values[1],o,a,l);return jsx("span",{children:s})}function Mn({filter:t}){if(!t)return null;if(t.values.length===0||t.values[0].trim()==="")return jsx(_,{className:"size-16"});let e=t.values[0];return jsx("span",{children:e})}function An({filter:t,mode:e}){let n=x();if(!t||!t.values||t.values.length===0)return jsx(_,{className:"size-16"});let[o,a]=t.values;return e&&e==="range"&&a!==void 0?jsxs("span",{className:"tracking-tight tabular-nums",children:[o," ",n("to")," ",a]}):jsx("span",{className:"tracking-tight tabular-nums",children:o})}function Bn({filter:t,column:e}){let n=e.options.filter(o=>t?.values.includes(o.value));if(n.length===1){let{label:o,icon:a}=n[0];return jsxs("span",{className:"inline-flex items-center gap-4",children:[a&&a,jsx("span",{children:o})]})}return null}function On({filter:t,column:e}){let n=e.options.filter(s=>t?.values.includes(s.value));if(n.length===0)return jsx(_,{className:"size-16"});if(n.length===1){let{label:s,icon:p}=n[0];return jsxs("span",{className:"inline-flex items-center gap-4",children:[p&&p,jsx("span",{children:s})]})}let o=Ln(n,3),a=n.length-o.length;if(!o.some(s=>!!s.icon))return jsxs("div",{className:"inline-flex items-center gap-4",children:[jsx("span",{children:o.map(s=>s.label).join(", ")}),a>0&&jsxs("span",{className:"inline-flex items-center leading-16",style:{letterSpacing:"-1px"},children:["+ ",a," ..."]})]});let i=[],l=[];return o.forEach(({value:s,icon:p,label:c})=>{p?i.push(jsx("span",{className:"inline-flex shrink-0",children:p},s)):l.push(c);}),jsxs("div",{className:"inline-flex items-center gap-4",children:[jsxs("div",{className:"inline-flex items-center gap-2",children:[i,i.length>0&&l.length>0&&jsx(W,{orientation:"vertical",className:"mx-4 h-26 opacity-50"}),l.length>0&&jsx("span",{className:"text-text-sub",children:l.join(", ")})]}),a>0&&jsxs("span",{className:"inline-flex items-center leading-16",style:{letterSpacing:"-1px"},children:["+ ",a," ..."]})]})}function Ln(t,e){return t.slice(0,e)}function En(t,e,n,o,a){if(t.isSame(e,"year")&&!o){let i=n?"YYYY, M\u6708D\u65E5":"MMM D",l=n?"M\u6708D\u65E5":"MMM D, YYYY";return `${t.format(i)} - ${e.format(l)}`}return `${t.format(a.join(" "))} - ${e.format(a.join(" "))}`}function mt(t,e){let n=t.find(o=>o.columnId===e);if(!n)throw new Error(`Column with id ${e} not found`);return n}function xe(t){return !t||t.length===0?[]:t.length===1?[t[0]]:t.length===2?Wn(t):[t[0],t[1]]}function ve(t){if(!t||t.length===0)return [];if(t.length===1)return [t[0]];if(t.length===2)return jn(t);throw new Error("Cannot create date filter value from more than 2 values")}function jn(t){let[e,n]=t,[o,a]=e.isBefore(n)?[e,n]:[n,e];return [o,a]}function Wn(t){let e=0,n=0;if(!t||t.length===0)return [e,n];t.length===1?e=t[0]:(e=t[0],n=t[1]);let[o,a]=e<n?[e,n]:[n,e];return [o,a]}function we(t){let e=new Map,n=[];for(let o of t){let a=At(o);if(e.has(a)){let r=e.get(a),i=false;for(let l of r)if(Bt(l,o)){i=true;break}i||(r.push(o),n.push(o));}else e.set(a,[o]),n.push(o);}return n}function At(t,e=new WeakMap){if(t===null)return "null";if(t===void 0)return "undefined";let n=typeof t;if(n==="number"||n==="boolean"||n==="string")return `${n}:${t.toString()}`;if(n==="function")return `function:${t.toString()}`;if(n==="object"){if(e.has(t))return e.get(t);let o;return Array.isArray(t)?o=`array:[${t.map(a=>At(a,e)).join(",")}]`:o=`object:{${Object.keys(t).sort().map(i=>`${i}:${At(t[i],e)}`).join(",")}}`,e.set(t,o),o}return `${n}:${t.toString()}`}function Bt(t,e){if(t===e)return true;if(typeof t!=typeof e||t===null||e===null||t===void 0||e===void 0)return false;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return false;for(let n=0;n<t.length;n++)if(!Bt(t[n],e[n]))return false;return true}if(typeof t=="object"){if(typeof e!="object")return false;let n=Object.keys(t).sort(),o=Object.keys(e).sort();if(n.length!==o.length)return false;for(let a=0;a<n.length;a++)if(n[a]!==o[a]||!Bt(t[n[a]],e[o[a]]))return false;return true}return false}function be({columns:t,filters:e,actions:n,enableAutoClose:o}){return e.map(a=>{let r=mt(t,a.columnId);return a.values?jsx(_n,{filter:a,column:r,actions:n,enableAutoClose:o},`active-filter-${a.columnId}`):null})}function _n({column:t,filter:e,actions:n,enableAutoClose:o}){return jsxs("div",{className:"flex h-28 items-center rounded-full border border-stroke-soft bg-bg-white shadow-regular-md",children:[jsx(Hn,{column:t}),jsx(W,{orientation:"vertical"}),jsx(he,{column:t,filter:e,actions:n,enableAutoClose:o}),jsx(W,{orientation:"vertical"}),jsx(C,{className:"z-1 h-full w-28 rounded-none rounded-r-full",variant:"neutral",mode:"ghost",size:"xsmall",onClick:()=>n.removeFilter(e.columnId),children:jsx(yt,{className:"size-16 -translate-x-1"})})]})}function Hn({column:t}){return jsxs("span",{className:"flex h-full items-center gap-4 ps-10 pe-6 text-label-sm whitespace-nowrap text-text-sub select-none",children:[t.icon&&jsx(U,{size:16,as:t.icon}),jsx("span",{children:t.displayName})]})}var Pe={ease:[.26,.08,.25,1],duration:.27},Gn={initial:{opacity:0,scale:1},visible:{opacity:1,scale:1},hidden:{opacity:0,scale:1}};function De({children:t,menuCount:e,activeType:n,onOpenChange:o,onEscapeKeyDown:a}){let r=x(),[i,{height:l,width:s}]=$n(),[p,c]=F.useState(false),m$1=F.useCallback(y=>{c(y),o?.(y);},[o]),h=e*32+49,f=!n;return jsxs(et,{open:p,onOpenChange:m$1,children:[jsx(nt,{asChild:true,children:jsx(C,{className:d(p&&"active"),variant:"neutral",mode:"stroke",startContent:jsx(kt,{}),size:"xsmall",children:r("filter")})}),jsx(X,{className:"w-fit p-0",side:"bottom",align:"start",arrow:false,onEscapeKeyDown:a,children:jsx(m.div,{initial:false,animate:{height:f?h:l,width:f?200:s},className:"overflow-hidden",transition:Pe,layout:"size",children:jsx("div",{ref:i,className:d(n?"w-fit":"w-full"),children:jsx(AnimatePresence,{mode:"popLayout",children:jsx(m.div,{initial:"hidden",animate:"visible",exit:"hidden",variants:Gn,transition:Pe,layout:true,children:t})},n)})})})]})}function Te({columns:t,filters:e,actions:n,enableAutoBack:o}){let a=F.useRef(void 0),r=F.useRef(null),[i,l]=F.useState(void 0),s=i?mt(t,i):void 0,p=i?e.find(b=>b.columnId===i):void 0,c=F.useCallback(()=>{l(void 0);},[]),m=F.useCallback(()=>{o&&l(void 0);},[o]),u=F.useCallback(b=>{b||setTimeout(()=>{a.current=void 0,l(void 0);},180);},[]),h=F.useCallback(b=>{i!==void 0&&(b.preventDefault(),c(),setTimeout(()=>{r.current?.focus();},200));},[i,c]),f=F.useCallback(b=>{a.current=b,l(b);},[]),y=F.useCallback(()=>{n.removeAllFilters();},[n]),J=F.useMemo(()=>s&&i?jsx(ut,{enableHeader:true,column:s,filter:p,actions:n,onApply:m,onBack:c}):jsx(Un,{defaultValue:a.current,onSelect:f,onClean:y,disableClean:!e.length,columns:t,ref:r}),[s,i,p,n,m,c,f,y,e.length,t]);return jsx(De,{activeType:i,menuCount:t.length,onOpenChange:u,onEscapeKeyDown:h,children:J})}function Un({defaultValue:t,columns:e,disableClean:n,onSelect:o,onClean:a,ref:r}){let i=x(),l=e.some(s=>!!s.icon);return jsxs(Fragment,{children:[jsxs(D,{loop:true,defaultValue:t,shouldFilter:false,children:[jsx(Y,{placeholder:"Search...",className:"sr-only",ref:r}),jsx(k,{className:"max-h-fit",children:jsx(v,{children:e.map(s=>jsx(V,{className:"group",value:s.columnId,keywords:[s.displayName],onSelect:o,children:jsxs("div",{className:"flex w-full items-center justify-between",children:[jsxs("div",{className:"inline-flex items-center gap-6",children:[s.icon&&jsx(U,{size:16,as:s.icon}),!s.icon&&l&&jsx("span",{className:"size-16"}),jsx("span",{className:"text-label-sm",children:s.displayName})]}),jsx(Pt,{className:"-mr-4 size-18 text-text-soft group-aria-selected:text-text-sub"})]})},s.columnId))})})]}),jsx("div",{className:"h-px bg-bg-soft"}),jsx("div",{className:"p-4",children:jsx(C,{variant:"neutral",mode:"ghost",onClick:a,disabled:n,className:"w-full disabled:text-text-disabled",children:i("clean")})})]})}function Fe({defaultFilters:t=[],filters:e,onFiltersChange:n}={}){let[o,a]=dt({value:e,defaultValue:t,onChange:n}),r=F.useMemo(()=>({setFilterValue:(i,l)=>{a(s=>{let p=s.find(h=>h.columnId===i.columnId),c=p&&p.values.length>0,m=i.type==="number"?xe(l):i.type==="date"?ve(l):we(l);if(m.length===0)return s;if(!c)return [...s,{columnId:i.columnId,type:i.type,values:m}];let u={columnId:i.columnId,type:i.type,values:m};return s.map(h=>h.columnId===i.columnId?u:h)});},removeFilter:i=>{a(l=>l.filter(s=>s.columnId!==i));},removeAllFilters:()=>{a([]);}}),[a]);return [o,r]}function Jn({columns:t,filters:e,defaultFilters:n,className:o,onFiltersChange:a}){let[r,i]=Fe({filters:e,defaultFilters:n,onFiltersChange:a});return jsxs("div",{className:d("data-filter flex flex-wrap items-center gap-8",o),children:[jsx(Te,{columns:t,filters:r,actions:i,enableAutoBack:true}),jsx(be,{columns:t,filters:r,actions:i,enableAutoClose:true})]})}
3
+ export{Jn as DataFilter};
@@ -0,0 +1 @@
1
+ import t from'react';import {jsx}from'react/jsx-runtime';var f={dateDash:"yyyy-MM-dd",dateSlash:"YYYY/MM/DD",dateTimeMinuteDash:"yyyy-MM-dd HH:mm",dateTimeMinuteSlash:"yyyy/MM/dd HH:mm",dateTimeSecondDash:"yyyy-MM-dd HH:mm:ss",dateTimeSecondSlash:"yyyy/MM/dd HH:mm:ss",timeMinute:"HH:mm",timeSecond:"HH:mm:ss"},P={presets:f};var l=Symbol.for("@@jerry-fe/ui/LocaleProviderContext"),m=["en-US","zh-CN"];function x(){if(!globalThis[l]){let e=t.createContext(null);globalThis[l]=e;}return globalThis[l]}var p=x(),M=({locale:e,defaultLocale:a,onLocaleChange:o,children:n})=>{let c=e!==void 0,[L,s]=t.useState(()=>e??a??u());t.useEffect(()=>{e!==void 0&&s(e);},[e]);let i=c?e:L,d=t.useCallback(r=>{if(!c){s(r),o?.(r);return}o?.(r);},[c,o]),y=t.useMemo(()=>({locale:i,setLocale:d}),[i,d]);return jsx(p.Provider,{value:y,children:n})},v=e=>{};function S(){let e=t.useContext(p);return e?[e.locale,e.setLocale]:[u(),v]}function u(e="en-US"){if(typeof navigator>"u")return e;for(let a of navigator.languages??[]){let o=m.find(n=>a.toLowerCase().startsWith(n.toLowerCase().split("-")[0]));if(o)return o}return e}export{M as a,S as b,P as c};
package/index.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+
3
+ type UILocale = (typeof SUPPORTED_LOCALES)[number];
4
+ declare const SUPPORTED_LOCALES: readonly ["en-US", "zh-CN"];
5
+
6
+ declare const UIProvider: React.FC<React.PropsWithChildren & {
7
+ locale?: UILocale;
8
+ }>;
9
+
10
+ declare const dateUtils: {
11
+ readonly presets: {
12
+ /** 2026-01-01 */
13
+ readonly dateDash: "yyyy-MM-dd";
14
+ /** 2026/01/01 */
15
+ readonly dateSlash: "YYYY/MM/DD";
16
+ /** 2026-01-01 00:01 */
17
+ readonly dateTimeMinuteDash: "yyyy-MM-dd HH:mm";
18
+ /** 2026/01/01 00:01 */
19
+ readonly dateTimeMinuteSlash: "yyyy/MM/dd HH:mm";
20
+ /** 2026-01-01 00:01:02 */
21
+ readonly dateTimeSecondDash: "yyyy-MM-dd HH:mm:ss";
22
+ /** 2026/01/01 00:01:02 */
23
+ readonly dateTimeSecondSlash: "yyyy/MM/dd HH:mm:ss";
24
+ /** 00:01 */
25
+ readonly timeMinute: "HH:mm";
26
+ /** 00:01:02 */
27
+ readonly timeSecond: "HH:mm:ss";
28
+ };
29
+ };
30
+
31
+ export { UIProvider, dateUtils };
package/index.js ADDED
@@ -0,0 +1 @@
1
+ import {a}from'./chunk-75LTHX75.js';export{c as dateUtils}from'./chunk-75LTHX75.js';import {LazyMotion}from'motion/react';import {jsx}from'react/jsx-runtime';var c=()=>import('./motion-features-PPUUMXEA.js').then(o=>o.default),t=({children:o,locale:a$1="zh-CN"})=>jsx(LazyMotion,{features:c,strict:true,children:jsx(a,{locale:a$1,children:o})});t.displayName="UIProvider";export{t as UIProvider};
@@ -0,0 +1 @@
1
+ import {domMax}from'motion/react';var r=domMax;export{r as default};
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@jerry-fd/ui",
3
+ "version": "0.1.0",
4
+ "description": "UI component library based on Ant Design (Client-side only)",
5
+ "type": "module",
6
+ "sideEffects": ["index.js", "*.css"],
7
+ "module": "./index.js",
8
+ "types": "./index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./index.d.ts",
12
+ "import": "./index.js"
13
+ },
14
+ "./antd-data-filter": {
15
+ "types": "./antd-data-filter.d.ts",
16
+ "import": "./antd-data-filter.js"
17
+ }
18
+ },
19
+ "files": ["*.js", "*.d.ts", "*.d.cts", "*.css"],
20
+ "keywords": ["react", "antd", "filter", "data-filter", "table-filter", "client-side"],
21
+ "author": "jerry.fd",
22
+ "license": "MIT",
23
+ "peerDependencies": {
24
+ "react": ">=18",
25
+ "react-dom": ">=18",
26
+ "antd": ">=5.0.0",
27
+ "dayjs": ">=1.11.0",
28
+ "tailwindcss": ">=4.1.18"
29
+ },
30
+ "dependencies": {
31
+ "cmdk": "^1.1.1",
32
+ "motion": "^12.29.0",
33
+ "radix-ui": "^1.4.3",
34
+ "react-use-measure": "^2.1.7",
35
+ "tailwind-merge": "^3.4.0",
36
+ "tailwind-variants": "^3.2.2"
37
+ }
38
+ }