@tomny-dev/uzi 0.5.0 → 0.6.0-pr.60.173.1.802e4f7

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 (279) hide show
  1. package/README.md +5 -2
  2. package/dist/components/card/Card.d.ts +7 -5
  3. package/dist/components/card/Card.d.ts.map +1 -1
  4. package/dist/components/page-container/PageContainer.d.ts +2 -1
  5. package/dist/components/page-container/PageContainer.d.ts.map +1 -1
  6. package/dist/components/surface/Surface.d.ts +16 -0
  7. package/dist/components/surface/Surface.d.ts.map +1 -0
  8. package/dist/components/toolbar/Toolbar.d.ts +13 -0
  9. package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
  10. package/dist/index.cjs +36 -31
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +34 -32
  14. package/dist/index10.cjs.map +1 -1
  15. package/dist/index10.js +19 -15
  16. package/dist/index10.js.map +1 -1
  17. package/dist/index11.cjs +21 -18
  18. package/dist/index11.cjs.map +1 -1
  19. package/dist/index11.js +8 -15
  20. package/dist/index11.js.map +1 -1
  21. package/dist/index12.cjs +7 -14
  22. package/dist/index12.cjs.map +1 -1
  23. package/dist/index12.js +15 -37
  24. package/dist/index12.js.map +1 -1
  25. package/dist/index13.cjs +18 -52
  26. package/dist/index13.cjs.map +1 -1
  27. package/dist/index13.js +15 -77
  28. package/dist/index13.js.map +1 -1
  29. package/dist/index14.cjs +15 -80
  30. package/dist/index14.cjs.map +1 -1
  31. package/dist/index14.js +37 -13
  32. package/dist/index14.js.map +1 -1
  33. package/dist/index15.cjs +52 -18
  34. package/dist/index15.cjs.map +1 -1
  35. package/dist/index15.js +77 -9
  36. package/dist/index15.js.map +1 -1
  37. package/dist/index16.cjs +79 -8
  38. package/dist/index16.cjs.map +1 -1
  39. package/dist/index16.js +13 -41
  40. package/dist/index16.js.map +1 -1
  41. package/dist/index17.cjs +18 -60
  42. package/dist/index17.cjs.map +1 -1
  43. package/dist/index17.js +9 -428
  44. package/dist/index17.js.map +1 -1
  45. package/dist/index18.cjs +8 -430
  46. package/dist/index18.cjs.map +1 -1
  47. package/dist/index18.js +42 -4
  48. package/dist/index18.js.map +1 -1
  49. package/dist/index19.cjs +61 -5
  50. package/dist/index19.cjs.map +1 -1
  51. package/dist/index19.js +430 -13
  52. package/dist/index19.js.map +1 -1
  53. package/dist/index20.cjs +430 -12
  54. package/dist/index20.cjs.map +1 -1
  55. package/dist/index20.js +4 -4
  56. package/dist/index20.js.map +1 -1
  57. package/dist/index21.cjs +5 -5
  58. package/dist/index21.cjs.map +1 -1
  59. package/dist/index21.js +12 -9
  60. package/dist/index21.js.map +1 -1
  61. package/dist/index22.cjs +12 -9
  62. package/dist/index22.cjs.map +1 -1
  63. package/dist/index22.js +4 -4
  64. package/dist/index22.js.map +1 -1
  65. package/dist/index23.cjs +5 -5
  66. package/dist/index23.cjs.map +1 -1
  67. package/dist/index23.js +9 -12
  68. package/dist/index23.js.map +1 -1
  69. package/dist/index24.cjs +9 -12
  70. package/dist/index24.cjs.map +1 -1
  71. package/dist/index24.js +4 -38
  72. package/dist/index24.js.map +1 -1
  73. package/dist/index25.cjs +5 -55
  74. package/dist/index25.cjs.map +1 -1
  75. package/dist/index25.js +11 -116
  76. package/dist/index25.js.map +1 -1
  77. package/dist/index26.cjs +10 -116
  78. package/dist/index26.cjs.map +1 -1
  79. package/dist/index26.js +31 -19
  80. package/dist/index26.js.map +1 -1
  81. package/dist/index27.cjs +42 -24
  82. package/dist/index27.cjs.map +1 -1
  83. package/dist/index27.js +106 -93
  84. package/dist/index27.js.map +1 -1
  85. package/dist/index28.cjs +106 -93
  86. package/dist/index28.cjs.map +1 -1
  87. package/dist/index28.js +26 -23
  88. package/dist/index28.js.map +1 -1
  89. package/dist/index29.cjs +37 -25
  90. package/dist/index29.cjs.map +1 -1
  91. package/dist/index29.js +107 -26
  92. package/dist/index29.js.map +1 -1
  93. package/dist/index30.cjs +110 -37
  94. package/dist/index30.cjs.map +1 -1
  95. package/dist/index30.js +21 -113
  96. package/dist/index30.js.map +1 -1
  97. package/dist/index31.cjs +19 -125
  98. package/dist/index31.cjs.map +1 -1
  99. package/dist/index31.js +26 -17
  100. package/dist/index31.js.map +1 -1
  101. package/dist/index32.cjs +37 -20
  102. package/dist/index32.cjs.map +1 -1
  103. package/dist/index32.js +108 -104
  104. package/dist/index32.js.map +1 -1
  105. package/dist/index33.cjs +122 -103
  106. package/dist/index33.cjs.map +1 -1
  107. package/dist/index33.js +17 -4
  108. package/dist/index33.js.map +1 -1
  109. package/dist/index34.cjs +20 -5
  110. package/dist/index34.cjs.map +1 -1
  111. package/dist/index34.js +106 -58
  112. package/dist/index34.js.map +1 -1
  113. package/dist/index35.cjs +106 -57
  114. package/dist/index35.cjs.map +1 -1
  115. package/dist/index35.js +4 -22
  116. package/dist/index35.js.map +1 -1
  117. package/dist/index36.cjs +5 -31
  118. package/dist/index36.cjs.map +1 -1
  119. package/dist/index36.js +55 -44
  120. package/dist/index36.js.map +1 -1
  121. package/dist/index37.cjs +55 -44
  122. package/dist/index37.cjs.map +1 -1
  123. package/dist/index37.js +21 -31
  124. package/dist/index37.js.map +1 -1
  125. package/dist/index38.cjs +30 -45
  126. package/dist/index38.cjs.map +1 -1
  127. package/dist/index38.js +46 -141
  128. package/dist/index38.js.map +1 -1
  129. package/dist/index39.cjs +46 -141
  130. package/dist/index39.cjs.map +1 -1
  131. package/dist/index39.js +31 -41
  132. package/dist/index39.js.map +1 -1
  133. package/dist/index40.cjs +45 -60
  134. package/dist/index40.cjs.map +1 -1
  135. package/dist/index40.js +139 -163
  136. package/dist/index40.js.map +1 -1
  137. package/dist/index41.cjs +137 -161
  138. package/dist/index41.cjs.map +1 -1
  139. package/dist/index41.js +41 -12
  140. package/dist/index41.js.map +1 -1
  141. package/dist/index42.cjs +60 -14
  142. package/dist/index42.cjs.map +1 -1
  143. package/dist/index42.js +167 -15
  144. package/dist/index42.js.map +1 -1
  145. package/dist/index43.cjs +166 -14
  146. package/dist/index43.cjs.map +1 -1
  147. package/dist/index43.js +12 -15
  148. package/dist/index43.js.map +1 -1
  149. package/dist/index44.cjs +14 -21
  150. package/dist/index44.cjs.map +1 -1
  151. package/dist/index44.js +15 -28
  152. package/dist/index44.js.map +1 -1
  153. package/dist/index45.cjs +14 -27
  154. package/dist/index45.cjs.map +1 -1
  155. package/dist/index45.js +10 -8
  156. package/dist/index45.js.map +1 -1
  157. package/dist/index46.cjs +11 -8
  158. package/dist/index46.cjs.map +1 -1
  159. package/dist/index46.js +22 -15
  160. package/dist/index46.js.map +1 -1
  161. package/dist/index47.cjs +22 -15
  162. package/dist/index47.cjs.map +1 -1
  163. package/dist/index47.js +9 -13
  164. package/dist/index47.js.map +1 -1
  165. package/dist/index48.cjs +10 -16
  166. package/dist/index48.cjs.map +1 -1
  167. package/dist/index48.js +18 -25
  168. package/dist/index48.js.map +1 -1
  169. package/dist/index49.cjs +18 -25
  170. package/dist/index49.cjs.map +1 -1
  171. package/dist/index49.js +17 -14
  172. package/dist/index49.js.map +1 -1
  173. package/dist/index50.cjs +24 -17
  174. package/dist/index50.cjs.map +1 -1
  175. package/dist/index50.js +28 -28
  176. package/dist/index50.js.map +1 -1
  177. package/dist/index51.cjs +27 -28
  178. package/dist/index51.cjs.map +1 -1
  179. package/dist/index51.js +14 -17
  180. package/dist/index51.js.map +1 -1
  181. package/dist/index52.cjs +17 -22
  182. package/dist/index52.cjs.map +1 -1
  183. package/dist/index52.js +23 -23
  184. package/dist/index52.js.map +1 -1
  185. package/dist/index53.cjs +23 -23
  186. package/dist/index53.cjs.map +1 -1
  187. package/dist/index53.js +17 -10
  188. package/dist/index53.js.map +1 -1
  189. package/dist/index54.cjs +22 -11
  190. package/dist/index54.cjs.map +1 -1
  191. package/dist/index54.js +28 -14
  192. package/dist/index54.js.map +1 -1
  193. package/dist/index55.cjs +28 -13
  194. package/dist/index55.cjs.map +1 -1
  195. package/dist/index55.js +17 -11
  196. package/dist/index55.js.map +1 -1
  197. package/dist/index56.cjs +23 -13
  198. package/dist/index56.cjs.map +1 -1
  199. package/dist/index56.js +24 -16
  200. package/dist/index56.js.map +1 -1
  201. package/dist/index57.cjs +24 -15
  202. package/dist/index57.cjs.map +1 -1
  203. package/dist/index57.js +10 -9
  204. package/dist/index57.js.map +1 -1
  205. package/dist/index58.cjs +11 -12
  206. package/dist/index58.cjs.map +1 -1
  207. package/dist/index58.js +12 -87
  208. package/dist/index58.js.map +1 -1
  209. package/dist/index59.cjs +12 -89
  210. package/dist/index59.cjs.map +1 -1
  211. package/dist/index59.js +11 -21
  212. package/dist/index59.js.map +1 -1
  213. package/dist/index60.cjs +13 -30
  214. package/dist/index60.cjs.map +1 -1
  215. package/dist/index60.js +17 -43
  216. package/dist/index60.js.map +1 -1
  217. package/dist/index61.cjs +16 -44
  218. package/dist/index61.cjs.map +1 -1
  219. package/dist/index61.js +9 -57
  220. package/dist/index61.js.map +1 -1
  221. package/dist/index62.cjs +11 -83
  222. package/dist/index62.cjs.map +1 -1
  223. package/dist/index62.js +83 -426
  224. package/dist/index62.js.map +1 -1
  225. package/dist/index63.cjs +82 -427
  226. package/dist/index63.cjs.map +1 -1
  227. package/dist/index63.js +21 -59
  228. package/dist/index63.js.map +1 -1
  229. package/dist/index64.cjs +30 -87
  230. package/dist/index64.cjs.map +1 -1
  231. package/dist/index64.js +44 -240
  232. package/dist/index64.js.map +1 -1
  233. package/dist/index65.cjs +43 -239
  234. package/dist/index65.cjs.map +1 -1
  235. package/dist/index65.js +57 -43
  236. package/dist/index65.js.map +1 -1
  237. package/dist/index66.cjs +84 -63
  238. package/dist/index66.cjs.map +1 -1
  239. package/dist/index66.js +426 -73
  240. package/dist/index66.js.map +1 -1
  241. package/dist/index67.cjs +426 -71
  242. package/dist/index67.cjs.map +1 -1
  243. package/dist/index67.js +59 -21
  244. package/dist/index67.js.map +1 -1
  245. package/dist/index68.cjs +87 -30
  246. package/dist/index68.cjs.map +1 -1
  247. package/dist/index68.js +233 -88
  248. package/dist/index68.js.map +1 -1
  249. package/dist/index69.cjs +232 -89
  250. package/dist/index69.cjs.map +1 -1
  251. package/dist/index69.js +40 -16
  252. package/dist/index69.js.map +1 -1
  253. package/dist/index70.cjs +56 -20
  254. package/dist/index70.cjs.map +1 -1
  255. package/dist/index70.js +72 -145
  256. package/dist/index70.js.map +1 -1
  257. package/dist/index71.cjs +72 -145
  258. package/dist/index71.cjs.map +1 -1
  259. package/dist/index71.js +25 -0
  260. package/dist/index71.js.map +1 -0
  261. package/dist/index72.cjs +34 -0
  262. package/dist/index72.cjs.map +1 -0
  263. package/dist/index72.js +101 -0
  264. package/dist/index72.js.map +1 -0
  265. package/dist/index73.cjs +105 -0
  266. package/dist/index73.cjs.map +1 -0
  267. package/dist/index73.js +23 -0
  268. package/dist/index73.js.map +1 -0
  269. package/dist/index74.cjs +31 -0
  270. package/dist/index74.cjs.map +1 -0
  271. package/dist/index74.js +159 -0
  272. package/dist/index74.js.map +1 -0
  273. package/dist/index75.cjs +161 -0
  274. package/dist/index75.cjs.map +1 -0
  275. package/dist/index8.js.map +1 -1
  276. package/dist/index9.cjs.map +1 -1
  277. package/dist/index9.js.map +1 -1
  278. package/dist/style.css +216 -45
  279. package/package.json +2 -2
