@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,146 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../utils/index.js";
4
+ import { ImageDistortion } from "./image-distortion.js";
5
+ import { Typography } from "./typography/index.js";
6
+ export function TierCard({
7
+ badge,
8
+ bullets,
9
+ className,
10
+ image,
11
+ isCurrent = false,
12
+ onSelect,
13
+ overlay,
14
+ price,
15
+ selected = false,
16
+ tint,
17
+ tintStrength,
18
+ title
19
+ }) {
20
+ return /* @__PURE__ */ jsxs(
21
+ "button",
22
+ {
23
+ className: cn(
24
+ "group relative flex w-full cursor-pointer flex-col border border-current/20",
25
+ "text-left transition-colors duration-300",
26
+ selected && "border-midground/60",
27
+ isCurrent && !selected && "border-midground/30",
28
+ className
29
+ ),
30
+ onClick: onSelect,
31
+ type: "button",
32
+ children: [
33
+ /* @__PURE__ */ jsx(
34
+ "span",
35
+ {
36
+ "aria-hidden": true,
37
+ className: cn(
38
+ "arc-border transition-opacity duration-200",
39
+ selected ? "opacity-100" : "opacity-0 group-hover:opacity-100"
40
+ )
41
+ }
42
+ ),
43
+ /* @__PURE__ */ jsxs(
44
+ "div",
45
+ {
46
+ className: "relative aspect-[3/4] min-h-0 w-full flex-1 overflow-hidden",
47
+ style: { backgroundColor: "var(--background)" },
48
+ children: [
49
+ /* @__PURE__ */ jsx(
50
+ ImageDistortion,
51
+ {
52
+ active: selected,
53
+ src: image,
54
+ tint,
55
+ tintStrength
56
+ }
57
+ ),
58
+ overlay && /* @__PURE__ */ jsx(
59
+ "div",
60
+ {
61
+ className: "pointer-events-none absolute inset-0",
62
+ style: { backgroundColor: overlay, mixBlendMode: "color" }
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 z-[1] flex flex-col justify-between p-3", children: [
66
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
67
+ /* @__PURE__ */ jsxs(
68
+ Typography,
69
+ {
70
+ variant: "sm",
71
+ className: cn(
72
+ "block drop-shadow-[0_1px_2px_rgba(0,0,0,0.5)] text-[1.2rem]",
73
+ "transition-colors",
74
+ selected && "text-midground"
75
+ ),
76
+ style: selected ? { mixBlendMode: "plus-lighter" } : void 0,
77
+ children: [
78
+ title,
79
+ badge && /* @__PURE__ */ jsx("span", { className: "ml-1 opacity-50", children: badge })
80
+ ]
81
+ }
82
+ ),
83
+ price.secondary ? /* @__PURE__ */ jsxs(Fragment, { children: [
84
+ /* @__PURE__ */ jsxs(
85
+ Typography,
86
+ {
87
+ className: "block text-md line-through opacity-50 drop-shadow-[0_1px_3px_rgba(0,0,0,0.6)]",
88
+ expanded: true,
89
+ style: { mixBlendMode: "plus-lighter" },
90
+ children: [
91
+ price.secondary,
92
+ price.secondarySuffix && /* @__PURE__ */ jsx("span", { className: "text-[1rem]", children: price.secondarySuffix })
93
+ ]
94
+ }
95
+ ),
96
+ /* @__PURE__ */ jsxs(
97
+ Typography,
98
+ {
99
+ className: "block text-xl font-bold drop-shadow-[0_1px_3px_rgba(0,0,0,0.6)]",
100
+ expanded: true,
101
+ style: { mixBlendMode: "plus-lighter" },
102
+ children: [
103
+ price.primary,
104
+ price.primarySuffix && /* @__PURE__ */ jsxs("span", { className: "text-[1rem] opacity-60", children: [
105
+ " ",
106
+ price.primarySuffix
107
+ ] })
108
+ ]
109
+ }
110
+ )
111
+ ] }) : /* @__PURE__ */ jsxs(
112
+ Typography,
113
+ {
114
+ className: "block text-xl font-bold drop-shadow-[0_1px_3px_rgba(0,0,0,0.6)]",
115
+ expanded: true,
116
+ style: { mixBlendMode: "plus-lighter" },
117
+ children: [
118
+ price.primary,
119
+ price.primarySuffix && /* @__PURE__ */ jsx("span", { className: "text-[1rem] opacity-60", children: price.primarySuffix })
120
+ ]
121
+ }
122
+ )
123
+ ] }),
124
+ bullets.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs(
125
+ "li",
126
+ {
127
+ className: cn(
128
+ "font-courier text-display text-[1rem] leading-tight tracking-tight",
129
+ "drop-shadow-[0_1px_2px_rgba(0,0,0,0.5)]"
130
+ ),
131
+ children: [
132
+ "\xB7 ",
133
+ bullet
134
+ ]
135
+ },
136
+ typeof bullet === "string" ? bullet : i
137
+ )) })
138
+ ] })
139
+ ]
140
+ }
141
+ )
142
+ ]
143
+ }
144
+ );
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmltcG9ydCB7IEltYWdlRGlzdG9ydGlvbiB9IGZyb20gJy4vaW1hZ2UtZGlzdG9ydGlvbidcbmltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tICcuL3R5cG9ncmFwaHknXG5pbXBvcnQgeyBTbWFsbCB9IGZyb20gJy4vdHlwb2dyYXBoeS9zbWFsbCdcblxuLyoqXG4gKiBTZWxlY3RhYmxlIHRpZXIgLyBwcmljaW5nIGNhcmQuIEZ1bGwtYmxlZWQgZGlzdG9ydGVkIGltYWdlIGJhY2tncm91bmQsXG4gKiByZWFkYWJsZSBvdmVybGF5IHRleHQsIGFuZCBhbiBhbmltYXRlZCBgLmFyYy1ib3JkZXJgIHNoaW1tZXIgb24gdGhlXG4gKiBzZWxlY3RlZCBzdGF0ZS4gRnVsbHkgcHJlc2VudGF0aW9uYWwgXHUyMDE0IHRoZSBjb25zdW1lciBvd25zIHRoZSBkYXRhXG4gKiAodGllciBzY2hlbWEsIHByaWNlIGZvcm1hdHRpbmcsIHRpZXIgaW1hZ2VyeSAvIHRpbnRzKS5cbiAqXG4gKiBWaXN1YWwgc3RhdGVzOlxuICogLSBgc2VsZWN0ZWRgOiBicmlnaHRlbnMgdGhlIGRpc3RvcnRpb24sIGFjdGl2YXRlcyBgLmFyYy1ib3JkZXJgLCBhbmRcbiAqICAgY29tcG9zaXRlcyB0aGUgaGVhZGxpbmUgLyBwcmljZSB3aXRoIGBtaXgtYmxlbmQtbW9kZTogcGx1cy1saWdodGVyYFxuICogICBzbyB0aGUgdGV4dCBsaWZ0cyBvZmYgdGhlIGltYWdlIHJlZ2FyZGxlc3Mgb2YgdGludC5cbiAqIC0gYGlzQ3VycmVudGA6IHN1YnRsZSBtaWRncm91bmQtdGludGVkIGJvcmRlciBoaW50IChzdXBwcmVzc2VkIHdoZW5cbiAqICAgYHNlbGVjdGVkYCB3aW5zKS5cbiAqIC0gYG92ZXJsYXlgOiBvcHRpb25hbCB0b3AtbGF5ZXIgY29sb3IgYmxlbmRlZCB3aXRoIGBtaXgtYmxlbmQtbW9kZTpcbiAqICAgY29sb3JgIFx1MjAxNCB1c2VkIGZvciB0aGUgXCJoaWdoZXN0IHRpZXJcIiByZWQgdHJlYXRtZW50IG9uIHRvcCBvZiBhbnlcbiAqICAgYmFzZSB0aW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGllckNhcmQoe1xuICBiYWRnZSxcbiAgYnVsbGV0cyxcbiAgY2xhc3NOYW1lLFxuICBpbWFnZSxcbiAgaXNDdXJyZW50ID0gZmFsc2UsXG4gIG9uU2VsZWN0LFxuICBvdmVybGF5LFxuICBwcmljZSxcbiAgc2VsZWN0ZWQgPSBmYWxzZSxcbiAgdGludCxcbiAgdGludFN0cmVuZ3RoLFxuICB0aXRsZVxufTogVGllckNhcmRQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBmbGV4LWNvbCBib3JkZXIgYm9yZGVyLWN1cnJlbnQvMjAnLFxuICAgICAgICAndGV4dC1sZWZ0IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCcsXG4gICAgICAgIHNlbGVjdGVkICYmICdib3JkZXItbWlkZ3JvdW5kLzYwJyxcbiAgICAgICAgaXNDdXJyZW50ICYmICFzZWxlY3RlZCAmJiAnYm9yZGVyLW1pZGdyb3VuZC8zMCcsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIG9uQ2xpY2s9e29uU2VsZWN0fVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYXJjLWJvcmRlciB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwJyxcbiAgICAgICAgICBzZWxlY3RlZCA/ICdvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwJ1xuICAgICAgICApfVxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBhc3BlY3QtWzMvNF0gbWluLWgtMCB3LWZ1bGwgZmxleC0xIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJhY2tncm91bmQpJyB9fVxuICAgICAgPlxuICAgICAgICA8SW1hZ2VEaXN0b3J0aW9uXG4gICAgICAgICAgYWN0aXZlPXtzZWxlY3RlZH1cbiAgICAgICAgICBzcmM9e2ltYWdlfVxuICAgICAgICAgIHRpbnQ9e3RpbnR9XG4gICAgICAgICAgdGludFN0cmVuZ3RoPXt0aW50U3RyZW5ndGh9XG4gICAgICAgIC8+XG5cbiAgICAgICAge292ZXJsYXkgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMFwiXG4gICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IG92ZXJsYXksIG1peEJsZW5kTW9kZTogJ2NvbG9yJyB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LTAgei1bMV0gZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gcC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0wLjVcIj5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJzbVwiIFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdibG9jayBkcm9wLXNoYWRvdy1bMF8xcHhfMnB4X3JnYmEoMCwwLDAsMC41KV0gdGV4dC1bMS4ycmVtXScsXG4gICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCAmJiAndGV4dC1taWRncm91bmQnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RlZCA/IHsgbWl4QmxlbmRNb2RlOiAncGx1cy1saWdodGVyJyB9IDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgIHtiYWRnZSAmJiA8c3BhbiBjbGFzc05hbWU9XCJtbC0xIG9wYWNpdHktNTBcIj57YmFkZ2V9PC9zcGFuPn1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgICAge3ByaWNlLnNlY29uZGFyeSA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1tZCBsaW5lLXRocm91Z2ggb3BhY2l0eS01MCBkcm9wLXNoYWRvdy1bMF8xcHhfM3B4X3JnYmEoMCwwLDAsMC42KV1cIlxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1peEJsZW5kTW9kZTogJ3BsdXMtbGlnaHRlcicgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7cHJpY2Uuc2Vjb25kYXJ5fVxuICAgICAgICAgICAgICAgICAge3ByaWNlLnNlY29uZGFyeVN1ZmZpeCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzFyZW1dXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3ByaWNlLnNlY29uZGFyeVN1ZmZpeH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC14bCBmb250LWJvbGQgZHJvcC1zaGFkb3ctWzBfMXB4XzNweF9yZ2JhKDAsMCwwLDAuNildXCJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBtaXhCbGVuZE1vZGU6ICdwbHVzLWxpZ2h0ZXInIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3ByaWNlLnByaW1hcnl9XG4gICAgICAgICAgICAgICAgICB7cHJpY2UucHJpbWFyeVN1ZmZpeCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzFyZW1dIG9wYWNpdHktNjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgICAgICAgICAgIHtwcmljZS5wcmltYXJ5U3VmZml4fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHRleHQteGwgZm9udC1ib2xkIGRyb3Atc2hhZG93LVswXzFweF8zcHhfcmdiYSgwLDAsMCwwLjYpXVwiXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtaXhCbGVuZE1vZGU6ICdwbHVzLWxpZ2h0ZXInIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cHJpY2UucHJpbWFyeX1cbiAgICAgICAgICAgICAgICB7cHJpY2UucHJpbWFyeVN1ZmZpeCAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxcmVtXSBvcGFjaXR5LTYwXCI+XG4gICAgICAgICAgICAgICAgICAgIHtwcmljZS5wcmltYXJ5U3VmZml4fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7YnVsbGV0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCI+XG4gICAgICAgICAgICAgIHtidWxsZXRzLm1hcCgoYnVsbGV0LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZm9udC1jb3VyaWVyIHRleHQtZGlzcGxheSB0ZXh0LVsxcmVtXSBsZWFkaW5nLXRpZ2h0IHRyYWNraW5nLXRpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Atc2hhZG93LVswXzFweF8ycHhfcmdiYSgwLDAsMCwwLjUpXScsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAga2V5PXt0eXBlb2YgYnVsbGV0ID09PSAnc3RyaW5nJyA/IGJ1bGxldCA6IGl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgXHUwMEI3IHtidWxsZXR9XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG4gIClcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaWVyQ2FyZFByaWNlIHtcbiAgLyoqIEhlYWRsaW5lIHByaWNlLCBlLmcuIGBcIiQyMFwiYCBvciBgXCJGcmVlXCJgLiAqL1xuICBwcmltYXJ5OiBzdHJpbmdcbiAgLyoqIFNtYWxsIHN1ZmZpeCByZW5kZXJlZCBhZnRlciBgcHJpbWFyeWAsIGUuZy4gYFwiL21vXCJgIG9yIGBcImZpcnN0IHBheW1lbnRcImAuICovXG4gIHByaW1hcnlTdWZmaXg/OiBzdHJpbmdcbiAgLyoqIE9wdGlvbmFsIHN0cnVjay10aHJvdWdoIGNvbXBhcmlzb24gcHJpY2UgcmVuZGVyZWQgYWJvdmUgYHByaW1hcnlgLCBlLmcuIGBcIiQzMFwiYC4gKi9cbiAgc2Vjb25kYXJ5Pzogc3RyaW5nXG4gIC8qKiBTbWFsbCBzdWZmaXggcmVuZGVyZWQgYWZ0ZXIgYHNlY29uZGFyeWAuICovXG4gIHNlY29uZGFyeVN1ZmZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpZXJDYXJkUHJvcHMge1xuICAvKiogU21hbGwgYW5ub3RhdGlvbiBhZnRlciB0aGUgdGl0bGUsIGUuZy4gYFwiKGN1cnJlbnQpXCJgLiAqL1xuICBiYWRnZT86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogRmVhdHVyZSBsaXN0IHJlbmRlcmVkIHVuZGVyIHRoZSBwcmljZS4gKi9cbiAgYnVsbGV0czogUmVhY3QuUmVhY3ROb2RlW11cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKiBCYWNrZ3JvdW5kIGltYWdlIFVSTC4gKi9cbiAgaW1hZ2U6IHN0cmluZ1xuICAvKiogQXBwbGllcyB0aGUgXCJjdXJyZW50IHBsYW5cIiBib3JkZXIgaGludCB3aGVuIG5vdCBgc2VsZWN0ZWRgLiAqL1xuICBpc0N1cnJlbnQ/OiBib29sZWFuXG4gIG9uU2VsZWN0PzogKCkgPT4gdm9pZFxuICAvKiogQ29sb3IgYmxlbmRlZCB3aXRoIGBtaXgtYmxlbmQtbW9kZTogY29sb3JgIG92ZXIgdGhlIGltYWdlICh1c2VkIGZvciB0aGUgaGlnaGVzdC10aWVyIHJlZCB0cmVhdG1lbnQpLiAqL1xuICBvdmVybGF5Pzogc3RyaW5nXG4gIHByaWNlOiBUaWVyQ2FyZFByaWNlXG4gIC8qKiBBcHBsaWVzIHNlbGVjdGVkIGNocm9tZSAoYXJjLWJvcmRlciBzaGltbWVyLCBhY3RpdmUgZGlzdG9ydGlvbiwgcGx1cy1saWdodGVyIHRleHQgYmxlbmQpLiAqL1xuICBzZWxlY3RlZD86IGJvb2xlYW5cbiAgLyoqIFNoYWRlciB0aW50IHBhc3NlZCB0aHJvdWdoIHRvIGBJbWFnZURpc3RvcnRpb25gLiAqL1xuICB0aW50Pzogc3RyaW5nXG4gIC8qKiBBY3RpdmUgLyBpbmFjdGl2ZSB0aW50IHN0cmVuZ3RoIHBhc3NlZCB0aHJvdWdoIHRvIGBJbWFnZURpc3RvcnRpb25gLiAqL1xuICB0aW50U3RyZW5ndGg/OiB7IGFjdGl2ZTogbnVtYmVyOyBpbmFjdGl2ZTogbnVtYmVyIH1cbiAgLyoqIFRpZXIgbmFtZSAvIGhlYWRsaW5lLiAqL1xuICB0aXRsZTogUmVhY3QuUmVhY3ROb2RlXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBa0RNLFNBeUNRLFVBekNSLEtBNEJNLFlBNUJOO0FBaEROLFNBQVMsVUFBVTtBQUVuQixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLGtCQUFrQjtBQW1CcEIsZ0JBQVMsU0FBUztBQUFBLEVBQ3ZCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxZQUFZO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxXQUFXO0FBQUEsRUFDWDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsR0FBa0I7QUFDaEIsU0FDRTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsV0FBVztBQUFBLFFBQ1Q7QUFBQSxRQUNBO0FBQUEsUUFDQSxZQUFZO0FBQUEsUUFDWixhQUFhLENBQUMsWUFBWTtBQUFBLFFBQzFCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsU0FBUztBQUFBLE1BQ1QsTUFBSztBQUFBLE1BRUw7QUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsZUFBVztBQUFBLFlBQ1gsV0FBVztBQUFBLGNBQ1Q7QUFBQSxjQUNBLFdBQVcsZ0JBQWdCO0FBQUEsWUFDN0I7QUFBQTtBQUFBLFFBQ0Y7QUFBQSxRQUVBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQyxXQUFVO0FBQUEsWUFDVixPQUFPLEVBQUUsaUJBQWlCLG9CQUFvQjtBQUFBLFlBRTlDO0FBQUE7QUFBQSxnQkFBQztBQUFBO0FBQUEsa0JBQ0MsUUFBUTtBQUFBLGtCQUNSLEtBQUs7QUFBQSxrQkFDTDtBQUFBLGtCQUNBO0FBQUE7QUFBQSxjQUNGO0FBQUEsY0FFQyxXQUNDO0FBQUEsZ0JBQUM7QUFBQTtBQUFBLGtCQUNDLFdBQVU7QUFBQSxrQkFDVixPQUFPLEVBQUUsaUJBQWlCLFNBQVMsY0FBYyxRQUFRO0FBQUE7QUFBQSxjQUMzRDtBQUFBLGNBR0YscUJBQUMsU0FBSSxXQUFVLGdGQUNiO0FBQUEscUNBQUMsU0FBSSxXQUFVLHlCQUNiO0FBQUE7QUFBQSxvQkFBQztBQUFBO0FBQUEsc0JBQVcsU0FBUTtBQUFBLHNCQUNsQixXQUFXO0FBQUEsd0JBQ1Q7QUFBQSx3QkFDQTtBQUFBLHdCQUNBLFlBQVk7QUFBQSxzQkFDZDtBQUFBLHNCQUNBLE9BQU8sV0FBVyxFQUFFLGNBQWMsZUFBZSxJQUFJO0FBQUEsc0JBRXBEO0FBQUE7QUFBQSx3QkFDQSxTQUFTLG9CQUFDLFVBQUssV0FBVSxtQkFBbUIsaUJBQU07QUFBQTtBQUFBO0FBQUEsa0JBQ3JEO0FBQUEsa0JBRUMsTUFBTSxZQUNMLGlDQUNFO0FBQUE7QUFBQSxzQkFBQztBQUFBO0FBQUEsd0JBQ0MsV0FBVTtBQUFBLHdCQUNWLFVBQVE7QUFBQSx3QkFDUixPQUFPLEVBQUUsY0FBYyxlQUFlO0FBQUEsd0JBRXJDO0FBQUEsZ0NBQU07QUFBQSwwQkFDTixNQUFNLG1CQUNMLG9CQUFDLFVBQUssV0FBVSxlQUNiLGdCQUFNLGlCQUNUO0FBQUE7QUFBQTtBQUFBLG9CQUVKO0FBQUEsb0JBRUE7QUFBQSxzQkFBQztBQUFBO0FBQUEsd0JBQ0MsV0FBVTtBQUFBLHdCQUNWLFVBQVE7QUFBQSx3QkFDUixPQUFPLEVBQUUsY0FBYyxlQUFlO0FBQUEsd0JBRXJDO0FBQUEsZ0NBQU07QUFBQSwwQkFDTixNQUFNLGlCQUNMLHFCQUFDLFVBQUssV0FBVSwwQkFDYjtBQUFBO0FBQUEsNEJBQ0EsTUFBTTtBQUFBLDZCQUNUO0FBQUE7QUFBQTtBQUFBLG9CQUVKO0FBQUEscUJBQ0YsSUFFQTtBQUFBLG9CQUFDO0FBQUE7QUFBQSxzQkFDQyxXQUFVO0FBQUEsc0JBQ1YsVUFBUTtBQUFBLHNCQUNSLE9BQU8sRUFBRSxjQUFjLGVBQWU7QUFBQSxzQkFFckM7QUFBQSw4QkFBTTtBQUFBLHdCQUNOLE1BQU0saUJBQ0wsb0JBQUMsVUFBSyxXQUFVLDBCQUNiLGdCQUFNLGVBQ1Q7QUFBQTtBQUFBO0FBQUEsa0JBRUo7QUFBQSxtQkFFSjtBQUFBLGdCQUVDLFFBQVEsU0FBUyxLQUNoQixvQkFBQyxRQUFHLFdBQVUsdUJBQ1gsa0JBQVEsSUFBSSxDQUFDLFFBQVEsTUFDcEI7QUFBQSxrQkFBQztBQUFBO0FBQUEsb0JBQ0MsV0FBVztBQUFBLHNCQUNUO0FBQUEsc0JBQ0E7QUFBQSxvQkFDRjtBQUFBLG9CQUVEO0FBQUE7QUFBQSxzQkFDSTtBQUFBO0FBQUE7QUFBQSxrQkFGRSxPQUFPLFdBQVcsV0FBVyxTQUFTO0FBQUEsZ0JBRzdDLENBQ0QsR0FDSDtBQUFBLGlCQUVKO0FBQUE7QUFBQTtBQUFBLFFBQ0Y7QUFBQTtBQUFBO0FBQUEsRUFDRjtBQUVKOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,8 @@
1
+ export declare function Toast({ toast }: ToastProps): import("react").ReactPortal | null;
2
+ interface ToastProps {
3
+ toast: {
4
+ message: string;
5
+ type: 'error' | 'success';
6
+ } | null;
7
+ }
8
+ export {};
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { cn } from "../../utils/index.js";
6
+ export function Toast({ toast }) {
7
+ const [visible, setVisible] = useState(false);
8
+ const [current, setCurrent] = useState(toast);
9
+ useEffect(() => {
10
+ if (toast) {
11
+ setCurrent(toast);
12
+ setVisible(true);
13
+ } else {
14
+ setVisible(false);
15
+ const timer = setTimeout(() => setCurrent(null), 200);
16
+ return () => clearTimeout(timer);
17
+ }
18
+ }, [toast]);
19
+ if (!current || typeof document === "undefined") return null;
20
+ return createPortal(
21
+ /* @__PURE__ */ jsx(
22
+ "div",
23
+ {
24
+ "aria-live": "polite",
25
+ className: cn(
26
+ "fixed top-16 right-4 z-50 border px-4 py-2.5 font-courier text-xs tracking-wider uppercase backdrop-blur-sm",
27
+ current.type === "success" ? "bg-success/15 text-success border-success/30" : "bg-destructive/15 text-destructive border-destructive/30"
28
+ ),
29
+ role: "status",
30
+ style: {
31
+ animation: visible ? "toast-in 200ms ease-out forwards" : "toast-out 200ms ease-in forwards"
32
+ },
33
+ children: current.message
34
+ }
35
+ ),
36
+ document.body
37
+ );
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi91dGlscydcblxuZXhwb3J0IGZ1bmN0aW9uIFRvYXN0KHsgdG9hc3QgfTogVG9hc3RQcm9wcykge1xuICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlU3RhdGUodG9hc3QpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodG9hc3QpIHtcbiAgICAgIHNldEN1cnJlbnQodG9hc3QpXG4gICAgICBzZXRWaXNpYmxlKHRydWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZpc2libGUoZmFsc2UpXG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gc2V0Q3VycmVudChudWxsKSwgMjAwKVxuICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcilcbiAgICB9XG4gIH0sIFt0b2FzdF0pXG5cbiAgaWYgKCFjdXJyZW50IHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8ZGl2XG4gICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZpeGVkIHRvcC0xNiByaWdodC00IHotNTAgYm9yZGVyIHB4LTQgcHktMi41IGZvbnQtY291cmllciB0ZXh0LXhzIHRyYWNraW5nLXdpZGVyIHVwcGVyY2FzZSBiYWNrZHJvcC1ibHVyLXNtJyxcbiAgICAgICAgY3VycmVudC50eXBlID09PSAnc3VjY2VzcydcbiAgICAgICAgICA/ICdiZy1zdWNjZXNzLzE1IHRleHQtc3VjY2VzcyBib3JkZXItc3VjY2Vzcy8zMCdcbiAgICAgICAgICA6ICdiZy1kZXN0cnVjdGl2ZS8xNSB0ZXh0LWRlc3RydWN0aXZlIGJvcmRlci1kZXN0cnVjdGl2ZS8zMCdcbiAgICAgICl9XG4gICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGFuaW1hdGlvbjogdmlzaWJsZVxuICAgICAgICAgID8gJ3RvYXN0LWluIDIwMG1zIGVhc2Utb3V0IGZvcndhcmRzJ1xuICAgICAgICAgIDogJ3RvYXN0LW91dCAyMDBtcyBlYXNlLWluIGZvcndhcmRzJ1xuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y3VycmVudC5tZXNzYWdlfVxuICAgIDwvZGl2PixcbiAgICBkb2N1bWVudC5ib2R5XG4gIClcbn1cblxuaW50ZXJmYWNlIFRvYXN0UHJvcHMge1xuICB0b2FzdDogeyBtZXNzYWdlOiBzdHJpbmc7IHR5cGU6ICdlcnJvcicgfCAnc3VjY2VzcycgfSB8IG51bGxcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUF5Qkk7QUF2QkosU0FBUyxXQUFXLGdCQUFnQjtBQUNwQyxTQUFTLG9CQUFvQjtBQUU3QixTQUFTLFVBQVU7QUFFWixnQkFBUyxNQUFNLEVBQUUsTUFBTSxHQUFlO0FBQzNDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSSxTQUFTLEtBQUs7QUFDNUMsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJLFNBQVMsS0FBSztBQUU1QyxZQUFVLE1BQU07QUFDZCxRQUFJLE9BQU87QUFDVCxpQkFBVyxLQUFLO0FBQ2hCLGlCQUFXLElBQUk7QUFBQSxJQUNqQixPQUFPO0FBQ0wsaUJBQVcsS0FBSztBQUNoQixZQUFNLFFBQVEsV0FBVyxNQUFNLFdBQVcsSUFBSSxHQUFHLEdBQUc7QUFDcEQsYUFBTyxNQUFNLGFBQWEsS0FBSztBQUFBLElBQ2pDO0FBQUEsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRVYsTUFBSSxDQUFDLFdBQVcsT0FBTyxhQUFhLFlBQWEsUUFBTztBQUV4RCxTQUFPO0FBQUEsSUFDTDtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsYUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBLFFBQVEsU0FBUyxZQUNiLGlEQUNBO0FBQUEsUUFDTjtBQUFBLFFBQ0EsTUFBSztBQUFBLFFBQ0wsT0FBTztBQUFBLFVBQ0wsV0FBVyxVQUNQLHFDQUNBO0FBQUEsUUFDTjtBQUFBLFFBRUMsa0JBQVE7QUFBQTtBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,3 @@
1
+ export declare function TV({ className }: {
2
+ className?: string;
3
+ }): import("react").JSX.Element;
@@ -0,0 +1,239 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
+ const VERT = (
5
+ /* glsl */
6
+ `attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}`
7
+ );
8
+ const FRAG = (
9
+ /* glsl */
10
+ `precision highp float;
11
+ uniform float t;
12
+ uniform vec2 r;
13
+
14
+ const float FBM_STR = .08;
15
+
16
+ float h(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }
17
+
18
+ float n2(vec2 p) {
19
+ vec2 i = floor(p), f = fract(p);
20
+ f = f * f * (3. - 2. * f);
21
+
22
+ return mix(
23
+ mix(h(i), h(i + vec2(1, 0)), f.x),
24
+ mix(h(i + vec2(0, 1)), h(i + vec2(1, 1)), f.x),
25
+ f.y
26
+ );
27
+ }
28
+
29
+ float fbm(vec2 p) {
30
+ float v = 0., a = .5;
31
+
32
+ for (int i = 0; i < 4; i++) {
33
+ v += a * n2(p);
34
+ p *= 2.1;
35
+ a *= .45;
36
+ }
37
+
38
+ return v;
39
+ }
40
+
41
+ float drift(float speed, float s) {
42
+ return fract(t * speed + s + .02 * sin(t * .4 + s * 3.));
43
+ }
44
+
45
+ float brushAt(vec2 uv, float y, float th, float s) {
46
+ float hw = .34 + .08 * h(vec2(s, 77.));
47
+ float cx = .5;
48
+ float xn = (uv.x - (cx - hw)) / (2. * hw);
49
+ float env = smoothstep(0., .03, xn) * smoothstep(1., .97, xn);
50
+ float localTh = th * env;
51
+
52
+ if (localTh < .002) return 0.;
53
+
54
+ float morph = floor(t * 8.) * .7 + s;
55
+ float top = y - localTh * .5 + fbm(vec2(uv.x * 6., morph)) * FBM_STR;
56
+ float bot = y + localTh * .5 - fbm(vec2(uv.x * 6., morph + 30.)) * FBM_STR;
57
+ float x0 = cx - hw + fbm(vec2(uv.y * 8., morph + 60.)) * FBM_STR;
58
+ float x1 = cx + hw - fbm(vec2(uv.y * 8., morph + 90.)) * FBM_STR;
59
+
60
+ float dMin = min(min(uv.y - top, bot - uv.y), min(uv.x - x0, x1 - uv.x));
61
+
62
+ float bristle = n2(vec2(uv.x * 60., uv.y * 8. + s)) * .4
63
+ + n2(vec2(uv.x * 25., (uv.y - y) * 120. + s)) * .35
64
+ + n2(vec2(uv.x * 90., uv.y * 3. + s * 2.)) * .25;
65
+
66
+ float eaten = smoothstep(.03, 0., dMin) * (1. - smoothstep(.2, .5, bristle));
67
+
68
+ return clamp(smoothstep(0., .003, dMin) * (1. - eaten), 0., 1.);
69
+ }
70
+
71
+ void main() {
72
+ vec2 uv = gl_FragCoord.xy / r;
73
+ uv = vec2(uv.x * cos(.095) - uv.y * sin(.095), uv.x * sin(.095) + uv.y * cos(.095));
74
+ uv += vec2(fbm(uv * 4. + t * .06), fbm(uv * 4. + 8. + t * .05)) * .012;
75
+
76
+ vec3 c = vec3(.992, .992, .051);
77
+
78
+ float smScroll = -drift(.04, 5.) * 2.;
79
+ float sm = 0.;
80
+
81
+ for (int i = 0; i < 20; i++) {
82
+ sm = max(sm, brushAt(uv, mod(float(i) * .1 + smScroll, 2.) - .5, .04, float(i) + 10.));
83
+ }
84
+
85
+ float d1 = drift(.15, 1.), d2 = drift(.15, 1.37), d3 = drift(.15, 1.58), d4 = drift(.15, 1.82);
86
+ float big = max(
87
+ max(brushAt(uv, 1.1 - d1 * 1.4, .28, 1.), brushAt(uv, 1.1 - d2 * 1.4, .18, 2.)),
88
+ max(brushAt(uv, 1.1 - d3 * 1.4, .3, 3.), brushAt(uv, 1.1 - d4 * 1.4, .15, 4.))
89
+ );
90
+
91
+ c = mix(c, vec3(0.), clamp(max(sm, big), 0., 1.));
92
+ c *= .94 + .06 * sin(uv.y * r.y * 6.283);
93
+
94
+ vec2 raw = gl_FragCoord.xy / r;
95
+ float dx = min(raw.x - .22, .90 - raw.x);
96
+ float dy = min(raw.y - .29, .86 - raw.y);
97
+ float cycle = floor(t * .4);
98
+ float edge = mix(smoothstep(.22, 0., max(min(dx, dy), 0.)), 1., step(.75, h(vec2(cycle, 13.))))
99
+ * smoothstep(.85, 1., sin(t * 2.5) * .5 + .5)
100
+ * (.7 + .3 * h(vec2(cycle, 7.)));
101
+
102
+ float scanY = floor(gl_FragCoord.y);
103
+ float rowNoise = h(vec2(scanY, floor(t * 30.)));
104
+ c *= 1. - edge * max(step(.45, rowNoise), step(.3, h(vec2(gl_FragCoord.x + scanY * 7., floor(t * 45.)))) * step(.2, rowNoise));
105
+
106
+ gl_FragColor = vec4(clamp(c, 0., 1.), 1.);
107
+ }`
108
+ );
109
+ function useGL(ref) {
110
+ const raf = useRef(0);
111
+ useEffect(() => {
112
+ const c = ref.current;
113
+ if (!c) {
114
+ return;
115
+ }
116
+ const gl = c.getContext("webgl");
117
+ if (!gl) {
118
+ return;
119
+ }
120
+ const sh = (type, src) => {
121
+ const s = gl.createShader(type);
122
+ gl.shaderSource(s, src);
123
+ gl.compileShader(s);
124
+ return s;
125
+ };
126
+ const p = gl.createProgram();
127
+ gl.attachShader(p, sh(gl.VERTEX_SHADER, VERT));
128
+ gl.attachShader(p, sh(gl.FRAGMENT_SHADER, FRAG));
129
+ gl.linkProgram(p);
130
+ gl.useProgram(p);
131
+ gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
132
+ gl.bufferData(
133
+ gl.ARRAY_BUFFER,
134
+ new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]),
135
+ gl.STATIC_DRAW
136
+ );
137
+ const a = gl.getAttribLocation(p, "a");
138
+ gl.enableVertexAttribArray(a);
139
+ gl.vertexAttribPointer(a, 2, gl.FLOAT, false, 0, 0);
140
+ const uT = gl.getUniformLocation(p, "t");
141
+ const uR = gl.getUniformLocation(p, "r");
142
+ const resize = () => {
143
+ const rect = c.getBoundingClientRect();
144
+ const dpr = Math.min(devicePixelRatio, 2);
145
+ c.width = rect.width * dpr;
146
+ c.height = rect.height * dpr;
147
+ gl.viewport(0, 0, c.width, c.height);
148
+ };
149
+ resize();
150
+ const ro = new ResizeObserver(resize);
151
+ ro.observe(c);
152
+ const t0 = performance.now();
153
+ let visible = !document.hidden;
154
+ let inView = true;
155
+ let raf2 = 0;
156
+ const tick = () => {
157
+ gl.uniform1f(uT, (performance.now() - t0) / 1e3);
158
+ gl.uniform2f(uR, c.width, c.height);
159
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
160
+ raf2 = requestAnimationFrame(tick);
161
+ };
162
+ const start = () => {
163
+ if (visible && inView && !raf2) {
164
+ raf2 = requestAnimationFrame(tick);
165
+ }
166
+ };
167
+ const stop = () => {
168
+ if (raf2) {
169
+ cancelAnimationFrame(raf2);
170
+ raf2 = 0;
171
+ }
172
+ };
173
+ const onVisibility = () => {
174
+ visible = !document.hidden;
175
+ visible ? start() : stop();
176
+ };
177
+ const io = new IntersectionObserver(
178
+ (entries) => {
179
+ inView = entries.some((e) => e.isIntersecting);
180
+ inView ? start() : stop();
181
+ },
182
+ { threshold: 0 }
183
+ );
184
+ io.observe(c);
185
+ document.addEventListener("visibilitychange", onVisibility);
186
+ start();
187
+ raf.current = raf2;
188
+ return () => {
189
+ stop();
190
+ io.disconnect();
191
+ document.removeEventListener("visibilitychange", onVisibility);
192
+ ro.disconnect();
193
+ };
194
+ }, [ref]);
195
+ }
196
+ export function TV({ className }) {
197
+ const canvasRef = useRef(null);
198
+ useGL(canvasRef);
199
+ return /* @__PURE__ */ jsxs("div", { className: ["relative", className].filter(Boolean).join(" "), children: [
200
+ /* @__PURE__ */ jsxs("svg", { className: "relative h-full w-full", fill: "none", viewBox: "0 0 210 173", children: [
201
+ /* @__PURE__ */ jsx(
202
+ "path",
203
+ {
204
+ d: "M30.8342 2.44471 6.08268 36.683c-.24437.338-.38254.7412-.39689 1.158L1.57754 157.126c-.03891 1.129.82339 2.087 1.95096 2.167l162.4835 11.463c.433.031.866-.074 1.238-.3l35.718-21.69c.607-.369.986-1.02 1.008-1.73l4.102-130.9871c.035-1.1269-.826-2.0806-1.951-2.1604L32.6847 1.58029c-.7248-.05144-1.4247.27551-1.8505.86442Z",
205
+ fill: "#FDFD0D",
206
+ stroke: "#FDFD0D",
207
+ strokeWidth: "3.15"
208
+ }
209
+ ),
210
+ /* @__PURE__ */ jsx(
211
+ "path",
212
+ {
213
+ d: "M203.09 17.1483 35.6844 5.83395l-4.2 121.94805 168.4906 13.076z",
214
+ fill: "#000",
215
+ stroke: "#FDFD0D",
216
+ strokeWidth: "4.2"
217
+ }
218
+ ),
219
+ /* @__PURE__ */ jsx(
220
+ "path",
221
+ {
222
+ d: "M190.491 29.7483 48.2859 18.434l-4.2 98.848 143.2901 10.976z",
223
+ fill: "#FDFD0D"
224
+ }
225
+ )
226
+ ] }),
227
+ /* @__PURE__ */ jsx(
228
+ "canvas",
229
+ {
230
+ className: "absolute inset-0 h-full w-full",
231
+ ref: canvasRef,
232
+ style: {
233
+ clipPath: "polygon(23% 10.65%, 90.71% 17.2%, 89.23% 74.13%, 20.99% 67.79%)"
234
+ }
235
+ }
236
+ )
237
+ ] });
238
+ }
239
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IFZFUlQgPSAvKiBnbHNsICovIGBhdHRyaWJ1dGUgdmVjMiBhO3ZvaWQgbWFpbigpe2dsX1Bvc2l0aW9uPXZlYzQoYSwwLDEpO31gXG5cbmNvbnN0IEZSQUcgPSAvKiBnbHNsICovIGBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG51bmlmb3JtIGZsb2F0IHQ7XG51bmlmb3JtIHZlYzIgcjtcblxuY29uc3QgZmxvYXQgRkJNX1NUUiA9IC4wODtcblxuZmxvYXQgaCh2ZWMyIHApIHsgcmV0dXJuIGZyYWN0KHNpbihkb3QocCwgdmVjMigxMjcuMSwgMzExLjcpKSkgKiA0Mzc1OC41NDUzKTsgfVxuXG5mbG9hdCBuMih2ZWMyIHApIHtcbiAgdmVjMiBpID0gZmxvb3IocCksIGYgPSBmcmFjdChwKTtcbiAgZiA9IGYgKiBmICogKDMuIC0gMi4gKiBmKTtcblxuICByZXR1cm4gbWl4KFxuICAgIG1peChoKGkpLCBoKGkgKyB2ZWMyKDEsIDApKSwgZi54KSxcbiAgICBtaXgoaChpICsgdmVjMigwLCAxKSksIGgoaSArIHZlYzIoMSwgMSkpLCBmLngpLFxuICAgIGYueVxuICApO1xufVxuXG5mbG9hdCBmYm0odmVjMiBwKSB7XG4gIGZsb2F0IHYgPSAwLiwgYSA9IC41O1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdiArPSBhICogbjIocCk7XG4gICAgcCAqPSAyLjE7XG4gICAgYSAqPSAuNDU7XG4gIH1cblxuICByZXR1cm4gdjtcbn1cblxuZmxvYXQgZHJpZnQoZmxvYXQgc3BlZWQsIGZsb2F0IHMpIHtcbiAgcmV0dXJuIGZyYWN0KHQgKiBzcGVlZCArIHMgKyAuMDIgKiBzaW4odCAqIC40ICsgcyAqIDMuKSk7XG59XG5cbmZsb2F0IGJydXNoQXQodmVjMiB1diwgZmxvYXQgeSwgZmxvYXQgdGgsIGZsb2F0IHMpIHtcbiAgZmxvYXQgaHcgPSAuMzQgKyAuMDggKiBoKHZlYzIocywgNzcuKSk7XG4gIGZsb2F0IGN4ID0gLjU7XG4gIGZsb2F0IHhuID0gKHV2LnggLSAoY3ggLSBodykpIC8gKDIuICogaHcpO1xuICBmbG9hdCBlbnYgPSBzbW9vdGhzdGVwKDAuLCAuMDMsIHhuKSAqIHNtb290aHN0ZXAoMS4sIC45NywgeG4pO1xuICBmbG9hdCBsb2NhbFRoID0gdGggKiBlbnY7XG5cbiAgaWYgKGxvY2FsVGggPCAuMDAyKSByZXR1cm4gMC47XG5cbiAgZmxvYXQgbW9ycGggPSBmbG9vcih0ICogOC4pICogLjcgKyBzO1xuICBmbG9hdCB0b3AgPSB5IC0gbG9jYWxUaCAqIC41ICsgZmJtKHZlYzIodXYueCAqIDYuLCBtb3JwaCkpICogRkJNX1NUUjtcbiAgZmxvYXQgYm90ID0geSArIGxvY2FsVGggKiAuNSAtIGZibSh2ZWMyKHV2LnggKiA2LiwgbW9ycGggKyAzMC4pKSAqIEZCTV9TVFI7XG4gIGZsb2F0IHgwID0gY3ggLSBodyArIGZibSh2ZWMyKHV2LnkgKiA4LiwgbW9ycGggKyA2MC4pKSAqIEZCTV9TVFI7XG4gIGZsb2F0IHgxID0gY3ggKyBodyAtIGZibSh2ZWMyKHV2LnkgKiA4LiwgbW9ycGggKyA5MC4pKSAqIEZCTV9TVFI7XG5cbiAgZmxvYXQgZE1pbiA9IG1pbihtaW4odXYueSAtIHRvcCwgYm90IC0gdXYueSksIG1pbih1di54IC0geDAsIHgxIC0gdXYueCkpO1xuXG4gIGZsb2F0IGJyaXN0bGUgPSBuMih2ZWMyKHV2LnggKiA2MC4sIHV2LnkgKiA4LiArIHMpKSAqIC40XG4gICAgKyBuMih2ZWMyKHV2LnggKiAyNS4sICh1di55IC0geSkgKiAxMjAuICsgcykpICogLjM1XG4gICAgKyBuMih2ZWMyKHV2LnggKiA5MC4sIHV2LnkgKiAzLiArIHMgKiAyLikpICogLjI1O1xuXG4gIGZsb2F0IGVhdGVuID0gc21vb3Roc3RlcCguMDMsIDAuLCBkTWluKSAqICgxLiAtIHNtb290aHN0ZXAoLjIsIC41LCBicmlzdGxlKSk7XG5cbiAgcmV0dXJuIGNsYW1wKHNtb290aHN0ZXAoMC4sIC4wMDMsIGRNaW4pICogKDEuIC0gZWF0ZW4pLCAwLiwgMS4pO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgdXYgPSBnbF9GcmFnQ29vcmQueHkgLyByO1xuICB1diA9IHZlYzIodXYueCAqIGNvcyguMDk1KSAtIHV2LnkgKiBzaW4oLjA5NSksIHV2LnggKiBzaW4oLjA5NSkgKyB1di55ICogY29zKC4wOTUpKTtcbiAgdXYgKz0gdmVjMihmYm0odXYgKiA0LiArIHQgKiAuMDYpLCBmYm0odXYgKiA0LiArIDguICsgdCAqIC4wNSkpICogLjAxMjtcblxuICB2ZWMzIGMgPSB2ZWMzKC45OTIsIC45OTIsIC4wNTEpO1xuXG4gIGZsb2F0IHNtU2Nyb2xsID0gLWRyaWZ0KC4wNCwgNS4pICogMi47XG4gIGZsb2F0IHNtID0gMC47XG5cbiAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XG4gICAgc20gPSBtYXgoc20sIGJydXNoQXQodXYsIG1vZChmbG9hdChpKSAqIC4xICsgc21TY3JvbGwsIDIuKSAtIC41LCAuMDQsIGZsb2F0KGkpICsgMTAuKSk7XG4gIH1cblxuICBmbG9hdCBkMSA9IGRyaWZ0KC4xNSwgMS4pLCBkMiA9IGRyaWZ0KC4xNSwgMS4zNyksIGQzID0gZHJpZnQoLjE1LCAxLjU4KSwgZDQgPSBkcmlmdCguMTUsIDEuODIpO1xuICBmbG9hdCBiaWcgPSBtYXgoXG4gICAgbWF4KGJydXNoQXQodXYsIDEuMSAtIGQxICogMS40LCAuMjgsIDEuKSwgYnJ1c2hBdCh1diwgMS4xIC0gZDIgKiAxLjQsIC4xOCwgMi4pKSxcbiAgICBtYXgoYnJ1c2hBdCh1diwgMS4xIC0gZDMgKiAxLjQsIC4zLCAzLiksIGJydXNoQXQodXYsIDEuMSAtIGQ0ICogMS40LCAuMTUsIDQuKSlcbiAgKTtcblxuICBjID0gbWl4KGMsIHZlYzMoMC4pLCBjbGFtcChtYXgoc20sIGJpZyksIDAuLCAxLikpO1xuICBjICo9IC45NCArIC4wNiAqIHNpbih1di55ICogci55ICogNi4yODMpO1xuXG4gIHZlYzIgcmF3ID0gZ2xfRnJhZ0Nvb3JkLnh5IC8gcjtcbiAgZmxvYXQgZHggPSBtaW4ocmF3LnggLSAuMjIsIC45MCAtIHJhdy54KTtcbiAgZmxvYXQgZHkgPSBtaW4ocmF3LnkgLSAuMjksIC44NiAtIHJhdy55KTtcbiAgZmxvYXQgY3ljbGUgPSBmbG9vcih0ICogLjQpO1xuICBmbG9hdCBlZGdlID0gbWl4KHNtb290aHN0ZXAoLjIyLCAwLiwgbWF4KG1pbihkeCwgZHkpLCAwLikpLCAxLiwgc3RlcCguNzUsIGgodmVjMihjeWNsZSwgMTMuKSkpKVxuICAgICogc21vb3Roc3RlcCguODUsIDEuLCBzaW4odCAqIDIuNSkgKiAuNSArIC41KVxuICAgICogKC43ICsgLjMgKiBoKHZlYzIoY3ljbGUsIDcuKSkpO1xuXG4gIGZsb2F0IHNjYW5ZID0gZmxvb3IoZ2xfRnJhZ0Nvb3JkLnkpO1xuICBmbG9hdCByb3dOb2lzZSA9IGgodmVjMihzY2FuWSwgZmxvb3IodCAqIDMwLikpKTtcbiAgYyAqPSAxLiAtIGVkZ2UgKiBtYXgoc3RlcCguNDUsIHJvd05vaXNlKSwgc3RlcCguMywgaCh2ZWMyKGdsX0ZyYWdDb29yZC54ICsgc2NhblkgKiA3LiwgZmxvb3IodCAqIDQ1LikpKSkgKiBzdGVwKC4yLCByb3dOb2lzZSkpO1xuXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoY2xhbXAoYywgMC4sIDEuKSwgMS4pO1xufWBcblxuZnVuY3Rpb24gdXNlR0wocmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTENhbnZhc0VsZW1lbnQgfCBudWxsPikge1xuICBjb25zdCByYWYgPSB1c2VSZWYoMClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGMgPSByZWYuY3VycmVudFxuXG4gICAgaWYgKCFjKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBnbCA9IGMuZ2V0Q29udGV4dCgnd2ViZ2wnKVxuXG4gICAgaWYgKCFnbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc2ggPSAodHlwZTogbnVtYmVyLCBzcmM6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcyA9IGdsLmNyZWF0ZVNoYWRlcih0eXBlKSFcbiAgICAgIGdsLnNoYWRlclNvdXJjZShzLCBzcmMpXG4gICAgICBnbC5jb21waWxlU2hhZGVyKHMpXG5cbiAgICAgIHJldHVybiBzXG4gICAgfVxuXG4gICAgY29uc3QgcCA9IGdsLmNyZWF0ZVByb2dyYW0oKSFcbiAgICBnbC5hdHRhY2hTaGFkZXIocCwgc2goZ2wuVkVSVEVYX1NIQURFUiwgVkVSVCkpXG4gICAgZ2wuYXR0YWNoU2hhZGVyKHAsIHNoKGdsLkZSQUdNRU5UX1NIQURFUiwgRlJBRykpXG4gICAgZ2wubGlua1Byb2dyYW0ocClcbiAgICBnbC51c2VQcm9ncmFtKHApXG5cbiAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpXG4gICAgZ2wuYnVmZmVyRGF0YShcbiAgICAgIGdsLkFSUkFZX0JVRkZFUixcbiAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWy0xLCAtMSwgMSwgLTEsIC0xLCAxLCAxLCAxXSksXG4gICAgICBnbC5TVEFUSUNfRFJBV1xuICAgIClcblxuICAgIGNvbnN0IGEgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwLCAnYScpXG4gICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYSlcbiAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGEsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMClcblxuICAgIGNvbnN0IHVUID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHAsICd0JylcbiAgICBjb25zdCB1UiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwLCAncicpXG5cbiAgICBjb25zdCByZXNpemUgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZWN0ID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgZHByID0gTWF0aC5taW4oZGV2aWNlUGl4ZWxSYXRpbywgMilcblxuICAgICAgYy53aWR0aCA9IHJlY3Qud2lkdGggKiBkcHJcbiAgICAgIGMuaGVpZ2h0ID0gcmVjdC5oZWlnaHQgKiBkcHJcblxuICAgICAgZ2wudmlld3BvcnQoMCwgMCwgYy53aWR0aCwgYy5oZWlnaHQpXG4gICAgfVxuXG4gICAgcmVzaXplKClcblxuICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKHJlc2l6ZSlcbiAgICByby5vYnNlcnZlKGMpXG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpXG5cbiAgICBsZXQgdmlzaWJsZSA9ICFkb2N1bWVudC5oaWRkZW5cbiAgICBsZXQgaW5WaWV3ID0gdHJ1ZVxuICAgIGxldCByYWYyID0gMFxuXG4gICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgIGdsLnVuaWZvcm0xZih1VCwgKHBlcmZvcm1hbmNlLm5vdygpIC0gdDApIC8gMWUzKVxuICAgICAgZ2wudW5pZm9ybTJmKHVSLCBjLndpZHRoLCBjLmhlaWdodClcbiAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVfU1RSSVAsIDAsIDQpXG5cbiAgICAgIHJhZjIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlICYmIGluVmlldyAmJiAhcmFmMikge1xuICAgICAgICByYWYyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICAgIGlmIChyYWYyKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZjIpXG4gICAgICAgIHJhZjIgPSAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb25WaXNpYmlsaXR5ID0gKCkgPT4ge1xuICAgICAgdmlzaWJsZSA9ICFkb2N1bWVudC5oaWRkZW5cbiAgICAgIHZpc2libGUgPyBzdGFydCgpIDogc3RvcCgpXG4gICAgfVxuXG4gICAgY29uc3QgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICBlbnRyaWVzID0+IHtcbiAgICAgICAgaW5WaWV3ID0gZW50cmllcy5zb21lKGUgPT4gZS5pc0ludGVyc2VjdGluZylcbiAgICAgICAgaW5WaWV3ID8gc3RhcnQoKSA6IHN0b3AoKVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkOiAwIH1cbiAgICApXG5cbiAgICBpby5vYnNlcnZlKGMpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eSlcblxuICAgIHN0YXJ0KClcbiAgICByYWYuY3VycmVudCA9IHJhZjJcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdG9wKClcbiAgICAgIGlvLmRpc2Nvbm5lY3QoKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eSlcbiAgICAgIHJvLmRpc2Nvbm5lY3QoKVxuICAgIH1cbiAgfSwgW3JlZl0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUVih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIGNvbnN0IGNhbnZhc1JlZiA9IHVzZVJlZjxIVE1MQ2FudmFzRWxlbWVudD4obnVsbClcbiAgdXNlR0woY2FudmFzUmVmKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e1sncmVsYXRpdmUnLCBjbGFzc05hbWVdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyl9PlxuICAgICAgPHN2ZyBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDIxMCAxNzNcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTMwLjgzNDIgMi40NDQ3MSA2LjA4MjY4IDM2LjY4M2MtLjI0NDM3LjMzOC0uMzgyNTQuNzQxMi0uMzk2ODkgMS4xNThMMS41Nzc1NCAxNTcuMTI2Yy0uMDM4OTEgMS4xMjkuODIzMzkgMi4wODcgMS45NTA5NiAyLjE2N2wxNjIuNDgzNSAxMS40NjNjLjQzMy4wMzEuODY2LS4wNzQgMS4yMzgtLjNsMzUuNzE4LTIxLjY5Yy42MDctLjM2OS45ODYtMS4wMiAxLjAwOC0xLjczbDQuMTAyLTEzMC45ODcxYy4wMzUtMS4xMjY5LS44MjYtMi4wODA2LTEuOTUxLTIuMTYwNEwzMi42ODQ3IDEuNTgwMjljLS43MjQ4LS4wNTE0NC0xLjQyNDcuMjc1NTEtMS44NTA1Ljg2NDQyWlwiXG4gICAgICAgICAgZmlsbD1cIiNGREZEMERcIlxuICAgICAgICAgIHN0cm9rZT1cIiNGREZEMERcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMy4xNVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTIwMy4wOSAxNy4xNDgzIDM1LjY4NDQgNS44MzM5NWwtNC4yIDEyMS45NDgwNSAxNjguNDkwNiAxMy4wNzZ6XCJcbiAgICAgICAgICBmaWxsPVwiIzAwMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZERkQwRFwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCI0LjJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xOTAuNDkxIDI5Ljc0ODMgNDguMjg1OSAxOC40MzRsLTQuMiA5OC44NDggMTQzLjI5MDEgMTAuOTc2elwiXG4gICAgICAgICAgZmlsbD1cIiNGREZEMERcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG5cbiAgICAgIDxjYW52YXNcbiAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBoLWZ1bGwgdy1mdWxsXCJcbiAgICAgICAgcmVmPXtjYW52YXNSZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgY2xpcFBhdGg6XG4gICAgICAgICAgICAncG9seWdvbigyMyUgMTAuNjUlLCA5MC43MSUgMTcuMiUsIDg5LjIzJSA3NC4xMyUsIDIwLjk5JSA2Ny43OSUpJ1xuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQWlPTSxTQUNFLEtBREY7QUEvTk4sU0FBUyxXQUFXLGNBQWM7QUFFbEMsTUFBTTtBQUFBO0FBQUEsRUFBa0I7QUFBQTtBQUV4QixNQUFNO0FBQUE7QUFBQSxFQUFrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtR3hCLFNBQVMsTUFBTSxLQUFnRDtBQUM3RCxRQUFNLE1BQU0sT0FBTyxDQUFDO0FBRXBCLFlBQVUsTUFBTTtBQUNkLFVBQU0sSUFBSSxJQUFJO0FBRWQsUUFBSSxDQUFDLEdBQUc7QUFDTjtBQUFBLElBQ0Y7QUFFQSxVQUFNLEtBQUssRUFBRSxXQUFXLE9BQU87QUFFL0IsUUFBSSxDQUFDLElBQUk7QUFDUDtB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
@@ -0,0 +1,11 @@
1
+ export declare const H1: import("react").ForwardRefExoticComponent<{
2
+ as?: "h1" | undefined;
3
+ } & {
4
+ expanded?: boolean | null | undefined;
5
+ compressed?: boolean | null | undefined;
6
+ courier?: boolean | null | undefined;
7
+ mondwest?: boolean | null | undefined;
8
+ mono?: boolean | null | undefined;
9
+ sans?: boolean | null | undefined;
10
+ variant?: "lg" | "md" | "sm" | "xl" | null | undefined;
11
+ } & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">, "as" | "expanded" | "compressed" | "courier" | "mondwest" | "mono" | "sans" | "variant"> & import("react").RefAttributes<HTMLHeadingElement>>;
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { cn } from "../../../utils/index.js";
4
+ import { Typography } from "./index.js";
5
+ export const H1 = forwardRef(
6
+ ({ className, ...props }, ref) => {
7
+ return /* @__PURE__ */ jsx(
8
+ Typography,
9
+ {
10
+ as: "h1",
11
+ className: cn("font-bold", className),
12
+ variant: "xl",
13
+ ...{ ref, ...props }
14
+ }
15
+ );
16
+ }
17
+ );
18
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuXG5pbXBvcnQgeyBUeXBvZ3JhcGh5LCB0eXBlIFR5cG9ncmFwaHlQcm9wcyB9IGZyb20gJy4nXG5cbmV4cG9ydCBjb25zdCBIMSA9IGZvcndhcmRSZWY8SFRNTEhlYWRpbmdFbGVtZW50LCBUeXBvZ3JhcGh5UHJvcHM8J2gxJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICBhcz1cImgxXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbignZm9udC1ib2xkJywgY2xhc3NOYW1lKX1cbiAgICAgICAgdmFyaWFudD1cInhsXCJcbiAgICAgICAgey4uLnsgcmVmLCAuLi5wcm9wcyB9fVxuICAgICAgLz5cbiAgICApXG4gIH1cbilcbiJdLAogICJtYXBwaW5ncyI6ICJBQVNNO0FBVE4sU0FBUyxrQkFBa0I7QUFFM0IsU0FBUyxVQUFVO0FBRW5CLFNBQVMsa0JBQXdDO0FBRTFDLGFBQU0sS0FBSztBQUFBLEVBQ2hCLENBQUMsRUFBRSxXQUFXLEdBQUcsTUFBTSxHQUFHLFFBQVE7QUFDaEMsV0FDRTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsSUFBRztBQUFBLFFBQ0gsV0FBVyxHQUFHLGFBQWEsU0FBUztBQUFBLFFBQ3BDLFNBQVE7QUFBQSxRQUNQLEdBQUcsRUFBRSxLQUFLLEdBQUcsTUFBTTtBQUFBO0FBQUEsSUFDdEI7QUFBQSxFQUVKO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,11 @@
1
+ export declare const H2: import("react").ForwardRefExoticComponent<{
2
+ as?: "h2" | undefined;
3
+ } & {
4
+ expanded?: boolean | null | undefined;
5
+ compressed?: boolean | null | undefined;
6
+ courier?: boolean | null | undefined;
7
+ mondwest?: boolean | null | undefined;
8
+ mono?: boolean | null | undefined;
9
+ sans?: boolean | null | undefined;
10
+ variant?: "lg" | "md" | "sm" | "xl" | null | undefined;
11
+ } & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">, "as" | "expanded" | "compressed" | "courier" | "mondwest" | "mono" | "sans" | "variant"> & import("react").RefAttributes<HTMLHeadingElement>>;
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { cn } from "../../../utils/index.js";
4
+ import { Typography } from "./index.js";
5
+ export const H2 = forwardRef(
6
+ ({ className, ...props }, ref) => {
7
+ return /* @__PURE__ */ jsx(
8
+ Typography,
9
+ {
10
+ as: "h2",
11
+ className: cn("font-bold", className),
12
+ variant: "lg",
13
+ ...{ ref, ...props }
14
+ }
15
+ );
16
+ }
17
+ );
18
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuXG5pbXBvcnQgeyBUeXBvZ3JhcGh5LCB0eXBlIFR5cG9ncmFwaHlQcm9wcyB9IGZyb20gJy4nXG5cbmV4cG9ydCBjb25zdCBIMiA9IGZvcndhcmRSZWY8SFRNTEhlYWRpbmdFbGVtZW50LCBUeXBvZ3JhcGh5UHJvcHM8J2gyJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICBhcz1cImgyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbignZm9udC1ib2xkJywgY2xhc3NOYW1lKX1cbiAgICAgICAgdmFyaWFudD1cImxnXCJcbiAgICAgICAgey4uLnsgcmVmLCAuLi5wcm9wcyB9fVxuICAgICAgLz5cbiAgICApXG4gIH1cbilcbiJdLAogICJtYXBwaW5ncyI6ICJBQVNNO0FBVE4sU0FBUyxrQkFBa0I7QUFFM0IsU0FBUyxVQUFVO0FBRW5CLFNBQVMsa0JBQXdDO0FBRTFDLGFBQU0sS0FBSztBQUFBLEVBQ2hCLENBQUMsRUFBRSxXQUFXLEdBQUcsTUFBTSxHQUFHLFFBQVE7QUFDaEMsV0FDRTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsSUFBRztBQUFBLFFBQ0gsV0FBVyxHQUFHLGFBQWEsU0FBUztBQUFBLFFBQ3BDLFNBQVE7QUFBQSxRQUNQLEdBQUcsRUFBRSxLQUFLLEdBQUcsTUFBTTtBQUFBO0FBQUEsSUFDdEI7QUFBQSxFQUVKO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,15 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import { type PolyProps } from '../../../utils';
3
+ declare const typographyVariants: (props?: ({
4
+ compressed?: boolean | null | undefined;
5
+ courier?: boolean | null | undefined;
6
+ expanded?: boolean | null | undefined;
7
+ mondwest?: boolean | null | undefined;
8
+ mono?: boolean | null | undefined;
9
+ sans?: boolean | null | undefined;
10
+ variant?: "lg" | "md" | "sm" | "xl" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
+ export declare const Typography: import("../../..").PolyComponent<"span", OwnProps>;
13
+ type OwnProps = VariantProps<typeof typographyVariants>;
14
+ export type TypographyProps<T extends React.ElementType = 'span'> = PolyProps<T, OwnProps>;
15
+ export {};
@@ -0,0 +1,41 @@
1
+ import { cva } from "class-variance-authority";
2
+ import { createElement } from "react";
3
+ import { cn, polyRef } from "../../../utils/index.js";
4
+ const typographyVariants = cva("font-sans", {
5
+ variants: {
6
+ compressed: { true: "font-compressed" },
7
+ courier: { true: "font-courier" },
8
+ expanded: { true: "font-expanded" },
9
+ mondwest: { true: "font-mondwest tracking-[0.1875rem]" },
10
+ mono: { true: "font-mono" },
11
+ sans: { true: "font-sans" },
12
+ variant: {
13
+ lg: "text-[2.625rem] leading-[1] tracking-[0.0525rem]",
14
+ md: "text-[2.625rem] leading-[1] tracking-[0.0525rem]",
15
+ sm: "leading-1.4 text-[.9375rem] tracking-[0.1875rem]",
16
+ xl: "text-[4.5rem] leading-[1] tracking-[0.135rem]"
17
+ }
18
+ }
19
+ });
20
+ export const Typography = polyRef(
21
+ ({
22
+ as,
23
+ className,
24
+ compressed,
25
+ courier,
26
+ expanded,
27
+ mondwest,
28
+ mono,
29
+ variant,
30
+ ...rest
31
+ }, ref) => {
32
+ const fonts = { compressed, courier, expanded, mondwest, mono };
33
+ const fontVariant = { ...fonts, sans: !Object.values(fonts).some(Boolean) };
34
+ return createElement(as ?? "span", {
35
+ ...rest,
36
+ className: cn(typographyVariants({ ...fontVariant, variant }), className),
37
+ ref
38
+ });
39
+ }
40
+ );
41
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSdcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgY24sIHR5cGUgUG9seVByb3BzLCBwb2x5UmVmIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5cbmNvbnN0IHR5cG9ncmFwaHlWYXJpYW50cyA9IGN2YSgnZm9udC1zYW5zJywge1xuICB2YXJpYW50czoge1xuICAgIGNvbXByZXNzZWQ6IHsgdHJ1ZTogJ2ZvbnQtY29tcHJlc3NlZCcgfSxcbiAgICBjb3VyaWVyOiB7IHRydWU6ICdmb250LWNvdXJpZXInIH0sXG4gICAgZXhwYW5kZWQ6IHsgdHJ1ZTogJ2ZvbnQtZXhwYW5kZWQnIH0sXG4gICAgbW9uZHdlc3Q6IHsgdHJ1ZTogJ2ZvbnQtbW9uZHdlc3QgdHJhY2tpbmctWzAuMTg3NXJlbV0nIH0sXG4gICAgbW9ubzogeyB0cnVlOiAnZm9udC1tb25vJyB9LFxuICAgIHNhbnM6IHsgdHJ1ZTogJ2ZvbnQtc2FucycgfSxcbiAgICB2YXJpYW50OiB7XG4gICAgICBsZzogJ3RleHQtWzIuNjI1cmVtXSBsZWFkaW5nLVsxXSB0cmFja2luZy1bMC4wNTI1cmVtXScsXG4gICAgICBtZDogJ3RleHQtWzIuNjI1cmVtXSBsZWFkaW5nLVsxXSB0cmFja2luZy1bMC4wNTI1cmVtXScsXG4gICAgICBzbTogJ2xlYWRpbmctMS40IHRleHQtWy45Mzc1cmVtXSB0cmFja2luZy1bMC4xODc1cmVtXScsXG4gICAgICB4bDogJ3RleHQtWzQuNXJlbV0gbGVhZGluZy1bMV0gdHJhY2tpbmctWzAuMTM1cmVtXSdcbiAgICB9XG4gIH1cbn0pXG5cbmV4cG9ydCBjb25zdCBUeXBvZ3JhcGh5ID0gcG9seVJlZjwnc3BhbicsIE93blByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGFzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcHJlc3NlZCxcbiAgICAgIGNvdXJpZXIsXG4gICAgICBleHBhbmRlZCxcbiAgICAgIG1vbmR3ZXN0LFxuICAgICAgbW9ubyxcbiAgICAgIHZhcmlhbnQsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWZcbiAgKSA9PiB7XG4gICAgY29uc3QgZm9udHMgPSB7IGNvbXByZXNzZWQsIGNvdXJpZXIsIGV4cGFuZGVkLCBtb25kd2VzdCwgbW9ubyB9XG4gICAgY29uc3QgZm9udFZhcmlhbnQgPSB7IC4uLmZvbnRzLCBzYW5zOiAhT2JqZWN0LnZhbHVlcyhmb250cykuc29tZShCb29sZWFuKSB9XG5cbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgoYXMgPz8gJ3NwYW4nKSBhcyBSZWFjdC5FbGVtZW50VHlwZSwge1xuICAgICAgLi4ucmVzdCxcbiAgICAgIGNsYXNzTmFtZTogY24odHlwb2dyYXBoeVZhcmlhbnRzKHsgLi4uZm9udFZhcmlhbnQsIHZhcmlhbnQgfSksIGNsYXNzTmFtZSksXG4gICAgICByZWZcbiAgICB9KVxuICB9XG4pXG5cbnR5cGUgT3duUHJvcHMgPSBWYXJpYW50UHJvcHM8dHlwZW9mIHR5cG9ncmFwaHlWYXJpYW50cz5cblxuZXhwb3J0IHR5cGUgVHlwb2dyYXBoeVByb3BzPFQgZXh0ZW5kcyBSZWFjdC5FbGVtZW50VHlwZSA9ICdzcGFuJz4gPSBQb2x5UHJvcHM8XG4gIFQsXG4gIE93blByb3BzXG4+XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLFdBQThCO0FBQ3ZDLFNBQVMscUJBQXFCO0FBRTlCLFNBQVMsSUFBb0IsZUFBZTtBQUU1QyxNQUFNLHFCQUFxQixJQUFJLGFBQWE7QUFBQSxFQUMxQyxVQUFVO0FBQUEsSUFDUixZQUFZLEVBQUUsTUFBTSxrQkFBa0I7QUFBQSxJQUN0QyxTQUFTLEVBQUUsTUFBTSxlQUFlO0FBQUEsSUFDaEMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCO0FBQUEsSUFDbEMsVUFBVSxFQUFFLE1BQU0scUNBQXFDO0FBQUEsSUFDdkQsTUFBTSxFQUFFLE1BQU0sWUFBWTtBQUFBLElBQzFCLE1BQU0sRUFBRSxNQUFNLFlBQVk7QUFBQSxJQUMxQixTQUFTO0FBQUEsTUFDUCxJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsSUFDTjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRU0sYUFBTSxhQUFhO0FBQUEsRUFDeEIsQ0FDRTtBQUFBLElBQ0U7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsRUFDTCxHQUNBLFFBQ0c7QUFDSCxVQUFNLFFBQVEsRUFBRSxZQUFZLFNBQVMsVUFBVSxVQUFVLEtBQUs7QUFDOUQsVUFBTSxjQUFjLEVBQUUsR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLE9BQU8sS0FBSyxFQUFFLEtBQUssT0FBTyxFQUFFO0FBRTFFLFdBQU8sY0FBZSxNQUFNLFFBQThCO0FBQUEsTUFDeEQsR0FBRztBQUFBLE1BQ0gsV0FBVyxHQUFHLG1CQUFtQixFQUFFLEdBQUcsYUFBYSxRQUFRLENBQUMsR0FBRyxTQUFTO0FBQUEsTUFDeEU7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,6 @@
1
+ export declare function Legend({ children, className, label, sub, ...props }: LegendProps): import("react").JSX.Element;
2
+ interface LegendProps extends React.ComponentProps<'hgroup'> {
3
+ label: React.ReactNode;
4
+ sub?: React.ReactNode;
5
+ }
6
+ export {};
@@ -0,0 +1,20 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../../utils/index.js";
3
+ import { Small } from "./small.js";
4
+ export function Legend({
5
+ children,
6
+ className,
7
+ label,
8
+ sub,
9
+ ...props
10
+ }) {
11
+ return /* @__PURE__ */ jsxs("hgroup", { className: cn("flex flex-col gap-2", className), ...props, children: [
12
+ /* @__PURE__ */ jsx(Small, { children: label }),
13
+ sub && /* @__PURE__ */ jsxs(Small, { className: "opacity-50", children: [
14
+ "- ",
15
+ sub
16
+ ] }),
17
+ children
18
+ ] });
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi8uLi91dGlscydcblxuaW1wb3J0IHsgU21hbGwgfSBmcm9tICcuL3NtYWxsJ1xuXG5leHBvcnQgZnVuY3Rpb24gTGVnZW5kKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgbGFiZWwsXG4gIHN1YixcbiAgLi4ucHJvcHNcbn06IExlZ2VuZFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGhncm91cCBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIGdhcC0yJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfT5cbiAgICAgIDxTbWFsbD57bGFiZWx9PC9TbWFsbD5cbiAgICAgIHtzdWIgJiYgPFNtYWxsIGNsYXNzTmFtZT1cIm9wYWNpdHktNTBcIj4tIHtzdWJ9PC9TbWFsbD59XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9oZ3JvdXA+XG4gIClcbn1cblxuaW50ZXJmYWNlIExlZ2VuZFByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHM8J2hncm91cCc+IHtcbiAgbGFiZWw6IFJlYWN0LlJlYWN0Tm9kZVxuICBzdWI/OiBSZWFjdC5SZWFjdE5vZGVcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWFNLGNBQ1EsWUFEUjtBQWJOLFNBQVMsVUFBVTtBQUVuQixTQUFTLGFBQWE7QUFFZixnQkFBUyxPQUFPO0FBQUEsRUFDckI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBLEdBQUc7QUFDTCxHQUFnQjtBQUNkLFNBQ0UscUJBQUMsWUFBTyxXQUFXLEdBQUcsdUJBQXVCLFNBQVMsR0FBSSxHQUFHLE9BQzNEO0FBQUEsd0JBQUMsU0FBTyxpQkFBTTtBQUFBLElBQ2IsT0FBTyxxQkFBQyxTQUFNLFdBQVUsY0FBYTtBQUFBO0FBQUEsTUFBRztBQUFBLE9BQUk7QUFBQSxJQUM1QztBQUFBLEtBQ0g7QUFFSjsiLAogICJuYW1lcyI6IFtdCn0K