asterui 0.12.26 → 0.12.28

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.
Files changed (166) hide show
  1. package/dist/components/Collapse.d.ts +40 -20
  2. package/dist/components/Descriptions.d.ts +35 -3
  3. package/dist/components/Empty.d.ts +10 -1
  4. package/dist/components/Image.d.ts +13 -1
  5. package/dist/components/List.d.ts +74 -8
  6. package/dist/components/Table.d.ts +64 -10
  7. package/dist/components/Timeline.d.ts +62 -7
  8. package/dist/index.d.ts +4 -6
  9. package/dist/index.js +148 -150
  10. package/dist/index.js.map +1 -1
  11. package/dist/index10.js +1 -1
  12. package/dist/index100.js +5 -32
  13. package/dist/index100.js.map +1 -1
  14. package/dist/index101.js +13 -5
  15. package/dist/index101.js.map +1 -1
  16. package/dist/index102.js +43 -11
  17. package/dist/index102.js.map +1 -1
  18. package/dist/index103.js +11 -44
  19. package/dist/index103.js.map +1 -1
  20. package/dist/index104.js +12 -10
  21. package/dist/index104.js.map +1 -1
  22. package/dist/index105.js +7 -14
  23. package/dist/index105.js.map +1 -1
  24. package/dist/index106.js +12 -7
  25. package/dist/index106.js.map +1 -1
  26. package/dist/index107.js +29 -11
  27. package/dist/index107.js.map +1 -1
  28. package/dist/index108.js +16 -29
  29. package/dist/index108.js.map +1 -1
  30. package/dist/index109.js +31 -16
  31. package/dist/index109.js.map +1 -1
  32. package/dist/index110.js +517 -30
  33. package/dist/index110.js.map +1 -1
  34. package/dist/index111.js +45 -515
  35. package/dist/index111.js.map +1 -1
  36. package/dist/index18.js +105 -64
  37. package/dist/index18.js.map +1 -1
  38. package/dist/index22.js +1 -1
  39. package/dist/index23.js +127 -93
  40. package/dist/index23.js.map +1 -1
  41. package/dist/index39.js +162 -115
  42. package/dist/index39.js.map +1 -1
  43. package/dist/index40.js +398 -40
  44. package/dist/index40.js.map +1 -1
  45. package/dist/index41.js +132 -389
  46. package/dist/index41.js.map +1 -1
  47. package/dist/index42.js +252 -91
  48. package/dist/index42.js.map +1 -1
  49. package/dist/index43.js +143 -247
  50. package/dist/index43.js.map +1 -1
  51. package/dist/index44.js +15 -154
  52. package/dist/index44.js.map +1 -1
  53. package/dist/index45.js +17 -15
  54. package/dist/index45.js.map +1 -1
  55. package/dist/index46.js +136 -16
  56. package/dist/index46.js.map +1 -1
  57. package/dist/index47.js +118 -133
  58. package/dist/index47.js.map +1 -1
  59. package/dist/index48.js +35 -13
  60. package/dist/index48.js.map +1 -1
  61. package/dist/index49.js +34 -35
  62. package/dist/index49.js.map +1 -1
  63. package/dist/index50.js +81 -34
  64. package/dist/index50.js.map +1 -1
  65. package/dist/index51.js +166 -71
  66. package/dist/index51.js.map +1 -1
  67. package/dist/index52.js +144 -167
  68. package/dist/index52.js.map +1 -1
  69. package/dist/index53.js +11 -152
  70. package/dist/index53.js.map +1 -1
  71. package/dist/index54.js +55 -10
  72. package/dist/index54.js.map +1 -1
  73. package/dist/index55.js +12 -55
  74. package/dist/index55.js.map +1 -1
  75. package/dist/index56.js +7 -14
  76. package/dist/index56.js.map +1 -1
  77. package/dist/index57.js +333 -6
  78. package/dist/index57.js.map +1 -1
  79. package/dist/index58.js +47 -334
  80. package/dist/index58.js.map +1 -1
  81. package/dist/index59.js +122 -47
  82. package/dist/index59.js.map +1 -1
  83. package/dist/index60.js +108 -120
  84. package/dist/index60.js.map +1 -1
  85. package/dist/index61.js +167 -107
  86. package/dist/index61.js.map +1 -1
  87. package/dist/index62.js +29 -167
  88. package/dist/index62.js.map +1 -1
  89. package/dist/index63.js +120 -30
  90. package/dist/index63.js.map +1 -1
  91. package/dist/index64.js +80 -116
  92. package/dist/index64.js.map +1 -1
  93. package/dist/index65.js +19 -85
  94. package/dist/index65.js.map +1 -1
  95. package/dist/index66.js +73 -19
  96. package/dist/index66.js.map +1 -1
  97. package/dist/index67.js +54 -71
  98. package/dist/index67.js.map +1 -1
  99. package/dist/index68.js +44 -56
  100. package/dist/index68.js.map +1 -1
  101. package/dist/index69.js +49 -42
  102. package/dist/index69.js.map +1 -1
  103. package/dist/index70.js +121 -50
  104. package/dist/index70.js.map +1 -1
  105. package/dist/index71.js +102 -118
  106. package/dist/index71.js.map +1 -1
  107. package/dist/index72.js +72 -105
  108. package/dist/index72.js.map +1 -1
  109. package/dist/index73.js +67 -73
  110. package/dist/index73.js.map +1 -1
  111. package/dist/index74.js +19 -66
  112. package/dist/index74.js.map +1 -1
  113. package/dist/index75.js +55 -18
  114. package/dist/index75.js.map +1 -1
  115. package/dist/index76.js +251 -55
  116. package/dist/index76.js.map +1 -1
  117. package/dist/index77.js +22 -254
  118. package/dist/index77.js.map +1 -1
  119. package/dist/index78.js +31 -22
  120. package/dist/index78.js.map +1 -1
  121. package/dist/index79.js +93 -30
  122. package/dist/index79.js.map +1 -1
  123. package/dist/index80.js +626 -86
  124. package/dist/index80.js.map +1 -1
  125. package/dist/index81.js +73 -322
  126. package/dist/index81.js.map +1 -1
  127. package/dist/index82.js +39 -79
  128. package/dist/index82.js.map +1 -1
  129. package/dist/index83.js +23 -40
  130. package/dist/index83.js.map +1 -1
  131. package/dist/index84.js +207 -23
  132. package/dist/index84.js.map +1 -1
  133. package/dist/index85.js +148 -199
  134. package/dist/index85.js.map +1 -1
  135. package/dist/index86.js +152 -147
  136. package/dist/index86.js.map +1 -1
  137. package/dist/index87.js +143 -156
  138. package/dist/index87.js.map +1 -1
  139. package/dist/index88.js +35 -65
  140. package/dist/index88.js.map +1 -1
  141. package/dist/index89.js +234 -35
  142. package/dist/index89.js.map +1 -1
  143. package/dist/index90.js +31 -231
  144. package/dist/index90.js.map +1 -1
  145. package/dist/index91.js +210 -34
  146. package/dist/index91.js.map +1 -1
  147. package/dist/index92.js +418 -187
  148. package/dist/index92.js.map +1 -1
  149. package/dist/index93.js +686 -376
  150. package/dist/index93.js.map +1 -1
  151. package/dist/index94.js +165 -738
  152. package/dist/index94.js.map +1 -1
  153. package/dist/index95.js +253 -173
  154. package/dist/index95.js.map +1 -1
  155. package/dist/index96.js +64 -256
  156. package/dist/index96.js.map +1 -1
  157. package/dist/index97.js +121 -61
  158. package/dist/index97.js.map +1 -1
  159. package/dist/index98.js +14 -126
  160. package/dist/index98.js.map +1 -1
  161. package/dist/index99.js +31 -12
  162. package/dist/index99.js.map +1 -1
  163. package/package.json +1 -1
  164. package/dist/components/Indicator.d.ts +0 -7
  165. package/dist/index112.js +0 -53
  166. package/dist/index112.js.map +0 -1