package/dist/index18.cjs CHANGED
@@ -1,438 +1,16 @@
1
1
  "use client";
2
- const require_runtime = require("./index2.cjs");
3
2
  const require_cx = require("./index4.cjs");
4
- const require_toast_module = require("./index17.cjs");
5
- let react = require("react");
3
+ const require_alert_module = require("./index17.cjs");
6
4
  let react_jsx_runtime = require("react/jsx-runtime");
7
- let _radix_ui_react_toast = require("@radix-ui/react-toast");
8
- _radix_ui_react_toast = require_runtime.__toESM(_radix_ui_react_toast, 1);
9
- //#region src/components/toast/ToastContext.tsx
10
- /** Default provider configuration. */
11
- var DEFAULT_CONFIG = {
12
- position: "top-right",
13
- maxToasts: 5,
14
- defaultDuration: 4e3,
15
- pauseOnHover: true,
16
- pauseOnFocusLoss: true
17
- };
18
- var ToastContext = (0, react.createContext)(void 0);
19
- var toastIdCounter = 0;
20
- var generateToastId = () => `toast-${++toastIdCounter}-${Date.now()}`;
21
- /**
22
- * Toast notification context provider.
23
- *
24
- * @remarks
25
- * Wrap your app (or a section) to enable `useToast` calls. Supports configurable placement,
26
- * maximum visible toasts, and pause behavior on hover or window blur.
27
- *
28
- * @param props.children - React subtree that can consume the toast context.
29
- * @param props.config - Optional provider configuration overrides.
30
- */
31
- function ToastProvider({ children, config }) {
32
- const [toasts, setToasts] = (0, react.useState)([]);
33
- const [isPaused, setIsPaused] = (0, react.useState)(false);
34
- const merged = (0, react.useMemo)(() => ({
35
- ...DEFAULT_CONFIG,
36
- ...config
37
- }), [config]);
38
- const push = (0, react.useCallback)((message, options = {}) => {
39
- const id = generateToastId();
40
- setToasts((prev) => {
41
- const next = [...prev, {
42
- id,
43
- message,
44
- type: options.type ?? "info",
45
- duration: options.duration ?? (options.type === "error" ? 6e3 : merged.defaultDuration),
46
- dismissible: options.dismissible ?? true,
47
- copyable: options.copyable ?? false,
48
- action: options.action
49
- }];
50
- if (next.length > merged.maxToasts) next.shift();
51
- return next;
52
- });
53
- return id;
54
- }, [merged.defaultDuration, merged.maxToasts]);
55
- const success = (0, react.useCallback)((message, options) => push(message, {
56
- ...options,
57
- type: "success"
58
- }), [push]);
59
- const error = (0, react.useCallback)((message, options) => push(message, {
60
- copyable: true,
61
- ...options,
62
- type: "error"
63
- }), [push]);
64
- const warning = (0, react.useCallback)((message, options) => push(message, {
65
- ...options,
66
- type: "warning"
67
- }), [push]);
68
- const info = (0, react.useCallback)((message, options) => push(message, {
69
- ...options,
70
- type: "info"
71
- }), [push]);
72
- const dismiss = (0, react.useCallback)((id) => {
73
- setToasts((prev) => prev.filter((t) => t.id !== id));
74
- }, []);
75
- const dismissAll = (0, react.useCallback)(() => setToasts([]), []);
76
- (0, react.useEffect)(() => {
77
- if (!merged.pauseOnFocusLoss) return;
78
- const handleVisibility = () => setIsPaused(document.visibilityState !== "visible");
79
- document.addEventListener("visibilitychange", handleVisibility);
80
- return () => document.removeEventListener("visibilitychange", handleVisibility);
81
- }, [merged.pauseOnFocusLoss]);
82
- const value = (0, react.useMemo)(() => ({
83
- toasts,
84
- push,
85
- success,
86
- error,
87
- warning,
88
- info,
89
- dismiss,
90
- dismissAll
91
- }), [
92
- toasts,
93
- push,
94
- success,
95
- error,
96
- warning,
97
- info,
98
- dismiss,
99
- dismissAll
100
- ]);
101
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToastContext.Provider, {
102
- value,
103
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_radix_ui_react_toast.Provider, {
104
- swipeDirection: "right",
105
- children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToastContainer, {
106
- toasts,
107
- position: merged.position,
108
- pauseOnHover: merged.pauseOnHover,
109
- isPaused,
110
- onDismiss: dismiss,
111
- onPauseChange: setIsPaused
112
- })]
113
- })
5
+ //#region src/components/alert/Alert.tsx
6
+ function Alert({ tone, children, className }) {
7
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8
+ className: require_cx.cx(require_alert_module.default.alert, require_alert_module.default[tone], className),
9
+ role: "alert",
10
+ children
114
11
  });
