@jerry-fd/ui 0.2.0 → 0.3.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/antd-data-filter.d.ts +46 -3
- package/antd-data-filter.js +1 -1
- package/antd-data-table.d.ts +303 -56
- package/antd-data-table.js +2 -1
- package/button-nn_s6In3.d.ts +271 -0
- package/chunk-GOQ3VGSH.js +2 -0
- package/chunk-LPA3FU7G.js +2 -0
- package/chunk-SIDO7MCX.js +1 -0
- package/icon-Byr-7UQX.d.ts +10 -0
- package/index.d.ts +296 -3
- package/index.js +1 -1
- package/package.json +14 -5
- package/theme/badge.css +255 -0
- package/theme/colors.css +247 -0
- package/theme/index.css +22 -0
- package/theme/shadows.css +13 -0
- package/theme/typography.css +255 -0
- package/{types-KRc0daL-.d.ts → types-6U8YKz0A.d.ts} +2 -9
- package/chunk-75LTHX75.js +0 -1
- package/chunk-W5W7SZNA.js +0 -3
package/index.d.ts
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React$1 from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
4
|
+
import { VariantProps } from 'tailwind-variants';
|
|
5
|
+
export { B as Button, b as baseButtonStyle, a as buttonVariants } from './button-nn_s6In3.js';
|
|
6
|
+
import { I as IconType } from './icon-Byr-7UQX.js';
|
|
7
|
+
import { DropdownMenu as DropdownMenu$2 } from 'radix-ui';
|
|
8
|
+
import * as tailwind_merge from 'tailwind-merge';
|
|
9
|
+
import { Command as Command$1 } from 'cmdk';
|
|
2
10
|
|
|
3
11
|
type UILocale = (typeof SUPPORTED_LOCALES)[number];
|
|
4
12
|
declare const SUPPORTED_LOCALES: readonly ["en-US", "zh-CN"];
|
|
5
13
|
|
|
6
|
-
|
|
14
|
+
interface UIState {
|
|
15
|
+
tableUiStorageKey?: string;
|
|
16
|
+
}
|
|
17
|
+
type UIProviderProps = React$1.PropsWithChildren<UIState & {
|
|
7
18
|
locale?: UILocale;
|
|
19
|
+
onChange?: (state: UIState) => void;
|
|
8
20
|
}>;
|
|
21
|
+
declare const UIProvider: React$1.FC<UIProviderProps>;
|
|
9
22
|
|
|
10
23
|
declare const dateUtils: {
|
|
11
24
|
readonly presets: {
|
|
@@ -28,4 +41,284 @@ declare const dateUtils: {
|
|
|
28
41
|
};
|
|
29
42
|
};
|
|
30
43
|
|
|
31
|
-
|
|
44
|
+
type InputValue = number | bigint | Intl.StringNumericLiteral;
|
|
45
|
+
/**
|
|
46
|
+
* 格式化整数,添加千位分隔符
|
|
47
|
+
* @example formatNumber(12345678) => "12,345,678"
|
|
48
|
+
*/
|
|
49
|
+
declare function formatNumber(value: InputValue, options?: Intl.NumberFormatOptions, locale?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* 格式化货币
|
|
52
|
+
* @example formatCurrency(1234.5, { currency: 'CNY' }) => "¥1,234.50"
|
|
53
|
+
* @example formatCurrency(1234.5, { currency: 'USD' }, 'en-US') => "$1,234.50"
|
|
54
|
+
*/
|
|
55
|
+
declare function formatCurrency(value: InputValue, options?: Omit<Intl.NumberFormatOptions, 'style'>, locale?: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* 格式化整数为紧凑形式(K/M 后缀)
|
|
58
|
+
* @example formatIntegerCompact(1234) => "1,2K"
|
|
59
|
+
* @example formatIntegerCompact(1234567) => "1,2M"
|
|
60
|
+
*/
|
|
61
|
+
declare function formatIntegerCompact(value: InputValue, locale?: string): string;
|
|
62
|
+
/**
|
|
63
|
+
* 获取短语的首字母缩写
|
|
64
|
+
* @example getFirstLetters("Hello World") => "HW"
|
|
65
|
+
* @example getFirstLetters("GitHub Copilot", 2) => "GC"
|
|
66
|
+
*/
|
|
67
|
+
declare const getFirstLetters: (phrase: string, count?: number) => string;
|
|
68
|
+
|
|
69
|
+
declare const cardVariants: tailwind_variants.TVReturnType<{
|
|
70
|
+
variant: {
|
|
71
|
+
default: string;
|
|
72
|
+
accent: string;
|
|
73
|
+
};
|
|
74
|
+
}, undefined, "flex flex-col items-stretch rounded-xl text-paragraph-sm", {
|
|
75
|
+
variant: {
|
|
76
|
+
default: string;
|
|
77
|
+
accent: string;
|
|
78
|
+
};
|
|
79
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
80
|
+
variant: {
|
|
81
|
+
default: string;
|
|
82
|
+
accent: string;
|
|
83
|
+
};
|
|
84
|
+
}, undefined, "flex flex-col items-stretch rounded-xl text-paragraph-sm", unknown, unknown, undefined>>;
|
|
85
|
+
declare function Card({ className, variant, ...props }: React$1.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardVariants>): react_jsx_runtime.JSX.Element;
|
|
86
|
+
declare function CardHeader({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
87
|
+
declare function CardContent({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
88
|
+
declare function CardExtra({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
89
|
+
declare function CardTable({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
90
|
+
declare function CardFooter({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
91
|
+
declare function CardHeading({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
92
|
+
declare function CardToolbar({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
93
|
+
declare function CardTitle({ className, ...props }: React$1.HTMLAttributes<HTMLHeadingElement>): react_jsx_runtime.JSX.Element;
|
|
94
|
+
declare function CardIcon({ className, ...props }: React$1.HTMLAttributes<HTMLHeadingElement>): react_jsx_runtime.JSX.Element;
|
|
95
|
+
declare function CardDescription({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
96
|
+
|
|
97
|
+
type IValue = string | number;
|
|
98
|
+
interface IOptionItem {
|
|
99
|
+
key?: React.Key;
|
|
100
|
+
label: string;
|
|
101
|
+
icon?: React.ReactNode;
|
|
102
|
+
value: IValue;
|
|
103
|
+
disabled?: boolean;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
declare const DropdownMenu$1: React$1.FC<DropdownMenu$2.DropdownMenuProps>;
|
|
107
|
+
declare const DropdownMenuContent: React$1.FC<React$1.ComponentPropsWithRef<typeof DropdownMenu$2.Content>>;
|
|
108
|
+
|
|
109
|
+
type DropdownMenuContentProps = React$1.ComponentProps<typeof DropdownMenuContent>;
|
|
110
|
+
type DropdownMenuPrimitiveProps = React$1.ComponentProps<typeof DropdownMenu$1>;
|
|
111
|
+
type SetValue<T> = React$1.Dispatch<React$1.SetStateAction<T>> | ((data: T) => void);
|
|
112
|
+
interface BaseMenuItem {
|
|
113
|
+
key?: React$1.Key;
|
|
114
|
+
label?: string | React$1.ReactNode;
|
|
115
|
+
icon?: IconType;
|
|
116
|
+
to?: string;
|
|
117
|
+
separator?: boolean;
|
|
118
|
+
className?: string;
|
|
119
|
+
shortcut?: string;
|
|
120
|
+
disabled?: boolean;
|
|
121
|
+
inset?: boolean;
|
|
122
|
+
destructive?: boolean;
|
|
123
|
+
items?: DropdownMenuItemProps[];
|
|
124
|
+
}
|
|
125
|
+
interface RadioMenuItem extends BaseMenuItem {
|
|
126
|
+
groupType: 'radio';
|
|
127
|
+
value?: IValue;
|
|
128
|
+
options: IOptionItem[];
|
|
129
|
+
items?: never;
|
|
130
|
+
onValueChange?: SetValue<IValue>;
|
|
131
|
+
}
|
|
132
|
+
interface CheckboxMenuItem extends BaseMenuItem {
|
|
133
|
+
groupType: 'checkbox';
|
|
134
|
+
value?: IValue[];
|
|
135
|
+
options: IOptionItem[];
|
|
136
|
+
items?: never;
|
|
137
|
+
onValueChange?: SetValue<IValue[]>;
|
|
138
|
+
}
|
|
139
|
+
interface NormalMenuItem extends BaseMenuItem {
|
|
140
|
+
groupType?: 'item' | undefined;
|
|
141
|
+
value?: never;
|
|
142
|
+
onValueChange?: never;
|
|
143
|
+
}
|
|
144
|
+
type DropdownMenuItemProps = RadioMenuItem | CheckboxMenuItem | NormalMenuItem;
|
|
145
|
+
interface MenuPropBase {
|
|
146
|
+
menuLabel?: React$1.ReactNode;
|
|
147
|
+
items?: DropdownMenuItemProps[];
|
|
148
|
+
disabled?: boolean;
|
|
149
|
+
className?: string;
|
|
150
|
+
renderItem?: (item: DropdownMenuItemProps, index: number, onAction: MenuPropBase['onAction']) => React$1.ReactNode;
|
|
151
|
+
onAction?: (item: DropdownMenuItemProps, event: React$1.MouseEvent<HTMLDivElement>) => void;
|
|
152
|
+
}
|
|
153
|
+
interface DropdownMenuProps extends DropdownMenuPrimitiveProps, DropdownMenuContentProps, MenuPropBase {
|
|
154
|
+
}
|
|
155
|
+
declare const DropdownMenu: React$1.FC<DropdownMenuProps>;
|
|
156
|
+
|
|
157
|
+
declare const menu: tailwind_variants.TVReturnType<{
|
|
158
|
+
inset: {
|
|
159
|
+
true: {
|
|
160
|
+
trigger: string;
|
|
161
|
+
item: string;
|
|
162
|
+
label: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
destructive: {
|
|
166
|
+
true: {
|
|
167
|
+
item: string;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
}, {
|
|
171
|
+
content: string[];
|
|
172
|
+
trigger: string[];
|
|
173
|
+
item: string[];
|
|
174
|
+
checkbox: string[];
|
|
175
|
+
label: string;
|
|
176
|
+
separator: string;
|
|
177
|
+
shortcut: string;
|
|
178
|
+
arrow: string;
|
|
179
|
+
icon: string;
|
|
180
|
+
check: string;
|
|
181
|
+
}, undefined, {
|
|
182
|
+
inset: {
|
|
183
|
+
true: {
|
|
184
|
+
trigger: string;
|
|
185
|
+
item: string;
|
|
186
|
+
label: string;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
destructive: {
|
|
190
|
+
true: {
|
|
191
|
+
item: string;
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
}, {
|
|
195
|
+
content: string[];
|
|
196
|
+
trigger: string[];
|
|
197
|
+
item: string[];
|
|
198
|
+
checkbox: string[];
|
|
199
|
+
label: string;
|
|
200
|
+
separator: string;
|
|
201
|
+
shortcut: string;
|
|
202
|
+
arrow: string;
|
|
203
|
+
icon: string;
|
|
204
|
+
check: string;
|
|
205
|
+
}, tailwind_variants.TVReturnType<{
|
|
206
|
+
inset: {
|
|
207
|
+
true: {
|
|
208
|
+
trigger: string;
|
|
209
|
+
item: string;
|
|
210
|
+
label: string;
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
destructive: {
|
|
214
|
+
true: {
|
|
215
|
+
item: string;
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
}, {
|
|
219
|
+
content: string[];
|
|
220
|
+
trigger: string[];
|
|
221
|
+
item: string[];
|
|
222
|
+
checkbox: string[];
|
|
223
|
+
label: string;
|
|
224
|
+
separator: string;
|
|
225
|
+
shortcut: string;
|
|
226
|
+
arrow: string;
|
|
227
|
+
icon: string;
|
|
228
|
+
check: string;
|
|
229
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
230
|
+
declare const dropdownMenuStyles: {
|
|
231
|
+
content: (slotProps?: ({
|
|
232
|
+
inset?: boolean | undefined;
|
|
233
|
+
destructive?: boolean | undefined;
|
|
234
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
235
|
+
trigger: (slotProps?: ({
|
|
236
|
+
inset?: boolean | undefined;
|
|
237
|
+
destructive?: boolean | undefined;
|
|
238
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
239
|
+
item: (slotProps?: ({
|
|
240
|
+
inset?: boolean | undefined;
|
|
241
|
+
destructive?: boolean | undefined;
|
|
242
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
243
|
+
checkbox: (slotProps?: ({
|
|
244
|
+
inset?: boolean | undefined;
|
|
245
|
+
destructive?: boolean | undefined;
|
|
246
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
247
|
+
label: (slotProps?: ({
|
|
248
|
+
inset?: boolean | undefined;
|
|
249
|
+
destructive?: boolean | undefined;
|
|
250
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
251
|
+
separator: (slotProps?: ({
|
|
252
|
+
inset?: boolean | undefined;
|
|
253
|
+
destructive?: boolean | undefined;
|
|
254
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
255
|
+
shortcut: (slotProps?: ({
|
|
256
|
+
inset?: boolean | undefined;
|
|
257
|
+
destructive?: boolean | undefined;
|
|
258
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
259
|
+
arrow: (slotProps?: ({
|
|
260
|
+
inset?: boolean | undefined;
|
|
261
|
+
destructive?: boolean | undefined;
|
|
262
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
263
|
+
icon: (slotProps?: ({
|
|
264
|
+
inset?: boolean | undefined;
|
|
265
|
+
destructive?: boolean | undefined;
|
|
266
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
267
|
+
check: (slotProps?: ({
|
|
268
|
+
inset?: boolean | undefined;
|
|
269
|
+
destructive?: boolean | undefined;
|
|
270
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
271
|
+
} & {
|
|
272
|
+
content: (slotProps?: ({
|
|
273
|
+
inset?: boolean | undefined;
|
|
274
|
+
destructive?: boolean | undefined;
|
|
275
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
276
|
+
trigger: (slotProps?: ({
|
|
277
|
+
inset?: boolean | undefined;
|
|
278
|
+
destructive?: boolean | undefined;
|
|
279
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
280
|
+
item: (slotProps?: ({
|
|
281
|
+
inset?: boolean | undefined;
|
|
282
|
+
destructive?: boolean | undefined;
|
|
283
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
284
|
+
checkbox: (slotProps?: ({
|
|
285
|
+
inset?: boolean | undefined;
|
|
286
|
+
destructive?: boolean | undefined;
|
|
287
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
288
|
+
label: (slotProps?: ({
|
|
289
|
+
inset?: boolean | undefined;
|
|
290
|
+
destructive?: boolean | undefined;
|
|
291
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
292
|
+
separator: (slotProps?: ({
|
|
293
|
+
inset?: boolean | undefined;
|
|
294
|
+
destructive?: boolean | undefined;
|
|
295
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
296
|
+
shortcut: (slotProps?: ({
|
|
297
|
+
inset?: boolean | undefined;
|
|
298
|
+
destructive?: boolean | undefined;
|
|
299
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
300
|
+
arrow: (slotProps?: ({
|
|
301
|
+
inset?: boolean | undefined;
|
|
302
|
+
destructive?: boolean | undefined;
|
|
303
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
304
|
+
icon: (slotProps?: ({
|
|
305
|
+
inset?: boolean | undefined;
|
|
306
|
+
destructive?: boolean | undefined;
|
|
307
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
308
|
+
check: (slotProps?: ({
|
|
309
|
+
inset?: boolean | undefined;
|
|
310
|
+
destructive?: boolean | undefined;
|
|
311
|
+
} & tailwind_variants.ClassProp<tailwind_merge.ClassNameValue>) | undefined) => string;
|
|
312
|
+
} & {};
|
|
313
|
+
type DropdownMenuVariants = VariantProps<typeof menu>;
|
|
314
|
+
|
|
315
|
+
declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
|
|
316
|
+
declare function CommandInput({ className, ...props }: React$1.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
|
|
317
|
+
declare function CommandList({ className, ...props }: React$1.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
|
|
318
|
+
declare function CommandEmpty({ ...props }: React$1.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
|
|
319
|
+
declare function CommandGroup({ className, ...props }: React$1.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
|
|
320
|
+
declare function CommandSeparator({ className, ...props }: React$1.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
|
|
321
|
+
declare function CommandItem({ className, ...props }: React$1.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
|
|
322
|
+
declare function CommandShortcut({ className, ...props }: React$1.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
|
|
323
|
+
|
|
324
|
+
export { Card, CardContent, CardDescription, CardExtra, CardFooter, CardHeader, CardHeading, CardIcon, CardTable, CardTitle, CardToolbar, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DropdownMenu, type DropdownMenuItemProps, type DropdownMenuProps, type DropdownMenuVariants, type MenuPropBase, Card as Root, UIProvider, dateUtils, dropdownMenuStyles, formatCurrency, formatIntegerCompact, formatNumber, getFirstLetters };
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
export{b as DropdownMenu,a as dropdownMenuStyles}from'./chunk-SIDO7MCX.js';import {a}from'./chunk-LPA3FU7G.js';export{s as Button,f as Card,h as CardContent,p as CardDescription,i as CardExtra,k as CardFooter,g as CardHeader,l as CardHeading,o as CardIcon,j as CardTable,n as CardTitle,m as CardToolbar,A as Command,D as CommandEmpty,E as CommandGroup,B as CommandInput,G as CommandItem,C as CommandList,F as CommandSeparator,H as CommandShortcut,f as Root,q as baseButtonStyle,r as buttonVariants,c as dateUtils}from'./chunk-LPA3FU7G.js';import {LazyMotion}from'motion/react';import i from'react';import {jsx}from'react/jsx-runtime';var y=()=>import('./motion-features-PPUUMXEA.js').then(t=>t.default),c=Symbol.for("@@jerry-fe/ui/UIProviderContext");function S(){if(!globalThis[c]){let t=i.createContext(null);globalThis[c]=t;}return globalThis[c]}var v=S(),f=({children:t,locale:r="zh-CN",tableUiStorageKey:e="APP_UI_TABLE_CONFIG",onChange:n})=>{let[o,a$1]=i.useState(()=>({tableUiStorageKey:e})),p=i.useCallback(s=>{a$1(U=>{let l=typeof s=="function"?s(U):s;return n?.(l),l});},[n]);i.useEffect(()=>{a$1({tableUiStorageKey:e});},[e]);let C=i.useMemo(()=>({state:o,setState:p}),[o,p]);return jsx(LazyMotion,{features:y,strict:true,children:jsx(v.Provider,{value:C,children:jsx(a,{locale:r,children:t})})})};f.displayName="UIProvider";var I=new WeakMap;function x(t){return((...r)=>{let e=I.get(t),n=r.map(String).join("_");if(e){let a=e.get(n);if(a)return a}else e=new Map,I.set(t,e);let o=t(...r);return e.set(n,o),o})}function tt(t,r,e="zh-CN"){return new Intl.NumberFormat(e,r).format(t)}function et(t,r,e="zh-CN"){return new Intl.NumberFormat(e,{style:"currency",...r}).format(t)}function rt(t,r="en-US"){return new Intl.NumberFormat(r,{notation:"compact",compactDisplay:"short"}).format(t)}var ot=x((t,r=2)=>t.replace(/[.,!@#$%^&*()_+=\-`~[\]/\\{}:"|<>?]+/gi,"").trim().split(/\s+/).slice(0,r).map(e=>{if(!e.length)return "";if(/\s+/.test(t))return e.match(/./u)?.[0].toUpperCase();let n=new RegExp(".".repeat(r),"u"),o=e.match(n)?.[0];return o?o.charAt(0).toUpperCase()+o.slice(1):t.charAt(0).toUpperCase()+t.slice(1,2)}).join(""));export{f as UIProvider,et as formatCurrency,rt as formatIntegerCompact,tt as formatNumber,ot as getFirstLetters};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jerry-fd/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "UI component library based on Ant Design (Client-side only)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": ["index.js", "*.css"],
|
|
@@ -18,9 +18,14 @@
|
|
|
18
18
|
"./antd-data-table": {
|
|
19
19
|
"types": "./antd-data-table.d.ts",
|
|
20
20
|
"import": "./antd-data-table.js"
|
|
21
|
-
}
|
|
21
|
+
},
|
|
22
|
+
"./theme": "./theme/index.css",
|
|
23
|
+
"./theme/colors": "./theme/colors.css",
|
|
24
|
+
"./theme/typography": "./theme/typography.css",
|
|
25
|
+
"./theme/shadows": "./theme/shadows.css",
|
|
26
|
+
"./theme/badge": "./theme/badge.css"
|
|
22
27
|
},
|
|
23
|
-
"files": ["*.js", "*.d.ts", "*.d.cts", "*.css"],
|
|
28
|
+
"files": ["*.js", "*.d.ts", "*.d.cts", "*.css", "theme/**/*.css"],
|
|
24
29
|
"keywords": ["react", "antd", "filter", "data-filter", "table-filter", "client-side"],
|
|
25
30
|
"author": "jerry.fd",
|
|
26
31
|
"license": "MIT",
|
|
@@ -29,7 +34,10 @@
|
|
|
29
34
|
"react-dom": ">=18",
|
|
30
35
|
"antd": ">=5.0.0",
|
|
31
36
|
"dayjs": ">=1.11.0",
|
|
32
|
-
"tailwindcss": ">=4.1.18"
|
|
37
|
+
"tailwindcss": ">=4.1.18",
|
|
38
|
+
"zustand": "^5.0.11",
|
|
39
|
+
"lucide-react": "^0.563.0",
|
|
40
|
+
"immer": "^11.1.3"
|
|
33
41
|
},
|
|
34
42
|
"dependencies": {
|
|
35
43
|
"cmdk": "^1.1.1",
|
|
@@ -37,6 +45,7 @@
|
|
|
37
45
|
"radix-ui": "^1.4.3",
|
|
38
46
|
"react-use-measure": "^2.1.7",
|
|
39
47
|
"tailwind-merge": "^3.4.0",
|
|
40
|
-
"tailwind-variants": "^3.2.2"
|
|
48
|
+
"tailwind-variants": "^3.2.2",
|
|
49
|
+
"tw-animate-css": "^1.4.0"
|
|
41
50
|
}
|
|
42
51
|
}
|
package/theme/badge.css
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Badge Color Preset
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* @import '@jerry-fd/ui/preset/badge';
|
|
6
|
+
*
|
|
7
|
+
* Naming convention:
|
|
8
|
+
* - Variables: --badge-{color}-bg, --badge-{color}-border, --badge-{color}-text
|
|
9
|
+
* - Utilities: ui-badge-{color}
|
|
10
|
+
*
|
|
11
|
+
* Color mapping (from shadcn/ui):
|
|
12
|
+
* - background: {color}-50
|
|
13
|
+
* - border: {color}-200
|
|
14
|
+
* - text: {color}-500
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
@theme {
|
|
18
|
+
/* Slate Badge */
|
|
19
|
+
--badge-slate-bg: hsl(210deg, 40%, 98%);
|
|
20
|
+
--badge-slate-border: hsl(214.3deg, 31.8%, 91.4%);
|
|
21
|
+
--badge-slate-text: hsl(215.4deg, 16.3%, 46.9%);
|
|
22
|
+
|
|
23
|
+
/* Red Badge */
|
|
24
|
+
--badge-red-bg: hsl(0deg, 85.7%, 97.3%);
|
|
25
|
+
--badge-red-border: hsl(0deg, 96.3%, 89.4%);
|
|
26
|
+
--badge-red-text: hsl(0deg, 84.2%, 60.2%);
|
|
27
|
+
|
|
28
|
+
/* Orange Badge */
|
|
29
|
+
--badge-orange-bg: hsl(33.3deg, 100%, 96.5%);
|
|
30
|
+
--badge-orange-border: hsl(32.1deg, 97.7%, 83.1%);
|
|
31
|
+
--badge-orange-text: hsl(24.6deg, 95%, 53.1%);
|
|
32
|
+
|
|
33
|
+
/* Amber Badge */
|
|
34
|
+
--badge-amber-bg: hsl(48deg, 100%, 96.1%);
|
|
35
|
+
--badge-amber-border: hsl(48deg, 96.6%, 76.7%);
|
|
36
|
+
--badge-amber-text: hsl(37.7deg, 92.1%, 50.2%);
|
|
37
|
+
|
|
38
|
+
/* Yellow Badge */
|
|
39
|
+
--badge-yellow-bg: hsl(54.5deg, 91.7%, 95.3%);
|
|
40
|
+
--badge-yellow-border: hsl(52.8deg, 98.3%, 76.9%);
|
|
41
|
+
--badge-yellow-text: hsl(45.4deg, 93.4%, 47.5%);
|
|
42
|
+
|
|
43
|
+
/* Lime Badge */
|
|
44
|
+
--badge-lime-bg: hsl(78.3deg, 92%, 95.1%);
|
|
45
|
+
--badge-lime-border: hsl(80.9deg, 88.5%, 79.6%);
|
|
46
|
+
--badge-lime-text: hsl(83.7deg, 80.5%, 44.3%);
|
|
47
|
+
|
|
48
|
+
/* Green Badge */
|
|
49
|
+
--badge-green-bg: hsl(138.5deg, 76.5%, 96.7%);
|
|
50
|
+
--badge-green-border: hsl(141deg, 78.9%, 85.1%);
|
|
51
|
+
--badge-green-text: hsl(142.1deg, 70.6%, 45.3%);
|
|
52
|
+
|
|
53
|
+
/* Emerald Badge */
|
|
54
|
+
--badge-emerald-bg: hsl(151.8deg, 81%, 95.9%);
|
|
55
|
+
--badge-emerald-border: hsl(152.4deg, 76%, 80.4%);
|
|
56
|
+
--badge-emerald-text: hsl(160.1deg, 84.1%, 39.4%);
|
|
57
|
+
|
|
58
|
+
/* Teal Badge */
|
|
59
|
+
--badge-teal-bg: hsl(166.2deg, 76.5%, 96.7%);
|
|
60
|
+
--badge-teal-border: hsl(168.4deg, 83.8%, 78.2%);
|
|
61
|
+
--badge-teal-text: hsl(173.4deg, 80.4%, 40%);
|
|
62
|
+
|
|
63
|
+
/* Cyan Badge */
|
|
64
|
+
--badge-cyan-bg: hsl(183.2deg, 100%, 96.3%);
|
|
65
|
+
--badge-cyan-border: hsl(186.2deg, 93.5%, 81.8%);
|
|
66
|
+
--badge-cyan-text: hsl(188.7deg, 94.5%, 42.7%);
|
|
67
|
+
|
|
68
|
+
/* Sky Badge */
|
|
69
|
+
--badge-sky-bg: hsl(204deg, 100%, 97.1%);
|
|
70
|
+
--badge-sky-border: hsl(200.6deg, 94.4%, 86.1%);
|
|
71
|
+
--badge-sky-text: hsl(198.6deg, 88.7%, 48.4%);
|
|
72
|
+
|
|
73
|
+
/* Blue Badge */
|
|
74
|
+
--badge-blue-bg: hsl(213.8deg, 100%, 96.9%);
|
|
75
|
+
--badge-blue-border: hsl(213.3deg, 96.9%, 87.3%);
|
|
76
|
+
--badge-blue-text: hsl(217.2deg, 91.2%, 59.8%);
|
|
77
|
+
|
|
78
|
+
/* Indigo Badge */
|
|
79
|
+
--badge-indigo-bg: hsl(225.9deg, 100%, 96.7%);
|
|
80
|
+
--badge-indigo-border: hsl(228deg, 96.5%, 88.8%);
|
|
81
|
+
--badge-indigo-text: hsl(238.7deg, 83.5%, 66.7%);
|
|
82
|
+
|
|
83
|
+
/* Violet Badge */
|
|
84
|
+
--badge-violet-bg: hsl(250deg, 100%, 97.6%);
|
|
85
|
+
--badge-violet-border: hsl(250.5deg, 95.2%, 91.8%);
|
|
86
|
+
--badge-violet-text: hsl(258.3deg, 89.5%, 66.3%);
|
|
87
|
+
|
|
88
|
+
/* Purple Badge */
|
|
89
|
+
--badge-purple-bg: hsl(270deg, 100%, 98%);
|
|
90
|
+
--badge-purple-border: hsl(268.6deg, 100%, 91.8%);
|
|
91
|
+
--badge-purple-text: hsl(270.7deg, 91%, 65.1%);
|
|
92
|
+
|
|
93
|
+
/* Fuchsia Badge */
|
|
94
|
+
--badge-fuchsia-bg: hsl(289.1deg, 100%, 97.8%);
|
|
95
|
+
--badge-fuchsia-border: hsl(288.3deg, 95.8%, 90.6%);
|
|
96
|
+
--badge-fuchsia-text: hsl(292.2deg, 84.1%, 60.6%);
|
|
97
|
+
|
|
98
|
+
/* Pink Badge */
|
|
99
|
+
--badge-pink-bg: hsl(327.3deg, 73.3%, 97.1%);
|
|
100
|
+
--badge-pink-border: hsl(325.9deg, 84.6%, 89.8%);
|
|
101
|
+
--badge-pink-text: hsl(330.4deg, 81.2%, 60.4%);
|
|
102
|
+
|
|
103
|
+
/* Rose Badge */
|
|
104
|
+
--badge-rose-bg: hsl(355.7deg, 100%, 97.3%);
|
|
105
|
+
--badge-rose-border: hsl(352.7deg, 96.1%, 90%);
|
|
106
|
+
--badge-rose-text: hsl(349.7deg, 89.2%, 60.2%);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@utility base-badge-shared {
|
|
110
|
+
@apply flex shrink-0 items-center justify-center rounded-xl border;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@utility ui-badge-slate {
|
|
114
|
+
@apply base-badge-shared;
|
|
115
|
+
|
|
116
|
+
color: var(--badge-slate-text);
|
|
117
|
+
border-color: var(--badge-slate-border);
|
|
118
|
+
background-color: var(--badge-slate-bg);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@utility ui-badge-red {
|
|
122
|
+
@apply base-badge-shared;
|
|
123
|
+
|
|
124
|
+
color: var(--badge-red-text);
|
|
125
|
+
border-color: var(--badge-red-border);
|
|
126
|
+
background-color: var(--badge-red-bg);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@utility ui-badge-orange {
|
|
130
|
+
@apply base-badge-shared;
|
|
131
|
+
|
|
132
|
+
color: var(--badge-orange-text);
|
|
133
|
+
border-color: var(--badge-orange-border);
|
|
134
|
+
background-color: var(--badge-orange-bg);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@utility ui-badge-amber {
|
|
138
|
+
@apply base-badge-shared;
|
|
139
|
+
|
|
140
|
+
color: var(--badge-amber-text);
|
|
141
|
+
border-color: var(--badge-amber-border);
|
|
142
|
+
background-color: var(--badge-amber-bg);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@utility ui-badge-yellow {
|
|
146
|
+
@apply base-badge-shared;
|
|
147
|
+
|
|
148
|
+
color: var(--badge-yellow-text);
|
|
149
|
+
border-color: var(--badge-yellow-border);
|
|
150
|
+
background-color: var(--badge-yellow-bg);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@utility ui-badge-lime {
|
|
154
|
+
@apply base-badge-shared;
|
|
155
|
+
|
|
156
|
+
color: var(--badge-lime-text);
|
|
157
|
+
border-color: var(--badge-lime-border);
|
|
158
|
+
background-color: var(--badge-lime-bg);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@utility ui-badge-green {
|
|
162
|
+
@apply base-badge-shared;
|
|
163
|
+
|
|
164
|
+
color: var(--badge-green-text);
|
|
165
|
+
border-color: var(--badge-green-border);
|
|
166
|
+
background-color: var(--badge-green-bg);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@utility ui-badge-emerald {
|
|
170
|
+
@apply base-badge-shared;
|
|
171
|
+
|
|
172
|
+
color: var(--badge-emerald-text);
|
|
173
|
+
border-color: var(--badge-emerald-border);
|
|
174
|
+
background-color: var(--badge-emerald-bg);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@utility ui-badge-teal {
|
|
178
|
+
@apply base-badge-shared;
|
|
179
|
+
|
|
180
|
+
color: var(--badge-teal-text);
|
|
181
|
+
border-color: var(--badge-teal-border);
|
|
182
|
+
background-color: var(--badge-teal-bg);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@utility ui-badge-cyan {
|
|
186
|
+
@apply base-badge-shared;
|
|
187
|
+
|
|
188
|
+
color: var(--badge-cyan-text);
|
|
189
|
+
border-color: var(--badge-cyan-border);
|
|
190
|
+
background-color: var(--badge-cyan-bg);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@utility ui-badge-sky {
|
|
194
|
+
@apply base-badge-shared;
|
|
195
|
+
|
|
196
|
+
color: var(--badge-sky-text);
|
|
197
|
+
border-color: var(--badge-sky-border);
|
|
198
|
+
background-color: var(--badge-sky-bg);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
@utility ui-badge-blue {
|
|
202
|
+
@apply base-badge-shared;
|
|
203
|
+
|
|
204
|
+
color: var(--badge-blue-text);
|
|
205
|
+
border-color: var(--badge-blue-border);
|
|
206
|
+
background-color: var(--badge-blue-bg);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@utility ui-badge-indigo {
|
|
210
|
+
@apply base-badge-shared;
|
|
211
|
+
|
|
212
|
+
color: var(--badge-indigo-text);
|
|
213
|
+
border-color: var(--badge-indigo-border);
|
|
214
|
+
background-color: var(--badge-indigo-bg);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@utility ui-badge-violet {
|
|
218
|
+
@apply base-badge-shared;
|
|
219
|
+
|
|
220
|
+
color: var(--badge-violet-text);
|
|
221
|
+
border-color: var(--badge-violet-border);
|
|
222
|
+
background-color: var(--badge-violet-bg);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@utility ui-badge-purple {
|
|
226
|
+
@apply base-badge-shared;
|
|
227
|
+
|
|
228
|
+
color: var(--badge-purple-text);
|
|
229
|
+
border-color: var(--badge-purple-border);
|
|
230
|
+
background-color: var(--badge-purple-bg);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
@utility ui-badge-fuchsia {
|
|
234
|
+
@apply base-badge-shared;
|
|
235
|
+
|
|
236
|
+
color: var(--badge-fuchsia-text);
|
|
237
|
+
border-color: var(--badge-fuchsia-border);
|
|
238
|
+
background-color: var(--badge-fuchsia-bg);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
@utility ui-badge-pink {
|
|
242
|
+
@apply base-badge-shared;
|
|
243
|
+
|
|
244
|
+
color: var(--badge-pink-text);
|
|
245
|
+
border-color: var(--badge-pink-border);
|
|
246
|
+
background-color: var(--badge-pink-bg);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@utility ui-badge-rose {
|
|
250
|
+
@apply base-badge-shared;
|
|
251
|
+
|
|
252
|
+
color: var(--badge-rose-text);
|
|
253
|
+
border-color: var(--badge-rose-border);
|
|
254
|
+
background-color: var(--badge-rose-bg);
|
|
255
|
+
}
|