asterui 0.12.49 → 0.12.51

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 (196) hide show
  1. package/dist/components/Alert.js +18 -18
  2. package/dist/components/Alert.js.map +1 -1
  3. package/dist/components/Autocomplete.js +115 -114
  4. package/dist/components/Autocomplete.js.map +1 -1
  5. package/dist/components/Avatar.js +33 -32
  6. package/dist/components/Avatar.js.map +1 -1
  7. package/dist/components/Badge.js +99 -99
  8. package/dist/components/Badge.js.map +1 -1
  9. package/dist/components/Breadcrumb.js +12 -11
  10. package/dist/components/Breadcrumb.js.map +1 -1
  11. package/dist/components/Browser.js +10 -10
  12. package/dist/components/Browser.js.map +1 -1
  13. package/dist/components/Button.js +80 -79
  14. package/dist/components/Button.js.map +1 -1
  15. package/dist/components/Card.d.ts +2 -0
  16. package/dist/components/Card.js +111 -110
  17. package/dist/components/Card.js.map +1 -1
  18. package/dist/components/Carousel.js +59 -59
  19. package/dist/components/Carousel.js.map +1 -1
  20. package/dist/components/Cascader.js +175 -174
  21. package/dist/components/Cascader.js.map +1 -1
  22. package/dist/components/Chat.js +27 -27
  23. package/dist/components/Chat.js.map +1 -1
  24. package/dist/components/Checkbox.js +98 -97
  25. package/dist/components/Checkbox.js.map +1 -1
  26. package/dist/components/Code.js +11 -11
  27. package/dist/components/Code.js.map +1 -1
  28. package/dist/components/Collapse.js +46 -46
  29. package/dist/components/Collapse.js.map +1 -1
  30. package/dist/components/ColorPicker.d.ts +1 -1
  31. package/dist/components/ColorPicker.js +93 -91
  32. package/dist/components/ColorPicker.js.map +1 -1
  33. package/dist/components/Command.js +120 -120
  34. package/dist/components/Command.js.map +1 -1
  35. package/dist/components/ConfigProvider.d.ts +1 -1
  36. package/dist/components/ConfigProvider.js +9 -9
  37. package/dist/components/ConfigProvider.js.map +1 -1
  38. package/dist/components/ContextMenu.js +33 -33
  39. package/dist/components/ContextMenu.js.map +1 -1
  40. package/dist/components/CopyButton.js +74 -73
  41. package/dist/components/CopyButton.js.map +1 -1
  42. package/dist/components/Countdown.js +60 -59
  43. package/dist/components/Countdown.js.map +1 -1
  44. package/dist/components/DatePicker.d.ts +1 -1
  45. package/dist/components/DatePicker.js +54 -53
  46. package/dist/components/DatePicker.js.map +1 -1
  47. package/dist/components/Diff.js +10 -10
  48. package/dist/components/Diff.js.map +1 -1
  49. package/dist/components/Divider.js +21 -20
  50. package/dist/components/Divider.js.map +1 -1
  51. package/dist/components/Dock.js +28 -27
  52. package/dist/components/Dock.js.map +1 -1
  53. package/dist/components/Drawer.js +43 -43
  54. package/dist/components/Drawer.js.map +1 -1
  55. package/dist/components/Dropdown.js +127 -127
  56. package/dist/components/Dropdown.js.map +1 -1
  57. package/dist/components/Empty.js +16 -15
  58. package/dist/components/Empty.js.map +1 -1
  59. package/dist/components/Fieldset.js +11 -10
  60. package/dist/components/Fieldset.js.map +1 -1
  61. package/dist/components/FileInput.js +30 -29
  62. package/dist/components/FileInput.js.map +1 -1
  63. package/dist/components/Filter.d.ts +1 -1
  64. package/dist/components/Filter.js +32 -30
  65. package/dist/components/Filter.js.map +1 -1
  66. package/dist/components/FloatButton.js +83 -83
  67. package/dist/components/FloatButton.js.map +1 -1
  68. package/dist/components/Footer.js +14 -13
  69. package/dist/components/Footer.js.map +1 -1
  70. package/dist/components/Form.js +133 -132
  71. package/dist/components/Form.js.map +1 -1
  72. package/dist/components/Hero.js +12 -11
  73. package/dist/components/Hero.js.map +1 -1
  74. package/dist/components/HoverGallery.js +7 -7
  75. package/dist/components/HoverGallery.js.map +1 -1
  76. package/dist/components/Image.js +40 -40
  77. package/dist/components/Image.js.map +1 -1
  78. package/dist/components/Input.js +171 -169
  79. package/dist/components/Input.js.map +1 -1
  80. package/dist/components/InputNumber.js +84 -83
  81. package/dist/components/InputNumber.js.map +1 -1
  82. package/dist/components/Join.js +11 -10
  83. package/dist/components/Join.js.map +1 -1
  84. package/dist/components/Kbd.js +15 -15
  85. package/dist/components/Kbd.js.map +1 -1
  86. package/dist/components/List.d.ts +1 -1
  87. package/dist/components/List.js +75 -72
  88. package/dist/components/List.js.map +1 -1
  89. package/dist/components/Loading.d.ts +1 -1
  90. package/dist/components/Loading.js +31 -29
  91. package/dist/components/Loading.js.map +1 -1
  92. package/dist/components/Mask.js +31 -31
  93. package/dist/components/Mask.js.map +1 -1
  94. package/dist/components/Mention.js +61 -61
  95. package/dist/components/Mention.js.map +1 -1
  96. package/dist/components/Menu.js +84 -84
  97. package/dist/components/Menu.js.map +1 -1
  98. package/dist/components/Message.js +30 -29
  99. package/dist/components/Message.js.map +1 -1
  100. package/dist/components/Modal.js +117 -116
  101. package/dist/components/Modal.js.map +1 -1
  102. package/dist/components/MonthCalendar.d.ts +31 -0
  103. package/dist/components/MonthCalendar.js +205 -0
  104. package/dist/components/MonthCalendar.js.map +1 -0
  105. package/dist/components/Navbar.js +25 -25
  106. package/dist/components/Navbar.js.map +1 -1
  107. package/dist/components/Notification.js +56 -55
  108. package/dist/components/Notification.js.map +1 -1
  109. package/dist/components/OTPInput.js +69 -68
  110. package/dist/components/OTPInput.js.map +1 -1
  111. package/dist/components/Pagination.d.ts +1 -1
  112. package/dist/components/Pagination.js +60 -58
  113. package/dist/components/Pagination.js.map +1 -1
  114. package/dist/components/Phone.js +10 -10
  115. package/dist/components/Phone.js.map +1 -1
  116. package/dist/components/Popconfirm.js +60 -60
  117. package/dist/components/Popconfirm.js.map +1 -1
  118. package/dist/components/Progress.js +17 -17
  119. package/dist/components/Progress.js.map +1 -1
  120. package/dist/components/QRCode.js +23 -23
  121. package/dist/components/QRCode.js.map +1 -1
  122. package/dist/components/RadialProgress.js +17 -17
  123. package/dist/components/RadialProgress.js.map +1 -1
  124. package/dist/components/Radio.js +41 -40
  125. package/dist/components/Radio.js.map +1 -1
  126. package/dist/components/Range.d.ts +1 -1
  127. package/dist/components/Range.js +39 -37
  128. package/dist/components/Range.js.map +1 -1
  129. package/dist/components/Rating.js +79 -78
  130. package/dist/components/Rating.js.map +1 -1
  131. package/dist/components/ResponsiveDrawer.js +27 -27
  132. package/dist/components/ResponsiveDrawer.js.map +1 -1
  133. package/dist/components/RichTextEditor.d.ts +32 -0
  134. package/dist/components/RichTextEditor.js +335 -0
  135. package/dist/components/RichTextEditor.js.map +1 -0
  136. package/dist/components/Segmented.d.ts +1 -1
  137. package/dist/components/Segmented.js +48 -46
  138. package/dist/components/Segmented.js.map +1 -1
  139. package/dist/components/Select.js +55 -54
  140. package/dist/components/Select.js.map +1 -1
  141. package/dist/components/Skeleton.js +9 -9
  142. package/dist/components/Skeleton.js.map +1 -1
  143. package/dist/components/Splitter.js +1 -3
  144. package/dist/components/Splitter.js.map +1 -1
  145. package/dist/components/Stat.js +17 -16
  146. package/dist/components/Stat.js.map +1 -1
  147. package/dist/components/Status.js +29 -29
  148. package/dist/components/Status.js.map +1 -1
  149. package/dist/components/Steps.js +61 -61
  150. package/dist/components/Steps.js.map +1 -1
  151. package/dist/components/Table.js +256 -256
  152. package/dist/components/Table.js.map +1 -1
  153. package/dist/components/Tabs.js +65 -65
  154. package/dist/components/Tabs.js.map +1 -1
  155. package/dist/components/Tag.js +147 -147
  156. package/dist/components/Tag.js.map +1 -1
  157. package/dist/components/TextRotate.js +6 -6
  158. package/dist/components/TextRotate.js.map +1 -1
  159. package/dist/components/Textarea.js +35 -34
  160. package/dist/components/Textarea.js.map +1 -1
  161. package/dist/components/ThemeController.d.ts +1 -1
  162. package/dist/components/ThemeController.js +71 -68
  163. package/dist/components/ThemeController.js.map +1 -1
  164. package/dist/components/TimePicker.d.ts +1 -1
  165. package/dist/components/TimePicker.js +133 -129
  166. package/dist/components/TimePicker.js.map +1 -1
  167. package/dist/components/Timeline.js +79 -79
  168. package/dist/components/Timeline.js.map +1 -1
  169. package/dist/components/Toggle.js +33 -32
  170. package/dist/components/Toggle.js.map +1 -1
  171. package/dist/components/Tooltip.js +25 -25
  172. package/dist/components/Tooltip.js.map +1 -1
  173. package/dist/components/Tour.js +126 -126
  174. package/dist/components/Tour.js.map +1 -1
  175. package/dist/components/Transfer.js +93 -92
  176. package/dist/components/Transfer.js.map +1 -1
  177. package/dist/components/Tree.js +200 -200
  178. package/dist/components/Tree.js.map +1 -1
  179. package/dist/components/TreeSelect.js +255 -254
  180. package/dist/components/TreeSelect.js.map +1 -1
  181. package/dist/components/Typography.js +71 -70
  182. package/dist/components/Typography.js.map +1 -1
  183. package/dist/components/Upload.js +81 -81
  184. package/dist/components/Upload.js.map +1 -1
  185. package/dist/components/WeekCalendar.d.ts +35 -0
  186. package/dist/components/WeekCalendar.js +204 -0
  187. package/dist/components/WeekCalendar.js.map +1 -0
  188. package/dist/components/Window.js +7 -7
  189. package/dist/components/Window.js.map +1 -1
  190. package/dist/editor.d.ts +1 -0
  191. package/dist/editor.js +5 -0
  192. package/dist/editor.js.map +1 -0
  193. package/dist/index.d.ts +4 -0
  194. package/dist/index.js +211 -207
  195. package/dist/index.js.map +1 -1
  196. package/package.json +30 -1
