@stableflow/pay-ui 0.0.1-beta-82ede460a5-20260923

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 (307) hide show
  1. package/dist/autocomplete/index.d.ts +27 -0
  2. package/dist/autocomplete/index.js +229 -0
  3. package/dist/autocomplete/index.js.map +1 -0
  4. package/dist/button/index.d.ts +28 -0
  5. package/dist/button/index.js +83 -0
  6. package/dist/button/index.js.map +1 -0
  7. package/dist/card/index.d.ts +7 -0
  8. package/dist/card/index.js +8 -0
  9. package/dist/card/index.js.map +1 -0
  10. package/dist/checkbox/index.d.ts +11 -0
  11. package/dist/checkbox/index.js +54 -0
  12. package/dist/checkbox/index.js.map +1 -0
  13. package/dist/chunk-6OV2OZVR.js +34 -0
  14. package/dist/chunk-6OV2OZVR.js.map +1 -0
  15. package/dist/chunk-AIJAGS5R.js +223 -0
  16. package/dist/chunk-AIJAGS5R.js.map +1 -0
  17. package/dist/chunk-DON56HU7.js +113 -0
  18. package/dist/chunk-DON56HU7.js.map +1 -0
  19. package/dist/chunk-FXENEWNN.js +7 -0
  20. package/dist/chunk-FXENEWNN.js.map +1 -0
  21. package/dist/chunk-J5TQGGEN.js +57 -0
  22. package/dist/chunk-J5TQGGEN.js.map +1 -0
  23. package/dist/chunk-MJ36QLY3.js +23 -0
  24. package/dist/chunk-MJ36QLY3.js.map +1 -0
  25. package/dist/chunk-NZGSPYWG.js +34 -0
  26. package/dist/chunk-NZGSPYWG.js.map +1 -0
  27. package/dist/chunk-OGSFVQK2.js +34 -0
  28. package/dist/chunk-OGSFVQK2.js.map +1 -0
  29. package/dist/chunk-R46DAHYR.js +14 -0
  30. package/dist/chunk-R46DAHYR.js.map +1 -0
  31. package/dist/chunk-R4BKHISR.js +34 -0
  32. package/dist/chunk-R4BKHISR.js.map +1 -0
  33. package/dist/chunk-RUOUGZWI.js +73 -0
  34. package/dist/chunk-RUOUGZWI.js.map +1 -0
  35. package/dist/chunk-SE7Z4ZYP.js +34 -0
  36. package/dist/chunk-SE7Z4ZYP.js.map +1 -0
  37. package/dist/chunk-TUEV2KLC.js +11 -0
  38. package/dist/chunk-TUEV2KLC.js.map +1 -0
  39. package/dist/chunk-VAPGLPZ5.js +184 -0
  40. package/dist/chunk-VAPGLPZ5.js.map +1 -0
  41. package/dist/date-range-picker/index.d.ts +42 -0
  42. package/dist/date-range-picker/index.js +272 -0
  43. package/dist/date-range-picker/index.js.map +1 -0
  44. package/dist/dialog/index.d.ts +7 -0
  45. package/dist/dialog/index.js +116 -0
  46. package/dist/dialog/index.js.map +1 -0
  47. package/dist/drawer/index.d.ts +17 -0
  48. package/dist/drawer/index.js +15 -0
  49. package/dist/drawer/index.js.map +1 -0
  50. package/dist/dropdown/index.d.ts +29 -0
  51. package/dist/dropdown/index.js +198 -0
  52. package/dist/dropdown/index.js.map +1 -0
  53. package/dist/icons/alert.d.ts +6 -0
  54. package/dist/icons/alert.js +9 -0
  55. package/dist/icons/alert.js.map +1 -0
  56. package/dist/icons/all-networks.d.ts +6 -0
  57. package/dist/icons/all-networks.js +30 -0
  58. package/dist/icons/all-networks.js.map +1 -0
  59. package/dist/icons/arrow-down.d.ts +6 -0
  60. package/dist/icons/arrow-down.js +9 -0
  61. package/dist/icons/arrow-down.js.map +1 -0
  62. package/dist/icons/back.d.ts +6 -0
  63. package/dist/icons/back.js +47 -0
  64. package/dist/icons/back.js.map +1 -0
  65. package/dist/icons/bonus.d.ts +6 -0
  66. package/dist/icons/bonus.js +33 -0
  67. package/dist/icons/bonus.js.map +1 -0
  68. package/dist/icons/book.d.ts +6 -0
  69. package/dist/icons/book.js +30 -0
  70. package/dist/icons/book.js.map +1 -0
  71. package/dist/icons/calendar.d.ts +6 -0
  72. package/dist/icons/calendar.js +33 -0
  73. package/dist/icons/calendar.js.map +1 -0
  74. package/dist/icons/cash.d.ts +6 -0
  75. package/dist/icons/cash.js +33 -0
  76. package/dist/icons/cash.js.map +1 -0
  77. package/dist/icons/check.d.ts +6 -0
  78. package/dist/icons/check.js +9 -0
  79. package/dist/icons/check.js.map +1 -0
  80. package/dist/icons/chevron.d.ts +6 -0
  81. package/dist/icons/chevron.js +33 -0
  82. package/dist/icons/chevron.js.map +1 -0
  83. package/dist/icons/close.d.ts +6 -0
  84. package/dist/icons/close.js +9 -0
  85. package/dist/icons/close.js.map +1 -0
  86. package/dist/icons/cloud.d.ts +6 -0
  87. package/dist/icons/cloud.js +33 -0
  88. package/dist/icons/cloud.js.map +1 -0
  89. package/dist/icons/code.d.ts +6 -0
  90. package/dist/icons/code.js +36 -0
  91. package/dist/icons/code.js.map +1 -0
  92. package/dist/icons/copy.d.ts +6 -0
  93. package/dist/icons/copy.js +33 -0
  94. package/dist/icons/copy.js.map +1 -0
  95. package/dist/icons/database.d.ts +6 -0
  96. package/dist/icons/database.js +33 -0
  97. package/dist/icons/database.js.map +1 -0
  98. package/dist/icons/delete.d.ts +6 -0
  99. package/dist/icons/delete.js +33 -0
  100. package/dist/icons/delete.js.map +1 -0
  101. package/dist/icons/download.d.ts +6 -0
  102. package/dist/icons/download.js +30 -0
  103. package/dist/icons/download.js.map +1 -0
  104. package/dist/icons/duration.d.ts +6 -0
  105. package/dist/icons/duration.js +36 -0
  106. package/dist/icons/duration.js.map +1 -0
  107. package/dist/icons/email.d.ts +6 -0
  108. package/dist/icons/email.js +30 -0
  109. package/dist/icons/email.js.map +1 -0
  110. package/dist/icons/expense-user.d.ts +6 -0
  111. package/dist/icons/expense-user.js +33 -0
  112. package/dist/icons/expense-user.js.map +1 -0
  113. package/dist/icons/expense.d.ts +6 -0
  114. package/dist/icons/expense.js +30 -0
  115. package/dist/icons/expense.js.map +1 -0
  116. package/dist/icons/eye.d.ts +8 -0
  117. package/dist/icons/eye.js +59 -0
  118. package/dist/icons/eye.js.map +1 -0
  119. package/dist/icons/fee.d.ts +6 -0
  120. package/dist/icons/fee.js +34 -0
  121. package/dist/icons/fee.js.map +1 -0
  122. package/dist/icons/field-error.d.ts +6 -0
  123. package/dist/icons/field-error.js +40 -0
  124. package/dist/icons/field-error.js.map +1 -0
  125. package/dist/icons/flask.d.ts +6 -0
  126. package/dist/icons/flask.js +33 -0
  127. package/dist/icons/flask.js.map +1 -0
  128. package/dist/icons/google.d.ts +6 -0
  129. package/dist/icons/google.js +54 -0
  130. package/dist/icons/google.js.map +1 -0
  131. package/dist/icons/grants.d.ts +6 -0
  132. package/dist/icons/grants.js +33 -0
  133. package/dist/icons/grants.js.map +1 -0
  134. package/dist/icons/guard.d.ts +6 -0
  135. package/dist/icons/guard.js +33 -0
  136. package/dist/icons/guard.js.map +1 -0
  137. package/dist/icons/history.d.ts +6 -0
  138. package/dist/icons/history.js +33 -0
  139. package/dist/icons/history.js.map +1 -0
  140. package/dist/icons/import-file.d.ts +6 -0
  141. package/dist/icons/import-file.js +30 -0
  142. package/dist/icons/import-file.js.map +1 -0
  143. package/dist/icons/key.d.ts +6 -0
  144. package/dist/icons/key.js +34 -0
  145. package/dist/icons/key.js.map +1 -0
  146. package/dist/icons/kol-mkt.d.ts +6 -0
  147. package/dist/icons/kol-mkt.js +33 -0
  148. package/dist/icons/kol-mkt.js.map +1 -0
  149. package/dist/icons/link.d.ts +9 -0
  150. package/dist/icons/link.js +85 -0
  151. package/dist/icons/link.js.map +1 -0
  152. package/dist/icons/loading.d.ts +6 -0
  153. package/dist/icons/loading.js +9 -0
  154. package/dist/icons/loading.js.map +1 -0
  155. package/dist/icons/lock.d.ts +6 -0
  156. package/dist/icons/lock.js +33 -0
  157. package/dist/icons/lock.js.map +1 -0
  158. package/dist/icons/logout.d.ts +6 -0
  159. package/dist/icons/logout.js +33 -0
  160. package/dist/icons/logout.js.map +1 -0
  161. package/dist/icons/meno.d.ts +6 -0
  162. package/dist/icons/meno.js +33 -0
  163. package/dist/icons/meno.js.map +1 -0
  164. package/dist/icons/menu.d.ts +6 -0
  165. package/dist/icons/menu.js +33 -0
  166. package/dist/icons/menu.js.map +1 -0
  167. package/dist/icons/money.d.ts +6 -0
  168. package/dist/icons/money.js +33 -0
  169. package/dist/icons/money.js.map +1 -0
  170. package/dist/icons/more.d.ts +6 -0
  171. package/dist/icons/more.js +30 -0
  172. package/dist/icons/more.js.map +1 -0
  173. package/dist/icons/node.d.ts +6 -0
  174. package/dist/icons/node.js +33 -0
  175. package/dist/icons/node.js.map +1 -0
  176. package/dist/icons/office.d.ts +6 -0
  177. package/dist/icons/office.js +33 -0
  178. package/dist/icons/office.js.map +1 -0
  179. package/dist/icons/operations.d.ts +6 -0
  180. package/dist/icons/operations.js +33 -0
  181. package/dist/icons/operations.js.map +1 -0
  182. package/dist/icons/otc-treasury.d.ts +6 -0
  183. package/dist/icons/otc-treasury.js +33 -0
  184. package/dist/icons/otc-treasury.js.map +1 -0
  185. package/dist/icons/outsourcing.d.ts +6 -0
  186. package/dist/icons/outsourcing.js +33 -0
  187. package/dist/icons/outsourcing.js.map +1 -0
  188. package/dist/icons/overview.d.ts +6 -0
  189. package/dist/icons/overview.js +33 -0
  190. package/dist/icons/overview.js.map +1 -0
  191. package/dist/icons/pay.d.ts +6 -0
  192. package/dist/icons/pay.js +36 -0
  193. package/dist/icons/pay.js.map +1 -0
  194. package/dist/icons/payment.d.ts +6 -0
  195. package/dist/icons/payment.js +33 -0
  196. package/dist/icons/payment.js.map +1 -0
  197. package/dist/icons/payout-status.d.ts +8 -0
  198. package/dist/icons/payout-status.js +92 -0
  199. package/dist/icons/payout-status.js.map +1 -0
  200. package/dist/icons/payroll.d.ts +6 -0
  201. package/dist/icons/payroll.js +62 -0
  202. package/dist/icons/payroll.js.map +1 -0
  203. package/dist/icons/pen.d.ts +6 -0
  204. package/dist/icons/pen.js +33 -0
  205. package/dist/icons/pen.js.map +1 -0
  206. package/dist/icons/plus.d.ts +6 -0
  207. package/dist/icons/plus.js +33 -0
  208. package/dist/icons/plus.js.map +1 -0
  209. package/dist/icons/processing.d.ts +6 -0
  210. package/dist/icons/processing.js +34 -0
  211. package/dist/icons/processing.js.map +1 -0
  212. package/dist/icons/procurement.d.ts +6 -0
  213. package/dist/icons/procurement.js +33 -0
  214. package/dist/icons/procurement.js.map +1 -0
  215. package/dist/icons/question.d.ts +6 -0
  216. package/dist/icons/question.js +30 -0
  217. package/dist/icons/question.js.map +1 -0
  218. package/dist/icons/receipt.d.ts +6 -0
  219. package/dist/icons/receipt.js +30 -0
  220. package/dist/icons/receipt.js.map +1 -0
  221. package/dist/icons/records.d.ts +8 -0
  222. package/dist/icons/records.js +63 -0
  223. package/dist/icons/records.js.map +1 -0
  224. package/dist/icons/refresh.d.ts +6 -0
  225. package/dist/icons/refresh.js +33 -0
  226. package/dist/icons/refresh.js.map +1 -0
  227. package/dist/icons/reimbursement.d.ts +6 -0
  228. package/dist/icons/reimbursement.js +33 -0
  229. package/dist/icons/reimbursement.js.map +1 -0
  230. package/dist/icons/remove.d.ts +6 -0
  231. package/dist/icons/remove.js +50 -0
  232. package/dist/icons/remove.js.map +1 -0
  233. package/dist/icons/request.d.ts +6 -0
  234. package/dist/icons/request.js +30 -0
  235. package/dist/icons/request.js.map +1 -0
  236. package/dist/icons/reset-password.d.ts +6 -0
  237. package/dist/icons/reset-password.js +33 -0
  238. package/dist/icons/reset-password.js.map +1 -0
  239. package/dist/icons/search.d.ts +6 -0
  240. package/dist/icons/search.js +9 -0
  241. package/dist/icons/search.js.map +1 -0
  242. package/dist/icons/setting.d.ts +6 -0
  243. package/dist/icons/setting.js +33 -0
  244. package/dist/icons/setting.js.map +1 -0
  245. package/dist/icons/settings.d.ts +6 -0
  246. package/dist/icons/settings.js +30 -0
  247. package/dist/icons/settings.js.map +1 -0
  248. package/dist/icons/shield.d.ts +6 -0
  249. package/dist/icons/shield.js +33 -0
  250. package/dist/icons/shield.js.map +1 -0
  251. package/dist/icons/success.d.ts +6 -0
  252. package/dist/icons/success.js +34 -0
  253. package/dist/icons/success.js.map +1 -0
  254. package/dist/icons/support.d.ts +6 -0
  255. package/dist/icons/support.js +33 -0
  256. package/dist/icons/support.js.map +1 -0
  257. package/dist/icons/swap.d.ts +6 -0
  258. package/dist/icons/swap.js +42 -0
  259. package/dist/icons/swap.js.map +1 -0
  260. package/dist/icons/team.d.ts +6 -0
  261. package/dist/icons/team.js +33 -0
  262. package/dist/icons/team.js.map +1 -0
  263. package/dist/icons/to-right.d.ts +6 -0
  264. package/dist/icons/to-right.js +35 -0
  265. package/dist/icons/to-right.js.map +1 -0
  266. package/dist/icons/types.d.ts +8 -0
  267. package/dist/icons/types.js +1 -0
  268. package/dist/icons/types.js.map +1 -0
  269. package/dist/icons/up.d.ts +8 -0
  270. package/dist/icons/up.js +59 -0
  271. package/dist/icons/up.js.map +1 -0
  272. package/dist/icons/wallet.d.ts +6 -0
  273. package/dist/icons/wallet.js +42 -0
  274. package/dist/icons/wallet.js.map +1 -0
  275. package/dist/icons/webhooks.d.ts +6 -0
  276. package/dist/icons/webhooks.js +30 -0
  277. package/dist/icons/webhooks.js.map +1 -0
  278. package/dist/input-number/index.d.ts +10 -0
  279. package/dist/input-number/index.js +55 -0
  280. package/dist/input-number/index.js.map +1 -0
  281. package/dist/overlay/index.d.ts +48 -0
  282. package/dist/overlay/index.js +41 -0
  283. package/dist/overlay/index.js.map +1 -0
  284. package/dist/pagination/index.d.ts +11 -0
  285. package/dist/pagination/index.js +55 -0
  286. package/dist/pagination/index.js.map +1 -0
  287. package/dist/search-input/index.d.ts +13 -0
  288. package/dist/search-input/index.js +60 -0
  289. package/dist/search-input/index.js.map +1 -0
  290. package/dist/skeleton/index.d.ts +7 -0
  291. package/dist/skeleton/index.js +8 -0
  292. package/dist/skeleton/index.js.map +1 -0
  293. package/dist/switch/index.d.ts +14 -0
  294. package/dist/switch/index.js +79 -0
  295. package/dist/switch/index.js.map +1 -0
  296. package/dist/table/index.d.ts +29 -0
  297. package/dist/table/index.js +95 -0
  298. package/dist/table/index.js.map +1 -0
  299. package/dist/toast/index.d.ts +21 -0
  300. package/dist/toast/index.js +85 -0
  301. package/dist/toast/index.js.map +1 -0
  302. package/dist/tooltip/index.d.ts +17 -0
  303. package/dist/tooltip/index.js +104 -0
  304. package/dist/tooltip/index.js.map +1 -0
  305. package/dist/types-DNElDQZ9.d.ts +23 -0
  306. package/dist/use-floating-position-aNqQwkre.d.ts +33 -0
  307. package/package.json +111 -0