package/dist/index47.js CHANGED
@@ -1,140 +1,125 @@
1
- import { jsx as o, jsxs as A } from "react/jsx-runtime";
2
- import d, { useContext as M, createContext as P, useState as C, useEffect as _, useCallback as $ } from "react";
3
- const L = P(null);
4
- function K() {
5
- return M(L);
6
- }
7
- function h({ children: n, className: s = "", style: a }) {
8
- const e = d.Children.toArray(n), f = e.some(
9
- (t) => d.isValidElement(t) && t.type.displayName === "LayoutSider"
10
- ), m = [
11
- "flex",
12
- "min-h-0",
13
- f ? "flex-row" : "flex-col",
14
- s
15
- ].filter(Boolean).join(" "), r = f ? e.map((t) => {
16
- if (d.isValidElement(t) && (t.type === h || t.type.displayName === "LayoutRoot") && t.type.displayName !== "LayoutSider") {
17
- const i = t.props.className || "";
18
- if (!i.includes("flex-1"))
19
- return d.cloneElement(t, {
20
- className: `flex-1 ${i}`.trim()
1
+ import { jsxs as u, jsx as e } from "react/jsx-runtime";
2
+ import p, { forwardRef as L } from "react";
3
+ import { Pagination as P } from "./index61.js";
4
+ import { Loading as W } from "./index48.js";
5
+ const q = {
6
+ sm: "py-2",
7
+ md: "py-3",
8
+ lg: "py-4"
9
+ }, x = L(
10
+ ({ children: r, actions: a, extra: i, className: d = "", "data-testid": m, ...l }, c) => {
11
+ const b = ["list-row", d].filter(Boolean).join(" ");
12
+ return /* @__PURE__ */ u("li", { ref: c, className: b, "data-testid": m, ...l, children: [
13
+ /* @__PURE__ */ e("div", { className: "flex-1", children: r }),
14
+ i && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: i }),
15
+ a && a.length > 0 && /* @__PURE__ */ e("div", { className: "flex items-center gap-2 flex-shrink-0", children: a.map((N, h) => /* @__PURE__ */ e("span", { children: N }, h)) })
16
+ ] });
17
+ }
18
+ );
19
+ x.displayName = "List.Item";
20
+ const j = ({
21
+ avatar: r,
22
+ title: a,
23
+ description: i,
24
+ className: d = "",
25
+ ...m
26
+ }) => /* @__PURE__ */ u("div", { className: `flex items-center gap-3 ${d}`, ...m, children: [
27
+ r && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: r }),
28
+ /* @__PURE__ */ u("div", { className: "flex-1 min-w-0", children: [
29
+ a && /* @__PURE__ */ e("div", { className: "font-medium truncate", children: a }),
30
+ i && /* @__PURE__ */ e("div", { className: "text-sm text-base-content/70 truncate", children: i })
31
+ ] })
32
+ ] });
33
+ j.displayName = "List.Item.Meta";
34
+ const z = L(
35
+ ({
36
+ dataSource: r,
37
+ renderItem: a,
38
+ header: i,
39
+ footer: d,
40
+ loading: m = !1,
41
+ pagination: l = !1,
42
+ grid: c,
43
+ bordered: b = !0,
44
+ split: N = !0,
45
+ size: h = "md",
46
+ itemLayout: _ = "horizontal",
47
+ locale: y,
48
+ loadMore: $,
49
+ rowKey: f,
50
+ children: g,
51
+ className: k = "",
52
+ "aria-label": w,
53
+ "data-testid": t = "list",
54
+ ...E
55
+ }, R) => {
56
+ const M = [
57
+ "list bg-base-100 rounded-box",
58
+ b && "border border-base-300",
59
+ N && "[&_.list-row]:border-b [&_.list-row]:border-base-200 [&_.list-row:last-child]:border-b-0",
60
+ k
61
+ ].filter(Boolean).join(" "), v = q[h], T = c ? {
62
+ display: "grid",
63
+ gridTemplateColumns: `repeat(${c.column || 1}, minmax(0, 1fr))`,
64
+ gap: c.gutter ? `${c.gutter}px` : void 0
65
+ } : {}, B = (s, n) => f ? typeof f == "function" ? f(s) : String(s[f] ?? n) : n, C = _ === "vertical" ? "flex-col items-start" : "", O = () => m ? /* @__PURE__ */ e("div", { className: "flex justify-center py-8", "data-testid": `${t}-loading`, role: "status", children: /* @__PURE__ */ e(W, { size: "md", "aria-label": "Loading list" }) }) : r && a ? r.length === 0 ? /* @__PURE__ */ e("div", { className: "text-center py-8 text-base-content/50", "data-testid": `${t}-empty`, children: y?.emptyText ?? "No data" }) : r.map((s, n) => {
66
+ const o = a(s, n), S = B(s, n);
67
+ if (p.isValidElement(o)) {
68
+ const V = o.props.className || "";
69
+ return p.cloneElement(o, {
70
+ key: S,
71
+ className: `${V} ${v} ${C}`.trim(),
72
+ "data-testid": `${t}-item-${n}`
21
73
  });
22
- }
23
- return t;
24
- }) : n;
25
- return /* @__PURE__ */ o("div", { className: m, style: a, children: r });
26
- }
27
- h.displayName = "LayoutRoot";
28
- function F({ children: n, className: s = "", style: a }) {
29
- const e = [
30
- "flex",
31
- "items-center",
32
- "px-6",
33
- "h-16",
34
- "bg-base-300",
35
- "flex-shrink-0",
36
- s
37
- ].filter(Boolean).join(" ");
38
- return /* @__PURE__ */ o("header", { className: e, style: a, children: n });
39
- }
40
- function H({ children: n, className: s = "", style: a }) {
41
- const e = [
42
- "px-6",
43
- "py-4",
44
- "text-center",
45
- "bg-base-300",
46
- "flex-shrink-0",
47
- s
48
- ].filter(Boolean).join(" ");
49
- return /* @__PURE__ */ o("footer", { className: e, style: a, children: n });
50
- }
51
- function I({ children: n, className: s = "", style: a }) {
52
- const e = ["flex-1", "min-h-0", "overflow-auto", s].filter(Boolean).join(" ");
53
- return /* @__PURE__ */ o("main", { className: e, style: a, children: n });
54
- }
55
- const O = {
56
- sm: "(max-width: 639px)",
57
- md: "(max-width: 767px)",
58
- lg: "(max-width: 1023px)",
59
- xl: "(max-width: 1279px)",
60
- "2xl": "(max-width: 1535px)"
61
- };
62
- function v({
63
- children: n,
64
- width: s = 200,
65
- collapsedWidth: a = 80,
66
- collapsed: e,
67
- defaultCollapsed: f = !1,
68
- collapsible: m = !1,
69
- onCollapse: r,
70
- trigger: t,
71
- breakpoint: i,
72
- onBreakpoint: p,
73
- className: w = "",
74
- style: g
75
- }) {
76
- const [j, N] = C(f), [b, k] = C(!1), l = e ?? j;
77
- _(() => {
78
- if (!i) return;
79
- const c = window.matchMedia(O[i]), y = (R) => {
80
- const u = R.matches;
81
- k(u), p?.(u), e === void 0 && N(u), u !== b && r?.(u);
82
- };
83
- return y(c), c.addEventListener("change", y), () => c.removeEventListener("change", y);
84
- }, [i, p, e, r, b]);
85
- const S = $(() => {
86
- const c = !l;
87
- e === void 0 && N(c), r?.(c);
88
- }, [l, e, r]), x = l ? a : s, B = [
89
- "flex",
90
- "flex-col",
91
- "bg-base-200",
92
- "flex-shrink-0",
93
- "transition-all",
94
- "duration-200",
95
- w
96
- ].filter(Boolean).join(" "), E = m && t !== null && /* @__PURE__ */ o(
97
- "button",
98
- {
99
- onClick: S,
100
- className: "flex items-center justify-center h-10 w-full bg-base-300 hover:bg-base-content/10 transition-colors",
101
- "aria-label": l ? "Expand sidebar" : "Collapse sidebar",
102
- children: /* @__PURE__ */ o(
103
- "svg",
74
+ }
75
+ return o;
76
+ }) : g ? p.Children.map(g, (s, n) => {
77
+ if (p.isValidElement(s)) {
78
+ const o = s.props.className || "";
79
+ return p.cloneElement(s, {
80
+ className: `${o} ${v} ${C}`.trim(),
81
+ "data-testid": `${t}-item-${n}`
82
+ });
83
+ }
84
+ return s;
85
+ }) : /* @__PURE__ */ e("div", { className: "text-center py-8 text-base-content/50", "data-testid": `${t}-empty`, children: y?.emptyText ?? "No data" });
86
+ return /* @__PURE__ */ u("div", { "data-testid": t, "aria-busy": m, children: [
87
+ i && /* @__PURE__ */ e("div", { className: "px-4 py-3 border-b border-base-200 font-medium", "data-testid": `${t}-header`, children: i }),
88
+ /* @__PURE__ */ e(
89
+ "ul",
90
+ {
91
+ ref: R,
92
+ role: "list",
93
+ "aria-label": w,
94
+ className: M,
95
+ style: T,
96
+ ...E,
97
+ children: O()
98
+ }
99
+ ),
100
+ d && /* @__PURE__ */ e("div", { className: "px-4 py-3 border-t border-base-200", "data-testid": `${t}-footer`, children: d }),
101
+ $ && /* @__PURE__ */ e("div", { className: "py-4 text-center", "data-testid": `${t}-load-more`, children: $ }),
102
+ l && l.total !== void 0 && /* @__PURE__ */ e("div", { className: "flex justify-end pt-4", "data-testid": `${t}-pagination`, children: /* @__PURE__ */ e(
103
+ P,
104
104
  {
105
- className: `w-4 h-4 transition-transform ${l ? "rotate-180" : ""}`,
106
- fill: "none",
107
- viewBox: "0 0 24 24",
108
- stroke: "currentColor",
109
- children: /* @__PURE__ */ o("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" })
105
+ current: l.current,
106
+ pageSize: l.pageSize,
107
+ total: l.total,
108
+ onChange: l.onChange
110
109
  }
111
- )
112
- }
113
- );
114
- return /* @__PURE__ */ o(L.Provider, { value: { collapsed: l, collapsedWidth: a, width: s }, children: /* @__PURE__ */ A(
115
- "aside",
116
- {
117
- className: B,
118
- style: {
119
- width: typeof x == "number" ? `${x}px` : x,
120
- ...g
121
- },
122
- children: [
123
- /* @__PURE__ */ o("div", { className: "flex-1 overflow-auto", children: n }),
124
- t !== null && (t ?? E)
125
- ]
126
- }
127
- ) });
128
- }
129
- v.displayName = "LayoutSider";
130
- const Q = Object.assign(h, {
131
- Header: F,
132
- Footer: H,
133
- Content: I,
134
- Sider: v
110
+ ) })
111
+ ] });
112
+ }
113
+ );
114
+ z.displayName = "List";
115
+ const A = Object.assign(x, {
116
+ Meta: j
117
+ }), J = Object.assign(z, {
118
+ Item: A,
119
+ Row: x
120
+ // Backwards compatibility with DaisyUI pattern
135
121
  });
