@nastechai-research/ui 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +21 -0
  3. package/dist/assets/filler-bg0.webp +0 -0
  4. package/dist/assets.d.ts +38 -0
  5. package/dist/fonts/Collapse-Bold.woff2 +0 -0
  6. package/dist/fonts/Collapse-BoldItalic.woff2 +0 -0
  7. package/dist/fonts/Collapse-Italic.woff2 +0 -0
  8. package/dist/fonts/Collapse-Light.woff2 +0 -0
  9. package/dist/fonts/Collapse-LightItalic.woff2 +0 -0
  10. package/dist/fonts/Collapse-Regular.woff2 +0 -0
  11. package/dist/fonts/Collapse-Thin.woff2 +0 -0
  12. package/dist/fonts/Collapse-ThinItalic.woff2 +0 -0
  13. package/dist/fonts/Mondwest-Regular.woff2 +0 -0
  14. package/dist/fonts/Neuebit-Bold.woff2 +0 -0
  15. package/dist/fonts/RulesCompressed-Medium.woff2 +0 -0
  16. package/dist/fonts/RulesCompressed-Regular.woff2 +0 -0
  17. package/dist/fonts/RulesExpanded-Bold.woff2 +0 -0
  18. package/dist/fonts/RulesExpanded-Regular.woff2 +0 -0
  19. package/dist/fonts.d.ts +6 -0
  20. package/dist/fonts.js +6 -0
  21. package/dist/hooks/use-below-breakpoint.d.ts +2 -0
  22. package/dist/hooks/use-below-breakpoint.js +17 -0
  23. package/dist/hooks/use-capped-frame.d.ts +2 -0
  24. package/dist/hooks/use-capped-frame.js +15 -0
  25. package/dist/hooks/use-confirm-delete.d.ts +10 -0
  26. package/dist/hooks/use-confirm-delete.js +35 -0
  27. package/dist/hooks/use-css-var-dims.d.ts +1 -0
  28. package/dist/hooks/use-css-var-dims.js +29 -0
  29. package/dist/hooks/use-gpu-tier.d.ts +34 -0
  30. package/dist/hooks/use-gpu-tier.js +111 -0
  31. package/dist/hooks/use-render-loop.d.ts +41 -0
  32. package/dist/hooks/use-render-loop.js +63 -0
  33. package/dist/hooks/use-smooth-controls.d.ts +16 -0
  34. package/dist/hooks/use-smooth-controls.js +217 -0
  35. package/dist/hooks/use-toast.d.ts +7 -0
  36. package/dist/hooks/use-toast.js +21 -0
  37. package/dist/index.d.ts +79 -0
  38. package/dist/index.js +107 -0
  39. package/dist/ui/basic-page.d.ts +7 -0
  40. package/dist/ui/basic-page.js +18 -0
  41. package/dist/ui/build.css +4 -0
  42. package/dist/ui/components/animated-count.d.ts +10 -0
  43. package/dist/ui/components/animated-count.js +113 -0
  44. package/dist/ui/components/ascii.d.ts +10 -0
  45. package/dist/ui/components/ascii.js +79 -0
  46. package/dist/ui/components/badge.d.ts +6 -0
  47. package/dist/ui/components/badge.js +40 -0
  48. package/dist/ui/components/badges/nous-girl.d.ts +2 -0
  49. package/dist/ui/components/badges/nous-girl.js +83 -0
  50. package/dist/ui/components/blend-mode.d.ts +28 -0
  51. package/dist/ui/components/blend-mode.js +69 -0
  52. package/dist/ui/components/blink.d.ts +6 -0
  53. package/dist/ui/components/blink.js +17 -0
  54. package/dist/ui/components/bottom-sheet.d.ts +15 -0
  55. package/dist/ui/components/bottom-sheet.js +192 -0
  56. package/dist/ui/components/button.d.ts +14 -0
  57. package/dist/ui/components/button.js +147 -0
  58. package/dist/ui/components/card.d.ts +5 -0
  59. package/dist/ui/components/card.js +74 -0
  60. package/dist/ui/components/checkbox.d.ts +2 -0
  61. package/dist/ui/components/checkbox.js +27 -0
  62. package/dist/ui/components/command-block.d.ts +24 -0
  63. package/dist/ui/components/command-block.js +56 -0
  64. package/dist/ui/components/confirm-dialog.d.ts +13 -0
  65. package/dist/ui/components/confirm-dialog.js +113 -0
  66. package/dist/ui/components/cursor.d.ts +3 -0
  67. package/dist/ui/components/cursor.js +97 -0
  68. package/dist/ui/components/dialog.d.ts +15 -0
  69. package/dist/ui/components/dialog.js +171 -0
  70. package/dist/ui/components/dropdown-menu.d.ts +12 -0
  71. package/dist/ui/components/dropdown-menu.js +102 -0
  72. package/dist/ui/components/fit-text/fit-text.css +42 -0
  73. package/dist/ui/components/fit-text/index.d.ts +9 -0
  74. package/dist/ui/components/fit-text/index.js +25 -0
  75. package/dist/ui/components/graphs/bar-chart.d.ts +12 -0
  76. package/dist/ui/components/graphs/bar-chart.js +129 -0
  77. package/dist/ui/components/graphs/index.d.ts +3 -0
  78. package/dist/ui/components/graphs/index.js +4 -0
  79. package/dist/ui/components/graphs/line-chart.d.ts +14 -0
  80. package/dist/ui/components/graphs/line-chart.js +175 -0
  81. package/dist/ui/components/graphs/utils.d.ts +52 -0
  82. package/dist/ui/components/graphs/utils.js +162 -0
  83. package/dist/ui/components/grid/grid.css +79 -0
  84. package/dist/ui/components/grid/index.d.ts +2 -0
  85. package/dist/ui/components/grid/index.js +17 -0
  86. package/dist/ui/components/hover-bg.d.ts +1 -0
  87. package/dist/ui/components/hover-bg.js +14 -0
  88. package/dist/ui/components/icons/arrow.d.ts +6 -0
  89. package/dist/ui/components/icons/arrow.js +44 -0
  90. package/dist/ui/components/icons/check.d.ts +2 -0
  91. package/dist/ui/components/icons/check.js +13 -0
  92. package/dist/ui/components/icons/chevron.d.ts +6 -0
  93. package/dist/ui/components/icons/chevron.js +51 -0
  94. package/dist/ui/components/icons/discord.d.ts +2 -0
  95. package/dist/ui/components/icons/discord.js +15 -0
  96. package/dist/ui/components/icons/eye.d.ts +2 -0
  97. package/dist/ui/components/icons/eye.js +8 -0
  98. package/dist/ui/components/icons/gear.d.ts +6 -0
  99. package/dist/ui/components/icons/gear.js +30 -0
  100. package/dist/ui/components/icons/github.d.ts +2 -0
  101. package/dist/ui/components/icons/github.js +15 -0
  102. package/dist/ui/components/icons/hamburger.d.ts +6 -0
  103. package/dist/ui/components/icons/hamburger.js +56 -0
  104. package/dist/ui/components/icons/heart.d.ts +2 -0
  105. package/dist/ui/components/icons/heart.js +11 -0
  106. package/dist/ui/components/icons/index.d.ts +12 -0
  107. package/dist/ui/components/icons/index.js +13 -0
  108. package/dist/ui/components/icons/link.d.ts +2 -0
  109. package/dist/ui/components/icons/link.js +13 -0
  110. package/dist/ui/components/icons/minus.d.ts +2 -0
  111. package/dist/ui/components/icons/minus.js +13 -0
  112. package/dist/ui/components/icons/search.d.ts +2 -0
  113. package/dist/ui/components/icons/search.js +33 -0
  114. package/dist/ui/components/image-distortion.d.ts +21 -0
  115. package/dist/ui/components/image-distortion.js +398 -0
  116. package/dist/ui/components/input.d.ts +1 -0
  117. package/dist/ui/components/input.js +21 -0
  118. package/dist/ui/components/label.d.ts +1 -0
  119. package/dist/ui/components/label.js +18 -0
  120. package/dist/ui/components/leva-client.d.ts +1 -0
  121. package/dist/ui/components/leva-client.js +12 -0
  122. package/dist/ui/components/list-item.d.ts +6 -0
  123. package/dist/ui/components/list-item.js +27 -0
  124. package/dist/ui/components/overlays/blend-modes.d.ts +1 -0
  125. package/dist/ui/components/overlays/blend-modes.js +14 -0
  126. package/dist/ui/components/overlays/glitch.d.ts +6 -0
  127. package/dist/ui/components/overlays/glitch.js +209 -0
  128. package/dist/ui/components/overlays/greys.d.ts +6 -0
  129. package/dist/ui/components/overlays/greys.js +339 -0
  130. package/dist/ui/components/overlays/index.d.ts +14 -0
  131. package/dist/ui/components/overlays/index.js +34 -0
  132. package/dist/ui/components/overlays/lens-layers.d.ts +14 -0
  133. package/dist/ui/components/overlays/lens-layers.js +95 -0
  134. package/dist/ui/components/overlays/lens.d.ts +44 -0
  135. package/dist/ui/components/overlays/lens.js +60 -0
  136. package/dist/ui/components/overlays/noise.d.ts +6 -0
  137. package/dist/ui/components/overlays/noise.js +136 -0
  138. package/dist/ui/components/overlays/vignette.d.ts +6 -0
  139. package/dist/ui/components/overlays/vignette.js +47 -0
  140. package/dist/ui/components/poster.d.ts +62 -0
  141. package/dist/ui/components/poster.js +256 -0
  142. package/dist/ui/components/progress.d.ts +9 -0
  143. package/dist/ui/components/progress.js +53 -0
  144. package/dist/ui/components/scene-canvas.d.ts +23 -0
  145. package/dist/ui/components/scene-canvas.js +179 -0
  146. package/dist/ui/components/scramble.d.ts +9 -0
  147. package/dist/ui/components/scramble.js +63 -0
  148. package/dist/ui/components/segmented.d.ts +20 -0
  149. package/dist/ui/components/segmented.js +51 -0
  150. package/dist/ui/components/select.d.ts +18 -0
  151. package/dist/ui/components/select.js +215 -0
  152. package/dist/ui/components/selection-switcher.d.ts +1 -0
  153. package/dist/ui/components/selection-switcher.js +34 -0
  154. package/dist/ui/components/separator.d.ts +5 -0
  155. package/dist/ui/components/separator.js +22 -0
  156. package/dist/ui/components/shader.d.ts +7 -0
  157. package/dist/ui/components/shader.js +60 -0
  158. package/dist/ui/components/socials.d.ts +20 -0
  159. package/dist/ui/components/socials.js +21 -0
  160. package/dist/ui/components/spinner.d.ts +20 -0
  161. package/dist/ui/components/spinner.js +38 -0
  162. package/dist/ui/components/stats.d.ts +16 -0
  163. package/dist/ui/components/stats.js +36 -0
  164. package/dist/ui/components/switch.d.ts +7 -0
  165. package/dist/ui/components/switch.js +37 -0
  166. package/dist/ui/components/tabs.d.ts +14 -0
  167. package/dist/ui/components/tabs.js +44 -0
  168. package/dist/ui/components/terminal-demo.d.ts +32 -0
  169. package/dist/ui/components/terminal-demo.js +125 -0
  170. package/dist/ui/components/theme-toggle.d.ts +6 -0
  171. package/dist/ui/components/theme-toggle.js +66 -0
  172. package/dist/ui/components/tier-card.d.ts +53 -0
  173. package/dist/ui/components/tier-card.js +146 -0
  174. package/dist/ui/components/toast.d.ts +8 -0
  175. package/dist/ui/components/toast.js +39 -0
  176. package/dist/ui/components/tv.d.ts +3 -0
  177. package/dist/ui/components/tv.js +239 -0
  178. package/dist/ui/components/typography/h1.d.ts +11 -0
  179. package/dist/ui/components/typography/h1.js +18 -0
  180. package/dist/ui/components/typography/h2.d.ts +11 -0
  181. package/dist/ui/components/typography/h2.js +18 -0
  182. package/dist/ui/components/typography/index.d.ts +15 -0
  183. package/dist/ui/components/typography/index.js +41 -0
  184. package/dist/ui/components/typography/legend.d.ts +6 -0
  185. package/dist/ui/components/typography/legend.js +20 -0
  186. package/dist/ui/components/typography/small.d.ts +2 -0
  187. package/dist/ui/components/typography/small.js +9 -0
  188. package/dist/ui/components/watchlist.d.ts +11 -0
  189. package/dist/ui/components/watchlist.js +80 -0
  190. package/dist/ui/fonts.css +63 -0
  191. package/dist/ui/footer.d.ts +20 -0
  192. package/dist/ui/footer.js +65 -0
  193. package/dist/ui/globals.css +395 -0
  194. package/dist/ui/header.d.ts +41 -0
  195. package/dist/ui/header.js +270 -0
  196. package/dist/ui/layout-wrapper.d.ts +1 -0
  197. package/dist/ui/layout-wrapper.js +7 -0
  198. package/dist/utils/color.d.ts +4 -0
  199. package/dist/utils/color.js +14 -0
  200. package/dist/utils/index.d.ts +15 -0
  201. package/dist/utils/index.js +48 -0
  202. package/dist/utils/poly.d.ts +8 -0
  203. package/dist/utils/poly.js +3 -0
  204. package/package.json +120 -0
  205. package/src/assets/filler-bg0.webp +0 -0
  206. package/src/assets.d.ts +38 -0
  207. package/src/fonts/Collapse-Bold.woff2 +0 -0
  208. package/src/fonts/Collapse-BoldItalic.woff2 +0 -0
  209. package/src/fonts/Collapse-Italic.woff2 +0 -0
  210. package/src/fonts/Collapse-Light.woff2 +0 -0
  211. package/src/fonts/Collapse-LightItalic.woff2 +0 -0
  212. package/src/fonts/Collapse-Regular.woff2 +0 -0
  213. package/src/fonts/Collapse-Thin.woff2 +0 -0
  214. package/src/fonts/Collapse-ThinItalic.woff2 +0 -0
  215. package/src/fonts/Mondwest-Regular.woff2 +0 -0
  216. package/src/fonts/Neuebit-Bold.woff2 +0 -0
  217. package/src/fonts/RulesCompressed-Medium.woff2 +0 -0
  218. package/src/fonts/RulesCompressed-Regular.woff2 +0 -0
  219. package/src/fonts/RulesExpanded-Bold.woff2 +0 -0
  220. package/src/fonts/RulesExpanded-Regular.woff2 +0 -0
  221. package/src/fonts.ts +6 -0
  222. package/src/hooks/use-below-breakpoint.ts +21 -0
  223. package/src/hooks/use-capped-frame.ts +18 -0
  224. package/src/hooks/use-confirm-delete.ts +43 -0
  225. package/src/hooks/use-css-var-dims.ts +39 -0
  226. package/src/hooks/use-gpu-tier.ts +190 -0
  227. package/src/hooks/use-render-loop.ts +121 -0
  228. package/src/hooks/use-smooth-controls.ts +318 -0
  229. package/src/hooks/use-toast.ts +29 -0
  230. package/src/index.ts +130 -0
  231. package/src/ui/basic-page.tsx +34 -0
  232. package/src/ui/build.css +4 -0
  233. package/src/ui/components/animated-count.stories.tsx +67 -0
  234. package/src/ui/components/animated-count.tsx +168 -0
  235. package/src/ui/components/ascii.stories.tsx +30 -0
  236. package/src/ui/components/ascii.tsx +110 -0
  237. package/src/ui/components/badge.stories.tsx +31 -0
  238. package/src/ui/components/badge.tsx +60 -0
  239. package/src/ui/components/badges/nous-girl.tsx +52 -0
  240. package/src/ui/components/blend-mode.stories.tsx +33 -0
  241. package/src/ui/components/blend-mode.tsx +129 -0
  242. package/src/ui/components/blink.stories.tsx +32 -0
  243. package/src/ui/components/blink.tsx +21 -0
  244. package/src/ui/components/bottom-sheet.stories.tsx +43 -0
  245. package/src/ui/components/bottom-sheet.tsx +227 -0
  246. package/src/ui/components/button.stories.tsx +68 -0
  247. package/src/ui/components/button.tsx +170 -0
  248. package/src/ui/components/card.stories.tsx +63 -0
  249. package/src/ui/components/card.tsx +85 -0
  250. package/src/ui/components/checkbox.stories.tsx +113 -0
  251. package/src/ui/components/checkbox.tsx +36 -0
  252. package/src/ui/components/command-block.stories.tsx +52 -0
  253. package/src/ui/components/command-block.tsx +86 -0
  254. package/src/ui/components/confirm-dialog.stories.tsx +91 -0
  255. package/src/ui/components/confirm-dialog.tsx +130 -0
  256. package/src/ui/components/cursor.tsx +115 -0
  257. package/src/ui/components/dialog.stories.tsx +169 -0
  258. package/src/ui/components/dialog.tsx +177 -0
  259. package/src/ui/components/dropdown-menu.stories.tsx +52 -0
  260. package/src/ui/components/dropdown-menu.tsx +117 -0
  261. package/src/ui/components/fit-text/fit-text.css +42 -0
  262. package/src/ui/components/fit-text/index.stories.tsx +33 -0
  263. package/src/ui/components/fit-text/index.tsx +45 -0
  264. package/src/ui/components/forms.stories.tsx +173 -0
  265. package/src/ui/components/graphs/bar-chart.tsx +153 -0
  266. package/src/ui/components/graphs/index.stories.tsx +64 -0
  267. package/src/ui/components/graphs/index.tsx +4 -0
  268. package/src/ui/components/graphs/line-chart.tsx +213 -0
  269. package/src/ui/components/graphs/utils.tsx +265 -0
  270. package/src/ui/components/grid/grid.css +79 -0
  271. package/src/ui/components/grid/index.tsx +19 -0
  272. package/src/ui/components/hover-bg.stories.tsx +29 -0
  273. package/src/ui/components/hover-bg.tsx +15 -0
  274. package/src/ui/components/icons/arrow.tsx +42 -0
  275. package/src/ui/components/icons/check.tsx +14 -0
  276. package/src/ui/components/icons/chevron.tsx +45 -0
  277. package/src/ui/components/icons/discord.tsx +16 -0
  278. package/src/ui/components/icons/eye.tsx +12 -0
  279. package/src/ui/components/icons/gear.tsx +51 -0
  280. package/src/ui/components/icons/github.tsx +16 -0
  281. package/src/ui/components/icons/hamburger.tsx +52 -0
  282. package/src/ui/components/icons/heart.tsx +12 -0
  283. package/src/ui/components/icons/index.ts +12 -0
  284. package/src/ui/components/icons/link.tsx +14 -0
  285. package/src/ui/components/icons/minus.tsx +14 -0
  286. package/src/ui/components/icons/search.tsx +28 -0
  287. package/src/ui/components/image-distortion.stories.tsx +120 -0
  288. package/src/ui/components/image-distortion.tsx +499 -0
  289. package/src/ui/components/input.stories.tsx +39 -0
  290. package/src/ui/components/input.tsx +20 -0
  291. package/src/ui/components/label.stories.tsx +26 -0
  292. package/src/ui/components/label.tsx +16 -0
  293. package/src/ui/components/leva-client.tsx +14 -0
  294. package/src/ui/components/list-item.stories.tsx +83 -0
  295. package/src/ui/components/list-item.tsx +37 -0
  296. package/src/ui/components/overlays/blend-modes.ts +13 -0
  297. package/src/ui/components/overlays/glitch.tsx +243 -0
  298. package/src/ui/components/overlays/greys.tsx +386 -0
  299. package/src/ui/components/overlays/index.tsx +47 -0
  300. package/src/ui/components/overlays/lens-layers.tsx +121 -0
  301. package/src/ui/components/overlays/lens.ts +91 -0
  302. package/src/ui/components/overlays/noise.tsx +174 -0
  303. package/src/ui/components/overlays/vignette.tsx +60 -0
  304. package/src/ui/components/poster.stories.tsx +513 -0
  305. package/src/ui/components/poster.tsx +411 -0
  306. package/src/ui/components/progress.stories.tsx +48 -0
  307. package/src/ui/components/progress.tsx +56 -0
  308. package/src/ui/components/scene-canvas.tsx +254 -0
  309. package/src/ui/components/scramble.stories.tsx +49 -0
  310. package/src/ui/components/scramble.tsx +95 -0
  311. package/src/ui/components/segmented.stories.tsx +101 -0
  312. package/src/ui/components/segmented.tsx +81 -0
  313. package/src/ui/components/select.stories.tsx +88 -0
  314. package/src/ui/components/select.tsx +267 -0
  315. package/src/ui/components/selection-switcher.tsx +44 -0
  316. package/src/ui/components/separator.stories.tsx +33 -0
  317. package/src/ui/components/separator.tsx +24 -0
  318. package/src/ui/components/shader.tsx +83 -0
  319. package/src/ui/components/socials.tsx +42 -0
  320. package/src/ui/components/spinner.stories.tsx +101 -0
  321. package/src/ui/components/spinner.tsx +60 -0
  322. package/src/ui/components/stats.stories.tsx +24 -0
  323. package/src/ui/components/stats.tsx +53 -0
  324. package/src/ui/components/switch.stories.tsx +77 -0
  325. package/src/ui/components/switch.tsx +48 -0
  326. package/src/ui/components/tabs.stories.tsx +101 -0
  327. package/src/ui/components/tabs.tsx +66 -0
  328. package/src/ui/components/terminal-demo.stories.tsx +67 -0
  329. package/src/ui/components/terminal-demo.tsx +189 -0
  330. package/src/ui/components/theme-toggle.stories.tsx +47 -0
  331. package/src/ui/components/theme-toggle.tsx +66 -0
  332. package/src/ui/components/tier-card.stories.tsx +217 -0
  333. package/src/ui/components/tier-card.tsx +190 -0
  334. package/src/ui/components/toast.stories.tsx +55 -0
  335. package/src/ui/components/toast.tsx +49 -0
  336. package/src/ui/components/tv.stories.tsx +37 -0
  337. package/src/ui/components/tv.tsx +257 -0
  338. package/src/ui/components/typography/h1.tsx +18 -0
  339. package/src/ui/components/typography/h2.tsx +18 -0
  340. package/src/ui/components/typography/index.tsx +54 -0
  341. package/src/ui/components/typography/legend.tsx +24 -0
  342. package/src/ui/components/typography/small.tsx +11 -0
  343. package/src/ui/components/watchlist.stories.tsx +33 -0
  344. package/src/ui/components/watchlist.tsx +105 -0
  345. package/src/ui/fonts.css +63 -0
  346. package/src/ui/footer.tsx +111 -0
  347. package/src/ui/globals.css +395 -0
  348. package/src/ui/header.tsx +398 -0
  349. package/src/ui/layout-wrapper.tsx +11 -0
  350. package/src/utils/color.ts +21 -0
  351. package/src/utils/index.ts +62 -0
  352. package/src/utils/poly.ts +26 -0
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
+ import { Checkbox as CheckboxPrimitive } from "radix-ui";
5
+ import { cn } from "../../utils/index.js";
6
+ import { CheckIcon } from "./icons/check.js";
7
+ export const Checkbox = forwardRef(function Checkbox2({ className, ...props }, ref) {
8
+ return /* @__PURE__ */ jsx(
9
+ CheckboxPrimitive.Root,
10
+ {
11
+ className: cn(
12
+ "peer flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center border transition-colors outline-none",
13
+ "focus-visible:ring-1 focus-visible:ring-midground/30",
14
+ "disabled:cursor-not-allowed disabled:opacity-50",
15
+ "data-[state=unchecked]:border-midground/20 data-[state=unchecked]:bg-background",
16
+ "data-[state=unchecked]:hover:border-midground/30",
17
+ "data-[state=checked]:border-midground/30 data-[state=checked]:bg-midground/15",
18
+ "data-[state=indeterminate]:border-midground/30 data-[state=indeterminate]:bg-midground/15",
19
+ className
20
+ ),
21
+ ref,
22
+ ...props,
23
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-3 w-3 text-midground" }) })
24
+ }
25
+ );
26
+ });
27
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IGZvcndhcmRSZWYsIHR5cGUgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCB0eXBlIEVsZW1lbnRSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IGFzIENoZWNrYm94UHJpbWl0aXZlIH0gZnJvbSAncmFkaXgtdWknXG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmltcG9ydCB7IENoZWNrSWNvbiB9IGZyb20gJy4vaWNvbnMvY2hlY2snXG5cbmV4cG9ydCBjb25zdCBDaGVja2JveCA9IGZvcndhcmRSZWY8XG4gIEVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBDaGVja2JveFByb3BzXG4+KGZ1bmN0aW9uIENoZWNrYm94KHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpIHtcbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3BlZXIgZmxleCBoLTQgdy00IHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXIgdHJhbnNpdGlvbi1jb2xvcnMgb3V0bGluZS1ub25lJyxcbiAgICAgICAgJ2ZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1taWRncm91bmQvMzAnLFxuICAgICAgICAnZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgICAgICAnZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpib3JkZXItbWlkZ3JvdW5kLzIwIGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06YmctYmFja2dyb3VuZCcsXG4gICAgICAgICdkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOmhvdmVyOmJvcmRlci1taWRncm91bmQvMzAnLFxuICAgICAgICAnZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLW1pZGdyb3VuZC8zMCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1taWRncm91bmQvMTUnLFxuICAgICAgICAnZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06Ym9yZGVyLW1pZGdyb3VuZC8zMCBkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTpiZy1taWRncm91bmQvMTUnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtY3VycmVudFwiPlxuICAgICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtMyB3LTMgdGV4dC1taWRncm91bmRcIiAvPlxuICAgICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuICApXG59KVxuXG50eXBlIENoZWNrYm94UHJvcHMgPSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBNkJRO0FBM0JSLFNBQVMsa0JBQWtFO0FBQzNFLFNBQVMsWUFBWSx5QkFBeUI7QUFFOUMsU0FBUyxVQUFVO0FBRW5CLFNBQVMsaUJBQWlCO0FBRW5CLGFBQU0sV0FBVyxXQUd0QixTQUFTQSxVQUFTLEVBQUUsV0FBVyxHQUFHLE1BQU0sR0FBRyxLQUFLO0FBQ2hELFNBQ0U7QUFBQSxJQUFDLGtCQUFrQjtBQUFBLElBQWxCO0FBQUEsTUFDQyxXQUFXO0FBQUEsUUFDVDtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsTUFDQTtBQUFBLE1BQ0MsR0FBRztBQUFBLE1BRUosOEJBQUMsa0JBQWtCLFdBQWxCLEVBQTRCLFdBQVUsaURBQ3JDLDhCQUFDLGFBQVUsV0FBVSwwQkFBeUIsR0FDaEQ7QUFBQTtBQUFBLEVBQ0Y7QUFFSixDQUFDOyIsCiAgIm5hbWVzIjogWyJDaGVja2JveCJdCn0K
@@ -0,0 +1,24 @@
1
+ /**
2
+ * A "copy to clipboard" button that briefly shows a "Copied!" confirmation.
3
+ * Designed to sit alongside a short command string, not as a general button.
4
+ */
5
+ export declare function CopyButton({ children, className, copiedLabel, label, resetDelayMs, text }: CopyButtonProps): import("react").JSX.Element;
6
+ /**
7
+ * A labeled, copy-able command (or code) display. Pairs `<CopyButton>` with
8
+ * a monospace code block. Used for install/setup instructions.
9
+ */
10
+ export declare function CommandBlock({ className, code, label }: CommandBlockProps): import("react").JSX.Element;
11
+ interface CommandBlockProps {
12
+ className?: string;
13
+ code: string;
14
+ label: string;
15
+ }
16
+ interface CopyButtonProps {
17
+ children?: React.ReactNode;
18
+ className?: string;
19
+ copiedLabel?: string;
20
+ label?: string;
21
+ resetDelayMs?: number;
22
+ text: string;
23
+ }
24
+ export {};
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useState } from "react";
4
+ import { cn } from "../../utils/index.js";
5
+ import { Small } from "./typography/small.js";
6
+ export function CopyButton({
7
+ children,
8
+ className,
9
+ copiedLabel = "Copied!",
10
+ label = "Copy",
11
+ resetDelayMs = 2e3,
12
+ text
13
+ }) {
14
+ const [copied, setCopied] = useState(false);
15
+ const handleCopy = useCallback(() => {
16
+ void navigator.clipboard.writeText(text).then(() => {
17
+ setCopied(true);
18
+ setTimeout(() => setCopied(false), resetDelayMs);
19
+ });
20
+ }, [resetDelayMs, text]);
21
+ return /* @__PURE__ */ jsx(
22
+ "button",
23
+ {
24
+ className: cn(
25
+ "font-courier text-display cursor-pointer border-none bg-transparent text-xs",
26
+ "tracking-widest",
27
+ "hover:text-midground tap-highlight-transparent transition-colors",
28
+ "flex items-center justify-center",
29
+ copied ? "text-midground" : "text-text-secondary",
30
+ className
31
+ ),
32
+ onClick: handleCopy,
33
+ type: "button",
34
+ children: children ?? (copied ? copiedLabel : label)
35
+ }
36
+ );
37
+ }
38
+ export function CommandBlock({ className, code, label }) {
39
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", className), children: [
40
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
41
+ /* @__PURE__ */ jsx(Small, { className: "opacity-50", children: label }),
42
+ /* @__PURE__ */ jsx(CopyButton, { text: code })
43
+ ] }),
44
+ /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ className: cn(
48
+ "bg-background/40 font-courier border border-current/20",
49
+ "px-3 py-2 text-[0.6875rem] leading-relaxed lowercase"
50
+ ),
51
+ children: /* @__PURE__ */ jsx("code", { className: "break-all", children: code })
52
+ }
53
+ )
54
+ ] });
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG5pbXBvcnQgeyBTbWFsbCB9IGZyb20gJy4vdHlwb2dyYXBoeS9zbWFsbCdcblxuLyoqXG4gKiBBIFwiY29weSB0byBjbGlwYm9hcmRcIiBidXR0b24gdGhhdCBicmllZmx5IHNob3dzIGEgXCJDb3BpZWQhXCIgY29uZmlybWF0aW9uLlxuICogRGVzaWduZWQgdG8gc2l0IGFsb25nc2lkZSBhIHNob3J0IGNvbW1hbmQgc3RyaW5nLCBub3QgYXMgYSBnZW5lcmFsIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvcHlCdXR0b24oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb3BpZWRMYWJlbCA9ICdDb3BpZWQhJyxcbiAgbGFiZWwgPSAnQ29weScsXG4gIHJlc2V0RGVsYXlNcyA9IDIwMDAsXG4gIHRleHRcbn06IENvcHlCdXR0b25Qcm9wcykge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ29weSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0Q29waWVkKHRydWUpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldENvcGllZChmYWxzZSksIHJlc2V0RGVsYXlNcylcbiAgICB9KVxuICB9LCBbcmVzZXREZWxheU1zLCB0ZXh0XSlcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmb250LWNvdXJpZXIgdGV4dC1kaXNwbGF5IGN1cnNvci1wb2ludGVyIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHRleHQteHMnLFxuICAgICAgICAndHJhY2tpbmctd2lkZXN0JyxcbiAgICAgICAgJ2hvdmVyOnRleHQtbWlkZ3JvdW5kIHRhcC1oaWdobGlnaHQtdHJhbnNwYXJlbnQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxuICAgICAgICBjb3BpZWQgPyAndGV4dC1taWRncm91bmQnIDogJ3RleHQtdGV4dC1zZWNvbmRhcnknLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge2NoaWxkcmVuID8/IChjb3BpZWQgPyBjb3BpZWRMYWJlbCA6IGxhYmVsKX1cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG4vKipcbiAqIEEgbGFiZWxlZCwgY29weS1hYmxlIGNvbW1hbmQgKG9yIGNvZGUpIGRpc3BsYXkuIFBhaXJzIGA8Q29weUJ1dHRvbj5gIHdpdGhcbiAqIGEgbW9ub3NwYWNlIGNvZGUgYmxvY2suIFVzZWQgZm9yIGluc3RhbGwvc2V0dXAgaW5zdHJ1Y3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbWFuZEJsb2NrKHsgY2xhc3NOYW1lLCBjb2RlLCBsYWJlbCB9OiBDb21tYW5kQmxvY2tQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBnYXAtMScsIGNsYXNzTmFtZSl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPFNtYWxsIGNsYXNzTmFtZT1cIm9wYWNpdHktNTBcIj57bGFiZWx9PC9TbWFsbD5cblxuICAgICAgICA8Q29weUJ1dHRvbiB0ZXh0PXtjb2RlfSAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYmctYmFja2dyb3VuZC80MCBmb250LWNvdXJpZXIgYm9yZGVyIGJvcmRlci1jdXJyZW50LzIwJyxcbiAgICAgICAgICAncHgtMyBweS0yIHRleHQtWzAuNjg3NXJlbV0gbGVhZGluZy1yZWxheGVkIGxvd2VyY2FzZSdcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwiYnJlYWstYWxsXCI+e2NvZGV9PC9jb2RlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRCbG9ja1Byb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGNvZGU6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG59XG5cbmludGVyZmFjZSBDb3B5QnV0dG9uUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgY29waWVkTGFiZWw/OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbiAgcmVzZXREZWxheU1zPzogbnVtYmVyXG4gIHRleHQ6IHN0cmluZ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQThCSSxjQXdCRSxZQXhCRjtBQTVCSixTQUFTLGFBQWEsZ0JBQWdCO0FBRXRDLFNBQVMsVUFBVTtBQUVuQixTQUFTLGFBQWE7QUFNZixnQkFBUyxXQUFXO0FBQUEsRUFDekI7QUFBQSxFQUNBO0FBQUEsRUFDQSxjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZjtBQUNGLEdBQW9CO0FBQ2xCLFFBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSSxTQUFTLEtBQUs7QUFFMUMsUUFBTSxhQUFhLFlBQVksTUFBTTtBQUNuQyxTQUFLLFVBQVUsVUFBVSxVQUFVLElBQUksRUFBRSxLQUFLLE1BQU07QUFDbEQsZ0JBQVUsSUFBSTtBQUNkLGlCQUFXLE1BQU0sVUFBVSxLQUFLLEdBQUcsWUFBWTtBQUFBLElBQ2pELENBQUM7QUFBQSxFQUNILEdBQUcsQ0FBQyxjQUFjLElBQUksQ0FBQztBQUV2QixTQUNFO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxXQUFXO0FBQUEsUUFDVDtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0EsU0FBUyxtQkFBbUI7QUFBQSxRQUM1QjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFNBQVM7QUFBQSxNQUNULE1BQUs7QUFBQSxNQUVKLHVCQUFhLFNBQVMsY0FBYztBQUFBO0FBQUEsRUFDdkM7QUFFSjtBQU1PLGdCQUFTLGFBQWEsRUFBRSxXQUFXLE1BQU0sTUFBTSxHQUFzQjtBQUMxRSxTQUNFLHFCQUFDLFNBQUksV0FBVyxHQUFHLHVCQUF1QixTQUFTLEdBQ2pEO0FBQUEseUJBQUMsU0FBSSxXQUFVLHFDQUNiO0FBQUEsMEJBQUMsU0FBTSxXQUFVLGNBQWMsaUJBQU07QUFBQSxNQUVyQyxvQkFBQyxjQUFXLE1BQU0sTUFBTTtBQUFBLE9BQzFCO0FBQUEsSUFFQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsV0FBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBO0FBQUEsUUFDRjtBQUFBLFFBRUEsOEJBQUMsVUFBSyxXQUFVLGFBQWEsZ0JBQUs7QUFBQTtBQUFBLElBQ3BDO0FBQUEsS0FDRjtBQUVKOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,13 @@
1
+ export declare function ConfirmDialog({ cancelLabel, confirmLabel, description, destructive, loading, onCancel, onConfirm, open, title }: ConfirmDialogProps): import("react").JSX.Element;
2
+ interface ConfirmDialogProps {
3
+ cancelLabel?: string;
4
+ confirmLabel?: string;
5
+ description?: string;
6
+ destructive?: boolean;
7
+ loading?: boolean;
8
+ onCancel: () => void;
9
+ onConfirm: () => void;
10
+ open: boolean;
11
+ title: string;
12
+ }
13
+ export {};
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useRef } from "react";
4
+ import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
5
+ import { cn } from "../../utils/index.js";
6
+ import { Button } from "./button.js";
7
+ function WarningTriangle({ className }) {
8
+ return /* @__PURE__ */ jsxs(
9
+ "svg",
10
+ {
11
+ "aria-hidden": true,
12
+ className,
13
+ fill: "none",
14
+ stroke: "currentColor",
15
+ strokeLinecap: "round",
16
+ strokeLinejoin: "round",
17
+ strokeWidth: 2,
18
+ viewBox: "0 0 24 24",
19
+ children: [
20
+ /* @__PURE__ */ jsx("path", { d: "m10.29 3.86-8.16 14a2 2 0 0 0 1.73 3h16.28a2 2 0 0 0 1.73-3l-8.16-14a2 2 0 0 0-3.46 0z" }),
21
+ /* @__PURE__ */ jsx("line", { x1: "12", x2: "12", y1: "9", y2: "13" }),
22
+ /* @__PURE__ */ jsx("line", { x1: "12", x2: "12.01", y1: "17", y2: "17" })
23
+ ]
24
+ }
25
+ );
26
+ }
27
+ export function ConfirmDialog({
28
+ cancelLabel = "Cancel",
29
+ confirmLabel = "Confirm",
30
+ description,
31
+ destructive = false,
32
+ loading = false,
33
+ onCancel,
34
+ onConfirm,
35
+ open,
36
+ title
37
+ }) {
38
+ const confirmedRef = useRef(false);
39
+ return /* @__PURE__ */ jsx(
40
+ AlertDialogPrimitive.Root,
41
+ {
42
+ onOpenChange: (v) => {
43
+ if (!v && !confirmedRef.current) onCancel();
44
+ confirmedRef.current = false;
45
+ },
46
+ open,
47
+ children: /* @__PURE__ */ jsxs(AlertDialogPrimitive.Portal, { children: [
48
+ /* @__PURE__ */ jsx(
49
+ AlertDialogPrimitive.Overlay,
50
+ {
51
+ className: cn(
52
+ "fixed inset-0 z-50",
53
+ "bg-black/60 backdrop-blur-sm",
54
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0",
55
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0"
56
+ )
57
+ }
58
+ ),
59
+ /* @__PURE__ */ jsxs(
60
+ AlertDialogPrimitive.Content,
61
+ {
62
+ className: cn(
63
+ "fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
64
+ "w-[calc(100%-2rem)] max-w-md",
65
+ "border border-midground/15 bg-background-base text-foreground-base shadow-lg outline-none",
66
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
67
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
68
+ "duration-150"
69
+ ),
70
+ children: [
71
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 p-4 border-b border-midground/15", children: [
72
+ destructive && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "mt-0.5 shrink-0 text-destructive", children: /* @__PURE__ */ jsx(WarningTriangle, { className: "h-4 w-4" }) }),
73
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
74
+ /* @__PURE__ */ jsx(
75
+ AlertDialogPrimitive.Title,
76
+ {
77
+ className: "font-expanded text-sm font-bold tracking-[0.08em] uppercase",
78
+ children: title
79
+ }
80
+ ),
81
+ description && /* @__PURE__ */ jsx(
82
+ AlertDialogPrimitive.Description,
83
+ {
84
+ className: "font-mondwest text-xs text-midground/60 leading-relaxed",
85
+ children: description
86
+ }
87
+ )
88
+ ] })
89
+ ] }),
90
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2 p-3", children: [
91
+ /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { disabled: loading, outlined: true, type: "button", children: cancelLabel }) }),
92
+ /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, { asChild: true, children: /* @__PURE__ */ jsx(
93
+ Button,
94
+ {
95
+ destructive,
96
+ disabled: loading,
97
+ onClick: () => {
98
+ confirmedRef.current = true;
99
+ onConfirm();
100
+ },
101
+ type: "button",
102
+ children: loading ? "\u2026" : confirmLabel
103
+ }
104
+ ) })
105
+ ] })
106
+ ]
107
+ }
108
+ )
109
+ ] })
110
+ }
111
+ );
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQWxlcnREaWFsb2cgYXMgQWxlcnREaWFsb2dQcmltaXRpdmUgfSBmcm9tICdyYWRpeC11aSdcblxuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vYnV0dG9uJ1xuXG5mdW5jdGlvbiBXYXJuaW5nVHJpYW5nbGUoeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGFyaWEtaGlkZGVuXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJtMTAuMjkgMy44Ni04LjE2IDE0YTIgMiAwIDAgMCAxLjczIDNoMTYuMjhhMiAyIDAgMCAwIDEuNzMtM2wtOC4xNi0xNGEyIDIgMCAwIDAtMy40NiAwelwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeDI9XCIxMlwiIHkxPVwiOVwiIHkyPVwiMTNcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxMlwiIHgyPVwiMTIuMDFcIiB5MT1cIjE3XCIgeTI9XCIxN1wiIC8+XG4gICAgPC9zdmc+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpcm1EaWFsb2coe1xuICBjYW5jZWxMYWJlbCA9ICdDYW5jZWwnLFxuICBjb25maXJtTGFiZWwgPSAnQ29uZmlybScsXG4gIGRlc2NyaXB0aW9uLFxuICBkZXN0cnVjdGl2ZSA9IGZhbHNlLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIG9uQ2FuY2VsLFxuICBvbkNvbmZpcm0sXG4gIG9wZW4sXG4gIHRpdGxlXG59OiBDb25maXJtRGlhbG9nUHJvcHMpIHtcbiAgY29uc3QgY29uZmlybWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHJldHVybiAoXG4gICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlJvb3RcbiAgICAgIG9uT3BlbkNoYW5nZT17diA9PiB7XG4gICAgICAgIGlmICghdiAmJiAhY29uZmlybWVkUmVmLmN1cnJlbnQpIG9uQ2FuY2VsKClcbiAgICAgICAgY29uZmlybWVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgPlxuICAgICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXlcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZpeGVkIGluc2V0LTAgei01MCcsXG4gICAgICAgICAgICAnYmctYmxhY2svNjAgYmFja2Ryb3AtYmx1ci1zbScsXG4gICAgICAgICAgICAnZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAnLFxuICAgICAgICAgICAgJ2RhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wJ1xuICAgICAgICAgICl9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZpeGVkIHRvcC0xLzIgbGVmdC0xLzIgei01MCAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzInLFxuICAgICAgICAgICAgJ3ctW2NhbGMoMTAwJS0ycmVtKV0gbWF4LXctbWQnLFxuICAgICAgICAgICAgJ2JvcmRlciBib3JkZXItbWlkZ3JvdW5kLzE1IGJnLWJhY2tncm91bmQtYmFzZSB0ZXh0LWZvcmVncm91bmQtYmFzZSBzaGFkb3ctbGcgb3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgICdkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1JyxcbiAgICAgICAgICAgICdkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1JyxcbiAgICAgICAgICAgICdkdXJhdGlvbi0xNTAnXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBnYXAtMyBwLTQgYm9yZGVyLWIgYm9yZGVyLW1pZGdyb3VuZC8xNVwiPlxuICAgICAgICAgICAge2Rlc3RydWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbiBjbGFzc05hbWU9XCJtdC0wLjUgc2hyaW5rLTAgdGV4dC1kZXN0cnVjdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxXYXJuaW5nVHJpYW5nbGUgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMCBmbGV4IGZsZXgtY29sIGdhcC0xXCI+XG4gICAgICAgICAgICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtZXhwYW5kZWQgdGV4dC1zbSBmb250LWJvbGQgdHJhY2tpbmctWzAuMDhlbV0gdXBwZXJjYXNlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT5cblxuICAgICAgICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9udC1tb25kd2VzdCB0ZXh0LXhzIHRleHQtbWlkZ3JvdW5kLzYwIGxlYWRpbmctcmVsYXhlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTIgcC0zXCI+XG4gICAgICAgICAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgIDxCdXR0b24gZGlzYWJsZWQ9e2xvYWRpbmd9IG91dGxpbmVkIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9BbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+XG5cbiAgICAgICAgICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24gYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGRlc3RydWN0aXZlPXtkZXN0cnVjdGl2ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25maXJtZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIG9uQ29uZmlybSgpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtsb2FkaW5nID8gJ1x1MjAyNicgOiBjb25maXJtTGFiZWx9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9BbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgICAgIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuICAgIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuUm9vdD5cbiAgKVxufVxuXG5pbnRlcmZhY2UgQ29uZmlybURpYWxvZ1Byb3BzIHtcbiAgY2FuY2VsTGFiZWw/OiBzdHJpbmdcbiAgY29uZmlybUxhYmVsPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGRlc3RydWN0aXZlPzogYm9vbGVhblxuICBsb2FkaW5nPzogYm9vbGVhblxuICBvbkNhbmNlbDogKCkgPT4gdm9pZFxuICBvbkNvbmZpcm06ICgpID0+IHZvaWRcbiAgb3BlbjogYm9vbGVhblxuICB0aXRsZTogc3RyaW5nXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBVUksU0FVRSxLQVZGO0FBUkosU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsZUFBZSw0QkFBNEI7QUFFcEQsU0FBUyxVQUFVO0FBQ25CLFNBQVMsY0FBYztBQUV2QixTQUFTLGdCQUFnQixFQUFFLFVBQVUsR0FBMkI7QUFDOUQsU0FDRTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsZUFBVztBQUFBLE1BQ1g7QUFBQSxNQUNBLE1BQUs7QUFBQSxNQUNMLFFBQU87QUFBQSxNQUNQLGVBQWM7QUFBQSxNQUNkLGdCQUFlO0FBQUEsTUFDZixh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
@@ -0,0 +1,3 @@
1
+ export declare function Cursor({ scale }: {
2
+ scale?: number;
3
+ }): import("react").JSX.Element;
@@ -0,0 +1,97 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
+ const INTERACTIVE = 'a, button, [role="button"], input, textarea, select, [data-cursor]';
5
+ const HAND = "M6.84 21.83c-.47-.6-1.05-1.82-2.07-3.34-.58-.83-2.01-2.41-2.45-3.23a2.1 2.1 0 0 1-.25-1.67 2.2 2.2 0 0 1 2.39-1.67c.85.18 1.63.6 2.25 1.2.43.41.82.85 1.18 1.32.27.34.33.47.63.85.3.39.5.77.35.2-.11-.83-.31-2.23-.6-3.48-.21-.95-.26-1.1-.46-1.82s-.32-1.32-.54-2.13c-.2-.8-.35-1.62-.46-2.44a4.7 4.7 0 0 1 .43-3.08c.58-.55 1.44-.7 2.17-.37a4.4 4.4 0 0 1 1.57 2.17c.43 1.07.72 2.19.86 3.33.27 1.67.79 4.1.8 4.6 0-.61-.11-1.91 0-2.5.12-.6.54-1.1 1.12-1.33.5-.15 1.02-.19 1.53-.1.52.1.98.4 1.29.83.38.98.6 2 .63 3.05.04-.91.2-1.82.47-2.7.28-.39.68-.67 1.15-.8.55-.1 1.11-.1 1.66 0 .46.15.85.44 1.14.82.35.88.56 1.82.63 2.77 0 .23.12-.65.48-1.24a1.67 1.67 0 1 1 3.17 1.07v3.77c-.06.97-.2 1.94-.4 2.9-.29.85-.7 1.65-1.2 2.38-.8.9-1.48 1.92-1.98 3.02a6.67 6.67 0 0 0 .03 3.2c-.68.07-1.37.07-2.05 0-.65-.1-1.45-1.4-1.67-1.8a.63.63 0 0 0-1.13 0c-.37.64-1.18 1.79-1.75 1.85-1.12.14-3.42 0-5.23 0 0 0 .3-1.66-.39-2.27-.68-.6-1.38-1.3-1.9-1.76l-1.4-1.6Z";
6
+ export function Cursor({ scale = 0.8 }) {
7
+ const $root = useRef(null);
8
+ const $arrow = useRef(null);
9
+ const $ptr = useRef(null);
10
+ useEffect(() => {
11
+ const [root, arrow, ptr] = [$root.current, $arrow.current, $ptr.current];
12
+ if (!root || !arrow || !ptr) {
13
+ return;
14
+ }
15
+ const on = (el, ev, fn, opts) => {
16
+ el.addEventListener(ev, fn, opts);
17
+ return () => el.removeEventListener(ev, fn);
18
+ };
19
+ return [
20
+ on(
21
+ document,
22
+ "mousemove",
23
+ (e) => {
24
+ const { clientX: x, clientY: y } = e;
25
+ root.style.translate = `${x}px ${y}px`;
26
+ root.style.opacity = "1";
27
+ },
28
+ { passive: true }
29
+ ),
30
+ on(
31
+ document,
32
+ "mouseover",
33
+ (e) => {
34
+ const isPtr = !!e.target.closest?.(INTERACTIVE);
35
+ arrow.style.opacity = isPtr ? "0" : "1";
36
+ ptr.style.opacity = isPtr ? "1" : "0";
37
+ },
38
+ { passive: true }
39
+ ),
40
+ on(document, "mousedown", () => {
41
+ root.style.transform = "translate(1px, 1px)";
42
+ }),
43
+ on(document, "mouseup", () => {
44
+ root.style.transform = "";
45
+ }),
46
+ on(document.documentElement, "mouseleave", () => {
47
+ root.style.opacity = "0";
48
+ }),
49
+ on(document.documentElement, "mouseenter", () => {
50
+ root.style.opacity = "1";
51
+ })
52
+ ].reduce((_, fn) => fn, void 0);
53
+ }, []);
54
+ return /* @__PURE__ */ jsxs(
55
+ "div",
56
+ {
57
+ "aria-hidden": true,
58
+ ref: $root,
59
+ style: {
60
+ filter: "drop-shadow(1px 2px 0 #000)",
61
+ height: 32 * scale,
62
+ left: 0,
63
+ opacity: 0,
64
+ pointerEvents: "none",
65
+ position: "fixed",
66
+ top: 0,
67
+ width: 32 * scale,
68
+ willChange: "translate",
69
+ zIndex: 9999
70
+ },
71
+ children: [
72
+ /* @__PURE__ */ jsx("div", { ref: $arrow, style: { inset: 0, position: "absolute" }, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", children: /* @__PURE__ */ jsx(
73
+ "path",
74
+ {
75
+ d: "M1 1L1 14L5 10L8 15L10 14L7 9L12 9L1 1Z",
76
+ fill: "#fff",
77
+ stroke: "#000",
78
+ strokeLinejoin: "round",
79
+ strokeWidth: 1
80
+ }
81
+ ) }) }),
82
+ /* @__PURE__ */ jsx("div", { ref: $ptr, style: { inset: 0, opacity: 0, position: "absolute" }, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 28 29", children: /* @__PURE__ */ jsx(
83
+ "path",
84
+ {
85
+ d: HAND,
86
+ fill: "#fff",
87
+ stroke: "#000",
88
+ strokeLinejoin: "round",
89
+ strokeWidth: 2,
90
+ style: { paintOrder: "stroke fill" }
91
+ }
92
+ ) }) })
93
+ ]
94
+ }
95
+ );
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IElOVEVSQUNUSVZFID1cbiAgJ2EsIGJ1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbZGF0YS1jdXJzb3JdJ1xuXG5jb25zdCBIQU5EID1cbiAgJ002Ljg0IDIxLjgzYy0uNDctLjYtMS4wNS0xLjgyLTIuMDctMy4zNC0uNTgtLjgzLTIuMDEtMi40MS0yLjQ1LTMuMjNhMi4xIDIuMSAwIDAgMS0uMjUtMS42NyAyLjIgMi4yIDAgMCAxIDIuMzktMS42N2MuODUuMTggMS42My42IDIuMjUgMS4yLjQzLjQxLjgyLjg1IDEuMTggMS4zMi4yNy4zNC4zMy40Ny42My44NS4zLjM5LjUuNzcuMzUuMi0uMTEtLjgzLS4zMS0yLjIzLS42LTMuNDgtLjIxLS45NS0uMjYtMS4xLS40Ni0xLjgycy0uMzItMS4zMi0uNTQtMi4xM2MtLjItLjgtLjM1LTEuNjItLjQ2LTIuNDRhNC43IDQuNyAwIDAgMSAuNDMtMy4wOGMuNTgtLjU1IDEuNDQtLjcgMi4xNy0uMzdhNC40IDQuNCAwIDAgMSAxLjU3IDIuMTdjLjQzIDEuMDcuNzIgMi4xOS44NiAzLjMzLjI3IDEuNjcuNzkgNC4xLjggNC42IDAtLjYxLS4xMS0xLjkxIDAtMi41LjEyLS42LjU0LTEuMSAxLjEyLTEuMzMuNS0uMTUgMS4wMi0uMTkgMS41My0uMS41Mi4xLjk4LjQgMS4yOS44My4zOC45OC42IDIgLjYzIDMuMDUuMDQtLjkxLjItMS44Mi40Ny0yLjcuMjgtLjM5LjY4LS42NyAxLjE1LS44LjU1LS4xIDEuMTEtLjEgMS42NiAwIC40Ni4xNS44NS40NCAxLjE0LjgyLjM1Ljg4LjU2IDEuODIuNjMgMi43NyAwIC4yMy4xMi0uNjUuNDgtMS4yNGExLjY3IDEuNjcgMCAxIDEgMy4xNyAxLjA3djMuNzdjLS4wNi45Ny0uMiAxLjk0LS40IDIuOS0uMjkuODUtLjcgMS42NS0xLjIgMi4zOC0uOC45LTEuNDggMS45Mi0xLjk4IDMuMDJhNi42NyA2LjY3IDAgMCAwIC4wMyAzLjJjLS42OC4wNy0xLjM3LjA3LTIuMDUgMC0uNjUtLjEtMS40NS0xLjQtMS42Ny0xLjhhLjYzLjYzIDAgMCAwLTEuMTMgMGMtLjM3LjY0LTEuMTggMS43OS0xLjc1IDEuODUtMS4xMi4xNC0zLjQyIDAtNS4yMyAwIDAgMCAuMy0xLjY2LS4zOS0yLjI3LS42OC0uNi0xLjM4LTEuMy0xLjktMS43NmwtMS40LTEuNlonXG5cbmV4cG9ydCBmdW5jdGlvbiBDdXJzb3IoeyBzY2FsZSA9IDAuOCB9OiB7IHNjYWxlPzogbnVtYmVyIH0pIHtcbiAgY29uc3QgJHJvb3QgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0ICRhcnJvdyA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgJHB0ciA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IFtyb290LCBhcnJvdywgcHRyXSA9IFskcm9vdC5jdXJyZW50LCAkYXJyb3cuY3VycmVudCwgJHB0ci5jdXJyZW50XVxuXG4gICAgaWYgKCFyb290IHx8ICFhcnJvdyB8fCAhcHRyKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBvbiA9IChcbiAgICAgIGVsOiBFdmVudFRhcmdldCxcbiAgICAgIGV2OiBzdHJpbmcsXG4gICAgICBmbjogRXZlbnRMaXN0ZW5lcixcbiAgICAgIG9wdHM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuICAgICkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldiwgZm4sIG9wdHMpXG5cbiAgICAgIHJldHVybiAoKSA9PiBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2LCBmbilcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgb24oXG4gICAgICAgIGRvY3VtZW50LFxuICAgICAgICAnbW91c2Vtb3ZlJyxcbiAgICAgICAgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBjbGllbnRYOiB4LCBjbGllbnRZOiB5IH0gPSBlIGFzIE1vdXNlRXZlbnRcbiAgICAgICAgICByb290LnN0eWxlLnRyYW5zbGF0ZSA9IGAke3h9cHggJHt5fXB4YFxuICAgICAgICAgIHJvb3Quc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9LFxuICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxuICAgICAgKSxcblxuICAgICAgb24oXG4gICAgICAgIGRvY3VtZW50LFxuICAgICAgICAnbW91c2VvdmVyJyxcbiAgICAgICAgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNQdHIgPSAhIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdD8uKElOVEVSQUNUSVZFKVxuICAgICAgICAgIGFycm93LnN0eWxlLm9wYWNpdHkgPSBpc1B0ciA/ICcwJyA6ICcxJ1xuICAgICAgICAgIHB0ci5zdHlsZS5vcGFjaXR5ID0gaXNQdHIgPyAnMScgOiAnMCdcbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cbiAgICAgICksXG5cbiAgICAgIG9uKGRvY3VtZW50LCAnbW91c2Vkb3duJywgKCkgPT4ge1xuICAgICAgICByb290LnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMXB4LCAxcHgpJ1xuICAgICAgfSksXG4gICAgICBvbihkb2N1bWVudCwgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgIHJvb3Quc3R5bGUudHJhbnNmb3JtID0gJydcbiAgICAgIH0pLFxuICAgICAgb24oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgICAgcm9vdC5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gICAgICB9KSxcbiAgICAgIG9uKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHJvb3Quc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgfSlcbiAgICBdLnJlZHVjZSgoXywgZm4pID0+IGZuLCB1bmRlZmluZWQgYXMgdW5rbm93biBhcyB2b2lkKVxuICB9LCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGFyaWEtaGlkZGVuXG4gICAgICByZWY9eyRyb290fVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgZmlsdGVyOiAnZHJvcC1zaGFkb3coMXB4IDJweCAwICMwMDApJyxcbiAgICAgICAgaGVpZ2h0OiAzMiAqIHNjYWxlLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHdpZHRoOiAzMiAqIHNjYWxlLFxuICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNsYXRlJyxcbiAgICAgICAgekluZGV4OiA5OTk5XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgcmVmPXskYXJyb3d9IHN0eWxlPXt7IGluc2V0OiAwLCBwb3NpdGlvbjogJ2Fic29sdXRlJyB9fT5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMSAxTDEgMTRMNSAxMEw4IDE1TDEwIDE0TDcgOUwxMiA5TDEgMVpcIlxuICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzAwMFwiXG4gICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsxfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgcmVmPXskcHRyfSBzdHlsZT17eyBpbnNldDogMCwgb3BhY2l0eTogMCwgcG9zaXRpb246ICdhYnNvbHV0ZScgfX0+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyOCAyOVwiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXtIQU5EfVxuICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzAwMFwiXG4gICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgc3R5bGU9e3sgcGFpbnRPcmRlcjogJ3N0cm9rZSBmaWxsJyB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUF3RUksU0FrQk0sS0FsQk47QUF0RUosU0FBUyxXQUFXLGNBQWM7QUFFbEMsTUFBTSxjQUNKO0FBRUYsTUFBTSxPQUNKO0FBRUssZ0JBQVMsT0FBTyxFQUFFLFFBQVEsSUFBSSxHQUF1QjtBQUMxRCxRQUFNLFFBQVEsT0FBdUIsSUFBSTtBQUN6QyxRQUFNLFNBQVMsT0FBdUIsSUFBSTtBQUMxQyxRQUFNLE9BQU8sT0FBdUIsSUFBSTtBQUV4QyxZQUFVLE1BQU07QUFDZCxVQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sU0FBUyxPQUFPLFNBQVMsS0FBSyxPQUFPO0FBRXZFLFFBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDM0I7QUFBQSxJQUNGO0FBRUEsVUFBTSxLQUFLLENBQ1QsSUFDQSxJQUNBLElBQ0EsU0FDRztBQUNILFNBQUcsaUJBQWlCLElBQUksSUFBSSxJQUFJO0FBRWhDLGFBQU8sTUFBTSxHQUFHLG9CQUFvQixJQUFJLEVBQUU7QUFBQSxJQUM1QztBQUVBLFdBQU87QUFBQSxNQUNMO0FBQUEsUUFDRTtBQUFBLFFBQ0E7QUFBQSxRQUNBLENBQUMsTUFBYTtBQUNaLGdCQUFNLEVBQUUsU0FBUyxHQUFHLFNBQVMsRUFBRSxJQUFJO0FBQ25DLGVBQUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDbEMsZUFBSyxNQUFNLFVBQVU7QUFBQSxRQUN2QjtBQUFBLFFBQ0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxNQUNsQjtBQUFBLE1BRUE7QUFBQSxRQUNFO0FBQUEsUUFDQTtBQUFBLFFBQ0EsQ0FBQyxNQUFhO0FBQ1osZ0JBQU0sUUFBUSxDQUFDLENBQUUsRUFBRSxPQUF1QixVQUFVLFdBQVc7QUFDL0QsZ0JBQU0sTUFBTSxVQUFVLFFBQVEsTUFBTTtBQUNwQyxjQUFJLE1BQU0sVUFBVSxRQUFRLE1BQU07QUFBQSxRQUNwQztBQUFBLFFBQ0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxNQUNsQjtBQUFBLE1BRUEsR0FBRyxVQUFVLGFBQWEsTUFBTTtBQUM5QixhQUFLLE1BQU0sWUFBWTtBQUFBLE1BQ3pCLENBQUM7QUFBQSxNQUNELEdBQUcsVUFBVSxXQUFXLE1BQU07QUFDNUIsYUFBSyxNQUFNLFlBQVk7QUFBQSxNQUN6QixDQUFDO0FBQUEsTUFDRCxHQUFHLFNBQVMsaUJBQWlCLGNBQWMsTUFBTTtBQUMvQyxhQUFLLE1BQU0sVUFBVTtBQUFBLE1BQ3ZCLENBQUM7QUFBQSxNQUNELEdBQUcsU0FBUyxpQkFBaUIsY0FBYyxNQUFNO0FBQy9DLGFBQUssTUFBTSxVQUFVO0FBQUEsTUFDdkIsQ0FBQztBQUFBLElBQ0gsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLElBQUksTUFBNEI7QUFBQSxFQUN0RCxHQUFHLENBQUMsQ0FBQztBQUVMLFNBQ0U7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLGVBQVc7QUFBQSxNQUNYLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxRQUNMLFFBQVE7QUFBQSxRQUNSLFFBQVEsS0FBSztBQUFBLFFBQ2IsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsZUFBZTtBQUFBLFFBQ2YsVUFBVTtBQUFBLFFBQ1YsS0FBSztBQUFBLFFBQ0wsT0FBTyxLQUFLO0FBQUEsUUFDWixZQUFZO0FBQUEsUUFDWixRQUFRO0FBQUEsTUFDVjtBQUFBLE1BRUE7QUFBQSw0QkFBQyxTQUFJLEtBQUssUUFBUSxPQUFPLEVBQUUsT0FBTyxHQUFHLFVBQVUsV0FBVyxHQUN4RCw4QkFBQyxTQUFJLFNBQVEsYUFDWDtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsR0FBRTtBQUFBLFlBQ0YsTUFBSztBQUFBLFlBQ0wsUUFBTztBQUFBLFlBQ1AsZ0JBQWU7QUFBQSxZQUNmLGFBQWE7QUFBQTtBQUFBLFFBQ2YsR0FDRixHQUNGO0FBQUEsUUFFQSxvQkFBQyxTQUFJLEtBQUssTUFBTSxPQUFPLEVBQUUsT0FBTyxHQUFHLFNBQVMsR0FBRyxVQUFVLFdBQVcsR0FDbEUsOEJBQUMsU0FBSSxTQUFRLGFBQ1g7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNDLEdBQUc7QUFBQSxZQUNILE1BQUs7QUFBQSxZQUNMLFFBQU87QUFBQSxZQUNQLGdCQUFlO0FBQUEsWUFDZixhQUFhO0FBQUEsWUFDYixPQUFPLEVBQUUsWUFBWSxjQUFjO0FBQUE7QUFBQSxRQUNyQyxHQUNGLEdBQ0Y7QUFBQTtBQUFBO0FBQUEsRUFDRjtBQUVKOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { Dialog as DialogPrimitive } from 'radix-ui';
3
+ declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): React.JSX.Element;
4
+ declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): React.JSX.Element;
5
+ declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): React.JSX.Element;
6
+ declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): React.JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): React.JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
9
+ showCloseButton?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
12
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
13
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
14
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
15
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
@@ -0,0 +1,171 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Dialog as DialogPrimitive } from "radix-ui";
4
+ import { cn } from "../../utils/index.js";
5
+ function Dialog({ ...props }) {
6
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
7
+ }
8
+ function DialogTrigger({ ...props }) {
9
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
10
+ }
11
+ function DialogPortal({ ...props }) {
12
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
13
+ }
14
+ function DialogClose({ ...props }) {
15
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
16
+ }
17
+ function DialogOverlay({
18
+ className,
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(
22
+ DialogPrimitive.Overlay,
23
+ {
24
+ className: cn(
25
+ "fixed inset-0 z-50",
26
+ "bg-black/60 backdrop-blur-sm",
27
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0",
28
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
29
+ className
30
+ ),
31
+ "data-slot": "dialog-overlay",
32
+ ...props
33
+ }
34
+ );
35
+ }
36
+ function DialogContent({
37
+ className,
38
+ children,
39
+ showCloseButton = true,
40
+ ...props
41
+ }) {
42
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
43
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
44
+ /* @__PURE__ */ jsxs(
45
+ DialogPrimitive.Content,
46
+ {
47
+ className: cn(
48
+ "fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
49
+ "grid w-full max-w-md gap-0",
50
+ "border border-midground/15 bg-background-base text-foreground-base shadow-lg outline-none",
51
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
52
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
53
+ "duration-150",
54
+ className
55
+ ),
56
+ "data-slot": "dialog-content",
57
+ ...props,
58
+ children: [
59
+ children,
60
+ showCloseButton && /* @__PURE__ */ jsxs(
61
+ DialogPrimitive.Close,
62
+ {
63
+ className: cn(
64
+ "absolute top-3 right-3",
65
+ "flex h-6 w-6 items-center justify-center",
66
+ "text-midground/50 transition-colors hover:text-midground",
67
+ "focus:outline-none focus-visible:ring-1 focus-visible:ring-midground/30",
68
+ "disabled:pointer-events-none"
69
+ ),
70
+ "data-slot": "dialog-close",
71
+ children: [
72
+ /* @__PURE__ */ jsx(XIcon, { className: "h-3.5 w-3.5" }),
73
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
74
+ ]
75
+ }
76
+ )
77
+ ]
78
+ }
79
+ )
80
+ ] });
81
+ }
82
+ function DialogHeader({ className, ...props }) {
83
+ return /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ className: cn(
87
+ "flex flex-col gap-1 p-4 border-b border-midground/15",
88
+ className
89
+ ),
90
+ "data-slot": "dialog-header",
91
+ ...props
92
+ }
93
+ );
94
+ }
95
+ function DialogFooter({ className, ...props }) {
96
+ return /* @__PURE__ */ jsx(
97
+ "div",
98
+ {
99
+ className: cn(
100
+ "flex items-center justify-end gap-2 p-3",
101
+ className
102
+ ),
103
+ "data-slot": "dialog-footer",
104
+ ...props
105
+ }
106
+ );
107
+ }
108
+ function DialogTitle({
109
+ className,
110
+ ...props
111
+ }) {
112
+ return /* @__PURE__ */ jsx(
113
+ DialogPrimitive.Title,
114
+ {
115
+ className: cn(
116
+ "font-expanded text-sm font-bold tracking-[0.08em] uppercase",
117
+ className
118
+ ),
119
+ "data-slot": "dialog-title",
120
+ ...props
121
+ }
122
+ );
123
+ }
124
+ function DialogDescription({
125
+ className,
126
+ ...props
127
+ }) {
128
+ return /* @__PURE__ */ jsx(
129
+ DialogPrimitive.Description,
130
+ {
131
+ className: cn(
132
+ "font-mondwest text-xs text-midground/60 leading-relaxed",
133
+ className
134
+ ),
135
+ "data-slot": "dialog-description",
136
+ ...props
137
+ }
138
+ );
139
+ }
140
+ function XIcon({ className }) {
141
+ return /* @__PURE__ */ jsxs(
142
+ "svg",
143
+ {
144
+ "aria-hidden": true,
145
+ className,
146
+ fill: "none",
147
+ stroke: "currentColor",
148
+ strokeLinecap: "round",
149
+ strokeLinejoin: "round",
150
+ strokeWidth: 2,
151
+ viewBox: "0 0 24 24",
152
+ children: [
153
+ /* @__PURE__ */ jsx("line", { x1: "18", x2: "6", y1: "6", y2: "18" }),
154
+ /* @__PURE__ */ jsx("line", { x1: "6", x2: "18", y1: "6", y2: "18" })
155
+ ]
156
+ }
157
+ );
158
+ }
159
+ export {
160
+ Dialog,
161
+ DialogClose,
162
+ DialogContent,
163
+ DialogDescription,
164
+ DialogFooter,
165
+ DialogHeader,
166
+ DialogOverlay,
167
+ DialogPortal,
168
+ DialogTitle,
169
+ DialogTrigger
170
+ };
171
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRGlhbG9nIGFzIERpYWxvZ1ByaW1pdGl2ZSB9IGZyb20gJ3JhZGl4LXVpJ1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG5mdW5jdGlvbiBEaWFsb2coeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlJvb3Q+KSB7XG4gIHJldHVybiA8RGlhbG9nUHJpbWl0aXZlLlJvb3QgZGF0YS1zbG90PVwiZGlhbG9nXCIgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBEaWFsb2dUcmlnZ2VyKHsgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyPikge1xuICByZXR1cm4gPERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyIGRhdGEtc2xvdD1cImRpYWxvZy10cmlnZ2VyXCIgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBEaWFsb2dQb3J0YWwoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlBvcnRhbD4pIHtcbiAgcmV0dXJuIDxEaWFsb2dQcmltaXRpdmUuUG9ydGFsIGRhdGEtc2xvdD1cImRpYWxvZy1wb3J0YWxcIiB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIERpYWxvZ0Nsb3NlKHsgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5DbG9zZT4pIHtcbiAgcmV0dXJuIDxEaWFsb2dQcmltaXRpdmUuQ2xvc2UgZGF0YS1zbG90PVwiZGlhbG9nLWNsb3NlXCIgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBEaWFsb2dPdmVybGF5KHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5Pikge1xuICByZXR1cm4gKFxuICAgIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZpeGVkIGluc2V0LTAgei01MCcsXG4gICAgICAgICdiZy1ibGFjay82MCBiYWNrZHJvcC1ibHVyLXNtJyxcbiAgICAgICAgJ2RhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJyxcbiAgICAgICAgJ2RhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wJyxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLW92ZXJsYXlcIlxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gRGlhbG9nQ29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+ICYge1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuXG59KSB7XG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1BvcnRhbD5cbiAgICAgIDxEaWFsb2dPdmVybGF5IC8+XG5cbiAgICAgIDxEaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdmaXhlZCB0b3AtMS8yIGxlZnQtMS8yIHotNTAgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yJyxcbiAgICAgICAgICAnZ3JpZCB3LWZ1bGwgbWF4LXctbWQgZ2FwLTAnLFxuICAgICAgICAgICdib3JkZXIgYm9yZGVyLW1pZGdyb3VuZC8xNSBiZy1iYWNrZ3JvdW5kLWJhc2UgdGV4dC1mb3JlZ3JvdW5kLWJhc2Ugc2hhZG93LWxnIG91dGxpbmUtbm9uZScsXG4gICAgICAgICAgJ2RhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUnLFxuICAgICAgICAgICdkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1JyxcbiAgICAgICAgICAnZHVyYXRpb24tMTUwJyxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKX1cbiAgICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLWNvbnRlbnRcIlxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cblxuICAgICAgICB7c2hvd0Nsb3NlQnV0dG9uICYmIChcbiAgICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLkNsb3NlXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAnYWJzb2x1dGUgdG9wLTMgcmlnaHQtMycsXG4gICAgICAgICAgICAgICdmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyxcbiAgICAgICAgICAgICAgJ3RleHQtbWlkZ3JvdW5kLzUwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnRleHQtbWlkZ3JvdW5kJyxcbiAgICAgICAgICAgICAgJ2ZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctbWlkZ3JvdW5kLzMwJyxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUnXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLWNsb3NlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8WEljb24gY2xhc3NOYW1lPVwiaC0zLjUgdy0zLjVcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLkNsb3NlPlxuICAgICAgICApfVxuICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgICA8L0RpYWxvZ1BvcnRhbD5cbiAgKVxufVxuXG5mdW5jdGlvbiBEaWFsb2dIZWFkZXIoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdkaXYnPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGZsZXgtY29sIGdhcC0xIHAtNCBib3JkZXItYiBib3JkZXItbWlkZ3JvdW5kLzE1JyxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLWhlYWRlclwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBEaWFsb2dGb290ZXIoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdkaXYnPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBnYXAtMiBwLTMnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBkYXRhLXNsb3Q9XCJkaWFsb2ctZm9vdGVyXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIERpYWxvZ1RpdGxlKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT4pIHtcbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZm9udC1leHBhbmRlZCB0ZXh0LXNtIGZvbnQtYm9sZCB0cmFja2luZy1bMC4wOGVtXSB1cHBlcmNhc2UnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBkYXRhLXNsb3Q9XCJkaWFsb2ctdGl0bGVcIlxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gRGlhbG9nRGVzY3JpcHRpb24oe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPikge1xuICByZXR1cm4gKFxuICAgIDxEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb25cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmb250LW1vbmR3ZXN0IHRleHQteHMgdGV4dC1taWRncm91bmQvNjAgbGVhZGluZy1yZWxheGVkJyxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgZGF0YS1zbG90PVwiZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFhJY29uKHsgY2xhc3NOYW1lIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBhcmlhLWhpZGRlblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICA+XG4gICAgICA8bGluZSB4MT1cIjE4XCIgeDI9XCI2XCIgeTE9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjZcIiB4Mj1cIjE4XCIgeTE9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgPC9zdmc+XG4gIClcbn1cblxuZXhwb3J0IHtcbiAgRGlhbG9nLFxuICBEaWFsb2dDbG9zZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG4gIERpYWxvZ0Zvb3RlcixcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dPdmVybGF5LFxuICBEaWFsb2dQb3J0YWwsXG4gIERpYWxvZ1RpdGxlLFxuICBEaWFsb2dUcmlnZ2VyXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBUVMsY0E4REMsWUE5REQ7QUFMVCxTQUFTLFVBQVUsdUJBQXVCO0FBRTFDLFNBQVMsVUFBVTtBQUVuQixTQUFTLE9BQU8sRUFBRSxHQUFHLE1BQU0sR0FBc0Q7QUFDL0UsU0FBTyxvQkFBQyxnQkFBZ0IsTUFBaEIsRUFBcUIsYUFBVSxVQUFVLEdBQUcsT0FBTztBQUM3RDtBQUVBLFNBQVMsY0FBYyxFQUFFLEdBQUcsTUFBTSxHQUF5RDtBQUN6RixTQUFPLG9CQUFDLGdCQUFnQixTQUFoQixFQUF3QixhQUFVLGtCQUFrQixHQUFHLE9BQU87QUFDeEU7QUFFQSxTQUFTLGFBQWEsRUFBRSxHQUFHLE1BQU0sR0FBd0Q7QUFDdkYsU0FBTyxvQkFBQyxnQkFBZ0IsUUFBaEIsRUFBdUIsYUFBVSxpQkFBaUIsR0FBRyxPQUFPO0FBQ3RFO0FBRUEsU0FBUyxZQUFZLEVBQUUsR0FBRyxNQUFNLEdBQXVEO0FBQ3JGLFNBQU8sb0JBQUMsZ0JBQWdCLE9BQWhCLEVBQXNCLGFBQVUsZ0JBQWdCLEdBQUcsT0FBTztBQUNwRTtBQUVBLFNBQVMsY0FBYztBQUFBLEVBQ3JCO0FBQUEsRUFDQSxHQUFHO0FBQ0wsR0FBeUQ7QUFDdkQsU0FDRTtBQUFBLElBQUMsZ0JBQWdCO0FBQUEsSUFBaEI7QUFBQSxNQUNDLFdB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
@@ -0,0 +1,12 @@
1
+ type Direction = 'down' | 'up' | 'left' | 'right';
2
+ export declare function DropdownMenu<T extends string>({ className, direction, onChange, options, value }: {
3
+ className?: string;
4
+ direction?: Direction;
5
+ onChange: (value: T) => void;
6
+ options: {
7
+ label: string;
8
+ value: T;
9
+ }[];
10
+ value: T;
11
+ }): import("react").JSX.Element;
12
+ export {};