115
12
  }
116
- /**
117
- * Hook to access the toast API.
118
- *
119
- * @remarks
120
- * Exposes `push`, intent helpers (`success`, `error`, `warning`, `info`), and dismissal helpers.
121
- * Must be called within a `ToastProvider`.
122
- *
123
- * @throws Error if used outside of a `ToastProvider`.
124
- */
125
- function useToast() {
126
- const ctx = (0, react.useContext)(ToastContext);
127
- if (!ctx) throw new Error("useToast must be used within a ToastProvider");
128
- return ctx;
129
- }
130
- /** Renders the positioned toast stack. */
131
- function ToastContainer({ toasts, position, pauseOnHover, isPaused, onDismiss, onPauseChange }) {
132
- const posClass = (() => {
133
- switch (position) {
134
- case "top-left": return "topLeft";
135
- case "top-center": return "topCenter";
136
- case "bottom-right": return "bottomRight";
137
- case "bottom-left": return "bottomLeft";
138
- case "bottom-center": return "bottomCenter";
139
- default: return "topRight";
140
- }
141
- })();
142
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [toasts.map((toast) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToastItem, {
143
- toast,
144
- isPaused,
145
- onDismiss
146
- }, toast.id)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_toast.Viewport, {
147
- className: require_cx.cx(require_toast_module.default.stack, require_toast_module.default[posClass]),
148
- label: "Notifications",
149
- onMouseEnter: () => pauseOnHover && onPauseChange(true),
150
- onMouseLeave: () => pauseOnHover && onPauseChange(false)
151
- })] });
152
- }
153
- /** Individual toast item with timers and actions. */
154
- function ToastItem({ toast, isPaused, onDismiss }) {
155
- const [open, setOpen] = (0, react.useState)(true);
156
- const [copyState, setCopyState] = (0, react.useState)("idle");
157
- const copyTimerRef = (0, react.useRef)(null);
158
- const timerRef = (0, react.useRef)(null);
159
- const startRef = (0, react.useRef)(0);
160
- const remainingRef = (0, react.useRef)(toast.duration ?? 0);
161
- const closingRef = (0, react.useRef)(false);
162
- const palette = getPalette(toast.type);
163
- const styleVars = {
164
- ["--toast-bg"]: palette.background,
165
- ["--toast-border"]: palette.border,
166
- ["--toast-accent"]: palette.accent,
167
- ["--toast-text"]: palette.text,
168
- ["--toast-action-bg"]: palette.actionBg,
169
- ["--toast-action-border"]: palette.actionBorder
170
- };
171
- const stopTimer = () => {
172
- if (timerRef.current) {
173
- window.clearTimeout(timerRef.current);
174
- timerRef.current = null;
175
- }
176
- };
177
- const triggerDismiss = (0, react.useCallback)(() => {
178
- if (closingRef.current) return;
179
- closingRef.current = true;
180
- setOpen(false);
181
- stopTimer();
182
- window.setTimeout(() => onDismiss(toast.id), 160);
183
- }, [onDismiss, toast.id]);
184
- const schedule = (0, react.useCallback)((delay) => {
185
- if (!delay || delay <= 0) {
186
- triggerDismiss();
187
- return;
188
- }
189
- startRef.current = performance.now();
190
- stopTimer();
191
- timerRef.current = window.setTimeout(() => triggerDismiss(), delay);
192
- }, [triggerDismiss]);
193
- (0, react.useEffect)(() => {
194
- if (!toast.duration || toast.duration <= 0) return void 0;
195
- schedule(toast.duration);
196
- return stopTimer;
197
- }, [schedule, toast.duration]);
198
- (0, react.useEffect)(() => {
199
- if (!toast.duration || toast.duration <= 0) return;
200
- if (isPaused) {
201
- const elapsed = performance.now() - startRef.current;
202
- remainingRef.current = Math.max(0, remainingRef.current - elapsed);
203
- stopTimer();
204
- } else schedule(remainingRef.current);
205
- }, [
206
- isPaused,
207
- schedule,
208
- toast.duration
209
- ]);
210
- (0, react.useEffect)(() => {
211
- return () => {
212
- if (copyTimerRef.current) window.clearTimeout(copyTimerRef.current);
213
- };
214
- }, []);
215
- const handleCopy = (0, react.useCallback)(async () => {
216
- if (copyTimerRef.current) window.clearTimeout(copyTimerRef.current);
217
- try {
218
- if (!navigator.clipboard) throw new Error("Clipboard API unavailable");
219
- await navigator.clipboard.writeText(toast.message);
220
- setCopyState("copied");
221
- } catch {
222
- setCopyState("failed");
223
- }
224
- copyTimerRef.current = window.setTimeout(() => setCopyState("idle"), 1800);
225
- }, [toast.message]);
226
- const icon = getIcon(toast.type);
227
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_radix_ui_react_toast.Root, {
228
- open,
229
- onOpenChange: (nextOpen) => {
230
- if (!nextOpen) triggerDismiss();
231
- },
232
- duration: 2147483647,
233
- className: require_toast_module.default.toast,
234
- style: styleVars,
235
- children: [
236
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
237
- className: require_toast_module.default.icon,
238
- "aria-hidden": true,
239
- children: icon
240
- }),
241
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
242
- className: require_toast_module.default.body,
243
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_toast.Description, {
244
- className: require_toast_module.default.message,
245
- children: toast.message
246
- }), toast.action && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
247
- className: require_toast_module.default.actions,
248
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_toast.Action, {
249
- asChild: true,
250
- altText: toast.action.label,
251
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
252
- type: "button",
253
- className: require_toast_module.default.actionButton,
254
- onClick: () => {
255
- toast.action?.onClick();
256
- triggerDismiss();
257
- },
258
- children: toast.action.label
259
- })
260
- })
261
- })]
262
- }),
263
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
264
- className: require_toast_module.default.controls,
265
- children: [toast.copyable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
266
- type: "button",
267
- className: require_cx.cx(require_toast_module.default.iconButton, copyState === "failed" && require_toast_module.default.iconButtonError),
268
- "aria-label": "Copy message",
269
- onClick: handleCopy,
270
- children: copyState === "copied" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
271
- width: "13",
272
- height: "13",
273
- viewBox: "0 0 13 13",
274
- fill: "none",
275
- "aria-hidden": true,
276
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
277
- d: "M2 6.5l3 3 6-6",
278
- stroke: "currentColor",
279
- strokeWidth: "1.5",
280
- strokeLinecap: "round",
281
- strokeLinejoin: "round"
282
- })
283
- }) : copyState === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
284
- width: "13",
285
- height: "13",
286
- viewBox: "0 0 13 13",
287
- fill: "none",
288
- "aria-hidden": true,
289
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
290
- d: "M10 3L3 10M3 3l7 7",
291
- stroke: "currentColor",
292
- strokeWidth: "1.5",
293
- strokeLinecap: "round"
294
- })
295
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
296
- width: "13",
297
- height: "13",
298
- viewBox: "0 0 13 13",
299
- fill: "none",
300
- "aria-hidden": true,
301
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
302
- x: "4.5",
303
- y: "1.5",
304
- width: "7",
305
- height: "7",
306
- rx: "1.5",
307
- stroke: "currentColor",
308
- strokeWidth: "1.25"
309
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
310
- d: "M1.5 5.5v5a1.5 1.5 0 001.5 1.5h5",
311
- stroke: "currentColor",
312
- strokeWidth: "1.25",
313
- strokeLinecap: "round"
314
- })]
315
- })
316
- }), toast.dismissible !== false && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_toast.Close, {
317
- asChild: true,
318
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
319
- type: "button",
320
- className: require_toast_module.default.iconButton,
321
- "aria-label": "Dismiss notification",
322
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
323
- width: "13",
324
- height: "13",
325
- viewBox: "0 0 13 13",
326
- fill: "none",
327
- "aria-hidden": true,
328
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
329
- d: "M10 3L3 10M3 3l7 7",
330
- stroke: "currentColor",
331
- strokeWidth: "1.5",
332
- strokeLinecap: "round"
333
- })
334
- })
335
- })
336
- })]
337
- })
338
- ]
339
- });
340
- }
341
- function getPalette(type) {
342
- switch (type) {
343
- case "success": return {
344
- background: "color-mix(in srgb, var(--success) 12%, var(--popover))",
345
- border: "color-mix(in srgb, var(--success) 30%, transparent)",
346
- accent: "var(--success)",
347
- text: "var(--popover-foreground)",
348
- actionBg: "color-mix(in srgb, var(--success) 14%, transparent)",
349
- actionBorder: "color-mix(in srgb, var(--success) 35%, transparent)"
350
- };
351
- case "error": return {
352
- background: "color-mix(in srgb, var(--destructive) 12%, var(--popover))",
353
- border: "color-mix(in srgb, var(--destructive) 30%, transparent)",
354
- accent: "var(--destructive)",
355
- text: "var(--popover-foreground)",
356
- actionBg: "color-mix(in srgb, var(--destructive) 14%, transparent)",
357
- actionBorder: "color-mix(in srgb, var(--destructive) 35%, transparent)"
358
- };
359
- case "warning": return {
360
- background: "color-mix(in srgb, var(--warning) 12%, var(--popover))",
361
- border: "color-mix(in srgb, var(--warning) 30%, transparent)",
362
- accent: "var(--warning)",
363
- text: "var(--popover-foreground)",
364
- actionBg: "color-mix(in srgb, var(--warning) 14%, transparent)",
365
- actionBorder: "color-mix(in srgb, var(--warning) 35%, transparent)"
366
- };
367
- default: return {
368
- background: "color-mix(in srgb, var(--primary) 12%, var(--popover))",
369
- border: "color-mix(in srgb, var(--primary) 30%, transparent)",
370
- accent: "var(--primary)",
371
- text: "var(--popover-foreground)",
372
- actionBg: "color-mix(in srgb, var(--primary) 14%, transparent)",
373
- actionBorder: "color-mix(in srgb, var(--primary) 35%, transparent)"
374
- };
375
- }
376
- }
377
- function getIcon(type) {
378
- switch (type) {
379
- case "success": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
380
- width: "16",
381
- height: "16",
382
- viewBox: "0 0 16 16",
383
- fill: "none",
384
- "aria-hidden": true,
385
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
386
- d: "M3 8l3.5 3.5L13 4.5",
387
- stroke: "currentColor",
388
- strokeWidth: "1.75",
389
- strokeLinecap: "round",
390
- strokeLinejoin: "round"
391
- })
392
- });
393
- case "error": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
394
- width: "16",
395
- height: "16",
396
- viewBox: "0 0 16 16",
397
- fill: "none",
398
- "aria-hidden": true,
399
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
400
- d: "M4 4l8 8M12 4l-8 8",
401
- stroke: "currentColor",
402
- strokeWidth: "1.75",
403
- strokeLinecap: "round"
404
- })
405
- });
406
- case "warning": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
407
- width: "16",
408
- height: "16",
409
- viewBox: "0 0 16 16",
410
- fill: "none",
411
- "aria-hidden": true,
412
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
413
- d: "M8 3v6M8 11.5v1",
414
- stroke: "currentColor",
415
- strokeWidth: "1.75",
416
- strokeLinecap: "round"
417
- })
418
- });
419
- default: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
420
- width: "16",
421
- height: "16",
422
- viewBox: "0 0 16 16",
423
- fill: "none",
424
- "aria-hidden": true,
425
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
426
- d: "M8 7v5M8 4.5v.5",
427
- stroke: "currentColor",
428
- strokeWidth: "1.75",
429
- strokeLinecap: "round"
430
- })
431
- });
432
- }
433
- }
434
13
  //#endregion