136
122
  export {
137
- Q as Layout,
138
- K as useSiderContext
123
+ J as List
139
124
  };
140
125
  //# sourceMappingURL=index47.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index47.js","sources":["../src/components/Layout.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useEffect } from 'react'\n\nexport interface LayoutProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport interface LayoutHeaderProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport interface LayoutFooterProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport interface LayoutContentProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\nexport interface LayoutSiderProps {\n children: React.ReactNode\n width?: number | string\n collapsedWidth?: number | string\n collapsed?: boolean\n defaultCollapsed?: boolean\n collapsible?: boolean\n onCollapse?: (collapsed: boolean) => void\n trigger?: React.ReactNode | null\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n onBreakpoint?: (broken: boolean) => void\n className?: string\n style?: React.CSSProperties\n}\n\ninterface SiderContextValue {\n collapsed: boolean\n collapsedWidth: number | string\n width: number | string\n}\n\nconst SiderContext = createContext<SiderContextValue | null>(null)\n\nexport function useSiderContext() {\n return useContext(SiderContext)\n}\n\nfunction LayoutRoot({ children, className = '', style }: LayoutProps) {\n // Check if any child is a Sider to determine flex direction\n const childArray = React.Children.toArray(children)\n const hasSider = childArray.some(\n (child) => React.isValidElement(child) && (child.type as any).displayName === 'LayoutSider'\n )\n\n const layoutClasses = [\n 'flex',\n 'min-h-0',\n hasSider ? 'flex-row' : 'flex-col',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // If we have a Sider, auto-add flex-1 to non-Sider Layout children\n const processedChildren = hasSider\n ? childArray.map((child) => {\n if (\n React.isValidElement(child) &&\n (child.type === LayoutRoot || (child.type as any).displayName === 'LayoutRoot') &&\n (child.type as any).displayName !== 'LayoutSider'\n ) {\n // Clone the Layout child and add flex-1 if not already present\n const existingClassName = (child.props as any).className || ''\n if (!existingClassName.includes('flex-1')) {\n return React.cloneElement(child as React.ReactElement<any>, {\n className: `flex-1 ${existingClassName}`.trim(),\n })\n }\n }\n return child\n })\n : children\n\n return (\n <div className={layoutClasses} style={style}>\n {processedChildren}\n </div>\n )\n}\n\nLayoutRoot.displayName = 'LayoutRoot'\n\nfunction LayoutHeader({ children, className = '', style }: LayoutHeaderProps) {\n const headerClasses = [\n 'flex',\n 'items-center',\n 'px-6',\n 'h-16',\n 'bg-base-300',\n 'flex-shrink-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <header className={headerClasses} style={style}>\n {children}\n </header>\n )\n}\n\nfunction LayoutFooter({ children, className = '', style }: LayoutFooterProps) {\n const footerClasses = [\n 'px-6',\n 'py-4',\n 'text-center',\n 'bg-base-300',\n 'flex-shrink-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <footer className={footerClasses} style={style}>\n {children}\n </footer>\n )\n}\n\nfunction LayoutContent({ children, className = '', style }: LayoutContentProps) {\n // flex-1 by default so Content fills available space\n const contentClasses = ['flex-1', 'min-h-0', 'overflow-auto', className].filter(Boolean).join(' ')\n\n return (\n <main className={contentClasses} style={style}>\n {children}\n </main>\n )\n}\n\nconst BREAKPOINT_MAP: Record<string, string> = {\n sm: '(max-width: 639px)',\n md: '(max-width: 767px)',\n lg: '(max-width: 1023px)',\n xl: '(max-width: 1279px)',\n '2xl': '(max-width: 1535px)',\n}\n\nfunction LayoutSider({\n children,\n width = 200,\n collapsedWidth = 80,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n collapsible = false,\n onCollapse,\n trigger,\n breakpoint,\n onBreakpoint,\n className = '',\n style,\n}: LayoutSiderProps) {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed)\n const [broken, setBroken] = useState(false)\n\n const collapsed = controlledCollapsed ?? internalCollapsed\n\n // Handle responsive breakpoint\n useEffect(() => {\n if (!breakpoint) return\n\n const mediaQuery = window.matchMedia(BREAKPOINT_MAP[breakpoint])\n\n const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n const isBroken = e.matches\n setBroken(isBroken)\n onBreakpoint?.(isBroken)\n\n // Auto-collapse when breakpoint is crossed\n if (controlledCollapsed === undefined) {\n setInternalCollapsed(isBroken)\n }\n if (isBroken !== broken) {\n onCollapse?.(isBroken)\n }\n }\n\n // Check initial state\n handleChange(mediaQuery)\n\n // Listen for changes\n mediaQuery.addEventListener('change', handleChange)\n return () => mediaQuery.removeEventListener('change', handleChange)\n }, [breakpoint, onBreakpoint, controlledCollapsed, onCollapse, broken])\n\n const handleCollapse = useCallback(() => {\n const newCollapsed = !collapsed\n if (controlledCollapsed === undefined) {\n setInternalCollapsed(newCollapsed)\n }\n onCollapse?.(newCollapsed)\n }, [collapsed, controlledCollapsed, onCollapse])\n\n const currentWidth = collapsed ? collapsedWidth : width\n\n const siderClasses = [\n 'flex',\n 'flex-col',\n 'bg-base-200',\n 'flex-shrink-0',\n 'transition-all',\n 'duration-200',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const defaultTrigger = collapsible && trigger !== null && (\n <button\n onClick={handleCollapse}\n className=\"flex items-center justify-center h-10 w-full bg-base-300 hover:bg-base-content/10 transition-colors\"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n >\n <svg\n className={`w-4 h-4 transition-transform ${collapsed ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n )\n\n return (\n <SiderContext.Provider value={{ collapsed, collapsedWidth, width }}>\n <aside\n className={siderClasses}\n style={{\n width: typeof currentWidth === 'number' ? `${currentWidth}px` : currentWidth,\n ...style,\n }}\n >\n <div className=\"flex-1 overflow-auto\">{children}</div>\n {trigger !== null && (trigger ?? defaultTrigger)}\n </aside>\n </SiderContext.Provider>\n )\n}\n\nLayoutSider.displayName = 'LayoutSider'\n\nexport const Layout = Object.assign(LayoutRoot, {\n Header: LayoutHeader,\n Footer: LayoutFooter,\n Content: LayoutContent,\n Sider: LayoutSider,\n})\n"],"names":["SiderContext","createContext","useSiderContext","useContext","LayoutRoot","children","className","style","childArray","React","hasSider","child","layoutClasses","processedChildren","existingClassName","jsx","LayoutHeader","headerClasses","LayoutFooter","footerClasses","LayoutContent","contentClasses","BREAKPOINT_MAP","LayoutSider","width","collapsedWidth","controlledCollapsed","defaultCollapsed","collapsible","onCollapse","trigger","breakpoint","onBreakpoint","internalCollapsed","setInternalCollapsed","useState","broken","setBroken","collapsed","useEffect","mediaQuery","handleChange","e","isBroken","handleCollapse","useCallback","newCollapsed","currentWidth","siderClasses","defaultTrigger","jsxs","Layout"],"mappings":"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"}