@@ -1,141 +1,141 @@
1
- import { jsx as n, jsxs as b } from "react/jsx-runtime";
2
- import g, { useState as j, useCallback as S, createContext as q, useId as A, useContext as k } from "react";
3
- const M = q(null);
4
- function F() {
5
- const e = k(M);
1
+ import { jsx as n, jsxs as y } from "react/jsx-runtime";
2
+ import v, { useState as j, useCallback as I, createContext as q, useId as A, useContext as k } from "react";
3
+ const F = "menu", T = "menu-vertical", G = "menu-horizontal", J = "menu-xs", Q = "menu-sm", U = "menu-md", Y = "menu-lg", Z = "menu-xl", C = "menu-icon", $ = "menu-title", K = q(null);
4
+ function _() {
5
+ const e = k(K);
6
6
  if (!e)
7
7
  throw new Error("Menu components must be used within a Menu");
8
8
  return e;
9
9
  }
10
- function I(e, t, l, a, r) {
11
- return e.divider ? /* @__PURE__ */ n(O, {}, e.key) : e.title ? /* @__PURE__ */ n(T, { children: e.label }, e.key) : e.children && e.children.length > 0 ? /* @__PURE__ */ n(N, { _key: e.key, label: e.label, icon: e.icon, disabled: e.disabled, children: e.children.map((m) => I(m)) }, e.key) : /* @__PURE__ */ n(K, { _key: e.key, icon: e.icon, disabled: e.disabled, children: e.label }, e.key);
10
+ function O(e, t, s, o, r) {
11
+ return e.divider ? /* @__PURE__ */ n(w, {}, e.key) : e.title ? /* @__PURE__ */ n(B, { children: e.label }, e.key) : e.children && e.children.length > 0 ? /* @__PURE__ */ n(S, { _key: e.key, label: e.label, icon: e.icon, disabled: e.disabled, children: e.children.map((m) => O(m)) }, e.key) : /* @__PURE__ */ n(N, { _key: e.key, icon: e.icon, disabled: e.disabled, children: e.label }, e.key);
12
12
  }
13
- function G({
13
+ function ee({
14
14
  children: e,
15
15
  items: t,
16
- mode: l = "vertical",
17
- size: a,
16
+ mode: s = "vertical",
17
+ size: o,
18
18
  selectedKeys: r,
19
19
  defaultSelectedKeys: m = [],
20
- openKeys: s,
20
+ openKeys: l,
21
21
  defaultOpenKeys: p = [],
22
- onSelect: i,
23
- onOpenChange: o,
22
+ onSelect: c,
23
+ onOpenChange: a,
24
24
  className: d = "",
25
25
  ...f
26
26
  }) {
27
- const [v, x] = j(m), [h, B] = j(p), w = r ?? v, y = s ?? h, D = S(
28
- (c) => {
29
- r === void 0 && x([c]), i?.(c);
27
+ const [b, x] = j(m), [h, D] = j(p), z = r ?? b, M = l ?? h, E = I(
28
+ (i) => {
29
+ r === void 0 && x([i]), c?.(i);
30
30
  },
31
- [r, i]
32
- ), E = S(
33
- (c) => {
34
- const u = y.includes(c) ? y.filter((C) => C !== c) : [...y, c];
35
- s === void 0 && B(u), o?.(u);
31
+ [r, c]
32
+ ), V = I(
33
+ (i) => {
34
+ const u = M.includes(i) ? M.filter((g) => g !== i) : [...M, i];
35
+ l === void 0 && D(u), a?.(u);
36
36
  },
37
- [y, s, o]
38
- ), z = {
39
- vertical: "menu-vertical",
40
- horizontal: "menu-horizontal",
41
- inline: "menu-vertical"
37
+ [M, l, a]
38
+ ), L = {
39
+ vertical: T,
40
+ horizontal: G,
41
+ inline: T
42
42
  }, R = {
43
- xs: "menu-xs",
44
- sm: "menu-sm",
45
- md: "menu-md",
46
- lg: "menu-lg",
47
- xl: "menu-xl"
48
- }, V = ["menu", z[l], a && R[a], d].filter(Boolean).join(" "), L = {
49
- mode: l,
50
- selectedKeys: w,
51
- openKeys: y,
52
- onSelect: D,
53
- onToggleOpen: E
54
- }, P = (c) => g.Children.map(c, (u) => {
55
- if (g.isValidElement(u)) {
56
- const C = u.key != null ? String(u.key) : void 0;
57
- if (u.type === K || u.type === N)
58
- return g.cloneElement(u, { _key: C });
43
+ xs: J,
44
+ sm: Q,
45
+ md: U,
46
+ lg: Y,
47
+ xl: Z
48
+ }, X = [F, L[s], o && R[o], d].filter(Boolean).join(" "), H = {
49
+ mode: s,
50
+ selectedKeys: z,
51
+ openKeys: M,
52
+ onSelect: E,
53
+ onToggleOpen: V
54
+ }, P = (i) => v.Children.map(i, (u) => {
55
+ if (v.isValidElement(u)) {
56
+ const g = u.key != null ? String(u.key) : void 0;
57
+ if (u.type === N || u.type === S)
58
+ return v.cloneElement(u, { _key: g });
59
59
  }
60
60
  return u;
61
- }), W = t && t.length > 0 ? t.map((c) => I(c)) : P(e);
62
- return /* @__PURE__ */ n(M.Provider, { value: L, children: /* @__PURE__ */ n("ul", { className: V, ...f, children: W }) });
61
+ }), W = t && t.length > 0 ? t.map((i) => O(i)) : P(e);
62
+ return /* @__PURE__ */ n(K.Provider, { value: H, children: /* @__PURE__ */ n("ul", { className: X, ...f, children: W }) });
63
63
  }
64
- function K({
64
+ function N({
65
65
  children: e,
66
66
  icon: t,
67
- disabled: l = !1,
68
- onClick: a,
67
+ disabled: s = !1,
68
+ onClick: o,
69
69
  active: r,
70
70
  className: m = "",
71
- _key: s,
71
+ _key: l,
72
72
  ...p
73
73
  }) {
74
- const i = k(M), o = s && i ? i.selectedKeys.includes(s) : r, d = () => {
75
- l || (s && i && i.onSelect(s), a?.());
74
+ const c = k(K), a = l && c ? c.selectedKeys.includes(l) : r, d = () => {
75
+ s || (l && c && c.onSelect(l), o?.());
76
76
  }, f = [
77
- o && "active bg-primary text-primary-content",
78
- l && "disabled",
77
+ a && "active bg-primary text-primary-content",
78
+ s && "disabled",
79
79
  m
80
80
  ].filter(Boolean).join(" ");
81
- return /* @__PURE__ */ n("li", { children: /* @__PURE__ */ b(
81
+ return /* @__PURE__ */ n("li", { children: /* @__PURE__ */ y(
82
82
  "a",
83
83
  {
84
84
  className: f,
85
85
  onClick: d,
86
- "aria-disabled": l,
86
+ "aria-disabled": s,
87
87
  role: "menuitem",
88
- "data-state": o ? "active" : "inactive",
88
+ "data-state": a ? "active" : "inactive",
89
89
  ...p,
90
90
  children: [
91
- t && /* @__PURE__ */ n("span", { className: "menu-icon", children: t }),
91
+ t && /* @__PURE__ */ n("span", { className: C, children: t }),
92
92
  e
93
93
  ]
94
94
  }
95
95
  ) });
96
96
  }
97
- function N({
97
+ function S({
98
98
  children: e,
99
99
  label: t,
100
- title: l,
101
- icon: a,
100
+ title: s,
101
+ icon: o,
102
102
  disabled: r = !1,
103
103
  className: m = "",
104
- _key: s,
104
+ _key: l,
105
105
  ...p
106
106
  }) {
107
- const i = F(), o = s ? i.openKeys.includes(s) : !1, d = A(), f = t ?? l, v = () => {
108
- r || !s || i.onToggleOpen(s);
107
+ const c = _(), a = l ? c.openKeys.includes(l) : !1, d = A(), f = t ?? s, b = () => {
108
+ r || !l || c.onToggleOpen(l);
109
109
  }, x = [r && "disabled", m].filter(Boolean).join(" ");
110
- return i.mode === "inline" ? /* @__PURE__ */ n("li", { className: x, "data-state": o ? "open" : "closed", ...p, children: /* @__PURE__ */ b("details", { open: o, children: [
111
- /* @__PURE__ */ b(
110
+ return c.mode === "inline" ? /* @__PURE__ */ n("li", { className: x, "data-state": a ? "open" : "closed", ...p, children: /* @__PURE__ */ y("details", { open: a, children: [
111
+ /* @__PURE__ */ y(
112
112
  "summary",
113
113
  {
114
114
  onClick: (h) => {
115
- h.preventDefault(), v();
115
+ h.preventDefault(), b();
116
116
  },
117
- "aria-expanded": o,
117
+ "aria-expanded": a,
118
118
  "aria-controls": d,
119
119
  "aria-disabled": r,
120
120
  children: [
121
- a && /* @__PURE__ */ n("span", { className: "menu-icon", children: a }),
121
+ o && /* @__PURE__ */ n("span", { className: C, children: o }),
122
122
  f
123
123
  ]
124
124
  }
125
125
  ),
126
126
  /* @__PURE__ */ n("ul", { id: d, role: "menu", children: e })
127
- ] }) }) : /* @__PURE__ */ n("li", { className: x, "data-state": o ? "open" : "closed", ...p, children: /* @__PURE__ */ b("details", { open: o, children: [
128
- /* @__PURE__ */ b(
127
+ ] }) }) : /* @__PURE__ */ n("li", { className: x, "data-state": a ? "open" : "closed", ...p, children: /* @__PURE__ */ y("details", { open: a, children: [
128
+ /* @__PURE__ */ y(
129
129
  "summary",
130
130
  {
131
131
  onClick: (h) => {
132
- h.preventDefault(), v();
132
+ h.preventDefault(), b();
133
133
  },
134
- "aria-expanded": o,
134
+ "aria-expanded": a,
135
135
  "aria-controls": d,
136
136
  "aria-disabled": r,
137
137
  children: [
138
- a && /* @__PURE__ */ n("span", { className: "menu-icon", children: a }),
138
+ o && /* @__PURE__ */ n("span", { className: C, children: o }),
139
139
  f
140
140
  ]
141
141
  }
@@ -143,21 +143,21 @@ function N({
143
143
  /* @__PURE__ */ n("ul", { id: d, role: "menu", children: e })
144
144
  ] }) });
145
145
  }
146
- function T({ children: e, className: t = "", ...l }) {
147
- const a = ["menu-title", t].filter(Boolean).join(" ");
148
- return /* @__PURE__ */ n("li", { className: a, ...l, children: e });
146
+ function B({ children: e, className: t = "", ...s }) {
147
+ const o = [$, t].filter(Boolean).join(" ");
148
+ return /* @__PURE__ */ n("li", { className: o, ...s, children: e });
149
149
  }
150
- function O({ className: e = "", ...t }) {
151
- const l = ["border-t border-base-300 my-1", e].filter(Boolean).join(" ");
152
- return /* @__PURE__ */ n("li", { className: l, role: "separator", ...t });
150
+ function w({ className: e = "", ...t }) {
151
+ const s = ["border-t border-base-300 my-1", e].filter(Boolean).join(" ");
152
+ return /* @__PURE__ */ n("li", { className: s, role: "separator", ...t });
153
153
  }
154
- const Q = Object.assign(G, {
155
- Item: K,
156
- SubMenu: N,
157
- Title: T,
158
- Divider: O
154
+ const se = Object.assign(ee, {
155
+ Item: N,
156
+ SubMenu: S,
157
+ Title: B,
158
+ Divider: w
159
159
  });
160
160
  export {
161
- Q as Menu
161
+ se as Menu
162
162
  };
163
163
  //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../../src/components/Menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useId } from 'react'\n\nexport type MenuMode = 'vertical' | 'horizontal' | 'inline'\nexport type MenuSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface MenuItem {\n key: string\n label: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n children?: MenuItem[]\n divider?: boolean\n title?: boolean // For section titles\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n /** Menu items (compound pattern) */\n children?: React.ReactNode\n /** Menu items (data-driven pattern) */\n items?: MenuItem[]\n /** Menu display mode */\n mode?: MenuMode\n /** Menu size */\n size?: MenuSize\n /** Controlled selected keys */\n selectedKeys?: string[]\n /** Default selected keys (uncontrolled) */\n defaultSelectedKeys?: string[]\n /** Controlled open submenu keys */\n openKeys?: string[]\n /** Default open submenu keys (uncontrolled) */\n defaultOpenKeys?: string[]\n /** Callback when item is selected */\n onSelect?: (key: string) => void\n /** Callback when submenu open state changes */\n onOpenChange?: (openKeys: string[]) => void\n}\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLAnchorElement>, 'onClick'> {\n children: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n onClick?: () => void\n /** @deprecated Use key and selectedKeys instead */\n active?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuSubMenuProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'title'> {\n children: React.ReactNode\n /** Submenu label */\n label?: React.ReactNode\n /** Submenu title (alias for label) */\n title?: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuTitleProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode\n}\n\nexport interface MenuDividerProps extends React.HTMLAttributes<HTMLLIElement> {}\n\ninterface MenuContextValue {\n mode: MenuMode\n selectedKeys: string[]\n openKeys: string[]\n onSelect: (key: string) => void\n onToggleOpen: (key: string) => void\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null)\n\nfunction useMenuContext() {\n const context = useContext(MenuContext)\n if (!context) {\n throw new Error('Menu components must be used within a Menu')\n }\n return context\n}\n\n// Internal component for rendering data-driven menu items\nfunction renderMenuItem(item: MenuItem, onSelect: (key: string) => void, selectedKeys: string[], openKeys: string[], onToggleOpen: (key: string) => void): React.ReactNode {\n if (item.divider) {\n return <MenuDivider key={item.key} />\n }\n\n if (item.title) {\n return <MenuTitle key={item.key}>{item.label}</MenuTitle>\n }\n\n if (item.children && item.children.length > 0) {\n return (\n <MenuSubMenu key={item.key} _key={item.key} label={item.label} icon={item.icon} disabled={item.disabled}>\n {item.children.map((child) => renderMenuItem(child, onSelect, selectedKeys, openKeys, onToggleOpen))}\n </MenuSubMenu>\n )\n }\n\n return (\n <MenuItem key={item.key} _key={item.key} icon={item.icon} disabled={item.disabled}>\n {item.label}\n </MenuItem>\n )\n}\n\nfunction MenuRoot({\n children,\n items,\n mode = 'vertical',\n size,\n selectedKeys: controlledSelectedKeys,\n defaultSelectedKeys = [],\n openKeys: controlledOpenKeys,\n defaultOpenKeys = [],\n onSelect,\n onOpenChange,\n className = '',\n ...rest\n}: MenuProps) {\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(defaultSelectedKeys)\n const [internalOpenKeys, setInternalOpenKeys] = useState<string[]>(defaultOpenKeys)\n\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const openKeys = controlledOpenKeys ?? internalOpenKeys\n\n const handleSelect = useCallback(\n (key: string) => {\n if (controlledSelectedKeys === undefined) {\n setInternalSelectedKeys([key])\n }\n onSelect?.(key)\n },\n [controlledSelectedKeys, onSelect]\n )\n\n const handleToggleOpen = useCallback(\n (key: string) => {\n const newOpenKeys = openKeys.includes(key)\n ? openKeys.filter((k) => k !== key)\n : [...openKeys, key]\n\n if (controlledOpenKeys === undefined) {\n setInternalOpenKeys(newOpenKeys)\n }\n onOpenChange?.(newOpenKeys)\n },\n [openKeys, controlledOpenKeys, onOpenChange]\n )\n\n const modeClasses: Record<MenuMode, string> = {\n vertical: 'menu-vertical',\n horizontal: 'menu-horizontal',\n inline: 'menu-vertical',\n }\n\n const sizeClasses: Record<MenuSize, string> = {\n xs: 'menu-xs',\n sm: 'menu-sm',\n md: 'menu-md',\n lg: 'menu-lg',\n xl: 'menu-xl',\n }\n\n const menuClasses = ['menu', modeClasses[mode], size && sizeClasses[size], className].filter(Boolean).join(' ')\n\n const contextValue = {\n mode,\n selectedKeys,\n openKeys,\n onSelect: handleSelect,\n onToggleOpen: handleToggleOpen,\n }\n\n // Clone children to extract keys\n const cloneChildrenWithKeys = (children: React.ReactNode): React.ReactNode => {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childKey = child.key != null ? String(child.key) : undefined\n if (child.type === MenuItem || child.type === MenuSubMenu) {\n return React.cloneElement(child as React.ReactElement<any>, { _key: childKey })\n }\n }\n return child\n })\n }\n\n // Render data-driven items if provided\n const content = items && items.length > 0\n ? items.map((item) => renderMenuItem(item, handleSelect, selectedKeys, openKeys, handleToggleOpen))\n : cloneChildrenWithKeys(children)\n\n return (\n <MenuContext.Provider value={contextValue}>\n <ul className={menuClasses} {...rest}>{content}</ul>\n </MenuContext.Provider>\n )\n}\n\nfunction MenuItem({\n children,\n icon,\n disabled = false,\n onClick,\n active,\n className = '',\n _key,\n ...rest\n}: MenuItemProps) {\n const context = useContext(MenuContext)\n\n // Support both old active prop and new key-based selection\n const isSelected = _key && context ? context.selectedKeys.includes(_key) : active\n\n const handleClick = () => {\n if (disabled) return\n if (_key && context) {\n context.onSelect(_key)\n }\n onClick?.()\n }\n\n const itemClasses = [\n isSelected && 'active bg-primary text-primary-content',\n disabled && 'disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <li>\n <a\n className={itemClasses}\n onClick={handleClick}\n aria-disabled={disabled}\n role=\"menuitem\"\n data-state={isSelected ? 'active' : 'inactive'}\n {...rest}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {children}\n </a>\n </li>\n )\n}\n\nfunction MenuSubMenu({\n children,\n label,\n title,\n icon,\n disabled = false,\n className = '',\n _key,\n ...rest\n}: MenuSubMenuProps) {\n const context = useMenuContext()\n const isOpen = _key ? context.openKeys.includes(_key) : false\n const submenuId = useId()\n\n // Support both label and title (title as alias for backwards compatibility)\n const displayLabel = label ?? title\n\n const handleToggle = () => {\n if (disabled || !_key) return\n context.onToggleOpen(_key)\n }\n\n const submenuClasses = [disabled && 'disabled', className].filter(Boolean).join(' ')\n\n // For inline mode, use collapsible details/summary\n if (context.mode === 'inline') {\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n }\n\n // For vertical/horizontal, use nested menu (dropdown style)\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n}\n\nfunction MenuTitle({ children, className = '', ...rest }: MenuTitleProps) {\n const titleClasses = ['menu-title', className].filter(Boolean).join(' ')\n\n return <li className={titleClasses} {...rest}>{children}</li>\n}\n\nfunction MenuDivider({ className = '', ...rest }: MenuDividerProps) {\n const dividerClasses = ['border-t border-base-300 my-1', className].filter(Boolean).join(' ')\n\n return <li className={dividerClasses} role=\"separator\" {...rest} />\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n SubMenu: MenuSubMenu,\n Title: MenuTitle,\n Divider: MenuDivider,\n})\n"],"names":["MenuContext","createContext","useMenuContext","context","useContext","renderMenuItem","item","onSelect","selectedKeys","openKeys","onToggleOpen","jsx","MenuDivider","MenuTitle","MenuSubMenu","child","MenuItem","MenuRoot","children","items","mode","size","controlledSelectedKeys","defaultSelectedKeys","controlledOpenKeys","defaultOpenKeys","onOpenChange","className","rest","internalSelectedKeys","setInternalSelectedKeys","useState","internalOpenKeys","setInternalOpenKeys","handleSelect","useCallback","key","handleToggleOpen","newOpenKeys","k","modeClasses","sizeClasses","menuClasses","contextValue","cloneChildrenWithKeys","React","childKey","content","icon","disabled","onClick","active","_key","isSelected","handleClick","itemClasses","jsxs","label","title","isOpen","submenuId","useId","displayLabel","handleToggle","submenuClasses","e","titleClasses","dividerClasses","Menu"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sources":["../../src/components/Menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useId } from 'react'\n\n// DaisyUI classes\nconst dMenu = 'menu'\nconst dMenuVertical = 'menu-vertical'\nconst dMenuHorizontal = 'menu-horizontal'\nconst dMenuXs = 'menu-xs'\nconst dMenuSm = 'menu-sm'\nconst dMenuMd = 'menu-md'\nconst dMenuLg = 'menu-lg'\nconst dMenuXl = 'menu-xl'\nconst dMenuIcon = 'menu-icon'\nconst dMenuTitle = 'menu-title'\n\nexport type MenuMode = 'vertical' | 'horizontal' | 'inline'\nexport type MenuSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface MenuItem {\n key: string\n label: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n children?: MenuItem[]\n divider?: boolean\n title?: boolean // For section titles\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n /** Menu items (compound pattern) */\n children?: React.ReactNode\n /** Menu items (data-driven pattern) */\n items?: MenuItem[]\n /** Menu display mode */\n mode?: MenuMode\n /** Menu size */\n size?: MenuSize\n /** Controlled selected keys */\n selectedKeys?: string[]\n /** Default selected keys (uncontrolled) */\n defaultSelectedKeys?: string[]\n /** Controlled open submenu keys */\n openKeys?: string[]\n /** Default open submenu keys (uncontrolled) */\n defaultOpenKeys?: string[]\n /** Callback when item is selected */\n onSelect?: (key: string) => void\n /** Callback when submenu open state changes */\n onOpenChange?: (openKeys: string[]) => void\n}\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLAnchorElement>, 'onClick'> {\n children: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n onClick?: () => void\n /** @deprecated Use key and selectedKeys instead */\n active?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuSubMenuProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'title'> {\n children: React.ReactNode\n /** Submenu label */\n label?: React.ReactNode\n /** Submenu title (alias for label) */\n title?: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuTitleProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode\n}\n\nexport interface MenuDividerProps extends React.HTMLAttributes<HTMLLIElement> {}\n\ninterface MenuContextValue {\n mode: MenuMode\n selectedKeys: string[]\n openKeys: string[]\n onSelect: (key: string) => void\n onToggleOpen: (key: string) => void\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null)\n\nfunction useMenuContext() {\n const context = useContext(MenuContext)\n if (!context) {\n throw new Error('Menu components must be used within a Menu')\n }\n return context\n}\n\n// Internal component for rendering data-driven menu items\nfunction renderMenuItem(item: MenuItem, onSelect: (key: string) => void, selectedKeys: string[], openKeys: string[], onToggleOpen: (key: string) => void): React.ReactNode {\n if (item.divider) {\n return <MenuDivider key={item.key} />\n }\n\n if (item.title) {\n return <MenuTitle key={item.key}>{item.label}</MenuTitle>\n }\n\n if (item.children && item.children.length > 0) {\n return (\n <MenuSubMenu key={item.key} _key={item.key} label={item.label} icon={item.icon} disabled={item.disabled}>\n {item.children.map((child) => renderMenuItem(child, onSelect, selectedKeys, openKeys, onToggleOpen))}\n </MenuSubMenu>\n )\n }\n\n return (\n <MenuItem key={item.key} _key={item.key} icon={item.icon} disabled={item.disabled}>\n {item.label}\n </MenuItem>\n )\n}\n\nfunction MenuRoot({\n children,\n items,\n mode = 'vertical',\n size,\n selectedKeys: controlledSelectedKeys,\n defaultSelectedKeys = [],\n openKeys: controlledOpenKeys,\n defaultOpenKeys = [],\n onSelect,\n onOpenChange,\n className = '',\n ...rest\n}: MenuProps) {\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(defaultSelectedKeys)\n const [internalOpenKeys, setInternalOpenKeys] = useState<string[]>(defaultOpenKeys)\n\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const openKeys = controlledOpenKeys ?? internalOpenKeys\n\n const handleSelect = useCallback(\n (key: string) => {\n if (controlledSelectedKeys === undefined) {\n setInternalSelectedKeys([key])\n }\n onSelect?.(key)\n },\n [controlledSelectedKeys, onSelect]\n )\n\n const handleToggleOpen = useCallback(\n (key: string) => {\n const newOpenKeys = openKeys.includes(key)\n ? openKeys.filter((k) => k !== key)\n : [...openKeys, key]\n\n if (controlledOpenKeys === undefined) {\n setInternalOpenKeys(newOpenKeys)\n }\n onOpenChange?.(newOpenKeys)\n },\n [openKeys, controlledOpenKeys, onOpenChange]\n )\n\n const modeClasses: Record<MenuMode, string> = {\n vertical: dMenuVertical,\n horizontal: dMenuHorizontal,\n inline: dMenuVertical,\n }\n\n const sizeClasses: Record<MenuSize, string> = {\n xs: dMenuXs,\n sm: dMenuSm,\n md: dMenuMd,\n lg: dMenuLg,\n xl: dMenuXl,\n }\n\n const menuClasses = [dMenu, modeClasses[mode], size && sizeClasses[size], className].filter(Boolean).join(' ')\n\n const contextValue = {\n mode,\n selectedKeys,\n openKeys,\n onSelect: handleSelect,\n onToggleOpen: handleToggleOpen,\n }\n\n // Clone children to extract keys\n const cloneChildrenWithKeys = (children: React.ReactNode): React.ReactNode => {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childKey = child.key != null ? String(child.key) : undefined\n if (child.type === MenuItem || child.type === MenuSubMenu) {\n return React.cloneElement(child as React.ReactElement<any>, { _key: childKey })\n }\n }\n return child\n })\n }\n\n // Render data-driven items if provided\n const content = items && items.length > 0\n ? items.map((item) => renderMenuItem(item, handleSelect, selectedKeys, openKeys, handleToggleOpen))\n : cloneChildrenWithKeys(children)\n\n return (\n <MenuContext.Provider value={contextValue}>\n <ul className={menuClasses} {...rest}>{content}</ul>\n </MenuContext.Provider>\n )\n}\n\nfunction MenuItem({\n children,\n icon,\n disabled = false,\n onClick,\n active,\n className = '',\n _key,\n ...rest\n}: MenuItemProps) {\n const context = useContext(MenuContext)\n\n // Support both old active prop and new key-based selection\n const isSelected = _key && context ? context.selectedKeys.includes(_key) : active\n\n const handleClick = () => {\n if (disabled) return\n if (_key && context) {\n context.onSelect(_key)\n }\n onClick?.()\n }\n\n const itemClasses = [\n isSelected && 'active bg-primary text-primary-content',\n disabled && 'disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <li>\n <a\n className={itemClasses}\n onClick={handleClick}\n aria-disabled={disabled}\n role=\"menuitem\"\n data-state={isSelected ? 'active' : 'inactive'}\n {...rest}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {children}\n </a>\n </li>\n )\n}\n\nfunction MenuSubMenu({\n children,\n label,\n title,\n icon,\n disabled = false,\n className = '',\n _key,\n ...rest\n}: MenuSubMenuProps) {\n const context = useMenuContext()\n const isOpen = _key ? context.openKeys.includes(_key) : false\n const submenuId = useId()\n\n // Support both label and title (title as alias for backwards compatibility)\n const displayLabel = label ?? title\n\n const handleToggle = () => {\n if (disabled || !_key) return\n context.onToggleOpen(_key)\n }\n\n const submenuClasses = [disabled && 'disabled', className].filter(Boolean).join(' ')\n\n // For inline mode, use collapsible details/summary\n if (context.mode === 'inline') {\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n }\n\n // For vertical/horizontal, use nested menu (dropdown style)\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n}\n\nfunction MenuTitle({ children, className = '', ...rest }: MenuTitleProps) {\n const titleClasses = [dMenuTitle, className].filter(Boolean).join(' ')\n\n return <li className={titleClasses} {...rest}>{children}</li>\n}\n\nfunction MenuDivider({ className = '', ...rest }: MenuDividerProps) {\n const dividerClasses = ['border-t border-base-300 my-1', className].filter(Boolean).join(' ')\n\n return <li className={dividerClasses} role=\"separator\" {...rest} />\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n SubMenu: MenuSubMenu,\n Title: MenuTitle,\n Divider: MenuDivider,\n})\n"],"names":["dMenu","dMenuVertical","dMenuHorizontal","dMenuXs","dMenuSm","dMenuMd","dMenuLg","dMenuXl","dMenuIcon","dMenuTitle","MenuContext","createContext","useMenuContext","context","useContext","renderMenuItem","item","onSelect","selectedKeys","openKeys","onToggleOpen","jsx","MenuDivider","MenuTitle","MenuSubMenu","child","MenuItem","MenuRoot","children","items","mode","size","controlledSelectedKeys","defaultSelectedKeys","controlledOpenKeys","defaultOpenKeys","onOpenChange","className","rest","internalSelectedKeys","setInternalSelectedKeys","useState","internalOpenKeys","setInternalOpenKeys","handleSelect","useCallback","key","handleToggleOpen","newOpenKeys","k","modeClasses","sizeClasses","menuClasses","contextValue","cloneChildrenWithKeys","React","childKey","content","icon","disabled","onClick","active","_key","isSelected","handleClick","itemClasses","jsxs","label","title","isOpen","submenuId","useId","displayLabel","handleToggle","submenuClasses","e","titleClasses","dividerClasses","Menu"],"mappings":"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"}
@@ -1,56 +1,57 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
- import { notification as a } from "./Notification.js";
3
- class r {
4
- success(e, n) {
5
- return a.open({
6
- message: e,
2
+ import { notification as o } from "./Notification.js";
3
+ const r = "loading", t = "loading-spinner", i = "loading-sm";
4
+ class c {
5
+ success(n, e) {
6
+ return o.open({
7
+ message: n,
7
8
  type: "success",
8
9
  variant: "compact",
9
- ...n
10
+ ...e
10
11
  });
11
12
  }
12
- error(e, n) {
13
- return a.open({
14
- message: e,
13
+ error(n, e) {
14
+ return o.open({
15
+ message: n,
15
16
  type: "error",
16
17
  variant: "compact",
17
- ...n
18
+ ...e
18
19
  });
19
20
  }
20
- info(e, n) {
21
- return a.open({
22
- message: e,
21
+ info(n, e) {
22
+ return o.open({
23
+ message: n,
23
24
  type: "info",
24
25
  variant: "compact",
25
- ...n
26
+ ...e
26
27
  });
27
28
  }
28
- warning(e, n) {
29
- return a.open({
30
- message: e,
29
+ warning(n, e) {
30
+ return o.open({
31
+ message: n,
31
32
  type: "warning",
32
33
  variant: "compact",
33
- ...n
34
+ ...e
34
35
  });
35
36
  }
36
- loading(e, n) {
37
- const o = /* @__PURE__ */ s("span", { className: "loading loading-spinner loading-sm" });
38
- return a.open({
39
- message: e,
37
+ loading(n, e) {
38
+ const a = /* @__PURE__ */ s("span", { className: `${r} ${t} ${i}` });
39
+ return o.open({
40
+ message: n,
40
41
  type: "info",
41
42
  variant: "compact",
42
43
  duration: 0,
43
- icon: o,
44
- ...n
44
+ icon: a,
45
+ ...e
45
46
  });
46
47
  }
47
- destroy(e) {
48
- e ? a.close(e) : a.destroy();
48
+ destroy(n) {
49
+ n ? o.close(n) : o.destroy();
49
50
  }
50
51
  }
51
- const p = new r();
52
+ const d = new c();
52
53
  export {
53
- r as MessageManager,
54
- p as message
54
+ c as MessageManager,
55
+ d as message
55
56
  };
56
57
  //# sourceMappingURL=Message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sources":["../../src/components/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { notification } from './Notification'\n\nexport interface MessageConfig {\n duration?: number\n key?: string\n icon?: React.ReactNode\n className?: string\n style?: React.CSSProperties\n 'data-testid'?: string\n onClick?: () => void\n onClose?: () => void\n}\n\nexport class MessageManager {\n success(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'success',\n variant: 'compact',\n ...config,\n })\n }\n\n error(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'error',\n variant: 'compact',\n ...config,\n })\n }\n\n info(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n ...config,\n })\n }\n\n warning(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'warning',\n variant: 'compact',\n ...config,\n })\n }\n\n loading(content: React.ReactNode, config?: MessageConfig) {\n const loadingIcon = (\n <span className=\"loading loading-spinner loading-sm\" />\n )\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n duration: 0,\n icon: loadingIcon,\n ...config,\n })\n }\n\n destroy(id?: string) {\n if (id) {\n notification.close(id)\n } else {\n notification.destroy()\n }\n }\n}\n\nexport const message = new MessageManager()\n"],"names":["MessageManager","content","config","notification","loadingIcon","jsx","id","message"],"mappings":";;AAcO,MAAMA,EAAe;AAAA,EAC1B,QAAQC,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,MAAMD,GAA0BC,GAAwB;AACtD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,KAAKD,GAA0BC,GAAwB;AACrD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,UAAME,IACJ,gBAAAC,EAAC,QAAA,EAAK,WAAU,qCAAA,CAAqC;AAEvD,WAAOF,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAMG;AAAA,MACN,GAAGF;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQI,GAAa;AACnB,IAAIA,IACFH,EAAa,MAAMG,CAAE,IAErBH,EAAa,QAAA;AAAA,EAEjB;AACF;AAEO,MAAMI,IAAU,IAAIP,EAAA;"}
1
+ {"version":3,"file":"Message.js","sources":["../../src/components/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { notification } from './Notification'\n\n// DaisyUI classes\nconst dLoading = 'loading'\nconst dLoadingSpinner = 'loading-spinner'\nconst dLoadingSm = 'loading-sm'\n\nexport interface MessageConfig {\n duration?: number\n key?: string\n icon?: React.ReactNode\n className?: string\n style?: React.CSSProperties\n 'data-testid'?: string\n onClick?: () => void\n onClose?: () => void\n}\n\nexport class MessageManager {\n success(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'success',\n variant: 'compact',\n ...config,\n })\n }\n\n error(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'error',\n variant: 'compact',\n ...config,\n })\n }\n\n info(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n ...config,\n })\n }\n\n warning(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'warning',\n variant: 'compact',\n ...config,\n })\n }\n\n loading(content: React.ReactNode, config?: MessageConfig) {\n const loadingIcon = (\n <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingSm}`} />\n )\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n duration: 0,\n icon: loadingIcon,\n ...config,\n })\n }\n\n destroy(id?: string) {\n if (id) {\n notification.close(id)\n } else {\n notification.destroy()\n }\n }\n}\n\nexport const message = new MessageManager()\n"],"names":["dLoading","dLoadingSpinner","dLoadingSm","MessageManager","content","config","notification","loadingIcon","jsx","id","message"],"mappings":";;AAIA,MAAMA,IAAW,WACXC,IAAkB,mBAClBC,IAAa;AAaZ,MAAMC,EAAe;AAAA,EAC1B,QAAQC,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,MAAMD,GAA0BC,GAAwB;AACtD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,KAAKD,GAA0BC,GAAwB;AACrD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,UAAME,IACJ,gBAAAC,EAAC,QAAA,EAAK,WAAW,GAAGR,CAAQ,IAAIC,CAAe,IAAIC,CAAU,GAAA,CAAI;AAEnE,WAAOI,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAMG;AAAA,MACN,GAAGF;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQI,GAAa;AACnB,IAAIA,IACFH,EAAa,MAAMG,CAAE,IAErBH,EAAa,QAAA;AAAA,EAEjB;AACF;AAEO,MAAMI,IAAU,IAAIP,EAAA;"}