435
- exports.ToastProvider = ToastProvider;
436
- exports.useToast = useToast;
14
+ exports.Alert = Alert;
437
15
 
438
16
  //# sourceMappingURL=index18.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index18.cjs","names":[],"sources":["../src/components/toast/ToastContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { cx } from \"../../utils/cx\";\nimport type {\n Toast,\n ToastConfig,\n ToastContextValue,\n ToastOptions,\n ToastPosition,\n ToastType,\n} from \"./types\";\nimport styles from \"./toast.module.css\";\n\n/** Default provider configuration. */\nconst DEFAULT_CONFIG: Required<ToastConfig> = {\n position: \"top-right\",\n maxToasts: 5,\n defaultDuration: 4000,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n};\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined);\n\nlet toastIdCounter = 0;\nconst generateToastId = () => `toast-${++toastIdCounter}-${Date.now()}`;\n\n/**\n * Toast notification context provider.\n *\n * @remarks\n * Wrap your app (or a section) to enable `useToast` calls. Supports configurable placement,\n * maximum visible toasts, and pause behavior on hover or window blur.\n *\n * @param props.children - React subtree that can consume the toast context.\n * @param props.config - Optional provider configuration overrides.\n */\nexport function ToastProvider({\n children,\n config,\n}: {\n children: ReactNode;\n config?: ToastConfig;\n}) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n const [isPaused, setIsPaused] = useState(false);\n const merged = useMemo(() => ({ ...DEFAULT_CONFIG, ...config }), [config]);\n\n const push = useCallback(\n (message: string, options: ToastOptions = {}) => {\n const id = generateToastId();\n setToasts((prev) => {\n const next: Toast[] = [\n ...prev,\n {\n id,\n message,\n type: options.type ?? \"info\",\n duration: options.duration ?? (options.type === \"error\" ? 6000 : merged.defaultDuration),\n dismissible: options.dismissible ?? true,\n copyable: options.copyable ?? false,\n action: options.action,\n },\n ];\n if (next.length > merged.maxToasts) next.shift();\n return next;\n });\n return id;\n },\n [merged.defaultDuration, merged.maxToasts],\n );\n\n const success = useCallback(\n (message: string, options?: Omit<ToastOptions, \"type\">) => push(message, { ...options, type: \"success\" }),\n [push],\n );\n const error = useCallback(\n (message: string, options?: Omit<ToastOptions, \"type\">) =>\n push(message, { copyable: true, ...options, type: \"error\" }),\n [push],\n );\n const warning = useCallback(\n (message: string, options?: Omit<ToastOptions, \"type\">) => push(message, { ...options, type: \"warning\" }),\n [push],\n );\n const info = useCallback(\n (message: string, options?: Omit<ToastOptions, \"type\">) => push(message, { ...options, type: \"info\" }),\n [push],\n );\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const dismissAll = useCallback(() => setToasts([]), []);\n\n useEffect(() => {\n if (!merged.pauseOnFocusLoss) return;\n const handleVisibility = () => setIsPaused(document.visibilityState !== \"visible\");\n document.addEventListener(\"visibilitychange\", handleVisibility);\n return () => document.removeEventListener(\"visibilitychange\", handleVisibility);\n }, [merged.pauseOnFocusLoss]);\n\n const value = useMemo<ToastContextValue>(\n () => ({ toasts, push, success, error, warning, info, dismiss, dismissAll }),\n [toasts, push, success, error, warning, info, dismiss, dismissAll],\n );\n\n return (\n <ToastContext.Provider value={value}>\n <ToastPrimitive.Provider swipeDirection=\"right\">\n {children}\n <ToastContainer\n toasts={toasts}\n position={merged.position}\n pauseOnHover={merged.pauseOnHover}\n isPaused={isPaused}\n onDismiss={dismiss}\n onPauseChange={setIsPaused}\n />\n </ToastPrimitive.Provider>\n </ToastContext.Provider>\n );\n}\n\n/**\n * Hook to access the toast API.\n *\n * @remarks\n * Exposes `push`, intent helpers (`success`, `error`, `warning`, `info`), and dismissal helpers.\n * Must be called within a `ToastProvider`.\n *\n * @throws Error if used outside of a `ToastProvider`.\n */\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within a ToastProvider\");\n return ctx;\n}\n\n/** Renders the positioned toast stack. */\nfunction ToastContainer({\n toasts,\n position,\n pauseOnHover,\n isPaused,\n onDismiss,\n onPauseChange,\n}: {\n toasts: Toast[];\n position: ToastPosition;\n pauseOnHover: boolean;\n isPaused: boolean;\n onDismiss: (id: string) => void;\n onPauseChange: (paused: boolean) => void;\n}) {\n const posClass = (() => {\n switch (position) {\n case \"top-left\":\n return \"topLeft\";\n case \"top-center\":\n return \"topCenter\";\n case \"bottom-right\":\n return \"bottomRight\";\n case \"bottom-left\":\n return \"bottomLeft\";\n case \"bottom-center\":\n return \"bottomCenter\";\n case \"top-right\":\n default:\n return \"topRight\";\n }\n })();\n\n return (\n <>\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} isPaused={isPaused} onDismiss={onDismiss} />\n ))}\n <ToastPrimitive.Viewport\n className={cx(styles.stack, styles[posClass])}\n label=\"Notifications\"\n onMouseEnter={() => pauseOnHover && onPauseChange(true)}\n onMouseLeave={() => pauseOnHover && onPauseChange(false)}\n />\n </>\n );\n}\n\n/** Individual toast item with timers and actions. */\nfunction ToastItem({\n toast,\n isPaused,\n onDismiss,\n}: {\n toast: Toast;\n isPaused: boolean;\n onDismiss: (id: string) => void;\n}) {\n const [open, setOpen] = useState(true);\n const [copyState, setCopyState] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n const copyTimerRef = useRef<number | null>(null);\n const timerRef = useRef<number | null>(null);\n const startRef = useRef<number>(0);\n const remainingRef = useRef<number>(toast.duration ?? 0);\n const closingRef = useRef(false);\n\n const palette = getPalette(toast.type);\n const styleVars: CSSProperties = {\n [\"--toast-bg\" as any]: palette.background,\n [\"--toast-border\" as any]: palette.border,\n [\"--toast-accent\" as any]: palette.accent,\n [\"--toast-text\" as any]: palette.text,\n [\"--toast-action-bg\" as any]: palette.actionBg,\n [\"--toast-action-border\" as any]: palette.actionBorder,\n };\n\n const stopTimer = () => {\n if (timerRef.current) {\n window.clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n const triggerDismiss = useCallback(() => {\n if (closingRef.current) return;\n closingRef.current = true;\n setOpen(false);\n stopTimer();\n window.setTimeout(() => onDismiss(toast.id), 160);\n }, [onDismiss, toast.id]);\n\n const schedule = useCallback(\n (delay: number) => {\n if (!delay || delay <= 0) {\n triggerDismiss();\n return;\n }\n startRef.current = performance.now();\n stopTimer();\n timerRef.current = window.setTimeout(() => triggerDismiss(), delay);\n },\n [triggerDismiss],\n );\n\n useEffect(() => {\n if (!toast.duration || toast.duration <= 0) return undefined;\n schedule(toast.duration);\n return stopTimer;\n }, [schedule, toast.duration]);\n\n useEffect(() => {\n if (!toast.duration || toast.duration <= 0) return;\n if (isPaused) {\n const elapsed = performance.now() - startRef.current;\n remainingRef.current = Math.max(0, remainingRef.current - elapsed);\n stopTimer();\n } else {\n schedule(remainingRef.current);\n }\n }, [isPaused, schedule, toast.duration]);\n\n useEffect(() => {\n return () => {\n if (copyTimerRef.current) window.clearTimeout(copyTimerRef.current);\n };\n }, []);\n\n const handleCopy = useCallback(async () => {\n if (copyTimerRef.current) window.clearTimeout(copyTimerRef.current);\n try {\n if (!navigator.clipboard) throw new Error(\"Clipboard API unavailable\");\n await navigator.clipboard.writeText(toast.message);\n setCopyState(\"copied\");\n } catch {\n setCopyState(\"failed\");\n }\n copyTimerRef.current = window.setTimeout(() => setCopyState(\"idle\"), 1800);\n }, [toast.message]);\n\n const icon = getIcon(toast.type);\n\n return (\n <ToastPrimitive.Root\n open={open}\n onOpenChange={(nextOpen: boolean) => {\n if (!nextOpen) triggerDismiss();\n }}\n duration={2147483647}\n className={styles.toast}\n style={styleVars}\n >\n <span className={styles.icon} aria-hidden>\n {icon}\n </span>\n <div className={styles.body}>\n <ToastPrimitive.Description className={styles.message}>\n {toast.message}\n </ToastPrimitive.Description>\n {toast.action && (\n <div className={styles.actions}>\n <ToastPrimitive.Action asChild altText={toast.action.label}>\n <button\n type=\"button\"\n className={styles.actionButton}\n onClick={() => {\n toast.action?.onClick();\n triggerDismiss();\n }}\n >\n {toast.action.label}\n </button>\n </ToastPrimitive.Action>\n </div>\n )}\n </div>\n <div className={styles.controls}>\n {toast.copyable && (\n <button\n type=\"button\"\n className={cx(styles.iconButton, copyState === \"failed\" && styles.iconButtonError)}\n aria-label=\"Copy message\"\n onClick={handleCopy}\n >\n {copyState === \"copied\" ? (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path d=\"M2 6.5l3 3 6-6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : copyState === \"failed\" ? (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L3 10M3 3l7 7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4.5\" y=\"1.5\" width=\"7\" height=\"7\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M1.5 5.5v5a1.5 1.5 0 001.5 1.5h5\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" />\n </svg>\n )}\n </button>\n )}\n {toast.dismissible !== false && (\n <ToastPrimitive.Close asChild>\n <button\n type=\"button\"\n className={styles.iconButton}\n aria-label=\"Dismiss notification\"\n >\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L3 10M3 3l7 7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </ToastPrimitive.Close>\n )}\n </div>\n </ToastPrimitive.Root>\n );\n}\n\nfunction getPalette(type: ToastType) {\n switch (type) {\n case \"success\":\n return {\n background: \"color-mix(in srgb, var(--success) 12%, var(--popover))\",\n border: \"color-mix(in srgb, var(--success) 30%, transparent)\",\n accent: \"var(--success)\",\n text: \"var(--popover-foreground)\",\n actionBg: \"color-mix(in srgb, var(--success) 14%, transparent)\",\n actionBorder: \"color-mix(in srgb, var(--success) 35%, transparent)\",\n };\n case \"error\":\n return {\n background: \"color-mix(in srgb, var(--destructive) 12%, var(--popover))\",\n border: \"color-mix(in srgb, var(--destructive) 30%, transparent)\",\n accent: \"var(--destructive)\",\n text: \"var(--popover-foreground)\",\n actionBg: \"color-mix(in srgb, var(--destructive) 14%, transparent)\",\n actionBorder: \"color-mix(in srgb, var(--destructive) 35%, transparent)\",\n };\n case \"warning\":\n return {\n background: \"color-mix(in srgb, var(--warning) 12%, var(--popover))\",\n border: \"color-mix(in srgb, var(--warning) 30%, transparent)\",\n accent: \"var(--warning)\",\n text: \"var(--popover-foreground)\",\n actionBg: \"color-mix(in srgb, var(--warning) 14%, transparent)\",\n actionBorder: \"color-mix(in srgb, var(--warning) 35%, transparent)\",\n };\n case \"info\":\n default:\n return {\n background: \"color-mix(in srgb, var(--primary) 12%, var(--popover))\",\n border: \"color-mix(in srgb, var(--primary) 30%, transparent)\",\n accent: \"var(--primary)\",\n text: \"var(--popover-foreground)\",\n actionBg: \"color-mix(in srgb, var(--primary) 14%, transparent)\",\n actionBorder: \"color-mix(in srgb, var(--primary) 35%, transparent)\",\n };\n }\n}\n\nfunction getIcon(type: ToastType) {\n switch (type) {\n case \"success\":\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M3 8l3.5 3.5L13 4.5\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n case \"error\":\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"warning\":\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M8 3v6M8 11.5v1\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"info\":\n default:\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M8 7v5M8 4.5v.5\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index18.cjs","names":[],"sources":["../src/components/alert/Alert.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./alert.module.css\";\n\nexport type AlertTone = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport type AlertProps = {\n tone: AlertTone;\n children: ReactNode;\n className?: string;\n};\n\nexport function Alert({ tone, children, className }: AlertProps) {\n return (\n <div className={cx(styles.alert, styles[tone], className)} role=\"alert\">\n {children}\n </div>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgB,MAAM,EAAE,MAAM,UAAU,aAAyB;CAC/D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,qBAAA,QAAO,OAAO,qBAAA,QAAO,OAAO,SAAS;EAAG,MAAK;EAC7D;CACE,CAAA;AAET"}