1
+ {"version":3,"file":"index47.js","sources":["../src/components/List.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Pagination } from './Pagination'\nimport { Loading } from './Loading'\n\nexport interface ListPaginationConfig {\n current?: number\n pageSize?: number\n total?: number\n onChange?: (page: number, pageSize: number) => void\n}\n\nexport interface ListGridConfig {\n gutter?: number\n column?: number\n xs?: number\n sm?: number\n md?: number\n lg?: number\n xl?: number\n}\n\nexport interface ListProps<T = unknown> extends Omit<React.HTMLAttributes<HTMLUListElement>, 'children'> {\n /** Data source array */\n dataSource?: T[]\n /** Function to render each item */\n renderItem?: (item: T, index: number) => React.ReactNode\n /** List header content */\n header?: React.ReactNode\n /** List footer content */\n footer?: React.ReactNode\n /** Show loading state */\n loading?: boolean\n /** Pagination configuration or false to disable */\n pagination?: ListPaginationConfig | false\n /** Grid layout configuration */\n grid?: ListGridConfig\n /** Show border around list */\n bordered?: boolean\n /** Show divider between items */\n split?: boolean\n /** Size variant */\n size?: 'sm' | 'md' | 'lg'\n /** Layout direction */\n itemLayout?: 'horizontal' | 'vertical'\n /** Empty state text */\n locale?: { emptyText?: React.ReactNode }\n /** Load more content (e.g., button) */\n loadMore?: React.ReactNode\n /** Custom key extraction function */\n rowKey?: keyof T | ((item: T) => React.Key)\n /** Compound pattern children */\n children?: React.ReactNode\n /** Accessible label for the list */\n 'aria-label'?: string\n /** Test ID for the component */\n 'data-testid'?: string\n}\n\nexport interface ListItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n /** Item content */\n children: React.ReactNode\n /** Action buttons */\n actions?: React.ReactNode[]\n /** Extra content on the right */\n extra?: React.ReactNode\n /** Test ID for this item */\n 'data-testid'?: string\n}\n\nexport interface ListItemMetaProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Avatar or icon */\n avatar?: React.ReactNode\n /** Title content */\n title?: React.ReactNode\n /** Description content */\n description?: React.ReactNode\n}\n\n// Also export as ListRowProps for backwards compatibility with DaisyUI pattern\nexport type ListRowProps = ListItemProps\n\nconst sizeClasses = {\n sm: 'py-2',\n md: 'py-3',\n lg: 'py-4',\n}\n\nconst ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, actions, extra, className = '', 'data-testid': testId, ...rest }, ref) => {\n const classes = ['list-row', className].filter(Boolean).join(' ')\n\n return (\n <li ref={ref} className={classes} data-testid={testId} {...rest}>\n <div className=\"flex-1\">{children}</div>\n {extra && <div className=\"flex-shrink-0\">{extra}</div>}\n {actions && actions.length > 0 && (\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {actions.map((action, index) => (\n <span key={index}>{action}</span>\n ))}\n </div>\n )}\n </li>\n )\n }\n)\n\nListItem.displayName = 'List.Item'\n\nconst ListItemMeta: React.FC<ListItemMetaProps> = ({\n avatar,\n title,\n description,\n className = '',\n ...rest\n}) => {\n return (\n <div className={`flex items-center gap-3 ${className}`} {...rest}>\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-medium truncate\">{title}</div>}\n {description && (\n <div className=\"text-sm text-base-content/70 truncate\">{description}</div>\n )}\n </div>\n </div>\n )\n}\n\nListItemMeta.displayName = 'List.Item.Meta'\n\nconst ListRoot = forwardRef<HTMLUListElement, ListProps>(\n (\n {\n dataSource,\n renderItem,\n header,\n footer,\n loading = false,\n pagination = false,\n grid,\n bordered = true,\n split = true,\n size = 'md',\n itemLayout = 'horizontal',\n locale,\n loadMore,\n rowKey,\n children,\n className = '',\n 'aria-label': ariaLabel,\n 'data-testid': testId = 'list',\n ...rest\n },\n ref\n ) => {\n const listClasses = [\n 'list bg-base-100 rounded-box',\n bordered && 'border border-base-300',\n split && '[&_.list-row]:border-b [&_.list-row]:border-base-200 [&_.list-row:last-child]:border-b-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const itemClasses = sizeClasses[size]\n\n // Grid styles\n const gridStyles: React.CSSProperties = grid\n ? {\n display: 'grid',\n gridTemplateColumns: `repeat(${grid.column || 1}, minmax(0, 1fr))`,\n gap: grid.gutter ? `${grid.gutter}px` : undefined,\n }\n : {}\n\n // Get key for item\n const getItemKey = (item: unknown, index: number): React.Key => {\n if (!rowKey) return index\n if (typeof rowKey === 'function') return rowKey(item as Parameters<typeof rowKey>[0])\n return String((item as Record<string, unknown>)[rowKey as string] ?? index)\n }\n\n // Layout class for vertical items\n const layoutClass = itemLayout === 'vertical' ? 'flex-col items-start' : ''\n\n // Render items from dataSource or children\n const renderContent = () => {\n if (loading) {\n return (\n <div className=\"flex justify-center py-8\" data-testid={`${testId}-loading`} role=\"status\">\n <Loading size=\"md\" aria-label=\"Loading list\" />\n </div>\n )\n }\n\n // Use dataSource + renderItem if provided\n if (dataSource && renderItem) {\n if (dataSource.length === 0) {\n return (\n <div className=\"text-center py-8 text-base-content/50\" data-testid={`${testId}-empty`}>\n {locale?.emptyText ?? 'No data'}\n </div>\n )\n }\n\n return dataSource.map((item, index) => {\n const rendered = renderItem(item, index)\n const key = getItemKey(item, index)\n // Inject size and layout classes into list items\n if (React.isValidElement(rendered)) {\n const existingClassName = (rendered.props as { className?: string }).className || ''\n return React.cloneElement(rendered, {\n key,\n className: `${existingClassName} ${itemClasses} ${layoutClass}`.trim(),\n 'data-testid': `${testId}-item-${index}`,\n } as React.Attributes & { className?: string; 'data-testid'?: string })\n }\n return rendered\n })\n }\n\n // Use compound children pattern\n if (children) {\n return React.Children.map(children, (child, index) => {\n if (React.isValidElement(child)) {\n const existingClassName = (child.props as { className?: string }).className || ''\n return React.cloneElement(child, {\n className: `${existingClassName} ${itemClasses} ${layoutClass}`.trim(),\n 'data-testid': `${testId}-item-${index}`,\n } as React.Attributes & { className?: string; 'data-testid'?: string })\n }\n return child\n })\n }\n\n return (\n <div className=\"text-center py-8 text-base-content/50\" data-testid={`${testId}-empty`}>\n {locale?.emptyText ?? 'No data'}\n </div>\n )\n }\n\n return (\n <div data-testid={testId} aria-busy={loading}>\n {header && (\n <div className=\"px-4 py-3 border-b border-base-200 font-medium\" data-testid={`${testId}-header`}>\n {header}\n </div>\n )}\n\n <ul\n ref={ref}\n role=\"list\"\n aria-label={ariaLabel}\n className={listClasses}\n style={gridStyles}\n {...rest}\n >\n {renderContent()}\n </ul>\n\n {footer && (\n <div className=\"px-4 py-3 border-t border-base-200\" data-testid={`${testId}-footer`}>\n {footer}\n </div>\n )}\n\n {loadMore && (\n <div className=\"py-4 text-center\" data-testid={`${testId}-load-more`}>\n {loadMore}\n </div>\n )}\n\n {pagination && pagination.total !== undefined && (\n <div className=\"flex justify-end pt-4\" data-testid={`${testId}-pagination`}>\n <Pagination\n current={pagination.current}\n pageSize={pagination.pageSize}\n total={pagination.total}\n onChange={pagination.onChange}\n />\n </div>\n )}\n </div>\n )\n }\n)\n\nListRoot.displayName = 'List'\n\n// Compound component with Item and Item.Meta\nconst ItemWithMeta = Object.assign(ListItem, {\n Meta: ListItemMeta,\n})\n\nexport const List = Object.assign(ListRoot, {\n Item: ItemWithMeta,\n Row: ListItem, // Backwards compatibility with DaisyUI pattern\n})\n"],"names":["sizeClasses","ListItem","forwardRef","children","actions","extra","className","testId","rest","ref","classes","jsxs","jsx","action","index","ListItemMeta","avatar","title","description","ListRoot","dataSource","renderItem","header","footer","loading","pagination","grid","bordered","split","size","itemLayout","locale","loadMore","rowKey","ariaLabel","listClasses","itemClasses","gridStyles","getItemKey","item","layoutClass","renderContent","Loading","rendered","key","React","existingClassName","child","Pagination","ItemWithMeta","List"],"mappings":"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"}
package/dist/index48.js CHANGED
@@ -1,16 +1,38 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- function e({ children: s, className: o = "", ...t }) {
3
- const i = ["list", o].filter(Boolean).join(" ");
4
- return /* @__PURE__ */ n("ul", { className: i, ...t, children: s });
5
- }
6
- function l({ children: s, className: o = "", ...t }) {
7
- const i = ["list-row", o].filter(Boolean).join(" ");
8
- return /* @__PURE__ */ n("li", { className: i, ...t, children: s });
9
- }
10
- const r = Object.assign(e, {
11
- Row: l
12
- });
1
+ import { jsxs as a, jsx as s } from "react/jsx-runtime";
2
+ const f = ({
3
+ size: r = "md",
4
+ type: t = "spinner",
5
+ className: d = "",
6
+ spinning: l = !0,
7
+ children: n,
8
+ tip: e,
9
+ ...i
10
+ }) => {
11
+ const c = {
12
+ xs: "loading-xs",
13
+ sm: "loading-sm",
14
+ md: "loading-md",
15
+ lg: "loading-lg"
16
+ }, o = ["loading", {
17
+ spinner: "loading-spinner",
18
+ dots: "loading-dots",
19
+ ring: "loading-ring",
20
+ ball: "loading-ball",
21
+ bars: "loading-bars",
22
+ infinity: "loading-infinity"
23
+ }[t], c[r], d].filter(Boolean).join(" ");
24
+ return n ? /* @__PURE__ */ a("div", { className: "relative", ...i, children: [
25
+ l && /* @__PURE__ */ a("div", { className: "absolute inset-0 flex flex-col items-center justify-center bg-base-100/50 backdrop-blur-sm z-10", children: [
26
+ /* @__PURE__ */ s("span", { className: o }),
27
+ e && /* @__PURE__ */ s("p", { className: "mt-2 text-sm", children: e })
28
+ ] }),
29
+ /* @__PURE__ */ s("div", { className: l ? "pointer-events-none" : "", children: n })
30
+ ] }) : l ? /* @__PURE__ */ a("div", { className: "flex flex-col items-center gap-2", ...i, children: [
31
+ /* @__PURE__ */ s("span", { className: o }),
32
+ e && /* @__PURE__ */ s("p", { className: "text-sm", children: e })
33
+ ] }) : null;
34
+ };
13
35
  export {
14
- r as List
36
+ f as Loading
15
37
  };
