@zeturn/watercolor-react 1.2.4 → 1.2.6
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/dist/watercolor-react.es.js +26 -26
- package/index.d.ts +122 -56
- package/package.json +7 -7
|
@@ -86,7 +86,7 @@ var te = ({ items: e = [], multiple: t = !1, variant: n = "default", onToggle: r
|
|
|
86
86
|
};
|
|
87
87
|
te.displayName = "Accordion";
|
|
88
88
|
//#endregion
|
|
89
|
-
//#region
|
|
89
|
+
//#region src/components/Alert/utils.js
|
|
90
90
|
function ne(e, t) {
|
|
91
91
|
return [
|
|
92
92
|
"wc-alert",
|
|
@@ -512,7 +512,7 @@ var le = ({ value: e = null, onChange: t, options: n = [], placeholder: r = "Typ
|
|
|
512
512
|
};
|
|
513
513
|
le.displayName = "Autocomplete";
|
|
514
514
|
//#endregion
|
|
515
|
-
//#region
|
|
515
|
+
//#region src/components/Avatar/utils.js
|
|
516
516
|
function ue({ size: e, variant: t, color: n, src: r, imgError: i }) {
|
|
517
517
|
let a = ["wc-avatar"];
|
|
518
518
|
return typeof e == "string" && a.push(`wc-avatar--${e}`), a.push(`wc-avatar--${t}`), (!r || i) && a.push(`wc-avatar--${n}`), a;
|
|
@@ -562,7 +562,7 @@ var he = ({ src: e = "", alt: t = "", size: n = "md", variant: r = "circular", c
|
|
|
562
562
|
};
|
|
563
563
|
he.displayName = "Avatar";
|
|
564
564
|
//#endregion
|
|
565
|
-
//#region
|
|
565
|
+
//#region src/components/Badge/utils.js
|
|
566
566
|
var X = [
|
|
567
567
|
"primary",
|
|
568
568
|
"secondary",
|
|
@@ -598,7 +598,7 @@ var ye = ({ children: e, variant: t = "primary", size: n = "md", dot: r = !1, cl
|
|
|
598
598
|
});
|
|
599
599
|
ye.displayName = "Badge";
|
|
600
600
|
//#endregion
|
|
601
|
-
//#region
|
|
601
|
+
//#region src/components/Banner/utils.js
|
|
602
602
|
function be(e, t, n) {
|
|
603
603
|
let r = [
|
|
604
604
|
"wc-banner",
|
|
@@ -692,13 +692,13 @@ function Te({ type: t = "info", position: n = "top", title: r = "", message: i =
|
|
|
692
692
|
});
|
|
693
693
|
}
|
|
694
694
|
//#endregion
|
|
695
|
-
//#region
|
|
695
|
+
//#region src/components/Blockquote/utils.js
|
|
696
696
|
function Ee(e = "", t = "default", n = !0, r = !0, i = "medium", a = "default") {
|
|
697
697
|
let o = ["wc-blockquote"];
|
|
698
698
|
return t && t !== "default" && t !== "card" && o.push(`wc-blockquote--${t}`), n && o.push("wc-blockquote--no-border"), r && o.push("wc-blockquote--interactive"), i && i !== "medium" && o.push(`wc-blockquote--${i}`), a && a !== "default" && o.push(`wc-blockquote--${a}`), e && o.push(e), o.filter(Boolean).join(" ");
|
|
699
699
|
}
|
|
700
700
|
//#endregion
|
|
701
|
-
//#region
|
|
701
|
+
//#region src/components/Card/utils.js
|
|
702
702
|
function De(e = "", t = "minimal", n = "default", r = "medium", i = !1, a = !0) {
|
|
703
703
|
let o = ["wc-card"];
|
|
704
704
|
return t && o.push(`wc-card--${t}`), n && n !== "default" && o.push(`wc-card--${n}`), r && r !== "medium" && o.push(`wc-card--${r}`), i && o.push("wc-card--interactive"), a && o.push("wc-card--no-border"), e && o.push(e), o.filter(Boolean).join(" ");
|
|
@@ -776,7 +776,7 @@ function ke({ cite: e = "", children: t, className: n = "", variant: r = "defaul
|
|
|
776
776
|
});
|
|
777
777
|
}
|
|
778
778
|
//#endregion
|
|
779
|
-
//#region
|
|
779
|
+
//#region src/components/Box/utils.js
|
|
780
780
|
var Z = {
|
|
781
781
|
0: "0",
|
|
782
782
|
1: "0.25rem",
|
|
@@ -918,7 +918,7 @@ function Le({ component: e = "div", children: t, className: n = "", p: r, pt: i,
|
|
|
918
918
|
});
|
|
919
919
|
}
|
|
920
920
|
//#endregion
|
|
921
|
-
//#region
|
|
921
|
+
//#region src/components/Breadcrumb/utils.js
|
|
922
922
|
function Re(e, t, n, r) {
|
|
923
923
|
let i = [...e];
|
|
924
924
|
if (t && i.length && i[0].label !== "首页" && i.unshift({
|
|
@@ -1007,7 +1007,7 @@ function We({ items: t = [], separator: n = "/", variant: r = "default", showHom
|
|
|
1007
1007
|
});
|
|
1008
1008
|
}
|
|
1009
1009
|
//#endregion
|
|
1010
|
-
//#region
|
|
1010
|
+
//#region src/components/Button/utils.js
|
|
1011
1011
|
var Ge = [
|
|
1012
1012
|
"primary",
|
|
1013
1013
|
"secondary",
|
|
@@ -1239,7 +1239,7 @@ var $e = [
|
|
|
1239
1239
|
};
|
|
1240
1240
|
tt.displayName = "Checkbox";
|
|
1241
1241
|
//#endregion
|
|
1242
|
-
//#region
|
|
1242
|
+
//#region src/components/Chip/utils.jsx
|
|
1243
1243
|
function nt(e) {
|
|
1244
1244
|
let { size: t = "md", variant: n = "filled", color: r = "default", clickable: i = !1, disabled: a = !1, className: o = "" } = e, s = ["wc-chip"];
|
|
1245
1245
|
return s.push(`wc-chip--${t}`), s.push(`wc-chip--${n}`), s.push(`wc-chip--${r}`), i && !a && s.push("wc-chip--clickable"), a && s.push("wc-chip--disabled"), o && s.push(o), s.filter(Boolean).join(" ");
|
|
@@ -1314,7 +1314,7 @@ function ot({ label: e = "", avatar: t = "", deletable: n = !1, disabled: r = !1
|
|
|
1314
1314
|
});
|
|
1315
1315
|
}
|
|
1316
1316
|
//#endregion
|
|
1317
|
-
//#region
|
|
1317
|
+
//#region src/components/CircularProgress/utils.js
|
|
1318
1318
|
function st(e, t) {
|
|
1319
1319
|
let n = typeof e == "string" ? parseInt(e, 10) : e, r = n / 2, i = (n - t) / 2;
|
|
1320
1320
|
return {
|
|
@@ -1396,7 +1396,7 @@ function pt({ value: e = 0, size: t = 40, thickness: n = 3.6, variant: r = "inde
|
|
|
1396
1396
|
});
|
|
1397
1397
|
}
|
|
1398
1398
|
//#endregion
|
|
1399
|
-
//#region
|
|
1399
|
+
//#region src/components/ColorPicker/utils.js
|
|
1400
1400
|
function mt(e) {
|
|
1401
1401
|
let { size: t = "md", shape: n = "circle", disabled: r = !1, className: i = "" } = e, a = ["wc-color-picker"];
|
|
1402
1402
|
return a.push(`wc-color-picker--${t}`), a.push(`wc-color-picker--${n}`), r && a.push("wc-color-picker--disabled"), i && a.push(i), a.filter(Boolean);
|
|
@@ -1434,7 +1434,7 @@ function _t({ value: e = "#ffffff", onChange: t, size: n = "md", shape: r = "cir
|
|
|
1434
1434
|
});
|
|
1435
1435
|
}
|
|
1436
1436
|
//#endregion
|
|
1437
|
-
//#region
|
|
1437
|
+
//#region src/components/Container/utils.js
|
|
1438
1438
|
var vt = {
|
|
1439
1439
|
xs: "max-w-xs",
|
|
1440
1440
|
sm: "max-w-sm",
|
|
@@ -1461,7 +1461,7 @@ function bt({ maxWidth: e = "lg", fluid: t = !1, fixed: n = !1, className: r = "
|
|
|
1461
1461
|
});
|
|
1462
1462
|
}
|
|
1463
1463
|
//#endregion
|
|
1464
|
-
//#region
|
|
1464
|
+
//#region src/components/Copy/utils.js
|
|
1465
1465
|
function xt(e) {
|
|
1466
1466
|
let { variant: t = "default", size: n = "md", copied: r = !1, copyError: i = !1, className: a = "" } = e, o = ["wc-copy"];
|
|
1467
1467
|
return o.push(`wc-copy--${t}`), o.push(`wc-copy--${n}`), r && o.push("wc-copy--copied"), i && o.push("wc-copy--error"), a && o.push(a), o.filter(Boolean);
|
|
@@ -1582,7 +1582,7 @@ function Ot({ text: e, variant: t = "default", size: n = "md", showLabel: r = !0
|
|
|
1582
1582
|
});
|
|
1583
1583
|
}
|
|
1584
1584
|
//#endregion
|
|
1585
|
-
//#region
|
|
1585
|
+
//#region src/components/DatePicker/utils.js
|
|
1586
1586
|
function kt(e, t = "YYYY-MM-DD") {
|
|
1587
1587
|
if (!e || !(e instanceof Date)) return "";
|
|
1588
1588
|
let n = e.getFullYear(), r = String(e.getMonth() + 1).padStart(2, "0"), i = String(e.getDate()).padStart(2, "0");
|
|
@@ -1900,7 +1900,7 @@ var Lt = ({ item: e, showAvatar: t = !0, variant: n = "timeline", color: r = "va
|
|
|
1900
1900
|
};
|
|
1901
1901
|
Rt.displayName = "Feed";
|
|
1902
1902
|
//#endregion
|
|
1903
|
-
//#region
|
|
1903
|
+
//#region src/components/Feature/utils.js
|
|
1904
1904
|
var zt = ({ align: e, size: t, background: n, reverse: r, vertical: i, clickable: a, disabled: o, className: s }) => [
|
|
1905
1905
|
"wc-feature-card",
|
|
1906
1906
|
a && "wc-feature-card--clickable",
|
|
@@ -2185,7 +2185,7 @@ var en = ({ disabled: e = !1, error: t = !1, filled: n = !1, focused: r = !1, ma
|
|
|
2185
2185
|
};
|
|
2186
2186
|
en.displayName = "FormHelperText";
|
|
2187
2187
|
//#endregion
|
|
2188
|
-
//#region
|
|
2188
|
+
//#region src/components/Grid/utils.js
|
|
2189
2189
|
var tn = {
|
|
2190
2190
|
xs: "xs",
|
|
2191
2191
|
sm: "sm",
|
|
@@ -3414,7 +3414,7 @@ var Bn = ({ value: e = "", onChange: t, type: n = "text", placeholder: r = "", d
|
|
|
3414
3414
|
};
|
|
3415
3415
|
Bn.displayName = "Input";
|
|
3416
3416
|
//#endregion
|
|
3417
|
-
//#region
|
|
3417
|
+
//#region src/components/List/utils.js
|
|
3418
3418
|
var Vn = (e) => {
|
|
3419
3419
|
let { dense: t = !1, disablePadding: n = !1, variant: r, className: i = "" } = e, a = ["list"];
|
|
3420
3420
|
return t && a.push("list--dense"), n && a.push("list--no-padding"), r && a.push(`list--${r}`), i && a.push(i), a;
|
|
@@ -3646,7 +3646,7 @@ var Vn = (e) => {
|
|
|
3646
3646
|
};
|
|
3647
3647
|
ir.displayName = "Menu";
|
|
3648
3648
|
//#endregion
|
|
3649
|
-
//#region
|
|
3649
|
+
//#region src/components/Modal/utils.js
|
|
3650
3650
|
function ar({ size: e = "md", fullWidth: t = !1, fullScreen: n = !1, scroll: r = "paper", position: i = "center", className: a = "" } = {}) {
|
|
3651
3651
|
let o = ["wc-modal"];
|
|
3652
3652
|
return e && !n && o.push(`wc-modal--${e}`), n && o.push("wc-modal--fullscreen"), t && !n && o.push("wc-modal--full-width"), r === "body" ? o.push("wc-modal--scroll-body") : o.push("wc-modal--scroll-paper"), i && i !== "center" && o.push(`wc-modal--${i}`), a && o.push(a), o.filter(Boolean).join(" ");
|
|
@@ -3906,7 +3906,7 @@ dr.displayName = "Page", dr.propTypes = {
|
|
|
3906
3906
|
children: $.default.node
|
|
3907
3907
|
};
|
|
3908
3908
|
//#endregion
|
|
3909
|
-
//#region
|
|
3909
|
+
//#region src/components/Paper/utils.js
|
|
3910
3910
|
var fr = {
|
|
3911
3911
|
ELEVATION: "elevation",
|
|
3912
3912
|
OUTLINED: "outlined"
|
|
@@ -4675,7 +4675,7 @@ function Nr({ open: e = !1, modelValue: t = void 0, message: n = "", title: r =
|
|
|
4675
4675
|
}), document.body);
|
|
4676
4676
|
}
|
|
4677
4677
|
//#endregion
|
|
4678
|
-
//#region
|
|
4678
|
+
//#region src/components/Status/utils.js
|
|
4679
4679
|
var Pr = [
|
|
4680
4680
|
"default",
|
|
4681
4681
|
"success",
|
|
@@ -5084,7 +5084,7 @@ var Qr = ({ value: e = "", onChange: t, type: n = "text", label: r = "", placeho
|
|
|
5084
5084
|
};
|
|
5085
5085
|
Qr.displayName = "TextField";
|
|
5086
5086
|
//#endregion
|
|
5087
|
-
//#region
|
|
5087
|
+
//#region src/components/Toolbar/utils.js
|
|
5088
5088
|
var $r = (e, t, n = "") => {
|
|
5089
5089
|
let r = ["flex items-center w-full"];
|
|
5090
5090
|
return e === "dense" ? r.push("min-h-12 py-2") : r.push("min-h-16 py-3"), t || r.push("px-4 sm:px-6 lg:px-8"), n && r.push(n), r.join(" ");
|
|
@@ -5143,7 +5143,7 @@ function ai({ text: e, placement: t = "top", children: n, className: r = "" }) {
|
|
|
5143
5143
|
});
|
|
5144
5144
|
}
|
|
5145
5145
|
//#endregion
|
|
5146
|
-
//#region
|
|
5146
|
+
//#region src/components/Typography/utils.js
|
|
5147
5147
|
var oi = {
|
|
5148
5148
|
h1: "h1",
|
|
5149
5149
|
h2: "h2",
|
|
@@ -5229,7 +5229,7 @@ var pi = ({ variant: e = "body1", component: t, color: n = "inherit", align: r =
|
|
|
5229
5229
|
});
|
|
5230
5230
|
pi.displayName = "Typography";
|
|
5231
5231
|
//#endregion
|
|
5232
|
-
//#region
|
|
5232
|
+
//#region src/components/TypingText/utils.js
|
|
5233
5233
|
var mi = class {
|
|
5234
5234
|
constructor(e, t = {}) {
|
|
5235
5235
|
this.text = e, this.speed = t.speed || 100, this.pause = t.pause || 1500, this.loop = t.loop || !1, this.erase = t.erase || !1, this.index = 0, this.direction = 1, this.timer = null, this.onUpdate = t.onUpdate || (() => {});
|
|
@@ -5330,7 +5330,7 @@ var gi = ({ length: e = 6, value: t = "", onChange: n, onComplete: r, autoFocus:
|
|
|
5330
5330
|
};
|
|
5331
5331
|
gi.displayName = "VerificationCodeInput";
|
|
5332
5332
|
//#endregion
|
|
5333
|
-
//#region
|
|
5333
|
+
//#region src/components/VideoPlayer/utils.js
|
|
5334
5334
|
function _i(e) {
|
|
5335
5335
|
return `${Math.floor(e / 60)}:${Math.floor(e % 60).toString().padStart(2, "0")}`;
|
|
5336
5336
|
}
|
|
@@ -5439,7 +5439,7 @@ var bi = ({ src: e, autoplay: t = !1, loop: n = !1, className: r = "", style: i
|
|
|
5439
5439
|
};
|
|
5440
5440
|
bi.displayName = "VideoPlayer";
|
|
5441
5441
|
//#endregion
|
|
5442
|
-
//#region
|
|
5442
|
+
//#region src/components/Watermark/utils.js
|
|
5443
5443
|
var xi = {
|
|
5444
5444
|
content: "",
|
|
5445
5445
|
cross: !1,
|
package/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
InputHTMLAttributes,
|
|
8
8
|
ReactElement,
|
|
9
9
|
ReactNode,
|
|
10
|
+
CSSProperties,
|
|
10
11
|
TdHTMLAttributes,
|
|
11
12
|
ThHTMLAttributes,
|
|
12
13
|
} from 'react'
|
|
@@ -27,7 +28,9 @@ import type {
|
|
|
27
28
|
WatercolorThemeConfig,
|
|
28
29
|
} from '@zeturn/watercolor-core'
|
|
29
30
|
|
|
30
|
-
type
|
|
31
|
+
type FloatingPlacement = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end'
|
|
32
|
+
type HtmlComponentProps<T extends HTMLElement = HTMLElement> = HTMLAttributes<T> & { className?: string; style?: CSSProperties; children?: ReactNode }
|
|
33
|
+
type PolymorphicComponent<TDefault extends ElementType, OwnProps> = <T extends ElementType = TDefault>(props: PolymorphicProps<T, OwnProps>) => ReactElement | null
|
|
31
34
|
type PolymorphicProps<T extends ElementType, OwnProps> = OwnProps &
|
|
32
35
|
Omit<ComponentPropsWithoutRef<T>, keyof OwnProps | 'as'> & { as?: T }
|
|
33
36
|
type CompositionBaseProps = { children?: ReactNode; className?: string }
|
|
@@ -52,6 +55,9 @@ export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement
|
|
|
52
55
|
ripple?: boolean
|
|
53
56
|
}
|
|
54
57
|
|
|
58
|
+
export interface FabProps extends Omit<ButtonProps, 'variant'> { variant?: 'circular' | 'extended'; color?: ComponentColor | 'default'; label?: ReactNode; icon?: ReactNode }
|
|
59
|
+
export interface IconButtonProps extends Omit<ButtonProps, 'variant' | 'buttonStyle' | 'fullWidth'> { color?: ComponentColor | 'default'; edge?: boolean | 'start' | 'end'; icon?: ReactNode }
|
|
60
|
+
|
|
55
61
|
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'color' | 'value'> {
|
|
56
62
|
value?: string | number | readonly string[]
|
|
57
63
|
readonly?: boolean
|
|
@@ -242,6 +248,66 @@ export interface TableCellProps extends Omit<TdHTMLAttributes<HTMLTableCellEleme
|
|
|
242
248
|
variant?: 'head' | 'body' | 'footer'
|
|
243
249
|
}
|
|
244
250
|
|
|
251
|
+
export interface AccordionItem { key?: string | number; title?: ReactNode; content?: ReactNode; disabled?: boolean; [key: string]: unknown }
|
|
252
|
+
export interface AccordionProps extends HtmlComponentProps<HTMLDivElement> { items?: readonly AccordionItem[]; multiple?: boolean; variant?: 'default' | 'bordered' | 'separated'; onToggle?: (key: string | number, expanded: boolean) => void }
|
|
253
|
+
export interface AlertProps extends HtmlComponentProps<HTMLDivElement> { type?: 'success' | 'warning' | 'error' | 'info'; severity?: 'success' | 'warning' | 'error' | 'info'; variant?: 'filled' | 'outlined' | 'standard'; title?: ReactNode; message?: ReactNode; closable?: boolean; onClose?: () => void; icon?: ReactNode; action?: ReactNode }
|
|
254
|
+
export interface AppBarProps extends HtmlComponentProps<HTMLElement> { position?: 'static' | 'fixed' | 'absolute' | 'sticky' | 'relative'; color?: string; elevation?: number; variant?: 'elevation' | 'outlined' | 'minimal' }
|
|
255
|
+
export interface AutocompleteProps<Value = unknown> extends Omit<SelectProps, 'value' | 'onChange' | 'onSearch'> { value?: Value | Value[] | null; onChange?: (value: Value | Value[] | null) => void; readonly?: boolean; freeSolo?: boolean; minSearchLength?: number; noOptionsText?: ReactNode; onInputChange?: (value: string) => void; filterOptions?: (options: readonly SelectOption[], query: string) => readonly SelectOption[]; renderInput?: (props: Record<string, unknown>) => ReactNode; getOptionLabel?: (option: Value | SelectOption) => string; getOptionValue?: (option: Value | SelectOption) => string | number }
|
|
256
|
+
export interface AvatarProps extends HtmlComponentProps<HTMLDivElement> { src?: string; alt?: string; size?: ComponentSize | 'xs' | 'xl' | number; variant?: 'circular' | 'rounded' | 'square'; color?: ComponentColor | 'default'; children?: ReactNode }
|
|
257
|
+
export interface BadgeProps extends HtmlComponentProps<HTMLSpanElement> { variant?: ComponentColor | 'primary' | 'default'; size?: ComponentSize; dot?: boolean; children?: ReactNode }
|
|
258
|
+
export interface BannerProps extends HtmlComponentProps<HTMLDivElement> { type?: 'info' | 'success' | 'warning' | 'error'; title?: ReactNode; message?: ReactNode; closable?: boolean; onClose?: () => void; sticky?: boolean; zIndex?: number; icon?: ReactNode; actions?: ReactNode }
|
|
259
|
+
export interface BlockquoteProps extends HtmlComponentProps<HTMLElement> { cite?: ReactNode; variant?: 'default' | 'minimal' | 'card'; noBorder?: boolean; interactive?: boolean; size?: ComponentSize | 'medium'; color?: ComponentColor | 'default' }
|
|
260
|
+
export interface BoxProps<T extends ElementType = 'div'> extends PolymorphicProps<T, { children?: ReactNode; className?: string; style?: CSSProperties; p?: unknown; pt?: unknown; pr?: unknown; pb?: unknown; pl?: unknown; px?: unknown; py?: unknown; m?: unknown; mt?: unknown; mr?: unknown; mb?: unknown; ml?: unknown; mx?: unknown; my?: unknown; display?: CSSProperties['display']; flexDirection?: CSSProperties['flexDirection']; justifyContent?: CSSProperties['justifyContent']; alignItems?: CSSProperties['alignItems']; flexWrap?: CSSProperties['flexWrap']; gap?: CSSProperties['gap']; bgcolor?: string; color?: string; border?: string | number; borderRadius?: string | number; width?: CSSProperties['width']; height?: CSSProperties['height']; minWidth?: CSSProperties['minWidth']; minHeight?: CSSProperties['minHeight']; maxWidth?: CSSProperties['maxWidth']; maxHeight?: CSSProperties['maxHeight'] }> { component?: T }
|
|
261
|
+
export interface BreadcrumbItem { label?: ReactNode; href?: string; icon?: ReactNode; disabled?: boolean; current?: boolean; [key: string]: unknown }
|
|
262
|
+
export interface BreadcrumbProps extends Omit<HtmlComponentProps<HTMLElement>, 'onClick'> { items?: readonly BreadcrumbItem[]; separator?: ReactNode; variant?: 'default' | 'compact'; showHome?: boolean; homeIcon?: ReactNode; maxItems?: number; onItemClick?: (item: BreadcrumbItem, index: number) => void }
|
|
263
|
+
export interface CardProps extends HtmlComponentProps<HTMLDivElement> { title?: ReactNode; variant?: 'minimal' | 'default' | 'outlined' | 'elevated'; color?: ComponentColor | 'default'; size?: ComponentSize | 'medium'; interactive?: boolean; noBorder?: boolean; header?: ReactNode; footer?: ReactNode }
|
|
264
|
+
export interface CardActionsProps extends HtmlComponentProps<HTMLDivElement> { disableSpacing?: boolean; disablePadding?: boolean; justifyContent?: CSSProperties['justifyContent'] }
|
|
265
|
+
export interface CardContentProps extends HtmlComponentProps<HTMLDivElement> { disablePadding?: boolean; padding?: 'none' | 'compact' | 'normal' | 'comfortable' }
|
|
266
|
+
export interface ChipProps extends HtmlComponentProps<HTMLDivElement> { label?: ReactNode; avatar?: ReactNode; deletable?: boolean; disabled?: boolean; clickable?: boolean; variant?: 'filled' | 'outlined' | 'minimal'; size?: ComponentSize; color?: ComponentColor | 'default'; deleteIcon?: ReactNode; onDelete?: () => void }
|
|
267
|
+
export interface CircularProgressProps extends HtmlComponentProps<HTMLDivElement> { value?: number; size?: number | string; thickness?: number; variant?: 'determinate' | 'indeterminate'; color?: ComponentColor | 'inherit'; showValue?: boolean; overlay?: boolean; centered?: boolean; inline?: boolean }
|
|
268
|
+
export interface ColorPickerProps extends Omit<HtmlComponentProps<HTMLDivElement>, 'onChange'> { value?: string; onChange?: (value: string) => void; size?: ComponentSize; shape?: 'circle' | 'square' | 'rounded'; disabled?: boolean }
|
|
269
|
+
export interface ContainerProps extends HtmlComponentProps<HTMLDivElement> { maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false | string; fluid?: boolean; fixed?: boolean }
|
|
270
|
+
export interface CopyProps extends HtmlComponentProps<HTMLButtonElement> { text?: string; value?: string; copied?: boolean; error?: boolean; label?: ReactNode; copiedLabel?: ReactNode; errorLabel?: ReactNode; onCopy?: (value: string) => void; icon?: ReactNode }
|
|
271
|
+
export interface DatePickerProps extends Omit<HtmlComponentProps<HTMLDivElement>, 'onChange'> { value?: Date | string | null; onChange?: (value: Date) => void; placeholder?: string; disabled?: boolean; size?: ComponentSize; variant?: 'default' | FieldVariant; format?: string; showToday?: boolean; minDate?: Date | string | null; maxDate?: Date | string | null }
|
|
272
|
+
export interface DividerProps extends HtmlComponentProps<HTMLHRElement> { variant?: 'solid' | 'dashed' | 'dotted'; orientation?: 'horizontal' | 'vertical'; flexItem?: boolean }
|
|
273
|
+
export interface FeatureProps extends HtmlComponentProps<HTMLDivElement> { title?: ReactNode; description?: ReactNode; icon?: ReactNode; iconSize?: number; size?: ComponentSize; align?: 'left' | 'center' | 'right'; background?: string; variant?: 'default' | 'minimal' | 'card'; bgColor?: string; reverse?: boolean; vertical?: boolean; ctaLabel?: ReactNode; ctaHref?: string; onCtaClick?: (event: unknown) => void }
|
|
274
|
+
export interface FeedItem { title?: ReactNode; description?: ReactNode; avatar?: ReactNode; time?: ReactNode; children?: FeedItem[]; [key: string]: unknown }
|
|
275
|
+
export interface FeedProps extends Omit<HtmlComponentProps<HTMLDivElement>, 'onClick'> { item?: FeedItem; items?: readonly FeedItem[]; showAvatar?: boolean; variant?: 'timeline' | 'list'; color?: string; dotSize?: number; lineWidth?: number; onItemClick?: (item: FeedItem) => void }
|
|
276
|
+
export interface FileInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange'> { onChange?: (files: FileList | File[]) => void; onInvalid?: (files: FileList | File[]) => void; label?: ReactNode; helperText?: ReactNode; accept?: string; multiple?: boolean; className?: string }
|
|
277
|
+
export interface FormControlProps extends HtmlComponentProps<HTMLDivElement> { disabled?: boolean; error?: boolean; required?: boolean; variant?: FieldVariant; size?: ComponentSize; fullWidth?: boolean; margin?: 'none' | 'dense' | 'normal' }
|
|
278
|
+
export interface FormControlLabelProps extends HtmlComponentProps<HTMLLabelElement> { label?: ReactNode; labelPlacement?: 'start' | 'end' | 'top' | 'bottom'; disabled?: boolean; required?: boolean; checked?: boolean; value?: unknown; control?: ReactNode; onChange?: (...args: unknown[]) => void }
|
|
279
|
+
export interface FormGroupProps extends HtmlComponentProps<HTMLDivElement> { row?: boolean; spacing?: 'compact' | 'normal' | 'comfortable' }
|
|
280
|
+
export interface FormHelperTextProps extends HtmlComponentProps<HTMLParagraphElement> { disabled?: boolean; error?: boolean; filled?: boolean; focused?: boolean; margin?: 'none' | 'dense' | 'normal'; required?: boolean; variant?: FieldVariant; id?: string; size?: ComponentSize }
|
|
281
|
+
export interface GridProps extends HtmlComponentProps<HTMLDivElement> { container?: boolean; item?: boolean; xs?: number | boolean; sm?: number | boolean; md?: number | boolean; lg?: number | boolean; xl?: number | boolean; spacing?: number | string; direction?: CSSProperties['flexDirection']; justifyContent?: CSSProperties['justifyContent']; alignItems?: CSSProperties['alignItems'] }
|
|
282
|
+
export interface HoverCardProps extends HtmlComponentProps<HTMLDivElement> { triggerText?: ReactNode; cardData?: Record<string, unknown>; variant?: 'default' | 'outlined' | 'filled' | 'minimal'; size?: ComponentSize; cardSize?: ComponentSize | 'xl'; position?: FloatingPlacement; delay?: number; hideDelay?: number; showArrow?: boolean; disabled?: boolean; onShow?: () => void; onHide?: () => void; onAction?: (...args: unknown[]) => void; card?: ReactNode }
|
|
283
|
+
export interface IconProps extends HtmlComponentProps<HTMLSpanElement> { name?: string; size?: number | string; color?: string; children?: ReactNode }
|
|
284
|
+
export interface ImageGalleryImage { src: string; alt?: string; title?: ReactNode; description?: ReactNode; [key: string]: unknown }
|
|
285
|
+
export interface ImageGalleryProps extends HtmlComponentProps<HTMLDivElement> { images?: readonly ImageGalleryImage[]; title?: ReactNode; layout?: 'grid' | 'masonry' | 'carousel'; size?: ComponentSize | 'xl'; columns?: number; gap?: number; showInfo?: boolean; showCount?: boolean; showDownload?: boolean; showPagination?: boolean; itemsPerPage?: number; lazyLoad?: boolean; loading?: boolean; onSelect?: (image: ImageGalleryImage, index: number) => void; onDownload?: (image: ImageGalleryImage) => void; onLightboxOpen?: (event: unknown) => void; onLightboxClose?: () => void }
|
|
286
|
+
export interface ListProps extends HtmlComponentProps<HTMLUListElement> { dense?: boolean; disablePadding?: boolean; nav?: boolean; subheader?: ReactNode }
|
|
287
|
+
export interface ListItemProps<T extends ElementType = 'li'> extends PolymorphicProps<T, { children?: ReactNode; className?: string; button?: boolean; disabled?: boolean; divider?: boolean; selected?: boolean; disableGutters?: boolean; multiselect?: boolean }> { component?: T }
|
|
288
|
+
export interface ListItemIconProps extends HtmlComponentProps<HTMLSpanElement> { position?: 'start' | 'end' }
|
|
289
|
+
export interface ListItemTextProps extends HtmlComponentProps<HTMLSpanElement> { primary?: ReactNode; secondary?: ReactNode; inset?: boolean }
|
|
290
|
+
export interface NumberAnimationProps extends HtmlComponentProps<HTMLSpanElement> { active?: boolean; duration?: number; from?: number; to?: number; locale?: string; precision?: number; showSeparator?: boolean; prefix?: ReactNode; suffix?: ReactNode; separator?: string; formatter?: (value: number) => ReactNode; easing?: 'linear' | 'easeIn' | 'easeOut' | 'easeInOut' | string; onFinish?: () => void }
|
|
291
|
+
export interface PaginationProps extends Omit<HtmlComponentProps<HTMLElement>, 'onChange'> { value?: number; page?: number; onChange?: (page: number) => void; total?: number; pageSize?: number; siblingCount?: number; boundaryCount?: number; size?: ComponentSize | 'xl' }
|
|
292
|
+
export interface PaperProps<T extends ElementType = 'div'> extends PolymorphicProps<T, { children?: ReactNode; className?: string; style?: CSSProperties; variant?: 'elevation' | 'outlined' | 'minimal'; elevation?: number; square?: boolean; hoverable?: boolean; clickable?: boolean; color?: ComponentColor | 'default'; size?: ComponentSize | null; shape?: string | null; gradient?: boolean; frosted?: boolean; textured?: boolean }> { component?: T }
|
|
293
|
+
export interface PopoverProps extends HtmlComponentProps<HTMLDivElement> { open?: boolean; onOpenChange?: (open: boolean) => void; triggerText?: ReactNode; trigger?: ReactNode; placement?: FloatingPlacement; offset?: number }
|
|
294
|
+
export interface PricingPlan { title?: ReactNode; price?: ReactNode; features?: readonly ReactNode[]; highlighted?: boolean; [key: string]: unknown }
|
|
295
|
+
export interface PricingTableProps extends HtmlComponentProps<HTMLDivElement> { plans?: readonly PricingPlan[]; columns?: number }
|
|
296
|
+
export interface ProgressProps extends HtmlComponentProps<HTMLDivElement> { value?: number; label?: ReactNode; showPercent?: boolean; color?: ComponentColor; size?: ComponentSize; animated?: boolean }
|
|
297
|
+
export interface RatingProps extends Omit<HtmlComponentProps<HTMLDivElement>, 'onChange'> { value?: number; max?: number; readOnly?: boolean; onChange?: (value: number) => void; ariaLabel?: string }
|
|
298
|
+
export interface SkeletonProps<T extends ElementType = 'div'> extends PolymorphicProps<T, { children?: ReactNode; className?: string; style?: CSSProperties; animation?: false | 'pulse' | 'wave'; height?: number | string; width?: number | string; variant?: 'text' | 'rectangular' | 'rounded' | 'circular' }> { component?: T }
|
|
299
|
+
export interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange' | 'value' | 'defaultValue'> { value?: number; defaultValue?: number; min?: number; max?: number; step?: number; label?: ReactNode; valueLabelDisplay?: 'off' | 'auto' | 'on'; onChange?: (value: number) => void; className?: string; style?: CSSProperties }
|
|
300
|
+
export interface SlideOverProps extends HtmlComponentProps<HTMLDivElement> { open?: boolean; onClose?: () => void; placement?: 'left' | 'right' | 'top' | 'bottom'; width?: number | string; header?: ReactNode; footer?: ReactNode }
|
|
301
|
+
export interface SnackbarProps extends HtmlComponentProps<HTMLDivElement> { open?: boolean; message?: ReactNode; severity?: 'success' | 'warning' | 'error' | 'info'; closable?: boolean; showIcon?: boolean; showProgress?: boolean; autoHideDuration?: number; action?: ReactNode; onClose?: () => void; onAction?: () => void }
|
|
302
|
+
export interface StatusProps extends HtmlComponentProps<HTMLSpanElement> { status?: 'default' | 'success' | 'warning' | 'error' | 'info' | string; size?: ComponentSize; showText?: boolean; animated?: boolean; animationType?: 'auto' | 'glow' | 'spin' | 'bounce' | 'shake' | 'ripple'; text?: ReactNode }
|
|
303
|
+
export interface ToolbarProps extends HtmlComponentProps<HTMLDivElement> { variant?: 'regular' | 'dense'; disableGutters?: boolean }
|
|
304
|
+
export interface TooltipProps extends HtmlComponentProps<HTMLDivElement> { text?: ReactNode; placement?: 'top' | 'bottom' | 'left' | 'right'; children?: ReactNode }
|
|
305
|
+
export interface TypographyProps<T extends ElementType = 'p'> extends PolymorphicProps<T, { children?: ReactNode; className?: string; style?: CSSProperties; variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'caption' | 'overline'; component?: T; color?: string; align?: CSSProperties['textAlign']; gutterBottom?: boolean; noWrap?: boolean }> { component?: T }
|
|
306
|
+
export interface TypingTextProps extends HtmlComponentProps<HTMLSpanElement> { text?: string; speed?: number; pause?: number; loop?: boolean; erase?: boolean; showCursor?: boolean }
|
|
307
|
+
export interface VerificationCodeInputProps extends Omit<HtmlComponentProps<HTMLDivElement>, 'onChange'> { length?: number; value?: string; onChange?: (value: string) => void; onComplete?: (value: string) => void; autoFocus?: boolean }
|
|
308
|
+
export interface VideoPlayerProps extends HtmlComponentProps<HTMLDivElement> { src: string; autoplay?: boolean; loop?: boolean; muted?: boolean; poster?: string; controls?: boolean }
|
|
309
|
+
export interface WatermarkProps extends HtmlComponentProps<HTMLDivElement> { content?: ReactNode; image?: string; fullscreen?: boolean; gap?: [number, number]; offset?: [number, number]; rotate?: number; zIndex?: number; opacity?: number; debug?: boolean; cross?: boolean }
|
|
310
|
+
|
|
245
311
|
export interface ThemeContextValue extends ThemeSnapshot {
|
|
246
312
|
setMode: (mode: ThemeMode) => void
|
|
247
313
|
toggleMode: () => void
|
|
@@ -342,66 +408,66 @@ export type {
|
|
|
342
408
|
SplitRatio,
|
|
343
409
|
} from '@zeturn/watercolor-core'
|
|
344
410
|
|
|
345
|
-
export const Accordion:
|
|
346
|
-
export const Alert:
|
|
347
|
-
export const AppBar:
|
|
348
|
-
export const Autocomplete:
|
|
349
|
-
export const Avatar:
|
|
350
|
-
export const Badge:
|
|
351
|
-
export const Banner:
|
|
352
|
-
export const Blockquote:
|
|
353
|
-
export const Box:
|
|
354
|
-
export const Breadcrumb:
|
|
411
|
+
export const Accordion: ComponentType<AccordionProps>
|
|
412
|
+
export const Alert: ComponentType<AlertProps>
|
|
413
|
+
export const AppBar: ComponentType<AppBarProps>
|
|
414
|
+
export const Autocomplete: ComponentType<AutocompleteProps>
|
|
415
|
+
export const Avatar: ComponentType<AvatarProps>
|
|
416
|
+
export const Badge: ComponentType<BadgeProps>
|
|
417
|
+
export const Banner: ComponentType<BannerProps>
|
|
418
|
+
export const Blockquote: ComponentType<BlockquoteProps>
|
|
419
|
+
export const Box: <T extends ElementType = 'div'>(props: BoxProps<T>) => ReactElement | null
|
|
420
|
+
export const Breadcrumb: ComponentType<BreadcrumbProps>
|
|
355
421
|
export const Button: ComponentType<ButtonProps>
|
|
356
|
-
export const Card:
|
|
357
|
-
export const CardActions:
|
|
358
|
-
export const CardContent:
|
|
422
|
+
export const Card: ComponentType<CardProps>
|
|
423
|
+
export const CardActions: ComponentType<CardActionsProps>
|
|
424
|
+
export const CardContent: ComponentType<CardContentProps>
|
|
359
425
|
export const Checkbox: ComponentType<CheckboxProps>
|
|
360
|
-
export const Chip:
|
|
361
|
-
export const CircularProgress:
|
|
362
|
-
export const ColorPicker:
|
|
363
|
-
export const Container:
|
|
364
|
-
export const Copy:
|
|
365
|
-
export const DatePicker:
|
|
366
|
-
export const Fab:
|
|
367
|
-
export const Feed:
|
|
368
|
-
export const Feature:
|
|
369
|
-
export const FileInput:
|
|
370
|
-
export const FormControl:
|
|
371
|
-
export const FormControlLabel:
|
|
372
|
-
export const FormGroup:
|
|
373
|
-
export const FormHelperText:
|
|
374
|
-
export const Grid:
|
|
375
|
-
export const HoverCard:
|
|
376
|
-
export const Icon:
|
|
377
|
-
export const IconButton:
|
|
378
|
-
export const ImageGallery:
|
|
426
|
+
export const Chip: ComponentType<ChipProps>
|
|
427
|
+
export const CircularProgress: ComponentType<CircularProgressProps>
|
|
428
|
+
export const ColorPicker: ComponentType<ColorPickerProps>
|
|
429
|
+
export const Container: ComponentType<ContainerProps>
|
|
430
|
+
export const Copy: ComponentType<CopyProps>
|
|
431
|
+
export const DatePicker: ComponentType<DatePickerProps>
|
|
432
|
+
export const Fab: ComponentType<FabProps>
|
|
433
|
+
export const Feed: ComponentType<FeedProps>
|
|
434
|
+
export const Feature: ComponentType<FeatureProps>
|
|
435
|
+
export const FileInput: ComponentType<FileInputProps>
|
|
436
|
+
export const FormControl: ComponentType<FormControlProps>
|
|
437
|
+
export const FormControlLabel: ComponentType<FormControlLabelProps>
|
|
438
|
+
export const FormGroup: ComponentType<FormGroupProps>
|
|
439
|
+
export const FormHelperText: ComponentType<FormHelperTextProps>
|
|
440
|
+
export const Grid: ComponentType<GridProps>
|
|
441
|
+
export const HoverCard: ComponentType<HoverCardProps>
|
|
442
|
+
export const Icon: ComponentType<IconProps>
|
|
443
|
+
export const IconButton: ComponentType<IconButtonProps>
|
|
444
|
+
export const ImageGallery: ComponentType<ImageGalleryProps>
|
|
379
445
|
export const Inline: <T extends ElementType = 'div'>(props: InlineProps<T>) => ReactElement | null
|
|
380
446
|
export const Input: ComponentType<InputProps>
|
|
381
|
-
export const List:
|
|
382
|
-
export const ListItem:
|
|
383
|
-
export const ListItemIcon:
|
|
384
|
-
export const ListItemText:
|
|
447
|
+
export const List: ComponentType<ListProps>
|
|
448
|
+
export const ListItem: <T extends ElementType = 'li'>(props: ListItemProps<T>) => ReactElement | null
|
|
449
|
+
export const ListItemIcon: ComponentType<ListItemIconProps>
|
|
450
|
+
export const ListItemText: ComponentType<ListItemTextProps>
|
|
385
451
|
export const Menu: ComponentType<MenuProps>
|
|
386
452
|
export const Modal: ComponentType<ModalProps>
|
|
387
|
-
export const NumberAnimation:
|
|
388
|
-
export const Pagination:
|
|
453
|
+
export const NumberAnimation: ComponentType<NumberAnimationProps>
|
|
454
|
+
export const Pagination: ComponentType<PaginationProps>
|
|
389
455
|
export const Page: <T extends ElementType = 'div'>(props: PageProps<T>) => ReactElement | null
|
|
390
|
-
export const Paper:
|
|
391
|
-
export const Popover:
|
|
392
|
-
export const PricingTable:
|
|
393
|
-
export const Progress:
|
|
456
|
+
export const Paper: <T extends ElementType = 'div'>(props: PaperProps<T>) => ReactElement | null
|
|
457
|
+
export const Popover: ComponentType<PopoverProps>
|
|
458
|
+
export const PricingTable: ComponentType<PricingTableProps>
|
|
459
|
+
export const Progress: ComponentType<ProgressProps>
|
|
394
460
|
export const Radio: <Value = string | number | boolean>(props: RadioProps<Value>) => ReactElement | null
|
|
395
461
|
export const RadioGroup: <Value = string | number | boolean>(props: RadioGroupProps<Value>) => ReactElement | null
|
|
396
|
-
export const Rating:
|
|
462
|
+
export const Rating: ComponentType<RatingProps>
|
|
397
463
|
export const Select: <Value extends SelectValue = SelectValue>(props: SelectProps<Value>) => ReactElement | null
|
|
398
|
-
export const Skeleton:
|
|
399
|
-
export const Slider:
|
|
400
|
-
export const SlideOver:
|
|
464
|
+
export const Skeleton: <T extends ElementType = 'div'>(props: SkeletonProps<T>) => ReactElement | null
|
|
465
|
+
export const Slider: ComponentType<SliderProps>
|
|
466
|
+
export const SlideOver: ComponentType<SlideOverProps>
|
|
401
467
|
export const Split: <T extends ElementType = 'div'>(props: SplitProps<T>) => ReactElement | null
|
|
402
468
|
export const Stack: <T extends ElementType = 'div'>(props: StackProps<T>) => ReactElement | null
|
|
403
|
-
export const Snackbar:
|
|
404
|
-
export const Status:
|
|
469
|
+
export const Snackbar: ComponentType<SnackbarProps>
|
|
470
|
+
export const Status: ComponentType<StatusProps>
|
|
405
471
|
export const Switch: ComponentType<SwitchProps>
|
|
406
472
|
export const Table: ComponentType<TableProps> & {
|
|
407
473
|
Head: ComponentType<TableHeadProps>
|
|
@@ -415,13 +481,13 @@ export const TableHead: ComponentType<TableHeadProps>
|
|
|
415
481
|
export const TableRow: ComponentType<TableRowProps>
|
|
416
482
|
export const Tabs: ComponentType<TabsProps>
|
|
417
483
|
export const TextField: ComponentType<TextFieldProps>
|
|
418
|
-
export const Toolbar:
|
|
419
|
-
export const Tooltip:
|
|
420
|
-
export const Typography:
|
|
421
|
-
export const TypingText:
|
|
422
|
-
export const VerificationCodeInput:
|
|
423
|
-
export const VideoPlayer:
|
|
424
|
-
export const Watermark:
|
|
484
|
+
export const Toolbar: ComponentType<ToolbarProps>
|
|
485
|
+
export const Tooltip: ComponentType<TooltipProps>
|
|
486
|
+
export const Typography: <T extends ElementType = 'p'>(props: TypographyProps<T>) => ReactElement | null
|
|
487
|
+
export const TypingText: ComponentType<TypingTextProps>
|
|
488
|
+
export const VerificationCodeInput: ComponentType<VerificationCodeInputProps>
|
|
489
|
+
export const VideoPlayer: ComponentType<VideoPlayerProps>
|
|
490
|
+
export const Watermark: ComponentType<WatermarkProps>
|
|
425
491
|
export const LocaleProvider: ComponentType<LocaleProviderProps>
|
|
426
492
|
export const defaultLocaleMessages: WatercolorLocaleMessages
|
|
427
493
|
export function useLocale(): LocaleContextValue
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeturn/watercolor-react",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "dist/watercolor-react.es.js",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"directory": "packages/react"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@zeturn/watercolor-icons-feather": "1.2.
|
|
45
|
-
"@zeturn/watercolor-icons-heroicons-react": "1.2.
|
|
46
|
-
"@zeturn/watercolor-icons-lucide-react": "1.2.
|
|
47
|
-
"@zeturn/watercolor-icons-phosphor-react": "1.2.
|
|
48
|
-
"@zeturn/watercolor-icons-tabler-react": "1.2.
|
|
44
|
+
"@zeturn/watercolor-icons-feather": "1.2.6",
|
|
45
|
+
"@zeturn/watercolor-icons-heroicons-react": "1.2.6",
|
|
46
|
+
"@zeturn/watercolor-icons-lucide-react": "1.2.6",
|
|
47
|
+
"@zeturn/watercolor-icons-phosphor-react": "1.2.6",
|
|
48
|
+
"@zeturn/watercolor-icons-tabler-react": "1.2.6",
|
|
49
49
|
"react": "^18.0.0 || ^19.0.0",
|
|
50
50
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
51
51
|
},
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
}
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@zeturn/watercolor-core": "1.2.
|
|
70
|
+
"@zeturn/watercolor-core": "1.2.6",
|
|
71
71
|
"prop-types": "^15.8.1"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|