package/dist/index18.js CHANGED
@@ -1,7 +1,45 @@
1
- //#region src/components/input/input.module.css
2
- var input = "uzi-input-module__input__-ipHD";
3
- var input_module_default = { input };
1
+ //#region src/components/toast/toast.module.css
2
+ var stack = "uzi-toast-module__stack__SRrda";
3
+ var topRight = "uzi-toast-module__topRight__WiZzM";
4
+ var topLeft = "uzi-toast-module__topLeft__SzFS9";
5
+ var topCenter = "uzi-toast-module__topCenter__X5W-x";
6
+ var bottomRight = "uzi-toast-module__bottomRight__DMtoS";
7
+ var bottomLeft = "uzi-toast-module__bottomLeft__ZZ7VF";
8
+ var bottomCenter = "uzi-toast-module__bottomCenter__QNJrM";
9
+ var toast = "uzi-toast-module__toast__HNUcj";
10
+ var toastSlideIn = "uzi-toast-module__toastSlideIn__BTXfm";
11
+ var toastSlideOut = "uzi-toast-module__toastSlideOut__mBX-G";
12
+ var toastSwipeOut = "uzi-toast-module__toastSwipeOut__R-jk2";
13
+ var icon = "uzi-toast-module__icon__LIAqr";
14
+ var body = "uzi-toast-module__body__9vzs7";
15
+ var message = "uzi-toast-module__message__TBY65";
16
+ var actions = "uzi-toast-module__actions__Iykd9";
17
+ var actionButton = "uzi-toast-module__actionButton__cvUr0";
18
+ var controls = "uzi-toast-module__controls__LqA4Q";
19
+ var iconButton = "uzi-toast-module__iconButton__FOsOp";
20
+ var iconButtonError = "uzi-toast-module__iconButtonError__NJsLX";
21
+ var toast_module_default = {
22
+ stack,
23
+ topRight,
24
+ topLeft,
25
+ topCenter,
26
+ bottomRight,
27
+ bottomLeft,
28
+ bottomCenter,
29
+ toast,
30
+ toastSlideIn,
31
+ toastSlideOut,
32
+ toastSwipeOut,
33
+ icon,
34
+ body,
35
+ message,
36
+ actions,
37
+ actionButton,
38
+ controls,
39
+ iconButton,
40
+ iconButtonError
41
+ };
4
42
  //#endregion