16
38
  //# sourceMappingURL=index48.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index48.js","sources":["../src/components/List.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n children: React.ReactNode\n}\n\nexport interface ListRowProps extends React.LiHTMLAttributes<HTMLLIElement> {\n children: React.ReactNode\n}\n\nfunction ListRoot({ children, className = '', ...rest }: ListProps) {\n const classes = ['list', className].filter(Boolean).join(' ')\n return <ul className={classes} {...rest}>{children}</ul>\n}\n\nfunction ListRow({ children, className = '', ...rest }: ListRowProps) {\n const classes = ['list-row', className].filter(Boolean).join(' ')\n return <li className={classes} {...rest}>{children}</li>\n}\n\nexport const List = Object.assign(ListRoot, {\n Row: ListRow,\n})\n"],"names":["ListRoot","children","className","rest","classes","ListRow","List"],"mappings":";AAUA,SAASA,EAAS,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,KAAmB;AAClE,QAAMC,IAAU,CAAC,QAAQF,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC5D,2BAAQ,MAAA,EAAG,WAAWE,GAAU,GAAGD,GAAO,UAAAF,GAAS;AACrD;AAEA,SAASI,EAAQ,EAAE,UAAAJ,GAAU,WAAAC,IAAY,IAAI,GAAGC,KAAsB;AACpE,QAAMC,IAAU,CAAC,YAAYF,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAChE,2BAAQ,MAAA,EAAG,WAAWE,GAAU,GAAGD,GAAO,UAAAF,GAAS;AACrD;AAEO,MAAMK,IAAO,OAAO,OAAON,GAAU;AAAA,EAC1C,KAAKK;AACP,CAAC;"}
