asterui 0.12.0 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/Calendar.d.ts +23 -0
- package/dist/components/Checkbox.d.ts +10 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Form.d.ts +27 -2
- package/dist/components/Mask.d.ts +14 -0
- package/dist/components/Radio.d.ts +7 -1
- package/dist/components/Status.d.ts +18 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.js +203 -192
- package/dist/index.js.map +1 -1
- package/dist/index10.js +85 -59
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +44 -11
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +11 -29
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +13 -16
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +7 -10792
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +13 -5
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +30 -41
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +18 -2
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +174 -7
- package/dist/index107.js.map +1 -1
- package/dist/index109.js +10788 -25
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +5 -30
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +42 -2
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +2 -72
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +6 -38
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +150 -24
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +29 -20
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +29 -23
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +2 -20
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +71 -99
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +37 -358
- package/dist/index119.js.map +1 -1
- package/dist/index120.js +23 -22
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +20 -72
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +23 -15
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +19 -65
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +92 -136
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +360 -2
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +23 -54
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +73 -2
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +16 -2
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +66 -2
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +35 -95
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +144 -2
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +2 -2
- package/dist/index132.js +56 -2
- package/dist/index132.js.map +1 -1
- package/dist/index135.js +2 -32
- package/dist/index135.js.map +1 -1
- package/dist/index137.js +2 -8
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +2 -2
- package/dist/index139.js +2 -2
- package/dist/index14.js +90 -153
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +2 -21
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +32 -2
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +2 -24
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +7 -70
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +2 -21
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +2 -34
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +20 -69
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +2 -2
- package/dist/index148.js +23 -21
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +71 -2
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +154 -146
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +21 -2
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +34 -2
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +70 -2
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +2 -4
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +25 -0
- package/dist/index154.js.map +1 -0
- package/dist/index155.js +5 -0
- package/dist/index155.js.map +1 -0
- package/dist/index156.js +5 -0
- package/dist/index156.js.map +1 -0
- package/dist/index157.js +5 -0
- package/dist/index157.js.map +1 -0
- package/dist/index158.js +5 -0
- package/dist/index158.js.map +1 -0
- package/dist/index159.js +7 -0
- package/dist/index159.js.map +1 -0
- package/dist/index16.js +150 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +5 -71
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +71 -17
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +15 -96
- package/dist/index19.js.map +1 -1
- package/dist/index20.js +89 -105
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +107 -177
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +181 -107
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +110 -19
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +19 -32
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +42 -40
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +31 -11
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +41 -33
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +12 -63
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +33 -80
- package/dist/index29.js.map +1 -1
- package/dist/index30.js +63 -18
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +78 -159
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +16 -1080
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +218 -16
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +1081 -121
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +17 -39
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +121 -190
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +37 -94
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +186 -157
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +89 -138
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +161 -14
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +146 -18
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +14 -20
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +15 -116
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +18 -10
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +119 -35
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +12 -115
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +33 -174
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +10 -147
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +116 -12
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +176 -22
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +147 -14
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +10 -5
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +21 -265
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +10 -13
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +7 -122
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +262 -106
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +14 -167
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +121 -31
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +107 -119
- package/dist/index59.js.map +1 -1
- package/dist/index60.js +161 -77
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +31 -19
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +117 -69
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +82 -53
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +19 -44
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +70 -48
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +55 -60
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +39 -101
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +52 -41
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +58 -64
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +105 -19
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +41 -46
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +63 -129
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +19 -50
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +46 -22
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +134 -22
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +51 -328
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +19 -53
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +31 -40
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +22 -23
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +319 -85
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +52 -126
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +39 -160
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +23 -65
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +95 -35
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +126 -230
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +159 -32
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +60 -205
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +34 -212
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +229 -290
- package/dist/index89.js.map +1 -1
- package/dist/index90.js +32 -176
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +199 -247
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +211 -12
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +290 -28
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +177 -5
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +257 -13
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +13 -45
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +32 -12
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +5 -14
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +13 -7
- package/dist/index99.js.map +1 -1
- package/package.json +2 -1
- package/dist/index108.js +0 -155
- package/dist/index108.js.map +0 -1
package/dist/index30.js
CHANGED
|
@@ -1,21 +1,66 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { jsx as v } from "react/jsx-runtime";
|
|
2
|
+
const y = ({
|
|
3
|
+
direction: t,
|
|
4
|
+
justify: r,
|
|
5
|
+
align: s,
|
|
6
|
+
wrap: m,
|
|
7
|
+
gap: e,
|
|
8
|
+
flex: o,
|
|
9
|
+
inline: a = !1,
|
|
10
|
+
minHeight: l,
|
|
11
|
+
minWidth: f,
|
|
12
|
+
className: x = "",
|
|
13
|
+
style: c,
|
|
14
|
+
children: i,
|
|
15
|
+
...u
|
|
16
|
+
}) => {
|
|
17
|
+
const n = typeof e == "number", w = [
|
|
18
|
+
a ? "inline-flex" : "flex",
|
|
19
|
+
t === "row" && "flex-row",
|
|
20
|
+
t === "column" && "flex-col",
|
|
21
|
+
t === "row-reverse" && "flex-row-reverse",
|
|
22
|
+
t === "column-reverse" && "flex-col-reverse",
|
|
23
|
+
r === "start" && "justify-start",
|
|
24
|
+
r === "end" && "justify-end",
|
|
25
|
+
r === "center" && "justify-center",
|
|
26
|
+
r === "between" && "justify-between",
|
|
27
|
+
r === "around" && "justify-around",
|
|
28
|
+
r === "evenly" && "justify-evenly",
|
|
29
|
+
s === "start" && "items-start",
|
|
30
|
+
s === "end" && "items-end",
|
|
31
|
+
s === "center" && "items-center",
|
|
32
|
+
s === "baseline" && "items-baseline",
|
|
33
|
+
s === "stretch" && "items-stretch",
|
|
34
|
+
m === !0 && "flex-wrap",
|
|
35
|
+
m === "wrap" && "flex-wrap",
|
|
36
|
+
m === "nowrap" && "flex-nowrap",
|
|
37
|
+
m === "wrap-reverse" && "flex-wrap-reverse",
|
|
38
|
+
!n && e === "xs" && "gap-1",
|
|
39
|
+
!n && e === "sm" && "gap-2",
|
|
40
|
+
!n && e === "md" && "gap-4",
|
|
41
|
+
!n && e === "lg" && "gap-6",
|
|
42
|
+
!n && e === "xl" && "gap-8",
|
|
43
|
+
o === "1" && "flex-1",
|
|
44
|
+
o === "auto" && "flex-auto",
|
|
45
|
+
o === "initial" && "flex-initial",
|
|
46
|
+
o === "none" && "flex-none",
|
|
47
|
+
l === "screen" && "min-h-screen",
|
|
48
|
+
l === "full" && "min-h-full",
|
|
49
|
+
l === "fit" && "min-h-fit",
|
|
50
|
+
l === "min" && "min-h-min",
|
|
51
|
+
l === "max" && "min-h-max",
|
|
52
|
+
f === "full" && "min-w-full",
|
|
53
|
+
f === "fit" && "min-w-fit",
|
|
54
|
+
f === "min" && "min-w-min",
|
|
55
|
+
f === "max" && "min-w-max",
|
|
56
|
+
x
|
|
57
|
+
].filter(Boolean).join(" "), p = {
|
|
58
|
+
...c,
|
|
59
|
+
...n ? { gap: `${e}px` } : {}
|
|
60
|
+
};
|
|
61
|
+
return /* @__PURE__ */ v("div", { className: w, style: p, ...u, children: i });
|
|
62
|
+
};
|
|
18
63
|
export {
|
|
19
|
-
|
|
64
|
+
y as Flex
|
|
20
65
|
};
|
|
21
66
|
//# sourceMappingURL=index30.js.map
|
package/dist/index30.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index30.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index30.js","sources":["../src/components/Flex.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse'\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n wrap?: boolean | 'wrap' | 'nowrap' | 'wrap-reverse'\n gap?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number\n flex?: '1' | 'auto' | 'initial' | 'none'\n inline?: boolean\n minHeight?: 'screen' | 'full' | 'fit' | 'min' | 'max'\n minWidth?: 'full' | 'fit' | 'min' | 'max'\n children?: React.ReactNode\n}\n\nexport const Flex: React.FC<FlexProps> = ({\n direction,\n justify,\n align,\n wrap,\n gap,\n flex,\n inline = false,\n minHeight,\n minWidth,\n className = '',\n style,\n children,\n ...rest\n}) => {\n const isNumericGap = typeof gap === 'number'\n\n const classes = [\n inline ? 'inline-flex' : 'flex',\n direction === 'row' && 'flex-row',\n direction === 'column' && 'flex-col',\n direction === 'row-reverse' && 'flex-row-reverse',\n direction === 'column-reverse' && 'flex-col-reverse',\n justify === 'start' && 'justify-start',\n justify === 'end' && 'justify-end',\n justify === 'center' && 'justify-center',\n justify === 'between' && 'justify-between',\n justify === 'around' && 'justify-around',\n justify === 'evenly' && 'justify-evenly',\n align === 'start' && 'items-start',\n align === 'end' && 'items-end',\n align === 'center' && 'items-center',\n align === 'baseline' && 'items-baseline',\n align === 'stretch' && 'items-stretch',\n wrap === true && 'flex-wrap',\n wrap === 'wrap' && 'flex-wrap',\n wrap === 'nowrap' && 'flex-nowrap',\n wrap === 'wrap-reverse' && 'flex-wrap-reverse',\n !isNumericGap && gap === 'xs' && 'gap-1',\n !isNumericGap && gap === 'sm' && 'gap-2',\n !isNumericGap && gap === 'md' && 'gap-4',\n !isNumericGap && gap === 'lg' && 'gap-6',\n !isNumericGap && gap === 'xl' && 'gap-8',\n flex === '1' && 'flex-1',\n flex === 'auto' && 'flex-auto',\n flex === 'initial' && 'flex-initial',\n flex === 'none' && 'flex-none',\n minHeight === 'screen' && 'min-h-screen',\n minHeight === 'full' && 'min-h-full',\n minHeight === 'fit' && 'min-h-fit',\n minHeight === 'min' && 'min-h-min',\n minHeight === 'max' && 'min-h-max',\n minWidth === 'full' && 'min-w-full',\n minWidth === 'fit' && 'min-w-fit',\n minWidth === 'min' && 'min-w-min',\n minWidth === 'max' && 'min-w-max',\n className,\n ].filter(Boolean).join(' ')\n\n const combinedStyle: React.CSSProperties = {\n ...style,\n ...(isNumericGap ? { gap: `${gap}px` } : {}),\n }\n\n return (\n <div className={classes} style={combinedStyle} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["Flex","direction","justify","align","wrap","gap","flex","inline","minHeight","minWidth","className","style","children","rest","isNumericGap","classes","combinedStyle","jsx"],"mappings":";AAeO,MAAMA,IAA4B,CAAC;AAAA,EACxC,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAe,OAAOT,KAAQ,UAE9BU,IAAU;AAAA,IACdR,IAAS,gBAAgB;AAAA,IACzBN,MAAc,SAAS;AAAA,IACvBA,MAAc,YAAY;AAAA,IAC1BA,MAAc,iBAAiB;AAAA,IAC/BA,MAAc,oBAAoB;AAAA,IAClCC,MAAY,WAAW;AAAA,IACvBA,MAAY,SAAS;AAAA,IACrBA,MAAY,YAAY;AAAA,IACxBA,MAAY,aAAa;AAAA,IACzBA,MAAY,YAAY;AAAA,IACxBA,MAAY,YAAY;AAAA,IACxBC,MAAU,WAAW;AAAA,IACrBA,MAAU,SAAS;AAAA,IACnBA,MAAU,YAAY;AAAA,IACtBA,MAAU,cAAc;AAAA,IACxBA,MAAU,aAAa;AAAA,IACvBC,MAAS,MAAQ;AAAA,IACjBA,MAAS,UAAU;AAAA,IACnBA,MAAS,YAAY;AAAA,IACrBA,MAAS,kBAAkB;AAAA,IAC3B,CAACU,KAAgBT,MAAQ,QAAQ;AAAA,IACjC,CAACS,KAAgBT,MAAQ,QAAQ;AAAA,IACjC,CAACS,KAAgBT,MAAQ,QAAQ;AAAA,IACjC,CAACS,KAAgBT,MAAQ,QAAQ;AAAA,IACjC,CAACS,KAAgBT,MAAQ,QAAQ;AAAA,IACjCC,MAAS,OAAO;AAAA,IAChBA,MAAS,UAAU;AAAA,IACnBA,MAAS,aAAa;AAAA,IACtBA,MAAS,UAAU;AAAA,IACnBE,MAAc,YAAY;AAAA,IAC1BA,MAAc,UAAU;AAAA,IACxBA,MAAc,SAAS;AAAA,IACvBA,MAAc,SAAS;AAAA,IACvBA,MAAc,SAAS;AAAA,IACvBC,MAAa,UAAU;AAAA,IACvBA,MAAa,SAAS;AAAA,IACtBA,MAAa,SAAS;AAAA,IACtBA,MAAa,SAAS;AAAA,IACtBC;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAEpBM,IAAqC;AAAA,IACzC,GAAGL;AAAA,IACH,GAAIG,IAAe,EAAE,KAAK,GAAGT,CAAG,SAAS,CAAA;AAAA,EAAC;AAG5C,SACE,gBAAAY,EAAC,SAAI,WAAWF,GAAS,OAAOC,GAAgB,GAAGH,GAChD,UAAAD,GACH;AAEJ;"}
|
package/dist/index31.js
CHANGED
|
@@ -1,164 +1,83 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
message: "Please enter a valid number"
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
function S() {
|
|
19
|
-
const t = _(j);
|
|
20
|
-
if (!t)
|
|
21
|
-
throw new Error("Form compound components must be used within Form");
|
|
22
|
-
return t;
|
|
23
|
-
}
|
|
24
|
-
function H({
|
|
25
|
-
form: t,
|
|
26
|
-
onFinish: a,
|
|
27
|
-
initialValues: r,
|
|
28
|
-
layout: i = "vertical",
|
|
29
|
-
size: c,
|
|
30
|
-
children: x,
|
|
31
|
-
className: m = "",
|
|
32
|
-
noValidate: h = !0,
|
|
33
|
-
...l
|
|
34
|
-
}) {
|
|
35
|
-
const p = q({
|
|
36
|
-
defaultValues: r
|
|
37
|
-
}), d = t || p, v = (F) => {
|
|
38
|
-
F.preventDefault(), a && d.handleSubmit(a)(F);
|
|
39
|
-
};
|
|
40
|
-
return /* @__PURE__ */ n(j.Provider, { value: { form: d, layout: i, size: c }, children: /* @__PURE__ */ n("form", { onSubmit: v, className: m, noValidate: h, ...l, children: x }) });
|
|
41
|
-
}
|
|
42
|
-
function U({
|
|
43
|
-
name: t,
|
|
44
|
-
label: a,
|
|
45
|
-
help: r,
|
|
46
|
-
required: i = !1,
|
|
47
|
-
rules: c,
|
|
48
|
-
valuePropName: x = "value",
|
|
49
|
-
inline: m = !1,
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useState as g, useEffect as v } from "react";
|
|
3
|
+
const k = {
|
|
4
|
+
left: "tooltip-left",
|
|
5
|
+
right: "tooltip-right",
|
|
6
|
+
top: "tooltip-top",
|
|
7
|
+
bottom: "tooltip-bottom"
|
|
8
|
+
}, f = ({
|
|
9
|
+
children: s,
|
|
10
|
+
onClick: n,
|
|
11
|
+
type: d = "default",
|
|
12
|
+
shape: p = "circle",
|
|
13
|
+
position: l = "bottom-right",
|
|
14
|
+
offset: e = 24,
|
|
50
15
|
className: h = "",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
let s = p.formState.errors;
|
|
61
|
-
for (const E of o) {
|
|
62
|
-
if (!s) break;
|
|
63
|
-
s = s[E];
|
|
64
|
-
}
|
|
65
|
-
return s;
|
|
66
|
-
})(N), b = A?.message, L = c ? Array.isArray(c) ? c : [c] : [], u = {}, P = [], w = [];
|
|
67
|
-
i && (u.required = "This field is required");
|
|
68
|
-
for (const e of L) {
|
|
69
|
-
if (e.required && (u.required = typeof e.required == "string" ? e.required : e.message || "This field is required"), e.type && $[e.type] && P.push({
|
|
70
|
-
pattern: $[e.type].value,
|
|
71
|
-
message: e.message || $[e.type].message
|
|
72
|
-
}), e.min !== void 0) {
|
|
73
|
-
const o = typeof e.min == "object" ? e.min.value : e.min, s = typeof e.min == "object" ? e.min.message : e.message || `Minimum length is ${o} characters`;
|
|
74
|
-
u.minLength = { value: o, message: s };
|
|
75
|
-
}
|
|
76
|
-
if (e.max !== void 0) {
|
|
77
|
-
const o = typeof e.max == "object" ? e.max.value : e.max, s = typeof e.max == "object" ? e.max.message : e.message || `Maximum length is ${o} characters`;
|
|
78
|
-
u.maxLength = { value: o, message: s };
|
|
79
|
-
}
|
|
80
|
-
if (e.pattern) {
|
|
81
|
-
const o = e.pattern instanceof RegExp ? e.pattern : e.pattern.value, s = e.pattern instanceof RegExp ? e.message || "Invalid format" : e.pattern.message;
|
|
82
|
-
P.push({ pattern: o, message: s });
|
|
83
|
-
}
|
|
84
|
-
e.validate && w.push(e.validate);
|
|
85
|
-
}
|
|
86
|
-
return (P.length > 0 || w.length > 0) && (u.validate = async (e) => {
|
|
87
|
-
if (!e && !u.required) return !0;
|
|
88
|
-
for (const { pattern: o, message: s } of P)
|
|
89
|
-
if (e && !o.test(e))
|
|
90
|
-
return s;
|
|
91
|
-
for (const o of w) {
|
|
92
|
-
const s = await o(e);
|
|
93
|
-
if (s !== !0)
|
|
94
|
-
return s;
|
|
95
|
-
}
|
|
96
|
-
return !0;
|
|
97
|
-
}), /* @__PURE__ */ n(
|
|
98
|
-
D,
|
|
16
|
+
tooltip: r,
|
|
17
|
+
tooltipPlacement: u = "left",
|
|
18
|
+
...i
|
|
19
|
+
}) => {
|
|
20
|
+
const c = [
|
|
21
|
+
"btn",
|
|
22
|
+
"btn-lg",
|
|
23
|
+
"shadow-lg",
|
|
24
|
+
p === "circle" ? "btn-circle" : "btn-square",
|
|
99
25
|
{
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
const Q = Object.assign(H, {
|
|
156
|
-
Item: U,
|
|
157
|
-
List: W,
|
|
158
|
-
useForm: Y
|
|
159
|
-
});
|
|
26
|
+
default: "btn-neutral",
|
|
27
|
+
primary: "btn-primary",
|
|
28
|
+
secondary: "btn-secondary",
|
|
29
|
+
accent: "btn-accent"
|
|
30
|
+
}[d],
|
|
31
|
+
h
|
|
32
|
+
].filter(Boolean).join(" "), a = {
|
|
33
|
+
position: "fixed",
|
|
34
|
+
zIndex: 1e3,
|
|
35
|
+
...l.includes("bottom") ? { bottom: e } : { top: e },
|
|
36
|
+
...l.includes("right") ? { right: e } : { left: e }
|
|
37
|
+
}, o = /* @__PURE__ */ t("button", { className: c, onClick: n, style: a, ...i, children: s || /* @__PURE__ */ t("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" }) }) });
|
|
38
|
+
return r ? /* @__PURE__ */ t("div", { className: `tooltip ${k[u]}`, "data-tip": r, style: a, children: /* @__PURE__ */ t("button", { className: c, onClick: n, style: { position: "static" }, ...i, children: s || /* @__PURE__ */ t("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" }) }) }) }) : o;
|
|
39
|
+
}, x = ({
|
|
40
|
+
visibilityHeight: s = 400,
|
|
41
|
+
target: n,
|
|
42
|
+
onClick: d,
|
|
43
|
+
children: p,
|
|
44
|
+
position: l = "bottom-right",
|
|
45
|
+
offset: e = 24,
|
|
46
|
+
className: h = "",
|
|
47
|
+
...r
|
|
48
|
+
}) => {
|
|
49
|
+
const [u, i] = g(!1);
|
|
50
|
+
v(() => {
|
|
51
|
+
const o = n ? n() : window, m = () => {
|
|
52
|
+
const b = o instanceof Window ? window.scrollY : o.scrollTop;
|
|
53
|
+
i(b >= s);
|
|
54
|
+
};
|
|
55
|
+
return o.addEventListener("scroll", m), m(), () => o.removeEventListener("scroll", m);
|
|
56
|
+
}, [n, s]);
|
|
57
|
+
const w = () => {
|
|
58
|
+
d?.();
|
|
59
|
+
const o = n ? n() : window;
|
|
60
|
+
o instanceof Window ? window.scrollTo({ top: 0, behavior: "smooth" }) : o.scrollTo({ top: 0, behavior: "smooth" });
|
|
61
|
+
};
|
|
62
|
+
if (!u) return null;
|
|
63
|
+
const c = [
|
|
64
|
+
"btn",
|
|
65
|
+
"btn-lg",
|
|
66
|
+
"btn-circle",
|
|
67
|
+
"btn-neutral",
|
|
68
|
+
"shadow-lg",
|
|
69
|
+
"transition-opacity",
|
|
70
|
+
h
|
|
71
|
+
].filter(Boolean).join(" "), a = {
|
|
72
|
+
position: "fixed",
|
|
73
|
+
zIndex: 1e3,
|
|
74
|
+
bottom: e,
|
|
75
|
+
...l.includes("right") ? { right: e } : { left: e }
|
|
76
|
+
};
|
|
77
|
+
return /* @__PURE__ */ t("button", { className: c, onClick: w, style: a, ...r, children: p || /* @__PURE__ */ t("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 10l7-7m0 0l7 7m-7-7v18" }) }) });
|
|
78
|
+
};
|
|
79
|
+
f.BackTop = x;
|
|
160
80
|
export {
|
|
161
|
-
|
|
162
|
-
Y as useFormInstance
|
|
81
|
+
f as FloatButton
|
|
163
82
|
};
|
|
164
83
|
//# sourceMappingURL=index31.js.map
|
package/dist/index31.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index31.js","sources":["../src/components/Form.tsx"],"sourcesContent":["import React, { createContext, useContext, cloneElement, isValidElement, useId } from 'react'\nimport { useForm, UseFormReturn, FieldValues, SubmitHandler, UseFormProps, Controller, useFieldArray, FieldArrayPath, FieldArray } from 'react-hook-form'\n\ninterface FormContextValue {\n form: UseFormReturn<any>\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n listName?: string\n}\n\nconst FormContext = createContext<FormContextValue | undefined>(undefined)\n\n// Built-in type validators\nconst TYPE_VALIDATORS = {\n email: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Please enter a valid email address',\n },\n url: {\n value: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/,\n message: 'Please enter a valid URL',\n },\n number: {\n value: /^-?\\d+(\\.\\d+)?$/,\n message: 'Please enter a valid number',\n },\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n form?: UseFormReturn<TFieldValues>\n onFinish?: SubmitHandler<TFieldValues>\n initialValues?: UseFormProps<TFieldValues>['defaultValues']\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n children: React.ReactNode\n}\n\nexport interface FormRule {\n required?: boolean | string\n type?: 'email' | 'url' | 'number'\n min?: number | { value: number; message: string }\n max?: number | { value: number; message: string }\n pattern?: RegExp | { value: RegExp; message: string }\n message?: string\n validate?: (value: any) => boolean | string | Promise<boolean | string>\n}\n\nexport interface FormItemProps {\n name?: string | string[]\n label?: string\n help?: string\n required?: boolean\n rules?: FormRule | FormRule[]\n valuePropName?: string\n inline?: boolean\n className?: string\n children: React.ReactElement\n}\n\nexport interface FormListProps<TFieldValues extends FieldValues = FieldValues> {\n name: FieldArrayPath<TFieldValues>\n children: (\n fields: FieldArray<TFieldValues>[],\n operations: {\n add: (value?: any) => void\n remove: (index: number) => void\n move: (from: number, to: number) => void\n }\n ) => React.ReactNode\n}\n\nfunction useFormContext() {\n const context = useContext(FormContext)\n if (!context) {\n throw new Error('Form compound components must be used within Form')\n }\n return context\n}\n\nfunction FormRoot<TFieldValues extends FieldValues = FieldValues>({\n form: externalForm,\n onFinish,\n initialValues,\n layout = 'vertical',\n size,\n children,\n className = '',\n noValidate = true,\n ...props\n}: FormProps<TFieldValues>) {\n const internalForm = useForm<TFieldValues>({\n defaultValues: initialValues,\n })\n\n const form = externalForm || internalForm\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (onFinish) {\n form.handleSubmit(onFinish)(e)\n }\n }\n\n return (\n <FormContext.Provider value={{ form, layout, size }}>\n <form onSubmit={handleSubmit} className={className} noValidate={noValidate} {...props}>\n {children}\n </form>\n </FormContext.Provider>\n )\n}\n\nfunction FormItem({\n name,\n label,\n help,\n required = false,\n rules,\n valuePropName = 'value',\n inline = false,\n className = '',\n children,\n}: FormItemProps) {\n const { form, size, listName, layout } = useFormContext()\n const inputId = useId()\n const errorId = useId()\n\n if (!name) {\n // Render without form control if no name provided\n return <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`}>{children}</div>\n }\n\n // Handle nested field names (for Form.List)\n let fieldName: string\n if (Array.isArray(name)) {\n // If we're inside a Form.List, prepend the list name\n const fullPath = listName ? [listName, ...name] : name\n fieldName = fullPath.join('.')\n } else {\n fieldName = name\n }\n\n // Get error by traversing the error object path\n const getErrorByPath = (path: string) => {\n const keys = path.split('.')\n let error: any = form.formState.errors\n for (const key of keys) {\n if (!error) break\n error = error[key]\n }\n return error\n }\n\n const error = getErrorByPath(fieldName)\n const errorMessage = error?.message as string | undefined\n\n // Normalize rules to array\n const rulesArray: FormRule[] = rules\n ? Array.isArray(rules) ? rules : [rules]\n : []\n\n // Build validation rules\n const validationRules: any = {}\n const patternValidators: Array<{ pattern: RegExp; message: string }> = []\n const customValidators: Array<(value: any) => boolean | string | Promise<boolean | string>> = []\n\n // Handle top-level required prop\n if (required) {\n validationRules.required = 'This field is required'\n }\n\n // Process each rule\n for (const rule of rulesArray) {\n // Required\n if (rule.required) {\n validationRules.required = typeof rule.required === 'string'\n ? rule.required\n : rule.message || 'This field is required'\n }\n\n // Type validator\n if (rule.type && TYPE_VALIDATORS[rule.type]) {\n patternValidators.push({\n pattern: TYPE_VALIDATORS[rule.type].value,\n message: rule.message || TYPE_VALIDATORS[rule.type].message,\n })\n }\n\n // Min length\n if (rule.min !== undefined) {\n const minValue = typeof rule.min === 'object' ? rule.min.value : rule.min\n const minMessage = typeof rule.min === 'object'\n ? rule.min.message\n : rule.message || `Minimum length is ${minValue} characters`\n validationRules.minLength = { value: minValue, message: minMessage }\n }\n\n // Max length\n if (rule.max !== undefined) {\n const maxValue = typeof rule.max === 'object' ? rule.max.value : rule.max\n const maxMessage = typeof rule.max === 'object'\n ? rule.max.message\n : rule.message || `Maximum length is ${maxValue} characters`\n validationRules.maxLength = { value: maxValue, message: maxMessage }\n }\n\n // Pattern - collect all patterns\n if (rule.pattern) {\n const patternValue = rule.pattern instanceof RegExp ? rule.pattern : rule.pattern.value\n const patternMessage = rule.pattern instanceof RegExp\n ? rule.message || 'Invalid format'\n : rule.pattern.message\n patternValidators.push({ pattern: patternValue, message: patternMessage })\n }\n\n // Custom validator\n if (rule.validate) {\n customValidators.push(rule.validate)\n }\n }\n\n // Combine all pattern and custom validators into a single validate function\n if (patternValidators.length > 0 || customValidators.length > 0) {\n validationRules.validate = async (value: any) => {\n // Skip validation if empty (required rule handles that)\n if (!value && !validationRules.required) return true\n\n // Check all patterns\n for (const { pattern, message } of patternValidators) {\n if (value && !pattern.test(value)) {\n return message\n }\n }\n\n // Run all custom validators\n for (const validator of customValidators) {\n const result = await validator(value)\n if (result !== true) {\n return result\n }\n }\n\n return true\n }\n }\n\n return (\n <Controller\n name={fieldName}\n control={form.control}\n rules={validationRules}\n render={({ field }) => {\n const { value, onChange, onBlur, ref } = field\n\n // Clone the child element and inject form control props\n const childProps: any = {\n id: inputId,\n ref,\n onBlur,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': error ? errorId : undefined,\n }\n\n // Handle different value prop names (e.g., 'checked' for checkboxes)\n if (valuePropName === 'checked') {\n childProps.checked = value\n childProps.onChange = (e: React.ChangeEvent<HTMLInputElement>) => onChange(e.target.checked)\n } else {\n childProps.value = value || ''\n childProps.onChange = (eventOrValue: any) => {\n // Handle components that pass value directly (e.g., Range, Rating)\n // vs components that pass event object (e.g., Input, Select)\n if (eventOrValue && eventOrValue.target !== undefined) {\n onChange(eventOrValue.target.value)\n } else {\n onChange(eventOrValue)\n }\n }\n }\n\n // Apply size if specified at form level\n if (size && isValidElement(children)) {\n const existingProps = children.props as any\n if (!existingProps.size) {\n childProps.size = size\n }\n }\n\n // Apply error styling\n if (error) {\n childProps.color = 'error'\n }\n\n const enhancedChild = isValidElement(children)\n ? cloneElement(children as React.ReactElement<any>, childProps)\n : children\n\n const isHorizontal = layout === 'horizontal'\n\n return (\n <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`}>\n <div className={isHorizontal ? 'flex items-center gap-4' : ''}>\n {label && (\n <label htmlFor={inputId} className={`label ${isHorizontal ? 'flex-shrink-0' : 'mb-2'}`}>\n <span className=\"label-text\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n <div className={isHorizontal ? 'flex-1' : ''}>\n {enhancedChild}\n </div>\n </div>\n {!isHorizontal && !inline && (\n <div className=\"label\">\n <span id={errorId} className=\"label-text-alt text-error min-h-[1.25rem]\" role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>) || '\\u00A0'}\n </span>\n </div>\n )}\n {isHorizontal && (errorMessage || help) && (\n <div className=\"label\">\n <span id={errorId} className=\"label-text-alt text-error min-h-[1.25rem] ml-auto\" role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>)}\n </span>\n </div>\n )}\n </div>\n )\n }}\n />\n )\n}\n\nfunction FormList<TFieldValues extends FieldValues = FieldValues>({\n name,\n children,\n}: FormListProps<TFieldValues>) {\n const { form, layout, size } = useFormContext()\n\n const { fields, append, remove, move } = useFieldArray({\n control: form.control,\n name,\n })\n\n // Add name (index) to each field for proper path construction\n const fieldsWithName = fields.map((field, index) => ({\n ...field,\n name: index,\n }))\n\n return (\n <FormContext.Provider value={{ form, layout, size, listName: name as string }}>\n {children(fieldsWithName as any, {\n add: append,\n remove,\n move,\n })}\n </FormContext.Provider>\n )\n}\n\n// Enhanced hook to expose full form API\nexport function useFormInstance<TFieldValues extends FieldValues = FieldValues>() {\n const formInstance = useForm<TFieldValues>()\n\n // Add convenience methods to the instance\n const enhancedInstance = formInstance as typeof formInstance & {\n setFieldValue: typeof formInstance.setValue\n getFieldValue: (name: any) => any\n getFieldsValue: typeof formInstance.getValues\n setFieldsValue: (values: any) => void\n validateFields: typeof formInstance.trigger\n resetFields: typeof formInstance.reset\n isFieldTouched: (name: string) => boolean\n getFieldError: (name: string) => string | undefined\n }\n\n // Add the alias methods\n enhancedInstance.setFieldValue = formInstance.setValue\n enhancedInstance.getFieldValue = (name: any) => formInstance.getValues(name)\n enhancedInstance.getFieldsValue = formInstance.getValues\n enhancedInstance.setFieldsValue = (values: any) => {\n Object.keys(values).forEach((key) => {\n formInstance.setValue(key as any, values[key])\n })\n }\n enhancedInstance.validateFields = formInstance.trigger\n enhancedInstance.resetFields = formInstance.reset\n enhancedInstance.isFieldTouched = (name: string) => {\n const touched = formInstance.formState.touchedFields as any\n return !!touched[name]\n }\n enhancedInstance.getFieldError = (name: string) => {\n const errors = formInstance.formState.errors as any\n return errors[name]?.message as string | undefined\n }\n\n return enhancedInstance\n}\n\nexport const Form = Object.assign(FormRoot, {\n Item: FormItem,\n List: FormList,\n useForm: useFormInstance,\n})\n\nexport type { UseFormReturn as FormInstance }\n"],"names":["FormContext","createContext","TYPE_VALIDATORS","useFormContext","context","useContext","FormRoot","externalForm","onFinish","initialValues","layout","size","children","className","noValidate","props","internalForm","useForm","form","handleSubmit","e","jsx","FormItem","name","label","help","required","rules","valuePropName","inline","listName","inputId","useId","errorId","fieldName","error","path","keys","key","errorMessage","rulesArray","validationRules","patternValidators","customValidators","rule","minValue","minMessage","maxValue","maxMessage","patternValue","patternMessage","value","pattern","message","validator","result","Controller","field","onChange","onBlur","ref","childProps","eventOrValue","isValidElement","enhancedChild","cloneElement","isHorizontal","jsxs","FormList","fields","append","remove","move","useFieldArray","fieldsWithName","index","useFormInstance","formInstance","enhancedInstance","values","Form"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index31.js","sources":["../src/components/FloatButton.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\n\nexport interface FloatButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n /** Button content (icon or text) */\n children?: React.ReactNode\n /** Button type/color */\n type?: 'default' | 'primary' | 'secondary' | 'accent'\n /** Button shape */\n shape?: 'circle' | 'square'\n /** Position on screen */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n /** Distance from edge in pixels */\n offset?: number\n /** Tooltip text */\n tooltip?: string\n /** Tooltip placement */\n tooltipPlacement?: 'left' | 'right' | 'top' | 'bottom'\n}\n\nexport interface BackTopProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'onClick'> {\n /** Scroll threshold to show button (pixels) */\n visibilityHeight?: number\n /** Scroll target (default: window) */\n target?: () => HTMLElement | Window\n /** Click handler (called before scrolling) */\n onClick?: () => void\n /** Custom content */\n children?: React.ReactNode\n /** Position on screen */\n position?: 'bottom-right' | 'bottom-left'\n /** Distance from edge in pixels */\n offset?: number\n}\n\nconst tooltipPlacementClasses = {\n left: 'tooltip-left',\n right: 'tooltip-right',\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n}\n\nexport const FloatButton: React.FC<FloatButtonProps> & { BackTop: React.FC<BackTopProps> } = ({\n children,\n onClick,\n type = 'default',\n shape = 'circle',\n position = 'bottom-right',\n offset = 24,\n className = '',\n tooltip,\n tooltipPlacement = 'left',\n ...rest\n}) => {\n const typeClasses = {\n default: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n }\n\n const buttonClasses = [\n 'btn',\n 'btn-lg',\n 'shadow-lg',\n shape === 'circle' ? 'btn-circle' : 'btn-square',\n typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const style: React.CSSProperties = {\n position: 'fixed',\n zIndex: 1000,\n ...(position.includes('bottom') ? { bottom: offset } : { top: offset }),\n ...(position.includes('right') ? { right: offset } : { left: offset }),\n }\n\n const button = (\n <button className={buttonClasses} onClick={onClick} style={style} {...rest}>\n {children || (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n </svg>\n )}\n </button>\n )\n\n if (tooltip) {\n return (\n <div className={`tooltip ${tooltipPlacementClasses[tooltipPlacement]}`} data-tip={tooltip} style={style}>\n <button className={buttonClasses} onClick={onClick} style={{ position: 'static' }} {...rest}>\n {children || (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n </svg>\n )}\n </button>\n </div>\n )\n }\n\n return button\n}\n\nconst BackTop: React.FC<BackTopProps> = ({\n visibilityHeight = 400,\n target,\n onClick,\n children,\n position = 'bottom-right',\n offset = 24,\n className = '',\n ...rest\n}) => {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n const scrollTarget = target ? target() : window\n\n const handleScroll = () => {\n const scrollTop =\n scrollTarget instanceof Window\n ? window.scrollY\n : (scrollTarget as HTMLElement).scrollTop\n\n setVisible(scrollTop >= visibilityHeight)\n }\n\n scrollTarget.addEventListener('scroll', handleScroll)\n handleScroll()\n\n return () => scrollTarget.removeEventListener('scroll', handleScroll)\n }, [target, visibilityHeight])\n\n const handleClick = () => {\n onClick?.()\n const scrollTarget = target ? target() : window\n if (scrollTarget instanceof Window) {\n window.scrollTo({ top: 0, behavior: 'smooth' })\n } else {\n (scrollTarget as HTMLElement).scrollTo({ top: 0, behavior: 'smooth' })\n }\n }\n\n if (!visible) return null\n\n const buttonClasses = [\n 'btn',\n 'btn-lg',\n 'btn-circle',\n 'btn-neutral',\n 'shadow-lg',\n 'transition-opacity',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const style: React.CSSProperties = {\n position: 'fixed',\n zIndex: 1000,\n bottom: offset,\n ...(position.includes('right') ? { right: offset } : { left: offset }),\n }\n\n return (\n <button className={buttonClasses} onClick={handleClick} style={style} {...rest}>\n {children || (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 10l7-7m0 0l7 7m-7-7v18\" />\n </svg>\n )}\n </button>\n )\n}\n\nFloatButton.BackTop = BackTop\n"],"names":["tooltipPlacementClasses","FloatButton","children","onClick","type","shape","position","offset","className","tooltip","tooltipPlacement","rest","buttonClasses","style","button","jsx","BackTop","visibilityHeight","target","visible","setVisible","useState","useEffect","scrollTarget","handleScroll","scrollTop","handleClick"],"mappings":"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"}
|