5
- export { input_module_default as default, input };
43
+ export { actionButton, actions, body, bottomCenter, bottomLeft, bottomRight, controls, toast_module_default as default, icon, iconButton, iconButtonError, message, stack, toast, toastSlideIn, toastSlideOut, toastSwipeOut, topCenter, topLeft, topRight };
6
44
 
7
45
  //# sourceMappingURL=index18.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index18.js","names":[],"sources":["../src/components/input/input.module.css"],"sourcesContent":[".input {\n display: flex;\n width: 100%;\n min-height: 2.25rem;\n border-radius: 0.5rem;\n border: 1px solid var(--ts-input-border, var(--input));\n background: var(--ts-input-bg, var(--background));\n color: var(--ts-input-fg, var(--foreground));\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n box-shadow: var(--ts-input-shadow, 0 1px 2px rgba(0, 0, 0, 0.04));\n transition: border-color 0.15s ease, background 0.15s ease;\n}\n\n.input::placeholder {\n color: var(--ts-input-placeholder, var(--muted-foreground));\n}\n\n.input:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.input:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index18.js","names":[],"sources":["../src/components/toast/toast.module.css"],"sourcesContent":[".stack {\n position: fixed;\n z-index: var(--uzi-toast-z-index, 2147483000);\n display: flex;\n flex-direction: column;\n gap: 10px;\n pointer-events: none;\n}\n\n.topRight {\n top: 16px;\n right: 16px;\n align-items: flex-end;\n}\n\n.topLeft {\n top: 16px;\n left: 16px;\n align-items: flex-start;\n}\n\n.topCenter {\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n.bottomRight {\n bottom: 16px;\n right: 16px;\n align-items: flex-end;\n}\n\n.bottomLeft {\n bottom: 16px;\n left: 16px;\n align-items: flex-start;\n}\n\n.bottomCenter {\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n.toast {\n pointer-events: auto;\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 280px;\n max-width: min(420px, calc(100vw - 32px));\n padding: 12px 12px 12px 14px;\n border-radius: 10px;\n border: 1px solid var(--toast-border, var(--border));\n background: var(--toast-bg, var(--popover));\n color: var(--toast-text, var(--popover-foreground));\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n animation: toastSlideIn 180ms ease-out;\n}\n\n/* Left accent strip */\n.toast::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--toast-accent, transparent);\n border-radius: 10px 0 0 10px;\n}\n\n.toast[data-state=\"closed\"] {\n animation: toastSlideOut 160ms ease-in forwards;\n}\n\n.toast[data-swipe=\"move\"] {\n transform: translateX(var(--radix-toast-swipe-move-x));\n}\n\n.toast[data-swipe=\"cancel\"] {\n transform: translateX(0);\n transition: transform 180ms ease-out;\n}\n\n.toast[data-swipe=\"end\"] {\n animation: toastSwipeOut 160ms ease-out forwards;\n}\n\n.icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--toast-accent, var(--foreground));\n margin-top: 1px;\n}\n\n.body {\n flex: 1;\n min-width: 0;\n display: grid;\n gap: 6px;\n}\n\n.message {\n word-break: break-word;\n font-size: 14px;\n line-height: 1.4;\n}\n\n.actions {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.actionButton {\n padding: 5px 10px;\n font-size: 12px;\n font-weight: 600;\n border-radius: 6px;\n border: 1px solid var(--toast-action-border, var(--border));\n background: var(--toast-action-bg, color-mix(in srgb, var(--foreground) 8%, transparent));\n color: var(--toast-text, var(--popover-foreground));\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.actionButton:hover {\n background: color-mix(in srgb, var(--toast-action-bg, var(--foreground)), var(--foreground) 10%);\n}\n\n.controls {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n margin: -2px -2px -2px 0;\n}\n\n.iconButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 5px;\n background: transparent;\n color: var(--toast-text, var(--popover-foreground));\n opacity: 0.5;\n cursor: pointer;\n transition: opacity 120ms ease, background 120ms ease;\n}\n\n.iconButton:hover {\n opacity: 1;\n background: color-mix(in srgb, var(--foreground) 8%, transparent);\n}\n\n.iconButtonError {\n opacity: 1;\n color: var(--destructive);\n}\n\n.iconButton:focus-visible,\n.actionButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n@keyframes toastSlideIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toastSlideOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-6px);\n }\n}\n\n@keyframes toastSwipeOut {\n from {\n opacity: 1;\n transform: translateX(var(--radix-toast-swipe-end-x));\n }\n\n to {\n opacity: 0;\n transform: translateX(calc(var(--radix-toast-swipe-end-x) * 1.05));\n }\n}\n"],"mappings":""}