1
+ {"version":3,"file":"index48.js","sources":["../src/components/Loading.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'xs' | 'sm' | 'md' | 'lg'\n type?: 'spinner' | 'dots' | 'ring' | 'ball' | 'bars' | 'infinity'\n spinning?: boolean\n children?: React.ReactNode\n tip?: string\n}\n\nexport const Loading: React.FC<LoadingProps> = ({\n size = 'md',\n type = 'spinner',\n className = '',\n spinning = true,\n children,\n tip,\n ...rest\n}) => {\n const sizeClasses = {\n xs: 'loading-xs',\n sm: 'loading-sm',\n md: 'loading-md',\n lg: 'loading-lg',\n }\n\n const typeClasses = {\n spinner: 'loading-spinner',\n dots: 'loading-dots',\n ring: 'loading-ring',\n ball: 'loading-ball',\n bars: 'loading-bars',\n infinity: 'loading-infinity',\n }\n\n const spinnerClasses = ['loading', typeClasses[type], sizeClasses[size], className]\n .filter(Boolean)\n .join(' ')\n\n if (children) {\n return (\n <div className=\"relative\" {...rest}>\n {spinning && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center bg-base-100/50 backdrop-blur-sm z-10\">\n <span className={spinnerClasses}></span>\n {tip && <p className=\"mt-2 text-sm\">{tip}</p>}\n </div>\n )}\n <div className={spinning ? 'pointer-events-none' : ''}>{children}</div>\n </div>\n )\n }\n\n if (!spinning) {\n return null\n }\n\n return (\n <div className=\"flex flex-col items-center gap-2\" {...rest}>\n <span className={spinnerClasses}></span>\n {tip && <p className=\"text-sm\">{tip}</p>}\n </div>\n )\n}\n"],"names":["Loading","size","type","className","spinning","children","tip","rest","sizeClasses","spinnerClasses","jsxs","jsx"],"mappings":";AAUO,MAAMA,IAAkC,CAAC;AAAA,EAC9C,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,KAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAYAC,IAAiB,CAAC,WATJ;AAAA,IAClB,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EAAA,EAGmCP,CAAI,GAAGM,EAAYP,CAAI,GAAGE,CAAS,EAC/E,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SAAIE,IAEA,gBAAAK,EAAC,OAAA,EAAI,WAAU,YAAY,GAAGH,GAC3B,UAAA;AAAA,IAAAH,KACC,gBAAAM,EAAC,OAAA,EAAI,WAAU,mGACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWF,EAAA,CAAgB;AAAA,MAChCH,KAAO,gBAAAK,EAAC,KAAA,EAAE,WAAU,gBAAgB,UAAAL,EAAA,CAAI;AAAA,IAAA,GAC3C;AAAA,sBAED,OAAA,EAAI,WAAWF,IAAW,wBAAwB,IAAK,UAAAC,EAAA,CAAS;AAAA,EAAA,GACnE,IAICD,IAKH,gBAAAM,EAAC,OAAA,EAAI,WAAU,oCAAoC,GAAGH,GACpD,UAAA;AAAA,IAAA,gBAAAI,EAAC,QAAA,EAAK,WAAWF,EAAA,CAAgB;AAAA,IAChCH,KAAO,gBAAAK,EAAC,KAAA,EAAE,WAAU,WAAW,UAAAL,EAAA,CAAI;AAAA,EAAA,GACtC,IAPO;AASX;"}
package/dist/index49.js CHANGED
@@ -1,38 +1,37 @@
1
- import { jsxs as a, jsx as s } from "react/jsx-runtime";
2
- const f = ({
3
- size: r = "md",
4
- type: t = "spinner",
5
- className: d = "",
6
- spinning: l = !0,
7
- children: n,
8
- tip: e,
9
- ...i
10
- }) => {
11
- const c = {
12
- xs: "loading-xs",
13
- sm: "loading-sm",
14
- md: "loading-md",
15
- lg: "loading-lg"
16
- }, o = ["loading", {
17
- spinner: "loading-spinner",
18
- dots: "loading-dots",
19
- ring: "loading-ring",
20
- ball: "loading-ball",
21
- bars: "loading-bars",
22
- infinity: "loading-infinity"
23
- }[t], c[r], d].filter(Boolean).join(" ");
24
- return n ? /* @__PURE__ */ a("div", { className: "relative", ...i, children: [
25
- l && /* @__PURE__ */ a("div", { className: "absolute inset-0 flex flex-col items-center justify-center bg-base-100/50 backdrop-blur-sm z-10", children: [
26
- /* @__PURE__ */ s("span", { className: o }),
27
- e && /* @__PURE__ */ s("p", { className: "mt-2 text-sm", children: e })
28
- ] }),
29
- /* @__PURE__ */ s("div", { className: l ? "pointer-events-none" : "", children: n })
30
- ] }) : l ? /* @__PURE__ */ a("div", { className: "flex flex-col items-center gap-2", ...i, children: [
31
- /* @__PURE__ */ s("span", { className: o }),
32
- e && /* @__PURE__ */ s("p", { className: "text-sm", children: e })
33
- ] }) : null;
34
- };
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { forwardRef as o } from "react";
3
+ const i = {
4
+ squircle: "mask-squircle",
5
+ heart: "mask-heart",
6
+ hexagon: "mask-hexagon",
7
+ "hexagon-2": "mask-hexagon-2",
8
+ decagon: "mask-decagon",
9
+ pentagon: "mask-pentagon",
10
+ diamond: "mask-diamond",
11
+ square: "mask-square",
12
+ circle: "mask-circle",
13
+ star: "mask-star",
14
+ "star-2": "mask-star-2",
15
+ triangle: "mask-triangle",
16
+ "triangle-2": "mask-triangle-2",
17
+ "triangle-3": "mask-triangle-3",
18
+ "triangle-4": "mask-triangle-4"
19
+ }, k = {
20
+ "half-1": "mask-half-1",
21
+ "half-2": "mask-half-2"
22
+ }, g = o(
23
+ ({ shape: s, half: a, children: e, className: r = "", ...n }, m) => {
24
+ const t = [
25
+ "mask",
26
+ i[s],
27
+ a ? k[a] : "",
28
+ r
29
+ ].filter(Boolean).join(" ");
30
+ return /* @__PURE__ */ l("div", { ref: m, className: t, ...n, children: e });
31
+ }
32
+ );
33
+ g.displayName = "Mask";
35
34
  export {
36
- f as Loading
35
+ g as Mask
37
36
  };