@@ -0,0 +1,223 @@
1
+ import {
2
+ IconClose
3
+ } from "./chunk-J5TQGGEN.js";
4
+ import {
5
+ Card
6
+ } from "./chunk-MJ36QLY3.js";
7
+ import {
8
+ OVERLAY_BASE_Z_INDEX,
9
+ OVERLAY_DIALOG_PANEL_FADE_SECONDS,
10
+ OVERLAY_EXIT_SECONDS,
11
+ OVERLAY_MASK_FADE_SECONDS,
12
+ OVERLAY_PANEL_SLIDE_SECONDS,
13
+ acquireOverlayLayer,
14
+ elevatedOverlayZIndex,
15
+ isTopOverlay,
16
+ releaseOverlayLayer
17
+ } from "./chunk-RUOUGZWI.js";
18
+ import {
19
+ fontSans
20
+ } from "./chunk-FXENEWNN.js";
21
+ import {
22
+ cn
23
+ } from "./chunk-TUEV2KLC.js";
24
+
25
+ // src/overlay/Overlay.tsx
26
+ import { useEffect, useLayoutEffect as useLayoutEffect2, useState as useState2 } from "react";
27
+ import { createPortal } from "react-dom";
28
+ import { AnimatePresence, motion } from "motion/react";
29
+
30
+ // src/overlay/use-overlay-layer.ts
31
+ import { useLayoutEffect, useState } from "react";
32
+ function useOverlayLayer(open) {
33
+ const [zIndex, setZIndex] = useState(OVERLAY_BASE_Z_INDEX);
34
+ useLayoutEffect(() => {
35
+ if (!open) return;
36
+ const nextZIndex = acquireOverlayLayer();
37
+ setZIndex(nextZIndex);
38
+ return () => {
39
+ releaseOverlayLayer(nextZIndex);
40
+ };
41
+ }, [open]);
42
+ return zIndex;
43
+ }
44
+
45
+ // src/overlay/Overlay.tsx
46
+ import { jsx, jsxs } from "react/jsx-runtime";
47
+ function Overlay(props) {
48
+ const {
49
+ type = "dialog",
50
+ open,
51
+ onClose,
52
+ mask = true,
53
+ maskClassName,
54
+ closeOnMaskClick = true,
55
+ children,
56
+ className,
57
+ elevated = false
58
+ } = props;
59
+ const [present, setPresent] = useState2(open);
60
+ useLayoutEffect2(() => {
61
+ if (open) setPresent(true);
62
+ }, [open]);
63
+ const zIndex = useOverlayLayer(open || present);
64
+ const visualZIndex = elevated ? elevatedOverlayZIndex(zIndex) : zIndex;
65
+ useEffect(() => {
66
+ if (!open) return;
67
+ const onKeyDown = (event) => {
68
+ if (event.key !== "Escape") return;
69
+ if (!isTopOverlay(zIndex)) return;
70
+ onClose?.();
71
+ };
72
+ document.addEventListener("keydown", onKeyDown);
73
+ return () => document.removeEventListener("keydown", onKeyDown);
74
+ }, [open, onClose, zIndex]);
75
+ if (typeof document === "undefined") return null;
76
+ if (!open && !present) return null;
77
+ return createPortal(
78
+ /* @__PURE__ */ jsx(AnimatePresence, { onExitComplete: () => setPresent(false), children: open ? /* @__PURE__ */ jsxs(
79
+ motion.div,
80
+ {
81
+ className: cn("fixed inset-0 overflow-hidden", !mask && "pointer-events-none", className),
82
+ style: { zIndex: visualZIndex },
83
+ role: "presentation",
84
+ initial: { opacity: 1 },
85
+ animate: { opacity: 1 },
86
+ exit: { opacity: 1 },
87
+ transition: { duration: OVERLAY_EXIT_SECONDS },
88
+ children: [
89
+ /* @__PURE__ */ jsx(
90
+ motion.div,
91
+ {
92
+ className: cn(
93
+ "absolute inset-0",
94
+ mask ? "bg-[rgba(0,0,0,0.50)]" : "bg-transparent",
95
+ !closeOnMaskClick && "pointer-events-none",
96
+ maskClassName
97
+ ),
98
+ initial: { opacity: 0 },
99
+ animate: { opacity: 1, transition: { duration: OVERLAY_MASK_FADE_SECONDS, delay: 0 } },
100
+ exit: {
101
+ opacity: 0,
102
+ transition: {
103
+ duration: OVERLAY_MASK_FADE_SECONDS,
104
+ delay: type === "drawer" ? OVERLAY_PANEL_SLIDE_SECONDS : OVERLAY_DIALOG_PANEL_FADE_SECONDS
105
+ }
106
+ },
107
+ onClick: closeOnMaskClick ? onClose : void 0
108
+ }
109
+ ),
110
+ children
111
+ ]
112
+ },
113
+ "overlay-root"
114
+ ) : null }),
115
+ document.body
116
+ );
117
+ }
118
+
119
+ // src/overlay/OverlayPanel.tsx
120
+ import { useEffect as useEffect2, useId } from "react";
121
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
122
+ function OverlayPanel(props) {
123
+ const {
124
+ title,
125
+ ariaLabel,
126
+ titleClassName,
127
+ closeClassName,
128
+ closeIcon,
129
+ headerAction,
130
+ onClose,
131
+ cardClassName,
132
+ contentClassName,
133
+ children,
134
+ style,
135
+ trapFocus = true
136
+ } = props;
137
+ const panelId = useId();
138
+ const titleId = panelId + "-title";
139
+ const hasTitle = title !== void 0 && title !== null && title !== "";
140
+ useEffect2(() => {
141
+ if (!trapFocus) return;
142
+ const panel = document.getElementById(panelId);
143
+ if (!panel) return;
144
+ const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;
145
+ panel.focus({ preventScroll: true });
146
+ const handleKeyDown = (event) => {
147
+ if (event.key !== "Tab") return;
148
+ const focusableElements = Array.from(
149
+ panel.querySelectorAll(
150
+ 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'
151
+ )
152
+ ).filter((element) => element.getAttribute("aria-hidden") !== "true" && element.getClientRects().length > 0);
153
+ if (focusableElements.length === 0) {
154
+ event.preventDefault();
155
+ panel.focus({ preventScroll: true });
156
+ return;
157
+ }
158
+ const firstElement = focusableElements[0];
159
+ const lastElement = focusableElements[focusableElements.length - 1];
160
+ const activeElement = document.activeElement;
161
+ if (event.shiftKey && (activeElement === panel || activeElement === firstElement || !panel.contains(activeElement))) {
162
+ event.preventDefault();
163
+ lastElement.focus({ preventScroll: true });
164
+ } else if (!event.shiftKey && activeElement === lastElement) {
165
+ event.preventDefault();
166
+ firstElement.focus({ preventScroll: true });
167
+ }
168
+ };
169
+ panel.addEventListener("keydown", handleKeyDown);
170
+ return () => {
171
+ panel.removeEventListener("keydown", handleKeyDown);
172
+ if (previouslyFocused?.isConnected) previouslyFocused.focus({ preventScroll: true });
173
+ };
174
+ }, [panelId, trapFocus]);
175
+ return /* @__PURE__ */ jsxs2(
176
+ Card,
177
+ {
178
+ id: panelId,
179
+ role: "dialog",
180
+ "aria-modal": trapFocus ? "true" : void 0,
181
+ "aria-labelledby": hasTitle ? titleId : void 0,
182
+ "aria-label": hasTitle ? void 0 : ariaLabel,
183
+ tabIndex: -1,
184
+ className: cn("relative flex flex-col gap-5", cardClassName),
185
+ style,
186
+ onClick: (event) => event.stopPropagation(),
187
+ children: [
188
+ /* @__PURE__ */ jsxs2("div", { className: "relative flex shrink-0 items-center gap-3", children: [
189
+ /* @__PURE__ */ jsx2(
190
+ "h2",
191
+ {
192
+ id: hasTitle ? titleId : void 0,
193
+ className: cn(
194
+ "min-h-5 min-w-0 text-[20px] font-semibold leading-normal text-black",
195
+ fontSans,
196
+ titleClassName
197
+ ),
198
+ children: title
199
+ }
200
+ ),
201
+ headerAction,
202
+ /* @__PURE__ */ jsx2(
203
+ "button",
204
+ {
205
+ type: "button",
206
+ "aria-label": "Close",
207
+ onClick: onClose,
208
+ className: cn("ml-auto shrink-0 cursor-pointer border-0 bg-transparent p-0 text-black", closeClassName),
209
+ children: closeIcon ?? /* @__PURE__ */ jsx2(IconClose, { className: "size-3.25" })
210
+ }
211
+ )
212
+ ] }),
213
+ /* @__PURE__ */ jsx2("div", { className: cn("min-h-0 flex-1 overflow-y-auto", contentClassName), children })
214
+ ]
215
+ }
216
+ );
217
+ }
218
+
219
+ export {
220
+ Overlay,
221
+ OverlayPanel
222
+ };
223
+ //# sourceMappingURL=chunk-AIJAGS5R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/overlay/Overlay.tsx","../src/overlay/use-overlay-layer.ts","../src/overlay/OverlayPanel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useEffect, useLayoutEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { cn } from \"../lib/cn\";\nimport {\n OVERLAY_DIALOG_PANEL_FADE_SECONDS,\n OVERLAY_EXIT_SECONDS,\n OVERLAY_MASK_FADE_SECONDS,\n OVERLAY_PANEL_SLIDE_SECONDS,\n} from \"./config\";\nimport { elevatedOverlayZIndex, isTopOverlay } from \"./stack\";\nimport { useOverlayLayer } from \"./use-overlay-layer\";\n\nexport type OverlayProps = {\n type?: \"dialog\" | \"drawer\";\n open: boolean;\n onClose?: () => void;\n mask?: boolean;\n maskClassName?: string;\n closeOnMaskClick?: boolean;\n children?: ReactNode;\n className?: string;\n elevated?: boolean;\n};\n\nexport function Overlay(props: OverlayProps) {\n const {\n type = \"dialog\",\n open,\n onClose,\n mask = true,\n maskClassName,\n closeOnMaskClick = true,\n children,\n className,\n elevated = false,\n } = props;\n const [present, setPresent] = useState(open);\n\n useLayoutEffect(() => {\n if (open) setPresent(true);\n }, [open]);\n\n const zIndex = useOverlayLayer(open || present);\n const visualZIndex = elevated ? elevatedOverlayZIndex(zIndex) : zIndex;\n\n useEffect(() => {\n if (!open) return;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n if (!isTopOverlay(zIndex)) return;\n onClose?.();\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, onClose, zIndex]);\n\n if (typeof document === \"undefined\") return null;\n if (!open && !present) return null;\n\n return createPortal(\n <AnimatePresence onExitComplete={() => setPresent(false)}>\n {open ? (\n <motion.div\n key=\"overlay-root\"\n className={cn(\"fixed inset-0 overflow-hidden\", !mask && \"pointer-events-none\", className)}\n style={{ zIndex: visualZIndex }}\n role=\"presentation\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 1 }}\n transition={{ duration: OVERLAY_EXIT_SECONDS }}\n >\n <motion.div\n className={cn(\n \"absolute inset-0\",\n mask ? \"bg-[rgba(0,0,0,0.50)]\" : \"bg-transparent\",\n !closeOnMaskClick && \"pointer-events-none\",\n maskClassName,\n )}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1, transition: { duration: OVERLAY_MASK_FADE_SECONDS, delay: 0 } }}\n exit={{\n opacity: 0,\n transition: {\n duration: OVERLAY_MASK_FADE_SECONDS,\n delay: type === \"drawer\" ? OVERLAY_PANEL_SLIDE_SECONDS : OVERLAY_DIALOG_PANEL_FADE_SECONDS,\n },\n }}\n onClick={closeOnMaskClick ? onClose : undefined}\n />\n {children}\n </motion.div>\n ) : null}\n </AnimatePresence>,\n document.body,\n );\n}\n\nexport default Overlay;\n","import { useLayoutEffect, useState } from \"react\";\nimport { OVERLAY_BASE_Z_INDEX } from \"./config\";\nimport { acquireOverlayLayer, releaseOverlayLayer } from \"./stack\";\n\nexport function useOverlayLayer(open: boolean) {\n const [zIndex, setZIndex] = useState(OVERLAY_BASE_Z_INDEX);\n\n useLayoutEffect(() => {\n if (!open) return;\n const nextZIndex = acquireOverlayLayer();\n setZIndex(nextZIndex);\n return () => {\n releaseOverlayLayer(nextZIndex);\n };\n }, [open]);\n\n return zIndex;\n}\n","import { useEffect, useId, type CSSProperties, type ReactNode } from \"react\";\nimport { IconClose } from \"../icons/close\";\nimport { cn } from \"../lib/cn\";\nimport { fontSans } from \"../lib/font\";\nimport { Card } from \"../card/Card\";\n\nexport type OverlayPanelProps = {\n title?: ReactNode;\n ariaLabel?: string;\n titleClassName?: string;\n closeClassName?: string;\n closeIcon?: ReactNode;\n headerAction?: ReactNode;\n onClose?: () => void;\n cardClassName?: string;\n contentClassName?: string;\n children?: ReactNode;\n style?: CSSProperties;\n trapFocus?: boolean;\n};\n\nexport function OverlayPanel(props: OverlayPanelProps) {\n const {\n title,\n ariaLabel,\n titleClassName,\n closeClassName,\n closeIcon,\n headerAction,\n onClose,\n cardClassName,\n contentClassName,\n children,\n style,\n trapFocus = true,\n } = props;\n const panelId = useId();\n const titleId = panelId + \"-title\";\n const hasTitle = title !== undefined && title !== null && title !== \"\";\n\n useEffect(() => {\n if (!trapFocus) return;\n\n const panel = document.getElementById(panelId);\n if (!panel) return;\n\n const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n panel.focus({ preventScroll: true });\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Tab\") return;\n\n const focusableElements = Array.from(\n panel.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n ),\n ).filter((element) => element.getAttribute(\"aria-hidden\") !== \"true\" && element.getClientRects().length > 0);\n\n if (focusableElements.length === 0) {\n event.preventDefault();\n panel.focus({ preventScroll: true });\n return;\n }\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n const activeElement = document.activeElement;\n\n if (event.shiftKey && (activeElement === panel || activeElement === firstElement || !panel.contains(activeElement))) {\n event.preventDefault();\n lastElement.focus({ preventScroll: true });\n } else if (!event.shiftKey && activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus({ preventScroll: true });\n }\n };\n\n panel.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n panel.removeEventListener(\"keydown\", handleKeyDown);\n if (previouslyFocused?.isConnected) previouslyFocused.focus({ preventScroll: true });\n };\n }, [panelId, trapFocus]);\n\n return (\n <Card\n id={panelId}\n role=\"dialog\"\n aria-modal={trapFocus ? \"true\" : undefined}\n aria-labelledby={hasTitle ? titleId : undefined}\n aria-label={hasTitle ? undefined : ariaLabel}\n tabIndex={-1}\n className={cn(\"relative flex flex-col gap-5\", cardClassName)}\n style={style}\n onClick={(event) => event.stopPropagation()}\n >\n <div className=\"relative flex shrink-0 items-center gap-3\">\n <h2\n id={hasTitle ? titleId : undefined}\n className={cn(\n \"min-h-5 min-w-0 text-[20px] font-semibold leading-normal text-black\",\n fontSans,\n titleClassName,\n )}\n >\n {title}\n </h2>\n {headerAction}\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className={cn(\"ml-auto shrink-0 cursor-pointer border-0 bg-transparent p-0 text-black\", closeClassName)}\n >\n {closeIcon ?? <IconClose className=\"size-3.25\" />}\n </button>\n </div>\n <div className={cn(\"min-h-0 flex-1 overflow-y-auto\", contentClassName)}>{children}</div>\n </Card>\n );\n}\n\nexport default OverlayPanel;\n"],"mappings":"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","names":["useLayoutEffect","useState","useState","useLayoutEffect","useEffect","jsx","jsxs","useEffect"]}
@@ -0,0 +1,113 @@
1
+ import {
2
+ Overlay,
3
+ OverlayPanel
4
+ } from "./chunk-AIJAGS5R.js";
5
+ import {
6
+ OVERLAY_MASK_FADE_SECONDS,
7
+ OVERLAY_PANEL_SLIDE_SECONDS
8
+ } from "./chunk-RUOUGZWI.js";
9
+ import {
10
+ cn
11
+ } from "./chunk-TUEV2KLC.js";
12
+
13
+ // src/drawer/config.ts
14
+ var DRAWER_SIDE = {
15
+ Top: "top",
16
+ Right: "right",
17
+ Bottom: "bottom",
18
+ Left: "left"
19
+ };
20
+
21
+ // src/drawer/Drawer.tsx
22
+ import { motion } from "motion/react";
23
+ import { jsx } from "react/jsx-runtime";
24
+ function Drawer(props) {
25
+ const {
26
+ open,
27
+ onClose,
28
+ title,
29
+ ariaLabel,
30
+ children,
31
+ mask = true,
32
+ maskClassName,
33
+ closeOnMaskClick = true,
34
+ cardClassName,
35
+ panelClassName,
36
+ titleClassName,
37
+ closeClassName,
38
+ closeIcon,
39
+ headerAction,
40
+ contentClassName,
41
+ side = DRAWER_SIDE.Right
42
+ } = props;
43
+ const hidden = slideHidden(side);
44
+ return /* @__PURE__ */ jsx(
45
+ Overlay,
46
+ {
47
+ type: "drawer",
48
+ open,
49
+ onClose,
50
+ mask,
51
+ maskClassName,
52
+ closeOnMaskClick,
53
+ elevated: props.elevated,
54
+ children: /* @__PURE__ */ jsx(
55
+ motion.div,
56
+ {
57
+ className: cn("pointer-events-auto", drawerPositionClassName(side), panelClassName),
58
+ initial: hidden,
59
+ animate: {
60
+ x: 0,
61
+ y: 0,
62
+ transition: { duration: OVERLAY_PANEL_SLIDE_SECONDS, delay: OVERLAY_MASK_FADE_SECONDS, ease: easeOut }
63
+ },
64
+ exit: {
65
+ ...hidden,
66
+ transition: { duration: OVERLAY_PANEL_SLIDE_SECONDS, delay: 0, ease: easeOut }
67
+ },
68
+ children: /* @__PURE__ */ jsx(
69
+ OverlayPanel,
70
+ {
71
+ title,
72
+ ariaLabel,
73
+ titleClassName,
74
+ closeClassName,
75
+ closeIcon,
76
+ headerAction,
77
+ contentClassName,
78
+ onClose,
79
+ cardClassName: cn(drawerPanelClassName(side), cardClassName),
80
+ trapFocus: mask,
81
+ children
82
+ }
83
+ )
84
+ }
85
+ )
86
+ }
87
+ );
88
+ }
89
+ var easeOut = [0.32, 0.72, 0, 1];
90
+ function slideHidden(side) {
91
+ if (side === DRAWER_SIDE.Top) return { y: "-100%" };
92
+ if (side === DRAWER_SIDE.Bottom) return { y: "100%" };
93
+ if (side === DRAWER_SIDE.Left) return { x: "-100%" };
94
+ return { x: "100%" };
95
+ }
96
+ function drawerPositionClassName(side) {
97
+ if (side === DRAWER_SIDE.Top) return "absolute inset-x-0 top-0";
98
+ if (side === DRAWER_SIDE.Bottom) return "absolute inset-x-0 bottom-0";
99
+ if (side === DRAWER_SIDE.Left) return "absolute inset-y-0 left-0 h-full w-[min(100%,420px)]";
100
+ return "absolute inset-y-0 right-0 h-full w-[min(100%,420px)]";
101
+ }
102
+ function drawerPanelClassName(side) {
103
+ if (side === DRAWER_SIDE.Top) return "w-full max-h-[90vh] rounded-t-none md:rounded-t-none";
104
+ if (side === DRAWER_SIDE.Bottom) return "w-full max-h-[90vh] rounded-b-none md:rounded-b-none";
105
+ if (side === DRAWER_SIDE.Left) return "h-full w-full rounded-l-none md:rounded-l-none";
106
+ return "h-full w-full rounded-r-none md:rounded-r-none";
107
+ }
108
+
109
+ export {
110
+ DRAWER_SIDE,
111
+ Drawer
112
+ };
113
+ //# sourceMappingURL=chunk-DON56HU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/drawer/config.ts","../src/drawer/Drawer.tsx"],"sourcesContent":["export const DRAWER_SIDE = {\n Top: \"top\",\n Right: \"right\",\n Bottom: \"bottom\",\n Left: \"left\",\n} as const;\n\nexport type DrawerSide = (typeof DRAWER_SIDE)[keyof typeof DRAWER_SIDE];\n","import { motion } from \"motion/react\";\nimport { cn } from \"../lib/cn\";\nimport { Overlay } from \"../overlay/Overlay\";\nimport { OverlayPanel } from \"../overlay/OverlayPanel\";\nimport { OVERLAY_MASK_FADE_SECONDS, OVERLAY_PANEL_SLIDE_SECONDS } from \"../overlay/config\";\nimport type { OverlayChromeProps } from \"../overlay/types\";\nimport { DRAWER_SIDE, type DrawerSide } from \"./config\";\n\nexport type DrawerProps = OverlayChromeProps & {\n side?: DrawerSide;\n};\n\nexport function Drawer(props: DrawerProps) {\n const {\n open,\n onClose,\n title,\n ariaLabel,\n children,\n mask = true,\n maskClassName,\n closeOnMaskClick = true,\n cardClassName,\n panelClassName,\n titleClassName,\n closeClassName,\n closeIcon,\n headerAction,\n contentClassName,\n side = DRAWER_SIDE.Right,\n } = props;\n const hidden = slideHidden(side);\n\n return (\n <Overlay\n type=\"drawer\"\n open={open}\n onClose={onClose}\n mask={mask}\n maskClassName={maskClassName}\n closeOnMaskClick={closeOnMaskClick}\n elevated={props.elevated}\n >\n <motion.div\n className={cn(\"pointer-events-auto\", drawerPositionClassName(side), panelClassName)}\n initial={hidden}\n animate={{\n x: 0,\n y: 0,\n transition: { duration: OVERLAY_PANEL_SLIDE_SECONDS, delay: OVERLAY_MASK_FADE_SECONDS, ease: easeOut },\n }}\n exit={{\n ...hidden,\n transition: { duration: OVERLAY_PANEL_SLIDE_SECONDS, delay: 0, ease: easeOut },\n }}\n >\n <OverlayPanel\n title={title}\n ariaLabel={ariaLabel}\n titleClassName={titleClassName}\n closeClassName={closeClassName}\n closeIcon={closeIcon}\n headerAction={headerAction}\n contentClassName={contentClassName}\n onClose={onClose}\n cardClassName={cn(drawerPanelClassName(side), cardClassName)}\n trapFocus={mask}\n >\n {children}\n </OverlayPanel>\n </motion.div>\n </Overlay>\n );\n}\n\nexport default Drawer;\n\nconst easeOut: [number, number, number, number] = [0.32, 0.72, 0, 1];\n\nfunction slideHidden(side: DrawerSide): { x?: string; y?: string } {\n if (side === DRAWER_SIDE.Top) return { y: \"-100%\" };\n if (side === DRAWER_SIDE.Bottom) return { y: \"100%\" };\n if (side === DRAWER_SIDE.Left) return { x: \"-100%\" };\n return { x: \"100%\" };\n}\n\nfunction drawerPositionClassName(side: DrawerSide) {\n if (side === DRAWER_SIDE.Top) return \"absolute inset-x-0 top-0\";\n if (side === DRAWER_SIDE.Bottom) return \"absolute inset-x-0 bottom-0\";\n if (side === DRAWER_SIDE.Left) return \"absolute inset-y-0 left-0 h-full w-[min(100%,420px)]\";\n return \"absolute inset-y-0 right-0 h-full w-[min(100%,420px)]\";\n}\n\nfunction drawerPanelClassName(side: DrawerSide) {\n if (side === DRAWER_SIDE.Top) return \"w-full max-h-[90vh] rounded-t-none md:rounded-t-none\";\n if (side === DRAWER_SIDE.Bottom) return \"w-full max-h-[90vh] rounded-b-none md:rounded-b-none\";\n if (side === DRAWER_SIDE.Left) return \"h-full w-full rounded-l-none md:rounded-l-none\";\n return \"h-full w-full rounded-r-none md:rounded-r-none\";\n}\n"],"mappings":";;;;;;;;;;;;;AAAO,IAAM,cAAc;AAAA,EACzB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;;;ACLA,SAAS,cAAc;AAwDf;AA5CD,SAAS,OAAO,OAAoB;AACzC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,YAAY;AAAA,EACrB,IAAI;AACJ,QAAM,SAAS,YAAY,IAAI;AAE/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAEhB;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,WAAW,GAAG,uBAAuB,wBAAwB,IAAI,GAAG,cAAc;AAAA,UAClF,SAAS;AAAA,UACT,SAAS;AAAA,YACP,GAAG;AAAA,YACH,GAAG;AAAA,YACH,YAAY,EAAE,UAAU,6BAA6B,OAAO,2BAA2B,MAAM,QAAQ;AAAA,UACvG;AAAA,UACA,MAAM;AAAA,YACJ,GAAG;AAAA,YACH,YAAY,EAAE,UAAU,6BAA6B,OAAO,GAAG,MAAM,QAAQ;AAAA,UAC/E;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,eAAe,GAAG,qBAAqB,IAAI,GAAG,aAAa;AAAA,cAC3D,WAAW;AAAA,cAEV;AAAA;AAAA,UACH;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAIA,IAAM,UAA4C,CAAC,MAAM,MAAM,GAAG,CAAC;AAEnE,SAAS,YAAY,MAA8C;AACjE,MAAI,SAAS,YAAY,IAAK,QAAO,EAAE,GAAG,QAAQ;AAClD,MAAI,SAAS,YAAY,OAAQ,QAAO,EAAE,GAAG,OAAO;AACpD,MAAI,SAAS,YAAY,KAAM,QAAO,EAAE,GAAG,QAAQ;AACnD,SAAO,EAAE,GAAG,OAAO;AACrB;AAEA,SAAS,wBAAwB,MAAkB;AACjD,MAAI,SAAS,YAAY,IAAK,QAAO;AACrC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,MAAI,SAAS,YAAY,KAAM,QAAO;AACtC,SAAO;AACT;AAEA,SAAS,qBAAqB,MAAkB;AAC9C,MAAI,SAAS,YAAY,IAAK,QAAO;AACrC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,MAAI,SAAS,YAAY,KAAM,QAAO;AACtC,SAAO;AACT;","names":[]}
@@ -0,0 +1,7 @@
1
+ // src/lib/font.ts
2
+ var fontSans = "[font-family:Montserrat,PingFang_SC,system-ui,sans-serif]";
3
+
4
+ export {
5
+ fontSans
6
+ };
7
+ //# sourceMappingURL=chunk-FXENEWNN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/font.ts"],"sourcesContent":["/** Host-independent sans stack. Underscores in the arbitrary value become spaces. */\nexport const fontSans = \"[font-family:Montserrat,PingFang_SC,system-ui,sans-serif]\";\n"],"mappings":";AACO,IAAM,WAAW;","names":[]}
@@ -0,0 +1,57 @@
1
+ // src/icons/close.tsx
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ var IconClose = (props) => {
4
+ const {
5
+ className,
6
+ style
7
+ } = props;
8
+ return /* @__PURE__ */ jsxs(
9
+ "svg",
10
+ {
11
+ width: "13",
12
+ height: "13",
13
+ viewBox: "0 0 13 13",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ className: className ? `sfp-icon ${className}` : "sfp-icon",
17
+ style,
18
+ children: [
19
+ /* @__PURE__ */ jsx(
20
+ "line",
21
+ {
22
+ x1: "0.75",
23
+ y1: "-0.75",
24
+ x2: "16.2197",
25
+ y2: "-0.75",
26
+ transform: "matrix(0.707069 -0.707145 0.707069 0.707145 1.00122 12.75)",
27
+ stroke: "currentColor",
28
+ strokeWidth: "1.5",
29
+ strokeLinecap: "round",
30
+ strokeLinejoin: "round"
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx(
34
+ "line",
35
+ {
36
+ x1: "0.75",
37
+ y1: "-0.75",
38
+ x2: "16.2197",
39
+ y2: "-0.75",
40
+ transform: "matrix(-0.707069 -0.707145 -0.707069 0.707145 11.9985 12.75)",
41
+ stroke: "currentColor",
42
+ strokeWidth: "1.5",
43
+ strokeLinecap: "round",
44
+ strokeLinejoin: "round"
45
+ }
46
+ )
47
+ ]
48
+ }
49
+ );
50
+ };
51
+ var close_default = IconClose;
52
+
53
+ export {
54
+ IconClose,
55
+ close_default
56
+ };
57
+ //# sourceMappingURL=chunk-J5TQGGEN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/close.tsx"],"sourcesContent":["import type { IconProps } from \"./types\";\n\nexport const IconClose = (props: IconProps) => {\n const {\n className,\n style,\n } = props;\n\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className ? `sfp-icon ${className}` : \"sfp-icon\"}\n style={style}\n >\n <line\n x1=\"0.75\"\n y1=\"-0.75\"\n x2=\"16.2197\"\n y2=\"-0.75\"\n transform=\"matrix(0.707069 -0.707145 0.707069 0.707145 1.00122 12.75)\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"0.75\"\n y1=\"-0.75\"\n x2=\"16.2197\"\n y2=\"-0.75\"\n transform=\"matrix(-0.707069 -0.707145 -0.707069 0.707145 11.9985 12.75)\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default IconClose;\n"],"mappings":";AASI,SASE,KATF;AAPG,IAAM,YAAY,CAAC,UAAqB;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAW,YAAY,YAAY,SAAS,KAAK;AAAA,MACjD;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,WAAU;AAAA,YACV,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,WAAU;AAAA,YACV,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,gBAAQ;","names":[]}
@@ -0,0 +1,23 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-TUEV2KLC.js";
4
+
5
+ // src/card/Card.tsx
6
+ import { jsx } from "react/jsx-runtime";
7
+ function Card({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx(
9
+ "div",
10
+ {
11
+ className: cn(
12
+ "rounded-[14px] border border-white bg-[#FDFDFD] p-4 shadow-[0_0_20px_0_rgba(0,0,0,0.06)] md:rounded-[20px] md:p-5",
13
+ className
14
+ ),
15
+ ...props
16
+ }
17
+ );
18
+ }
19
+
20
+ export {
21
+ Card
22
+ };
23
+ //# sourceMappingURL=chunk-MJ36QLY3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/card/Card.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement>;\n\nexport function Card({ className, ...props }: CardProps) {\n return (\n <div\n className={cn(\n \"rounded-[14px] border border-white bg-[#FDFDFD] p-4 shadow-[0_0_20px_0_rgba(0,0,0,0.06)] md:rounded-[20px] md:p-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport default Card;\n"],"mappings":";;;;;AAOI;AAFG,SAAS,KAAK,EAAE,WAAW,GAAG,MAAM,GAAc;AACvD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,34 @@
1
+ // src/icons/alert.tsx
2
+ import { jsx } from "react/jsx-runtime";
3
+ var IconAlert = (props) => {
4
+ const {
5
+ className,
6
+ style
7
+ } = props;
8
+ return /* @__PURE__ */ jsx(
9
+ "svg",
10
+ {
11
+ width: "2",
12
+ height: "7",
13
+ viewBox: "0 0 2 7",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ className: className ? `sfp-icon ${className}` : "sfp-icon",
17
+ style,
18
+ children: /* @__PURE__ */ jsx(
19
+ "path",
20
+ {
21
+ d: "M0.888801 5.112C0.653076 5.112 0.427006 5.20564 0.260324 5.37232C0.0936412 5.53901 0 5.76508 0 6.0008C0 6.23653 0.0936412 6.46259 0.260324 6.62928C0.427006 6.79596 0.653076 6.8896 0.888801 6.8896C1.12453 6.8896 1.35059 6.79596 1.51728 6.62928C1.68396 6.46259 1.7776 6.23653 1.7776 6.0008C1.7776 5.76508 1.68396 5.53901 1.51728 5.37232C1.35059 5.20564 1.12453 5.112 0.888801 5.112ZM0.888801 0.000800133C0.397601 0.000800133 0 0.3984 0 0.8896L0 3.3344C0 3.57013 0.0936412 3.79619 0.260324 3.96288C0.427006 4.12956 0.653076 4.2232 0.888801 4.2232C1.12453 4.2232 1.35059 4.12956 1.51728 3.96288C1.68396 3.79619 1.7776 3.57013 1.7776 3.3344V0.8888C1.7776 0.3976 1.38 0 0.8896 0L0.888801 0.000800133Z",
22
+ fill: "currentColor"
23
+ }
24
+ )
25
+ }
26
+ );
27
+ };
28
+ var alert_default = IconAlert;
29
+
30
+ export {
31
+ IconAlert,
32
+ alert_default
33
+ };
34
+ //# sourceMappingURL=chunk-NZGSPYWG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/alert.tsx"],"sourcesContent":["import type { IconProps } from \"./types\";\n\nexport const IconAlert = (props: IconProps) => {\n const {\n className,\n style,\n } = props;\n\n return (\n <svg\n width=\"2\"\n height=\"7\"\n viewBox=\"0 0 2 7\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className ? `sfp-icon ${className}` : \"sfp-icon\"}\n style={style}\n >\n <path\n d=\"M0.888801 5.112C0.653076 5.112 0.427006 5.20564 0.260324 5.37232C0.0936412 5.53901 0 5.76508 0 6.0008C0 6.23653 0.0936412 6.46259 0.260324 6.62928C0.427006 6.79596 0.653076 6.8896 0.888801 6.8896C1.12453 6.8896 1.35059 6.79596 1.51728 6.62928C1.68396 6.46259 1.7776 6.23653 1.7776 6.0008C1.7776 5.76508 1.68396 5.53901 1.51728 5.37232C1.35059 5.20564 1.12453 5.112 0.888801 5.112ZM0.888801 0.000800133C0.397601 0.000800133 0 0.3984 0 0.8896L0 3.3344C0 3.57013 0.0936412 3.79619 0.260324 3.96288C0.427006 4.12956 0.653076 4.2232 0.888801 4.2232C1.12453 4.2232 1.35059 4.12956 1.51728 3.96288C1.68396 3.79619 1.7776 3.57013 1.7776 3.3344V0.8888C1.7776 0.3976 1.38 0 0.8896 0L0.888801 0.000800133Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default IconAlert;\n"],"mappings":";AAkBM;AAhBC,IAAM,YAAY,CAAC,UAAqB;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAW,YAAY,YAAY,SAAS,KAAK;AAAA,MACjD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,gBAAQ;","names":[]}
@@ -0,0 +1,34 @@
1
+ // src/icons/arrow-down.tsx
2
+ import { jsx } from "react/jsx-runtime";
3
+ var IconArrowDown = (props) => {
4
+ const {
5
+ className,
6
+ style
7
+ } = props;
8
+ return /* @__PURE__ */ jsx(
9
+ "svg",
10
+ {
11
+ width: "11",
12
+ height: "6",
13
+ viewBox: "0 0 11 6",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ className: className ? `sfp-icon ${className}` : "sfp-icon",
17
+ style,
18
+ children: /* @__PURE__ */ jsx(
19
+ "path",
20
+ {
21
+ d: "M0.305908 0.395508L5.47832 4.39551L10.3059 0.395508",
22
+ stroke: "currentColor"
23
+ }
24
+ )
25
+ }
26
+ );
27
+ };
28
+ var arrow_down_default = IconArrowDown;
29
+
30
+ export {
31
+ IconArrowDown,
32
+ arrow_down_default
33
+ };
34
+ //# sourceMappingURL=chunk-OGSFVQK2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/arrow-down.tsx"],"sourcesContent":["import type { IconProps } from \"./types\";\n\nexport const IconArrowDown = (props: IconProps) => {\n const {\n className,\n style,\n } = props;\n\n return (\n <svg\n width=\"11\"\n height=\"6\"\n viewBox=\"0 0 11 6\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className ? `sfp-icon ${className}` : \"sfp-icon\"}\n style={style}\n >\n <path\n d=\"M0.305908 0.395508L5.47832 4.39551L10.3059 0.395508\"\n stroke=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default IconArrowDown;\n"],"mappings":";AAkBM;AAhBC,IAAM,gBAAgB,CAAC,UAAqB;AACjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAW,YAAY,YAAY,SAAS,KAAK;AAAA,MACjD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,qBAAQ;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-TUEV2KLC.js";
4
+
5
+ // src/skeleton/Skeleton.tsx
6
+ import { jsx } from "react/jsx-runtime";
7
+ function Skeleton({ className }) {
8
+ return /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("block animate-pulse rounded-[8px] bg-[#e8e8e8]", className) });
9
+ }
10
+
11
+ export {
12
+ Skeleton
13
+ };
14
+ //# sourceMappingURL=chunk-R46DAHYR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/skeleton/Skeleton.tsx"],"sourcesContent":["import { cn } from \"../lib/cn\";\n\nexport function Skeleton({ className }: { className?: string }) {\n return <span aria-hidden className={cn(\"block animate-pulse rounded-[8px] bg-[#e8e8e8]\", className)} />;\n}\n\nexport default Skeleton;\n"],"mappings":";;;;;AAGS;AADF,SAAS,SAAS,EAAE,UAAU,GAA2B;AAC9D,SAAO,oBAAC,UAAK,eAAW,MAAC,WAAW,GAAG,kDAAkD,SAAS,GAAG;AACvG;","names":[]}
@@ -0,0 +1,34 @@
1
+ // src/icons/search.tsx
2
+ import { jsx } from "react/jsx-runtime";
3
+ var IconSearch = (props) => {
4
+ const {
5
+ className,
6
+ style
7
+ } = props;
8
+ return /* @__PURE__ */ jsx(
9
+ "svg",
10
+ {
11
+ width: "14",
12
+ height: "14",
13
+ viewBox: "0 0 14 14",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ className: className ? `sfp-icon ${className}` : "sfp-icon",
17
+ style,
18
+ children: /* @__PURE__ */ jsx(
19
+ "path",
20
+ {
21
+ d: "M6.36129 0C9.8746 0 12.7226 2.84799 12.7226 6.36129C12.7226 7.87116 12.1965 9.2583 11.3179 10.3491C11.3904 10.363 11.457 10.3985 11.5091 10.4509L13.8904 12.8322C13.9606 12.9024 14 12.9976 14 13.0968C14 13.196 13.9606 13.2912 13.8904 13.3613L13.3613 13.8904C13.2912 13.9606 13.196 14 13.0968 14C12.9976 14 12.9024 13.9606 12.8322 13.8904L10.4509 11.5091C10.3985 11.4569 10.3628 11.3904 10.3483 11.3179C9.21949 12.229 7.81199 12.7249 6.36129 12.7226C2.84799 12.7226 -1.75403e-08 9.8746 0 6.36129C1.75403e-08 2.84799 2.84799 0 6.36129 0ZM6.36129 1.49677C3.67458 1.49677 1.49677 3.67458 1.49677 6.36129C1.49677 9.048 3.67458 11.2258 6.36129 11.2258C9.048 11.2258 11.2258 9.048 11.2258 6.36129C11.2258 3.67458 9.048 1.49677 6.36129 1.49677Z",
22
+ fill: "currentColor"
23
+ }
24
+ )
25
+ }
26
+ );
27
+ };
28
+ var search_default = IconSearch;
29
+
30
+ export {
31
+ IconSearch,
32
+ search_default
33
+ };
34
+ //# sourceMappingURL=chunk-R4BKHISR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/search.tsx"],"sourcesContent":["import type { IconProps } from \"./types\";\n\nexport const IconSearch = (props: IconProps) => {\n const {\n className,\n style,\n } = props;\n\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className ? `sfp-icon ${className}` : \"sfp-icon\"}\n style={style}\n >\n <path\n d=\"M6.36129 0C9.8746 0 12.7226 2.84799 12.7226 6.36129C12.7226 7.87116 12.1965 9.2583 11.3179 10.3491C11.3904 10.363 11.457 10.3985 11.5091 10.4509L13.8904 12.8322C13.9606 12.9024 14 12.9976 14 13.0968C14 13.196 13.9606 13.2912 13.8904 13.3613L13.3613 13.8904C13.2912 13.9606 13.196 14 13.0968 14C12.9976 14 12.9024 13.9606 12.8322 13.8904L10.4509 11.5091C10.3985 11.4569 10.3628 11.3904 10.3483 11.3179C9.21949 12.229 7.81199 12.7249 6.36129 12.7226C2.84799 12.7226 -1.75403e-08 9.8746 0 6.36129C1.75403e-08 2.84799 2.84799 0 6.36129 0ZM6.36129 1.49677C3.67458 1.49677 1.49677 3.67458 1.49677 6.36129C1.49677 9.048 3.67458 11.2258 6.36129 11.2258C9.048 11.2258 11.2258 9.048 11.2258 6.36129C11.2258 3.67458 9.048 1.49677 6.36129 1.49677Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default IconSearch;\n"],"mappings":";AAkBM;AAhBC,IAAM,aAAa,CAAC,UAAqB;AAC9C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAW,YAAY,YAAY,SAAS,KAAK;AAAA,MACjD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,iBAAQ;","names":[]}