package/dist/index19.cjs CHANGED
@@ -1,8 +1,64 @@
1
- //#region src/components/input/input.module.css
2
- var input = "uzi-input-module__input__-ipHD";
3
- var input_module_default = { input };
1
+ //#region src/components/toast/toast.module.css
2
+ var stack = "uzi-toast-module__stack__SRrda";
3
+ var topRight = "uzi-toast-module__topRight__WiZzM";
4
+ var topLeft = "uzi-toast-module__topLeft__SzFS9";
5
+ var topCenter = "uzi-toast-module__topCenter__X5W-x";
6
+ var bottomRight = "uzi-toast-module__bottomRight__DMtoS";
7
+ var bottomLeft = "uzi-toast-module__bottomLeft__ZZ7VF";
8
+ var bottomCenter = "uzi-toast-module__bottomCenter__QNJrM";
9
+ var toast = "uzi-toast-module__toast__HNUcj";
10
+ var toastSlideIn = "uzi-toast-module__toastSlideIn__BTXfm";
11
+ var toastSlideOut = "uzi-toast-module__toastSlideOut__mBX-G";
12
+ var toastSwipeOut = "uzi-toast-module__toastSwipeOut__R-jk2";
13
+ var icon = "uzi-toast-module__icon__LIAqr";
14
+ var body = "uzi-toast-module__body__9vzs7";
15
+ var message = "uzi-toast-module__message__TBY65";
16
+ var actions = "uzi-toast-module__actions__Iykd9";
17
+ var actionButton = "uzi-toast-module__actionButton__cvUr0";
18
+ var controls = "uzi-toast-module__controls__LqA4Q";
19
+ var iconButton = "uzi-toast-module__iconButton__FOsOp";
20
+ var iconButtonError = "uzi-toast-module__iconButtonError__NJsLX";
21
+ var toast_module_default = {
22
+ stack,
23
+ topRight,
24
+ topLeft,
25
+ topCenter,
26
+ bottomRight,
27
+ bottomLeft,
28
+ bottomCenter,
29
+ toast,
30
+ toastSlideIn,
31
+ toastSlideOut,
32
+ toastSwipeOut,
33
+ icon,
34
+ body,
35
+ message,
36
+ actions,
37
+ actionButton,
38
+ controls,
39
+ iconButton,
40
+ iconButtonError
41
+ };
4
42
  //#endregion