38
37
  //# sourceMappingURL=index49.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index49.js","sources":["../src/components/Loading.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'xs' | 'sm' | 'md' | 'lg'\n type?: 'spinner' | 'dots' | 'ring' | 'ball' | 'bars' | 'infinity'\n spinning?: boolean\n children?: React.ReactNode\n tip?: string\n}\n\nexport const Loading: React.FC<LoadingProps> = ({\n size = 'md',\n type = 'spinner',\n className = '',\n spinning = true,\n children,\n tip,\n ...rest\n}) => {\n const sizeClasses = {\n xs: 'loading-xs',\n sm: 'loading-sm',\n md: 'loading-md',\n lg: 'loading-lg',\n }\n\n const typeClasses = {\n spinner: 'loading-spinner',\n dots: 'loading-dots',\n ring: 'loading-ring',\n ball: 'loading-ball',\n bars: 'loading-bars',\n infinity: 'loading-infinity',\n }\n\n const spinnerClasses = ['loading', typeClasses[type], sizeClasses[size], className]\n .filter(Boolean)\n .join(' ')\n\n if (children) {\n return (\n <div className=\"relative\" {...rest}>\n {spinning && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center bg-base-100/50 backdrop-blur-sm z-10\">\n <span className={spinnerClasses}></span>\n {tip && <p className=\"mt-2 text-sm\">{tip}</p>}\n </div>\n )}\n <div className={spinning ? 'pointer-events-none' : ''}>{children}</div>\n </div>\n )\n }\n\n if (!spinning) {\n return null\n }\n\n return (\n <div className=\"flex flex-col items-center gap-2\" {...rest}>\n <span className={spinnerClasses}></span>\n {tip && <p className=\"text-sm\">{tip}</p>}\n </div>\n )\n}\n"],"names":["Loading","size","type","className","spinning","children","tip","rest","sizeClasses","spinnerClasses","jsxs","jsx"],"mappings":";AAUO,MAAMA,IAAkC,CAAC;AAAA,EAC9C,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,KAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAYAC,IAAiB,CAAC,WATJ;AAAA,IAClB,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EAAA,EAGmCP,CAAI,GAAGM,EAAYP,CAAI,GAAGE,CAAS,EAC/E,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SAAIE,IAEA,gBAAAK,EAAC,OAAA,EAAI,WAAU,YAAY,GAAGH,GAC3B,UAAA;AAAA,IAAAH,KACC,gBAAAM,EAAC,OAAA,EAAI,WAAU,mGACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWF,EAAA,CAAgB;AAAA,MAChCH,KAAO,gBAAAK,EAAC,KAAA,EAAE,WAAU,gBAAgB,UAAAL,EAAA,CAAI;AAAA,IAAA,GAC3C;AAAA,sBAED,OAAA,EAAI,WAAWF,IAAW,wBAAwB,IAAK,UAAAC,EAAA,CAAS;AAAA,EAAA,GACnE,IAICD,IAKH,gBAAAM,EAAC,OAAA,EAAI,WAAU,oCAAoC,GAAGH,GACpD,UAAA;AAAA,IAAA,gBAAAI,EAAC,QAAA,EAAK,WAAWF,EAAA,CAAgB;AAAA,IAChCH,KAAO,gBAAAK,EAAC,KAAA,EAAE,WAAU,WAAW,UAAAL,EAAA,CAAI;AAAA,EAAA,GACtC,IAPO;AASX;"}
1
+ {"version":3,"file":"index49.js","sources":["../src/components/Mask.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nexport type MaskShape =\n | 'squircle'\n | 'heart'\n | 'hexagon'\n | 'hexagon-2'\n | 'decagon'\n | 'pentagon'\n | 'diamond'\n | 'square'\n | 'circle'\n | 'star'\n | 'star-2'\n | 'triangle'\n | 'triangle-2'\n | 'triangle-3'\n | 'triangle-4'\n\nexport type MaskHalf = 'half-1' | 'half-2'\n\nexport interface MaskProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Shape of the mask */\n shape: MaskShape\n /** Show only half of the mask */\n half?: MaskHalf\n /** Content to mask (typically an image) */\n children: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nconst shapeClasses: Record<MaskShape, string> = {\n squircle: 'mask-squircle',\n heart: 'mask-heart',\n hexagon: 'mask-hexagon',\n 'hexagon-2': 'mask-hexagon-2',\n decagon: 'mask-decagon',\n pentagon: 'mask-pentagon',\n diamond: 'mask-diamond',\n square: 'mask-square',\n circle: 'mask-circle',\n star: 'mask-star',\n 'star-2': 'mask-star-2',\n triangle: 'mask-triangle',\n 'triangle-2': 'mask-triangle-2',\n 'triangle-3': 'mask-triangle-3',\n 'triangle-4': 'mask-triangle-4',\n}\n\nconst halfClasses: Record<MaskHalf, string> = {\n 'half-1': 'mask-half-1',\n 'half-2': 'mask-half-2',\n}\n\nexport const Mask = forwardRef<HTMLDivElement, MaskProps>(\n ({ shape, half, children, className = '', ...props }, ref) => {\n const classes = [\n 'mask',\n shapeClasses[shape],\n half ? halfClasses[half] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div ref={ref} className={classes} {...props}>\n {children}\n </div>\n )\n }\n)\n\nMask.displayName = 'Mask'\n"],"names":["shapeClasses","halfClasses","Mask","forwardRef","shape","half","children","className","props","ref","classes"],"mappings":";;AAgCA,MAAMA,IAA0C;AAAA,EAC9C,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAChB,GAEMC,IAAwC;AAAA,EAC5C,UAAU;AAAA,EACV,UAAU;AACZ,GAEaC,IAAOC;AAAA,EAClB,CAAC,EAAE,OAAAC,GAAO,MAAAC,GAAM,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,EAAA,GAASC,MAAQ;AAC5D,UAAMC,IAAU;AAAA,MACd;AAAA,MACAV,EAAaI,CAAK;AAAA,MAClBC,IAAOJ,EAAYI,CAAI,IAAI;AAAA,MAC3BE;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,6BACG,OAAA,EAAI,KAAAE,GAAU,WAAWC,GAAU,GAAGF,GACpC,UAAAF,GACH;AAAA,EAEJ;AACF;AAEAJ,EAAK,cAAc;"}
package/dist/index50.js CHANGED
@@ -1,37 +1,84 @@
1
- import { jsx as l } from "react/jsx-runtime";
2
- import { forwardRef as o } from "react";
3
- const i = {
4
- squircle: "mask-squircle",
5
- heart: "mask-heart",
6
- hexagon: "mask-hexagon",
7
- "hexagon-2": "mask-hexagon-2",
8
- decagon: "mask-decagon",
9
- pentagon: "mask-pentagon",
10
- diamond: "mask-diamond",
11
- square: "mask-square",
12
- circle: "mask-circle",
13
- star: "mask-star",
14
- "star-2": "mask-star-2",
15
- triangle: "mask-triangle",
16
- "triangle-2": "mask-triangle-2",
17
- "triangle-3": "mask-triangle-3",
18
- "triangle-4": "mask-triangle-4"
19
- }, k = {
20
- "half-1": "mask-half-1",
21
- "half-2": "mask-half-2"
22
- }, g = o(
23
- ({ shape: s, half: a, children: e, className: r = "", ...n }, m) => {
24
- const t = [
25
- "mask",
26
- i[s],
27
- a ? k[a] : "",
28
- r
29
- ].filter(Boolean).join(" ");
30
- return /* @__PURE__ */ l("div", { ref: m, className: t, ...n, children: e });
31
- }
32
- );
33
- g.displayName = "Mask";
1
+ import { jsx as H } from "react/jsx-runtime";
2
+ import F, { useRef as R, useState as b, useCallback as I, useLayoutEffect as A } from "react";
3
+ const d = {
4
+ sm: 640,
5
+ md: 768,
6
+ lg: 1024,
7
+ xl: 1280,
8
+ "2xl": 1536
9
+ };
10
+ function L(t, e) {
11
+ return typeof t == "number" ? t : t ? t["2xl"] !== void 0 && e >= d["2xl"] ? t["2xl"] : t.xl !== void 0 && e >= d.xl ? t.xl : t.lg !== void 0 && e >= d.lg ? t.lg : t.md !== void 0 && e >= d.md ? t.md : t.sm !== void 0 && e >= d.sm ? t.sm : t.xs !== void 0 ? t.xs : 3 : 3;
12
+ }
13
+ const K = ({
14
+ children: t,
15
+ columns: e = 3,
16
+ gap: r = 16,
17
+ className: z = "",
18
+ style: M,
19
+ ...P
20
+ }) => {
21
+ const h = R(null), [l, T] = b([]), [y, _] = b(0), w = R([]), c = F.Children.toArray(t), s = I(() => {
22
+ const i = h.current;
23
+ if (!i || c.length === 0) return;
24
+ const n = i.offsetWidth, m = typeof window < "u" ? window.innerWidth : n, a = L(e, m), S = (n - r * (a - 1)) / a, o = new Array(a).fill(0), W = [];
25
+ c.forEach((O, x) => {
26
+ const C = w.current[x];
27
+ if (!C) return;
28
+ let u = 0, E = o[0];
29
+ for (let f = 1; f < a; f++)
30
+ o[f] < E && (E = o[f], u = f);
31
+ const j = u * (S + r), k = o[u];
32
+ W[x] = { left: j, top: k };
33
+ const B = C.offsetHeight;
34
+ o[u] += B + r;
35
+ }), T(W), _(Math.max(...o) - r);
36
+ }, [t, e, r, c.length]);
37
+ A(() => {
38
+ s();
39
+ const i = () => {
40
+ s();
41
+ };
42
+ return window.addEventListener("resize", i), () => window.removeEventListener("resize", i);
43
+ }, [s]), A(() => {
44
+ const i = setTimeout(s, 0);
45
+ return () => clearTimeout(i);
46
+ }, [t, s]);
47
+ const v = h.current?.offsetWidth ?? 0, N = typeof window < "u" ? window.innerWidth : v, g = L(e, N), p = v > 0 ? (v - r * (g - 1)) / g : 0;
48
+ return /* @__PURE__ */ H(
49
+ "div",
50
+ {
51
+ ref: h,
52
+ className: z,
53
+ style: {
54
+ position: "relative",
55
+ height: y > 0 ? y : void 0,
56
+ ...M
57
+ },
58
+ ...P,
59
+ children: c.map((i, n) => /* @__PURE__ */ H(
60
+ "div",
61
+ {
62
+ ref: (m) => {
63
+ w.current[n] = m;
64
+ },
65
+ style: {
66
+ position: l.length > 0 ? "absolute" : "relative",
67
+ left: l[n]?.left ?? 0,
68
+ top: l[n]?.top ?? 0,
69
+ width: p > 0 ? p : "100%",
70
+ visibility: l.length > 0 ? "visible" : "hidden"
71
+ },
72
+ children: i
73
+ },
74
+ n
75
+ ))
76
+ }
77
+ );
78
+ };
79
+ K.displayName = "Masonry";
34
80
  export {
35
- g as Mask
81
+ K as Masonry,
82
+ K as default
36
83
  };
37
84
  //# sourceMappingURL=index50.js.map