5
- exports.default = input_module_default;
6
- exports.input = input;
43
+ exports.actionButton = actionButton;
44
+ exports.actions = actions;
45
+ exports.body = body;
46
+ exports.bottomCenter = bottomCenter;
47
+ exports.bottomLeft = bottomLeft;
48
+ exports.bottomRight = bottomRight;
49
+ exports.controls = controls;
50
+ exports.default = toast_module_default;
51
+ exports.icon = icon;
52
+ exports.iconButton = iconButton;
53
+ exports.iconButtonError = iconButtonError;
54
+ exports.message = message;
55
+ exports.stack = stack;
56
+ exports.toast = toast;
57
+ exports.toastSlideIn = toastSlideIn;
58
+ exports.toastSlideOut = toastSlideOut;
59
+ exports.toastSwipeOut = toastSwipeOut;
60
+ exports.topCenter = topCenter;
61
+ exports.topLeft = topLeft;
62
+ exports.topRight = topRight;
7
63
 
8
64
  //# sourceMappingURL=index19.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index19.cjs","names":[],"sources":["../src/components/input/input.module.css"],"sourcesContent":[".input {\n display: flex;\n width: 100%;\n min-height: 2.25rem;\n border-radius: 0.5rem;\n border: 1px solid var(--ts-input-border, var(--input));\n background: var(--ts-input-bg, var(--background));\n color: var(--ts-input-fg, var(--foreground));\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n box-shadow: var(--ts-input-shadow, 0 1px 2px rgba(0, 0, 0, 0.04));\n transition: border-color 0.15s ease, background 0.15s ease;\n}\n\n.input::placeholder {\n color: var(--ts-input-placeholder, var(--muted-foreground));\n}\n\n.input:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.input:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index19.cjs","names":[],"sources":["../src/components/toast/toast.module.css"],"sourcesContent":[".stack {\n position: fixed;\n z-index: var(--uzi-toast-z-index, 2147483000);\n display: flex;\n flex-direction: column;\n gap: 10px;\n pointer-events: none;\n}\n\n.topRight {\n top: 16px;\n right: 16px;\n align-items: flex-end;\n}\n\n.topLeft {\n top: 16px;\n left: 16px;\n align-items: flex-start;\n}\n\n.topCenter {\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n.bottomRight {\n bottom: 16px;\n right: 16px;\n align-items: flex-end;\n}\n\n.bottomLeft {\n bottom: 16px;\n left: 16px;\n align-items: flex-start;\n}\n\n.bottomCenter {\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n.toast {\n pointer-events: auto;\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 280px;\n max-width: min(420px, calc(100vw - 32px));\n padding: 12px 12px 12px 14px;\n border-radius: 10px;\n border: 1px solid var(--toast-border, var(--border));\n background: var(--toast-bg, var(--popover));\n color: var(--toast-text, var(--popover-foreground));\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n animation: toastSlideIn 180ms ease-out;\n}\n\n/* Left accent strip */\n.toast::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--toast-accent, transparent);\n border-radius: 10px 0 0 10px;\n}\n\n.toast[data-state=\"closed\"] {\n animation: toastSlideOut 160ms ease-in forwards;\n}\n\n.toast[data-swipe=\"move\"] {\n transform: translateX(var(--radix-toast-swipe-move-x));\n}\n\n.toast[data-swipe=\"cancel\"] {\n transform: translateX(0);\n transition: transform 180ms ease-out;\n}\n\n.toast[data-swipe=\"end\"] {\n animation: toastSwipeOut 160ms ease-out forwards;\n}\n\n.icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--toast-accent, var(--foreground));\n margin-top: 1px;\n}\n\n.body {\n flex: 1;\n min-width: 0;\n display: grid;\n gap: 6px;\n}\n\n.message {\n word-break: break-word;\n font-size: 14px;\n line-height: 1.4;\n}\n\n.actions {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.actionButton {\n padding: 5px 10px;\n font-size: 12px;\n font-weight: 600;\n border-radius: 6px;\n border: 1px solid var(--toast-action-border, var(--border));\n background: var(--toast-action-bg, color-mix(in srgb, var(--foreground) 8%, transparent));\n color: var(--toast-text, var(--popover-foreground));\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.actionButton:hover {\n background: color-mix(in srgb, var(--toast-action-bg, var(--foreground)), var(--foreground) 10%);\n}\n\n.controls {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n margin: -2px -2px -2px 0;\n}\n\n.iconButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 5px;\n background: transparent;\n color: var(--toast-text, var(--popover-foreground));\n opacity: 0.5;\n cursor: pointer;\n transition: opacity 120ms ease, background 120ms ease;\n}\n\n.iconButton:hover {\n opacity: 1;\n background: color-mix(in srgb, var(--foreground) 8%, transparent);\n}\n\n.iconButtonError {\n opacity: 1;\n color: var(--destructive);\n}\n\n.iconButton:focus-visible,\n.actionButton:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n@keyframes toastSlideIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toastSlideOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-6px);\n }\n}\n\n@keyframes toastSwipeOut {\n from {\n opacity: 1;\n transform: translateX(var(--radix-toast-swipe-end-x));\n }\n\n to {\n opacity: 0;\n transform: translateX(calc(var(--radix-toast-swipe-end-x) * 1.05));\n }\n}\n"],"mappings":""}